Explorar o código

刀具校验,刀具安装申请beta

yejian016332 %!s(int64=3) %!d(string=hai) anos
pai
achega
974ccc5088
Modificáronse 14 ficheiros con 933 adicións e 1 borrados
  1. 4 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/dao/PlanMapper.java
  2. 29 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/PlanService.java
  3. 44 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/PlanServiceImpl.java
  4. 31 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/dao/CuttingToolApplyMapper.java
  5. 53 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/CuttingToolApplyService.java
  6. 83 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/CuttingToolApplyServiceImpl.java
  7. 73 1
      imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/operationManagementCenter/PlanMapper.xml
  8. 126 0
      imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/CuttingToolApplyMapper.xml
  9. 13 0
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/operationManagementCenter/PlanController.java
  10. 94 0
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionReadyCenter/CuttingToolApplyController.java
  11. 80 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolApplyPageDTO.java
  12. 64 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolApplySaveDTO.java
  13. 69 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolApplyUpdateDTO.java
  14. 170 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/entity/CuttingToolApply.java

+ 4 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/dao/PlanMapper.java

@@ -39,4 +39,8 @@ public interface PlanMapper extends SuperMapper<Plan> {
     Map<String, String> getFinishPlanPartInfo(Map<String, Object> params);
 
     List<Map<String, String>> getFinishPlanPartProcedures(Map<String, Object> params);
+
+    List<Map<String, String>> checkPlanCuttingTools(Map<String, Object> params);
+
+    List<Map<String, String>> checkPlanDetailCuttingTools(Map<String, Object> params);
 }

+ 29 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/PlanService.java

@@ -111,9 +111,38 @@ public interface PlanService extends SuperService<Plan> {
       */
      Plan updateNumber(Plan model);
 
+     /**
+      * 生产完成的订单计划
+      * @param params
+      * @return
+      */
      List<Map<String,String>> getFinishPlanList(Map<String,Object> params);
 
+     /**
+      * 生产完成的订单计划工件信息
+      * @param params
+      * @return
+      */
      Map<String, String> getFinishPlanPartInfo(Map<String, Object> params);
 
+     /**
+      * 生产完成的订单计划工件工艺流程卡
+      * @param params
+      * @return
+      */
      List<Map<String, String>> getFinishPlanPartProcedures(Map<String, Object> params);
+
+     /**
+      * 检查订单计划刀具信息
+      * @param map
+      * @return
+      */
+     List<Map<String, String>> checkPlanCuttingTools(Map<String, Object> map);
+
+     /**
+      * 检查订单计划工序刀具信息
+      * @param map
+      * @return
+      */
+     List<Map<String, String>> checkPlanDetailCuttingTools(Map<String, Object> map);
 }

+ 44 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/PlanServiceImpl.java

@@ -2,6 +2,7 @@ package com.github.zuihou.business.operationManagementCenter.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.zuihou.business.aps.instance.domain.basicdata.Machine;
 import com.github.zuihou.business.operationManagementCenter.dao.PlanMapper;
 import com.github.zuihou.business.operationManagementCenter.dao.PlanProductMapper;
 import com.github.zuihou.business.operationManagementCenter.dao.PlanZoneMapper;
@@ -12,13 +13,17 @@ import com.github.zuihou.business.operationManagementCenter.service.*;
 import com.github.zuihou.base.service.SuperServiceImpl;
 
 import com.github.zuihou.business.productionReadyCenter.entity.BomProcedure;
+import com.github.zuihou.business.productionReadyCenter.entity.MachineCuttingTool;
 import com.github.zuihou.business.productionReadyCenter.service.BomProcedureService;
 import com.github.zuihou.common.constant.CodeRuleModule;
 import com.github.zuihou.common.util.DateUtil;
+import com.github.zuihou.context.BaseContextHandler;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.security.model.SysUser;
+import com.github.zuihou.tenant.entity.Tenant;
 import com.github.zuihou.tenant.service.CodeRuleService;
+import com.github.zuihou.tenant.service.TenantService;
 import com.github.zuihou.utils.BeanPlusUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -65,6 +70,9 @@ public class PlanServiceImpl extends SuperServiceImpl<PlanMapper, Plan> implemen
     private TaskNodeService taskNodeService;
     @Autowired
     private OrderProductService orderProductService;
+    @Autowired
+    private TenantService tenantService;
+
     /**
      * 根据订单默认生成计划,用于一键
      * @param map
@@ -372,6 +380,42 @@ public class PlanServiceImpl extends SuperServiceImpl<PlanMapper, Plan> implemen
     @Override
     public List<Map<String,String>> getFinishPlanPartProcedures(Map<String,Object> params){
         List<Map<String,String>> procedures = baseMapper.getFinishPlanPartProcedures(params);
+
+        if(procedures.size() > 0){
+            Tenant tenant = tenantService.getById(procedures.get(0).get("factoryName"));
+            for(Map<String,String> data : procedures){
+                data.put("factoryName",tenant.getName());
+            }
+        }
+
         return procedures;
     }
+
+    @Override
+    public List<Map<String, String>> checkPlanCuttingTools(Map<String, Object> params){
+        // 查询订单计划所需刀具信息
+        List<Map<String,String>> checkPlanCuttingTools = baseMapper.checkPlanCuttingTools(params);
+        // 遍历订单计划所需刀具信息
+        for(Map<String,String> data : checkPlanCuttingTools){
+            data.put("hasCuttingToolsFlag","是");
+            String cuttingTools = data.get("needCuttingTools");
+            String hasCuttingTools = data.get("hasCuttingTools");
+            List<String> ori = Arrays.asList(cuttingTools.split(","));
+            List<String> compare = Arrays.asList(hasCuttingTools.split(","));
+            for(String cuttingName : ori){
+                if(!compare.contains(cuttingName)){
+                    data.put("hasCuttingToolsFlag","否");
+                    break;
+                }
+            }
+        }
+        return checkPlanCuttingTools;
+    }
+
+    @Override
+    public List<Map<String, String>> checkPlanDetailCuttingTools(Map<String, Object> params){
+        // 查询订单计划所需刀具信息
+        List<Map<String,String>> checkPlanDetailCuttingTools = baseMapper.checkPlanDetailCuttingTools(params);
+        return checkPlanDetailCuttingTools;
+    }
 }

+ 31 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/dao/CuttingToolApplyMapper.java

@@ -0,0 +1,31 @@
+package com.github.zuihou.business.productionReadyCenter.dao;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.github.zuihou.base.mapper.SuperMapper;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingTool;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply;
+import com.github.zuihou.database.mybatis.auth.DataScope;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * Mapper 接口
+ *
+ * </p>
+ *
+ * @author zuihou
+ * @date 2021-12-26
+ */
+@Repository
+public interface CuttingToolApplyMapper extends SuperMapper<CuttingToolApply> {
+
+    IPage<CuttingToolApply> findPage(IPage<CuttingToolApply> page, @Param(Constants.WRAPPER) LbqWrapper<CuttingToolApply> wrapper, DataScope dataScope);
+
+    void markProcessStatus(CuttingToolApply cuttingToolApply);
+
+    IPage<CuttingToolApply> findPageByQueryWrapper(IPage<CuttingToolApply> page,@Param(Constants.WRAPPER) QueryWrapper<CuttingToolApply> queryWrapper);
+}

+ 53 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/CuttingToolApplyService.java

@@ -0,0 +1,53 @@
+package com.github.zuihou.business.productionReadyCenter.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.zuihou.base.service.SuperCacheService;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolApplySaveDTO;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolApplyUpdateDTO;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolSaveDTO;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolUpdateDTO;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingTool;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+
+/**
+ * <p>
+ * 业务接口
+ *
+ * </p>
+ *
+ * @author igen
+ * @date 2022-01-21
+ */
+public interface CuttingToolApplyService extends SuperCacheService<CuttingToolApply> {
+
+    /**
+     * 数据权限 分页
+     *
+     * @param page
+     * @param wrapper
+     */
+    IPage<CuttingToolApply> findPage(IPage<CuttingToolApply> page, LbqWrapper<CuttingToolApply> wrapper);
+
+    /**
+     * 保存
+     *
+     * @param data
+     * @return
+     */
+    CuttingToolApply save(CuttingToolApplySaveDTO data);
+
+    /**
+     * 修改
+     */
+    CuttingToolApply update(CuttingToolApplyUpdateDTO data);
+
+    /**
+     * 更新装刀申请状态
+     * @param cuttingToolApply
+     */
+    void markProcessStatus(CuttingToolApply cuttingToolApply);
+
+    IPage<CuttingToolApply> findPageByQueryWrapper(IPage<CuttingToolApply> page, QueryWrapper<CuttingToolApply> queryWrapper);
+}

+ 83 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/CuttingToolApplyServiceImpl.java

@@ -0,0 +1,83 @@
+package com.github.zuihou.business.productionReadyCenter.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.zuihou.base.service.SuperCacheServiceImpl;
+import com.github.zuihou.business.productionReadyCenter.dao.CuttingToolApplyMapper;
+import com.github.zuihou.business.productionReadyCenter.dao.CuttingToolMapper;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolApplySaveDTO;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolApplyUpdateDTO;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolSaveDTO;
+import com.github.zuihou.business.productionReadyCenter.dto.CuttingToolUpdateDTO;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingTool;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply;
+import com.github.zuihou.business.productionReadyCenter.service.CuttingToolApplyService;
+import com.github.zuihou.business.productionReadyCenter.service.CuttingToolService;
+import com.github.zuihou.common.constant.CacheKey;
+import com.github.zuihou.database.mybatis.auth.DataScope;
+import com.github.zuihou.database.mybatis.conditions.Wraps;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+import com.github.zuihou.injection.annonation.InjectionResult;
+import com.github.zuihou.utils.BeanPlusUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import static com.github.zuihou.utils.BizAssert.isFalse;
+
+/**
+ * <p>
+ * 业务实现类
+ *
+ * </p>
+ *
+ * @author igen
+ * @date 2022-01-21
+ */
+@Slf4j
+@Service
+
+public class CuttingToolApplyServiceImpl extends SuperCacheServiceImpl<CuttingToolApplyMapper, CuttingToolApply> implements CuttingToolApplyService {
+
+
+    @Override
+    @InjectionResult
+    public IPage<CuttingToolApply> findPage(IPage<CuttingToolApply> page, LbqWrapper<CuttingToolApply> wrapper) {
+        return baseMapper.findPage(page, wrapper, new DataScope());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public CuttingToolApply save(CuttingToolApplySaveDTO data) {
+        CuttingToolApply cuttingToolApply = BeanPlusUtil.toBean(data, CuttingToolApply.class);
+        save(cuttingToolApply);
+        return cuttingToolApply;
+    }
+
+    @Override
+    public CuttingToolApply update(CuttingToolApplyUpdateDTO data) {
+        CuttingToolApply cuttingToolApply = BeanPlusUtil.toBean(data, CuttingToolApply.class);
+        updateById(cuttingToolApply);
+        return cuttingToolApply;
+    }
+
+    @Override
+    protected String getRegion() {
+        return CacheKey.USER;
+    }
+
+    @Override
+    public void markProcessStatus(CuttingToolApply cuttingToolApply){
+        for(Long id : cuttingToolApply.getIds()){
+            cuttingToolApply.setId(id);
+            baseMapper.markProcessStatus(cuttingToolApply);
+        }
+    }
+
+    @Override
+    public IPage<CuttingToolApply> findPageByQueryWrapper(IPage<CuttingToolApply> page, QueryWrapper<CuttingToolApply> queryWrapper){
+        return baseMapper.findPageByQueryWrapper(page, queryWrapper);
+    }
+
+}

+ 73 - 1
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/operationManagementCenter/PlanMapper.xml

@@ -125,7 +125,7 @@
         SELECT
             itt.procedure_no AS procedureNo,
             itt.procedure_name AS procedureName,
-            '云箭长沙工厂' AS factoryName,
+            (SELECT itp.tenant_id FROM imcs_tenant_productionresource itp  WHERE itp.id = itt.resource_id) AS factoryName,
             itt.executor_name,
             ippp.plan_bom_num AS planBomNum,
             ippp.plan_bom_num AS okNum,
@@ -153,6 +153,78 @@
         ORDER BY itt.procedure_no
     </select>
 
+    <select id="checkPlanCuttingTools" resultType="java.util.Map">
+        SELECT
+            ippp.plan_id AS planId,
+            ibb.name,
+            GROUP_CONCAT(produceCuttingTools.needCuttingTools) AS needCuttingTools,
+            GROUP_CONCAT(resourceCuttingTools.hasCuttingTools) AS hasCuttingTools
+        FROM imcs_p_plan_product ippp,
+            imcs_b_bom ibb,
+            imcs_b_bom_version_info ibbvi,
+            imcs_b_bom_procedure ibbp,
+            (SELECT
+                ibbpt.procedure_id AS procedureId,
+                ibbpt.resource_id AS resourceId,
+                GROUP_CONCAT(ibbpt.tool_name) AS needCuttingTools
+                FROM imcs_b_bom_procedure_tool ibbpt
+                GROUP BY ibbpt.procedure_id,
+                ibbpt.resource_id) produceCuttingTools,
+            (SELECT
+                icc.machine_id AS resourceId,
+                GROUP_CONCAT(icc.cutting_tool_name) AS hasCuttingTools
+            FROM imcs_collect_cutting icc
+            GROUP BY icc.machine_id) resourceCuttingTools
+        WHERE ippp.bom_id = ibb.id
+        AND ibb.id = ibbvi.bom_id
+        AND ibbvi.use_status = '1'
+        AND ibbp.bom_id = ibbvi.bom_id
+        AND ibbp.id = produceCuttingTools.procedureId
+        AND produceCuttingTools.resourceId = resourceCuttingTools.resourceId
+        <if test="planId != null and planId != ''">
+            and ippp.plan_id in (${planId})
+        </if>
+        GROUP BY ippp.plan_id
+    </select>
+
+    <select id="checkPlanDetailCuttingTools" resultType="java.util.Map">
+        SELECT
+            tmp1.*,
+            icc.cutting_tool_name,
+            (case when tmp1.needCuttingTools = icc.cutting_tool_name then '通过' else '不足' end) as checkResult,
+            (select icta.id from imcs_cutting_tool_apply icta where icta.resource_id = tmp1.resourceId and icta.cutting_tool_name = tmp1.needCuttingTools and icta.plan_id = tmp1.planId and icta.produce_id = tmp1.produceId) as applyId
+        FROM (SELECT
+                ippp.plan_id AS planId,
+                ibb.name,
+                IFNULL(ibb.no, '') AS partNo,
+                ibbp.id AS produceId,
+                ibbp.no AS produceNo,
+                ibbpt.resource_id AS resourceId,
+                (SELECT
+                    itp.name
+                FROM imcs_tenant_productionresource itp
+                WHERE itp.id = ibbpt.resource_id) AS resourceName,
+                ibbpt.tool_name AS needCuttingTools
+            FROM imcs_p_plan_product ippp,
+                imcs_b_bom ibb,
+                imcs_b_bom_version_info ibbvi,
+                imcs_b_bom_procedure ibbp,
+                imcs_b_bom_procedure_tool ibbpt
+
+            WHERE ippp.bom_id = ibb.id
+            AND ibb.id = ibbvi.bom_id
+            AND ibbvi.use_status = '1'
+            AND ibbp.bom_id = ibbvi.bom_id
+            AND ibbp.id = ibbpt.procedure_id
+            <if test="planId != null and planId != ''">
+                and ippp.plan_id = #{planId}
+            </if>
+            ORDER BY planId, ibbp.no) tmp1
+        LEFT JOIN imcs_collect_cutting icc
+        ON (tmp1.resourceId = icc.machine_id
+        AND tmp1.needCuttingTools = icc.cutting_tool_name)
+    </select>
+
     <update id="updateByTaskBatchNo">
       update imcs_p_plan set draft_flag = '0',plan_status = '3',scheduling_status='3',produce_status='1'
       where id in (select plan_id from imcs_t_task where task_batch_no =  #{taskBatchNo})

+ 126 - 0
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/CuttingToolApplyMapper.xml

@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.github.zuihou.business.productionReadyCenter.dao.CuttingToolApplyMapper">
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply">
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="create_user" jdbcType="BIGINT" property="createUser"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_user" jdbcType="BIGINT" property="updateUser"/>
+        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="cutting_tool_name" jdbcType="VARCHAR" property="cuttingToolName"/>
+        <result column="resource_id" jdbcType="VARCHAR" property="resourceId"/>
+        <result column="plan_id" jdbcType="VARCHAR" property="planId"/>
+        <result column="produce_id" jdbcType="VARCHAR" property="produceId"/>
+        <result column="process_status" jdbcType="VARCHAR" property="processStatus"/>
+        <result column="resource_name" jdbcType="VARCHAR" property="resourceName"/>
+        <result column="cutting_tool_picture" jdbcType="VARCHAR" property="cuttingToolPicture"/>
+        <result column="cutting_tool_install_picture" jdbcType="VARCHAR" property="cuttingToolInstallPicture"/>
+        <result column="order_name" jdbcType="VARCHAR" property="orderName"/>
+        <result column="order_delivery_time" jdbcType="VARCHAR" property="orderDeliveryTime"/>
+        <result column="order_part_delivery_time" jdbcType="VARCHAR" property="orderPartDeliveryTime"/>
+        <result column="part_no" jdbcType="VARCHAR" property="partNo"/>
+        <result column="product_no" jdbcType="VARCHAR" property="productNo"/>
+        <result column="procedure_name" jdbcType="VARCHAR" property="procedureName"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id,create_user,create_time,update_user,update_time,cutting_tool_name, resource_id, plan_id, produce_id, process_status, resourceName, cuttingToolPicture, cuttingToolInstallPicture,
+        orderName, orderDeliveryTime, orderPartDeliveryTime, partNo, productNo, partName, procedureNo, procedureName
+    </sql>
+
+    <select id="findPage" resultType="com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply">
+        SELECT
+            tmp.*
+        FROM
+        (
+            SELECT
+                icta.id,
+                icta.cutting_tool_name AS cuttingToolName,
+                icta.process_status AS processStatus,
+                (case icta.process_status when '0' then '未处理' when '1' then '缺料' when '2' then '已处理' end) AS processStatusName,
+                (SELECT
+                    itp.name
+                FROM imcs_tenant_productionresource itp
+                WHERE icta.resource_id = itp.id) AS resourceName,
+                (SELECT
+                    ict.cutting_tool_picture
+                FROM imcs_cutting_tool ict
+                WHERE ict.cutting_tool_name = icta.cutting_tool_name) AS cuttingToolPicture,
+                (SELECT
+                    ict.cutting_tool_install_picture
+                FROM imcs_cutting_tool ict
+                WHERE ict.cutting_tool_name = icta.cutting_tool_name) AS cuttingToolInstallPicture,
+                ioo.order_name AS orderName,
+                ioo.delivery_time AS orderDeliveryTime,
+                ioop.delivery_time AS orderPartDeliveryTime,
+                ibb.no AS partNo,
+                ibb.product_no AS productNo,
+                ibb.name AS partName,
+                ibbp.no AS procedureNo,
+                ibbp.name AS procedureName
+            FROM imcs_cutting_tool_apply icta,
+                imcs_p_plan_product ippp,
+                imcs_o_order_product ioop,
+                imcs_o_order ioo,
+                imcs_b_bom ibb,
+                imcs_b_bom_procedure ibbp
+            WHERE icta.plan_id = ippp.plan_id
+            AND ippp.bom_id = ibb.id
+            AND ippp.bom_id = ioop.bom_id
+            AND ippp.order_id = ioop.order_id
+            AND ioop.order_id = ioo.id
+            AND icta.produce_id = ibbp.id
+            ) tmp ${ew.customSqlSegment}
+    </select>
+
+    <select id="findPageByQueryWrapper" resultType="com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply">
+        SELECT
+            tmp.*
+        FROM
+        (
+            SELECT
+                icta.id,
+                icta.cutting_tool_name AS cuttingToolName,
+                icta.process_status AS processStatus,
+                (case icta.process_status when '0' then '未处理' when '1' then '缺料' when '2' then '已处理' end) AS processStatusName,
+                (SELECT
+                    itp.name
+                FROM imcs_tenant_productionresource itp
+                WHERE icta.resource_id = itp.id) AS resourceName,
+                (SELECT
+                    ict.cutting_tool_picture
+                FROM imcs_cutting_tool ict
+                WHERE ict.cutting_tool_name = icta.cutting_tool_name) AS cuttingToolPicture,
+                (SELECT
+                    ict.cutting_tool_install_picture
+                FROM imcs_cutting_tool ict
+                WHERE ict.cutting_tool_name = icta.cutting_tool_name) AS cuttingToolInstallPicture,
+                ioo.order_name AS orderName,
+                ioo.delivery_time AS orderDeliveryTime,
+                ioop.delivery_time AS orderPartDeliveryTime,
+                ibb.no AS partNo,
+                ibb.product_no AS productNo,
+                ibb.name AS partName,
+                ibbp.no AS procedureNo,
+                ibbp.name AS procedureName
+            FROM imcs_cutting_tool_apply icta,
+                imcs_p_plan_product ippp,
+                imcs_o_order_product ioop,
+                imcs_o_order ioo,
+                imcs_b_bom ibb,
+                imcs_b_bom_procedure ibbp
+            WHERE icta.plan_id = ippp.plan_id
+            AND ippp.bom_id = ibb.id
+            AND ippp.bom_id = ioop.bom_id
+            AND ippp.order_id = ioop.order_id
+            AND ioop.order_id = ioo.id
+            AND icta.produce_id = ibbp.id
+            ) tmp ${ew.customSqlSegment}
+    </select>
+
+    <update id="markProcessStatus" parameterType="com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply">
+        UPDATE imcs_cutting_tool_apply icta set icta.process_status = #{processStatus} where id = #{id}
+    </update>
+</mapper>

+ 13 - 0
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/operationManagementCenter/PlanController.java

@@ -230,4 +230,17 @@ public class PlanController extends SuperController<PlanService, Long, Plan, Pla
 
         }
     }
+    @ApiOperation(value = "计划刀具检查", notes = "计划刀具检查")
+    @PostMapping("/checkPlanCuttingTools")
+    public R<List<Map<String,String>>> checkPlanCuttingTools(@RequestBody Map<String,Object> map) {
+        List<Map<String,String>> returnMap = baseService.checkPlanCuttingTools(map);
+        return success(returnMap);
+    }
+
+    @ApiOperation(value = "计划刀具详情检查", notes = "计划刀具详情检查")
+    @PostMapping("/checkPlanDetailCuttingTools")
+    public R<List<Map<String,String>>> checkPlanDetailCuttingTools(@RequestBody Map<String,Object> map) {
+        List<Map<String,String>> returnMap = baseService.checkPlanDetailCuttingTools(map);
+        return success(returnMap);
+    }
 }

+ 94 - 0
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionReadyCenter/CuttingToolApplyController.java

@@ -0,0 +1,94 @@
+package com.github.zuihou.business.controller.productionReadyCenter;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.zuihou.base.R;
+import com.github.zuihou.base.controller.SuperCacheController;
+import com.github.zuihou.base.request.PageParams;
+import com.github.zuihou.business.productionReadyCenter.dto.*;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingTool;
+import com.github.zuihou.business.productionReadyCenter.entity.CuttingToolApply;
+import com.github.zuihou.business.productionReadyCenter.service.CuttingToolApplyService;
+import com.github.zuihou.business.productionReadyCenter.service.CuttingToolService;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 前端控制器
+ *
+ * </p>
+ *
+ * @author zuihou
+ * @date 2021-12-26
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/cuttingToolApply")
+@Api(value = "cuttingToolApply", tags = "")
+public class CuttingToolApplyController extends SuperCacheController<CuttingToolApplyService, Long, CuttingToolApply, CuttingToolApplyPageDTO, CuttingToolApplySaveDTO, CuttingToolApplyUpdateDTO> {
+
+    /**
+     * 分页、导出、导出预览 方法的共用查询条件
+     *
+     * @param params
+     * @param page
+     * @param defSize
+     */
+    @Override
+    public void query(PageParams<CuttingToolApplyPageDTO> params, IPage<CuttingToolApply> page, Long defSize) {
+        CuttingToolApplyPageDTO cuttingToolApplyPage = params.getModel();
+//        QueryWrap<CuttingToolApply> wrap = handlerWrapper(null, params);
+
+//        LbqWrapper<CuttingToolApply> wrapper = wrap.lambda();
+//        wrap.eq(CuttingToolApply::getProcessStatus, cuttingToolApplyPage.getProcessStatus())
+//                .like(CuttingToolApply::getPartNo, cuttingToolApplyPage.getPartNo())
+//                .like(CuttingToolApply::getProductNo, cuttingToolApplyPage.getProductNo())
+//                .like(CuttingToolApply::getPartName, cuttingToolApplyPage.getPartName());
+//        baseService.findPage(page, wrap);
+
+        QueryWrapper<CuttingToolApply> queryWrapper = new QueryWrapper<CuttingToolApply>();
+        if(StringUtils.isNotBlank(cuttingToolApplyPage.getProcessStatus())){
+            queryWrapper.eq("processStatus", cuttingToolApplyPage.getProcessStatus());
+        }
+        if(StringUtils.isNotBlank(cuttingToolApplyPage.getPartNo())){
+            queryWrapper.eq("partNo", cuttingToolApplyPage.getPartNo());
+        }
+        if(StringUtils.isNotBlank(cuttingToolApplyPage.getProductNo())){
+            queryWrapper.eq("productNo", cuttingToolApplyPage.getProductNo());
+        }
+        if(StringUtils.isNotBlank(cuttingToolApplyPage.getPartName())){
+            queryWrapper.eq("partName", cuttingToolApplyPage.getPartName());
+        }
+        baseService.findPageByQueryWrapper(page, queryWrapper);
+
+
+    }
+
+    @Override
+    public R<CuttingToolApply> handlerSave(CuttingToolApplySaveDTO model) {
+        model.setProcessStatus("0");
+        CuttingToolApply cuttingToolApply = baseService.save(model);
+        return success(cuttingToolApply);
+    }
+
+    @ApiOperation(value = "更新装刀申请状态", notes = "更新装刀申请状态")
+    @PostMapping("/markProcessStatus")
+    public R<CuttingToolApply> markProcessStatus(@RequestBody CuttingToolApply cuttingToolApply) {
+        baseService.markProcessStatus(cuttingToolApply);
+        return success(cuttingToolApply);
+    }
+}

+ 80 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolApplyPageDTO.java

@@ -0,0 +1,80 @@
+package com.github.zuihou.business.productionReadyCenter.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 实体类
+ *
+ * </p>
+ *
+ * @author igen
+ * @since 2022-01-21
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@ApiModel(value = "CuttingToolApplyPageDTO", description = "")
+public class CuttingToolApplyPageDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 设备id
+     */
+    @ApiModelProperty(value = "设备id")
+    private String resourceId;
+
+    /**
+     * 刀具名称
+     */
+    @ApiModelProperty(value = "刀具名称")
+    private String cuttingToolName;
+
+    /**
+     * 订单计划id
+     */
+    @ApiModelProperty(value = "订单计划id")
+    private String planId;
+
+    /**
+     * 工序id
+     */
+    @ApiModelProperty(value = "工序id")
+    private String produceId;
+
+    /**
+     * 处理状态 0 未处理 1:缺料 2:已处理
+     */
+    @ApiModelProperty(value = "处理状态 0 未处理 1:缺料 2:已处理")
+    private String processStatus;
+
+    /**
+     * 零件编号
+     */
+    private String partNo;
+
+    /**
+     * 产品代号
+     */
+    private String productNo;
+
+    /**
+     * 零件名称
+     */
+    private String partName;
+
+    /**
+     * 零件代号
+     */
+    private String partsAlias;
+}

+ 64 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolApplySaveDTO.java

@@ -0,0 +1,64 @@
+package com.github.zuihou.business.productionReadyCenter.dto;
+
+import com.github.zuihou.model.RemoteData;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 实体类
+ *
+ * </p>
+ *
+ * @author igen
+ * @since 2022-01-21
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@ApiModel(value = "CuttingToolApplySaveDTO", description = "")
+public class CuttingToolApplySaveDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 设备id
+     */
+    @ApiModelProperty(value = "设备id")
+    private String resourceId;
+
+    /**
+     * 刀具名称
+     */
+    @ApiModelProperty(value = "刀具名称")
+    private String cuttingToolName;
+
+    /**
+     * 订单计划id
+     */
+    @ApiModelProperty(value = "订单计划id")
+    private String planId;
+
+    /**
+     * 工序id
+     */
+    @ApiModelProperty(value = "工序id")
+    private String produceId;
+
+    /**
+     * 处理状态 0 未处理 1:缺料 2:已处理
+     */
+    @ApiModelProperty(value = "处理状态 0 未处理 1:缺料 2:已处理")
+    private String processStatus;
+
+}

+ 69 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolApplyUpdateDTO.java

@@ -0,0 +1,69 @@
+package com.github.zuihou.business.productionReadyCenter.dto;
+
+import com.github.zuihou.base.entity.SuperEntity;
+import com.github.zuihou.model.RemoteData;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 实体类
+ *
+ * </p>
+ *
+ * @author igen
+ * @since 2022-01-21
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@ApiModel(value = "CuttingToolApplyUpdateDTO", description = "")
+public class CuttingToolApplyUpdateDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @NotNull(message = "id不能为空", groups = SuperEntity.Update.class)
+    private Long id;
+
+    /**
+     * 设备id
+     */
+    @ApiModelProperty(value = "设备id")
+    private String resourceId;
+
+    /**
+     * 刀具名称
+     */
+    @ApiModelProperty(value = "刀具名称")
+    private String cuttingToolName;
+
+    /**
+     * 订单计划id
+     */
+    @ApiModelProperty(value = "订单计划id")
+    private String planId;
+
+    /**
+     * 工序id
+     */
+    @ApiModelProperty(value = "工序id")
+    private String produceId;
+
+    /**
+     * 处理状态 0 未处理 1:缺料 2:已处理
+     */
+    @ApiModelProperty(value = "处理状态 0 未处理 1:缺料 2:已处理")
+    private String processStatus;
+}

+ 170 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/entity/CuttingToolApply.java

@@ -0,0 +1,170 @@
+package com.github.zuihou.business.productionReadyCenter.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.zuihou.base.entity.Entity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;
+
+/**
+ * <p>
+ * 实体类
+ *
+ * </p>
+ *
+ * @author igen
+ * @since 2022-01-21
+ */
+@Data
+@NoArgsConstructor
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("imcs_cutting_tool_apply")
+@ApiModel(value = "CuttingToolApply", description = "")
+@AllArgsConstructor
+@Builder
+public class CuttingToolApply extends Entity<Long> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 设备id
+     */
+    @ApiModelProperty(value = "设备id")
+    @TableField(value = "resource_id", condition = LIKE)
+    private String resourceId;
+
+    /**
+     * 刀具名称
+     */
+    @ApiModelProperty(value = "刀具名称")
+    @TableField(value = "cutting_tool_name", condition = LIKE)
+    private String cuttingToolName;
+
+    /**
+     * 订单计划id
+     */
+    @ApiModelProperty(value = "订单计划id")
+    @TableField(value = "plan_id", condition = LIKE)
+    private String planId;
+
+
+    /**
+     * 工序id
+     */
+    @ApiModelProperty(value = "工序id")
+    @TableField(value = "produce_id", condition = LIKE)
+    private String produceId;
+
+    /**
+     * 处理状态 0 未处理 1:缺料 2:已处理
+     */
+    @ApiModelProperty(value = "处理状态 0 未处理 1:缺料 2:已处理")
+    @TableField(value = "process_status", condition = LIKE)
+    private String processStatus;
+
+    /**
+     * 处理状态 0 未处理 1:缺料 2:已处理
+     */
+    @ApiModelProperty(value = "处理状态 0 未处理 1:缺料 2:已处理")
+    @TableField(exist = false)
+    private String processStatusName;
+
+    /**
+     * 零件编号
+     */
+    @ApiModelProperty(value = "零件编号")
+    @TableField(exist = false)
+    private String partNo;
+
+    /**
+     * 产品代号
+     */
+    @ApiModelProperty(value = "产品代号")
+    @TableField(exist = false)
+    private String productNo;
+
+    /**
+     * 零件名称
+     */
+    @ApiModelProperty(value = "零件名称")
+    @TableField(exist = false)
+    private String partName;
+
+    /**
+     * 零件代号
+     */
+    @ApiModelProperty(value = "零件代号")
+    @TableField(exist = false)
+    private String partsAlias;
+
+    /**
+     * 设备名称
+     */
+    @ApiModelProperty(value = "设备名称")
+    @TableField(exist = false)
+    private String resourceName;
+
+    /**
+     * 刀具图片
+     */
+    @ApiModelProperty(value = "刀具图片")
+    @TableField(exist = false)
+    private String cuttingToolPicture;
+
+    /**
+     * 刀具装夹图片
+     */
+    @ApiModelProperty(value = "刀具装夹图片")
+    @TableField(exist = false)
+    private String cuttingToolInstallPicture;
+
+    /**
+     * 订单名称
+     */
+    @ApiModelProperty(value = "订单名称")
+    @TableField(exist = false)
+    private String orderName;
+
+    /**
+     * 订单交付时间
+     */
+    @ApiModelProperty(value = "订单交付时间")
+    @TableField(exist = false)
+    private String orderDeliveryTime;
+
+    /**
+     * 订单交付时间
+     */
+    @ApiModelProperty(value = "订单交付时间")
+    @TableField(exist = false)
+    private String orderPartDeliveryTime;
+
+    /**
+     * 工序编号
+     */
+    @ApiModelProperty(value = "工序编号")
+    @TableField(exist = false)
+    private String procedureNo;
+
+    /**
+     * 工序名称
+     */
+    @ApiModelProperty(value = "工序名称")
+    @TableField(exist = false)
+    private String procedureName;
+
+    /**
+     * 申请单id集合
+     */
+    @ApiModelProperty(value = "申请单id集合")
+    @TableField(exist = false)
+    private List<Long> ids;
+}