Browse Source

fix:优化刀具任务创建

wang.sq@aliyun.com 1 month ago
parent
commit
54b1e5d14c
10 changed files with 113 additions and 22 deletions
  1. 1 2
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/centralToolMagazine/service/impl/ToolManagementServiceImpl.java
  2. 9 6
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java
  3. 12 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/MeasuringToolsCategoriesServiceImpl.java
  4. 2 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/dao/ProductionresourcePositionMapper.java
  5. 8 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/ProductionresourcePositionService.java
  6. 8 1
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/ProductionresourcePositionServiceImpl.java
  7. 20 0
      imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionResourceCenter/ProductionresourcePositionMapper.xml
  8. 29 11
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/StationUserController.java
  9. 14 1
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/ToolController.java
  10. 10 1
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/OrderTask.java

+ 1 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/centralToolMagazine/service/impl/ToolManagementServiceImpl.java

@@ -260,8 +260,7 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
                         .map(BBomProcedureTool::getCuttingToolCategory)
                         .collect(Collectors.toList()); */
                 if (null != bomProcedureTool){
-                    String[] conditions = bomProcedureTool.getCuttingToolCategory().split("_");
-                    needToolList = cutterCategoriesService.list(new LbqWrapper<CutterCategories>().eq(CutterCategories::getPartsNo, conditions[0]).eq(CutterCategories::getProcedureNo, conditions[1]));
+                    needToolList = cutterCategoriesService.list(new LbqWrapper<CutterCategories>().eq(CutterCategories::getPartsNo, bBom.getPartsNo()).eq(CutterCategories::getProcedureNo, bBom.getNo()));
                 }
             }
 

+ 9 - 6
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java

@@ -441,8 +441,9 @@ public class TaskWorkNode {
                                     List<CuttingTool> list = cuttingToolService.list(new LbqWrapper<CuttingTool>().eq(CuttingTool::getCuttingToolNo, confBatchNo).or().eq(CuttingTool::getCuttingToolName, confBatchNo));
                                     if(list==null || list.isEmpty()){
                                         log.setFeedback("指定待取刀具数据不存在");
-                                        //删除自定义订单内容
-                                        orderTaskService.removeById(orderTask.getId());
+                                        //修改自定义订单为可删除,后续根据定时获取机床数接口,进行删除此数据
+                                        orderTask.setIsDelete(2);
+                                        orderTaskService.updateById(orderTask);
                                         return;
                                     }
 
@@ -460,8 +461,9 @@ public class TaskWorkNode {
 
                                     if(productionresourcePositionList.size() == 0){
                                         log.setFeedback("指定待取刀具库位信息不存在");
-                                        //删除自定义订单内容
-                                        orderTaskService.removeById(orderTask.getId());
+                                        //修改自定义订单为可删除,后续根据定时获取机床数接口,进行删除此数据
+                                        orderTask.setIsDelete(2);
+                                        orderTaskService.updateById(orderTask);
                                         return;
                                     }
 
@@ -511,8 +513,9 @@ public class TaskWorkNode {
                                      cuttingToolApplyService.updateById(cuttingToolApply);
                                 }
 
-                                //删除自定义订单内容
-                                orderTaskService.removeById(orderTask.getId());
+                                //修改自定义订单为可删除,后续根据定时获取机床数接口,进行删除此数据
+                                orderTask.setIsDelete(2);
+                                orderTaskService.updateById(orderTask);
                             }
 
                         }

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

@@ -3,7 +3,9 @@ package com.github.zuihou.business.productionReadyCenter.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.zuihou.base.R;
 import com.github.zuihou.base.service.SuperCacheServiceImpl;
+import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.MeasuringToolsCategoriesMapper;
+import com.github.zuihou.business.productionReadyCenter.entity.BBom;
 import com.github.zuihou.business.productionReadyCenter.entity.MeasuringToolsCategoriesPo;
 import com.github.zuihou.business.productionReadyCenter.entity.MeasuringToolsPo;
 import com.github.zuihou.business.productionReadyCenter.service.MeasuringToolsCategoriesService;
@@ -42,6 +44,9 @@ public class MeasuringToolsCategoriesServiceImpl extends SuperCacheServiceImpl<M
     @Autowired
     private MeasuringToolsService measuringToolsService;
 
+    @Autowired
+    private BBomMapper bBomMapper;
+
 
     @Override
     public IPage<MeasuringToolsCategoriesPo> findPage(IPage<MeasuringToolsCategoriesPo> page, LbqWrapper<MeasuringToolsCategoriesPo> wrapper) {
@@ -53,6 +58,12 @@ public class MeasuringToolsCategoriesServiceImpl extends SuperCacheServiceImpl<M
     public R saveTool(MeasuringToolsCategoriesPo data) {
         StringBuffer buffer =new StringBuffer();
 
+
+        BBom bBom = bBomMapper.selectOne(Wraps.<BBom>lbQ().eq(BBom::getPartsNo, data.getPartsNo()));
+        if(bBom==null){
+            return R.fail("缺少零件信息");
+        }
+
         // 查询出所有量具
         Map<String, List<MeasuringToolsPo>> toolMap = measuringToolsService.list().stream().collect(Collectors.groupingBy(MeasuringToolsPo::getToolCode));
 
@@ -84,6 +95,7 @@ public class MeasuringToolsCategoriesServiceImpl extends SuperCacheServiceImpl<M
             BeanUtils.copyProperties(measuringToolsPo,build);
             build.setId(null);
             build.setCategoriesNo(group);
+            build.setProcedureNo(bBom.getNo());
 
             list1.add(build);
         }

+ 2 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/dao/ProductionresourcePositionMapper.java

@@ -28,6 +28,8 @@ public interface ProductionresourcePositionMapper extends SuperMapper<Production
 
     List<ProductionresourcePosition> getPPList(Map map);
 
+    List<ProductionresourcePosition> checkXbkTaskStartPointId(Map map);
+
     /**
      * 根据设备查找库位ID
      * @param queryMap

+ 8 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/ProductionresourcePositionService.java

@@ -7,6 +7,7 @@ import com.github.zuihou.business.productionResourceCenter.dto.Productionresourc
 import com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -55,6 +56,13 @@ public interface ProductionresourcePositionService extends SuperService<Producti
 
     List<Map<String, Object>> getRelationLocationList();
 
+    /**
+     * 查询线边库起始点位是否被占用
+     * @param map startCode起点编码,startPointId起点点位
+     * @return true 被占用,false 未被占用
+     */
+    boolean checkXbkTaskStartPointId (Map map);
+
     /**
      * 获取刀具可用点位,并筛选特殊存放点位
      *

+ 8 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/ProductionresourcePositionServiceImpl.java

@@ -270,6 +270,14 @@ public class ProductionresourcePositionServiceImpl extends SuperServiceImpl<Prod
 
     }
 
+    @Override
+    public boolean checkXbkTaskStartPointId(Map map) {
+
+        List<ProductionresourcePosition> list = baseMapper.checkXbkTaskStartPointId(map);
+
+        return (list==null|| list.size()==0)? false :true;
+    }
+
     @Autowired
     private CuttingToolService cuttingToolService;
 
@@ -279,7 +287,6 @@ public class ProductionresourcePositionServiceImpl extends SuperServiceImpl<Prod
     @Override
     public List<ProductionresourcePosition> cutToolPositionList(String json) {
 
-
         JSONObject jsonObject = JSONObject.parseObject(json);
         List<ProductionresourcePosition> positionList = this.getFreeCutterPositionByNos(new String[]{jsonObject.getString("code")});
         List<ProductionresourcePosition> dataList = positionList.stream().filter(item -> (item.getName().contains("刀库位") || item.getName().contains("刀具"))).collect(Collectors.toList());

+ 20 - 0
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionResourceCenter/ProductionresourcePositionMapper.xml

@@ -91,6 +91,26 @@
             and s.storge_type_id = #{storgeTypeId}
         </if>
     </select>
+
+    <select id="checkXbkTaskStartPointId" resultType="com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition" parameterType="map">
+        SELECT
+        s_ippp.*
+        FROM
+        `imcs_tenant_productionresource` m_itp
+        INNER JOIN imcs_p_productionresource_position s_ippp ON m_itp.id = s_ippp.resource_id
+        INNER JOIN (
+            SELECT TRIM(LEADING 'CT_' FROM start) startPointID
+            FROM imcs_order_task_conf where 1=1
+            <if test="startPointId != null and startPointId != ''">
+                and START  = #{startPointId}
+            </if>
+            ) s_iot ON s_ippp.point_id = s_iot.startPointID
+        where 1=1
+        <if test="startCode != null and startCode != ''">
+            and m_itp.`code` = #{startCode}
+        </if>
+    </select>
+
     <select id="getStorgeIdByResource" resultType="com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition">
         select * from imcs_p_productionresource_position where 1=1
         <if test="resourceId != null and resourceId != ''">

+ 29 - 11
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/StationUserController.java

@@ -39,6 +39,7 @@ import com.github.zuihou.business.productionResourceCenter.service.StationUserSe
 import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
 import com.github.zuihou.business.util.MsgUtil;
 import com.github.zuihou.common.constant.CodeRuleModule;
+import com.github.zuihou.common.constant.DictionaryKey;
 import com.github.zuihou.common.constant.ParameterKey;
 import com.github.zuihou.common.util.DateUtil;
 import com.github.zuihou.common.util.StringUtil;
@@ -306,7 +307,8 @@ public class StationUserController extends SuperController<StationUserService, L
     public R addCutToolTaskMore(@RequestBody List<Map<String, Object>> models) {
         log.info("=============批量新增刀具取放任务============={}", models);
 
-        StringBuffer buffer = new StringBuffer();
+        StringBuffer bufferSuccess = new StringBuffer();
+        StringBuffer bufferError = new StringBuffer();
         /**
          * 查询目标点,分配位置
          * 1获取目标设备,2查询目标点位,3查询是否需要刀架位
@@ -376,14 +378,14 @@ public class StationUserController extends SuperController<StationUserService, L
                 hashMap.put("goal", "CT_"+availableList.get(0).getPointId());
 
 
-                if(isJc){
+                if(isJc){//目的为是机床
                     if(jcDatas.size()<=0){
                         throw new BizException("无可用刀架号,设备:"+ targetPostion);
                     }
                     String s = jcDatas.get(0);
                     jcDatas.remove(s);
                     hashMap.put("cutGoalNo", s);
-                }else {
+                }else {//目的位置不是机床
                     if(availableList.size()<=0){
                         log.error("===批量新增刀具出错==={}", "刀具库无空位置可用");
                         throw new BizException("刀具库无空位置可用,设备:"+ targetPostion);
@@ -393,23 +395,30 @@ public class StationUserController extends SuperController<StationUserService, L
                 }
 
                 R r = this.addCutToolTask(hashMap);
-                if (!r.getIsSuccess()) {
-                    buffer.append(cutterT+ ";原因:" + r.getMsg());
+                if (r.getIsSuccess()) {
+                    bufferSuccess.append("<br>刀号成功:"+ cutterT);
+                }else {
+                    bufferError.append("<br>刀号失败:"+cutterT+ ";原因:" + r.getMsg());
                 }
 
             } catch (Exception e) {
                 log.error("===批量新增刀具出错==={}", e);
                 e.printStackTrace();
-                buffer.append(model.get("cutterT") + ";原因:" + (e.getMessage()==null?e:e.getMessage()));
+                bufferError.append("<br>刀号失败:"+model.get("cutterT")+ ";原因:" + (e.getMessage()==null?e:e.getMessage()));
             }
         }
 
-        if (buffer.toString().isEmpty()) {
-            return R.success();
+        if (bufferError.toString().isEmpty()) {
+            return R.success(null, bufferSuccess.toString());
         } else {
-            return R.fail(-1, "失败的刀具号:" + buffer.toString());
+            if(!bufferSuccess.toString().isEmpty()){
+                return R.success(-1, "部分成功:" + bufferSuccess.toString()+ bufferError.toString());
+            }else {
+                return R.success(-2, "失败:" + bufferError.toString());
+            }
         }
 
+
     }
 
     @ApiOperation(value = "新增刀具取放任务", notes = "新增刀具取放任务")
@@ -453,6 +462,15 @@ public class StationUserController extends SuperController<StationUserService, L
         String goalType = model.containsKey("goalType") ? model.get("goalType").toString() : null;
         String start = model.containsKey("start") ? model.get("start").toString() : null;
         if (StringUtil.isEmpty(goalType) || StringUtil.isEmpty(start)) return R.fail("传参有误");
+
+        Map map = new HashMap();
+        map.put("startCode", DictionaryKey.YJ_ZONE_XBK.get("涡轴柔性加工单元-tool"));
+        map.put("startPointId", start);
+        boolean checkStartBool = productionresourcePositionService.checkXbkTaskStartPointId(map);
+        if(checkStartBool){
+            return R.fail("起点已被任务占用,不可创建任务");
+        }
+
         //目标位是刀具上下料站 则启用天轨线边库刀架支持
         //isMachine=0 判断天轨功能事件
         String isXbk = (goalType.contains("365") || goalType.contains("366")) && start.contains("CNC0") ? "1" : "0";
@@ -463,7 +481,7 @@ public class StationUserController extends SuperController<StationUserService, L
 
         OrderTask orderTask = OrderTask.builder().orderId(order.getId())
                 .hasMaterial("0").isMachine("0").isXbk(isXbk).start(model.get("start").toString()).goal(model.get("goal").toString())
-                .cutStartNo(model.get("cutStartNo").toString()).cutGoalNo(model.get("cutGoalNo").toString()).confBatchNo(confBatchNo).isApply(isApply)
+                .cutStartNo(model.get("cutStartNo").toString()).cutGoalNo(model.get("cutGoalNo").toString()).confBatchNo(confBatchNo).isApply(isApply).isDelete(1)
                 .build();
         orderTaskService.save(orderTask);
         OrderUpdateDTO orderUpdateDTO = OrderUpdateDTO.builder().ids(Arrays.asList(order.getId())).auditStatus("1").build();
@@ -527,7 +545,7 @@ public class StationUserController extends SuperController<StationUserService, L
         taskNodeService.update(null, updateWrapper);
 
         //isMachine=1 判断地轨功能事件
-        OrderTask orderTask = OrderTask.builder().orderId(order.getId())
+        OrderTask orderTask = OrderTask.builder().orderId(order.getId()).isDelete(1)
                 .hasMaterial("0").isMachine("1").isXbk("1").start(model.get("start").toString()).goal(model.get("goal").toString()).confBatchNo(tWorkpiece.getCompleteBatchNo())
                 .build();
         orderTaskService.save(orderTask);

+ 14 - 1
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/ToolController.java

@@ -14,7 +14,9 @@ import com.github.zuihou.business.cuttercategories.entity.CutterCategoriesGroup;
 import com.github.zuihou.business.cutterdata.cuttercategories.service.CutterCategoriesGroupService;
 import com.github.zuihou.business.edgeLibrary.dao.StorgeTrayConfMapper;
 import com.github.zuihou.business.edgeLibrary.entity.SStorgeTrayConf;
+import com.github.zuihou.business.operationManagementCenter.entity.OrderTask;
 import com.github.zuihou.business.operationManagementCenter.entity.TWorkpiece;
+import com.github.zuihou.business.operationManagementCenter.service.OrderTaskService;
 import com.github.zuihou.business.operationManagementCenter.service.WorkpieceService;
 import com.github.zuihou.business.productionReadyCenter.entity.BBom;
 import com.github.zuihou.business.productionReadyCenter.entity.CuttingTool;
@@ -141,8 +143,11 @@ public class ToolController extends SuperController<ToolService, Long, Tool, Too
     @Autowired
     private BBomService bBomService;
 
+    @Autowired
+    private OrderTaskService orderTaskService;
+
     //刀具定时任务处理
-    @Scheduled(cron = "0 0/2 * * * *")
+    @Scheduled(cron = "0 0/1 * * * *")
     @ApiOperation(value = "同步刀具", notes = "同步刀具")
     @PostMapping("/synchronousTool")
     public R<Boolean> synchronousTool() throws Exception {
@@ -157,6 +162,14 @@ public class ToolController extends SuperController<ToolService, Long, Tool, Too
         //同步更新处理
         List<MachineCuttingTool> cutToolList = machineCuttingToolService.sysCuttingTools(machineCuttingTool);
 
+        // 删除临时订单可以删除的数据,为2状态下的数据 start
+        List<OrderTask> list = orderTaskService.list(Wraps.<OrderTask>lbQ().eq(OrderTask::getIsDelete, 2));
+        if(!list.isEmpty()){
+            List<Long> collect = list.stream().map(OrderTask::getId).collect(Collectors.toList());
+            orderTaskService.removeByIds(collect);
+        }
+        // 删除临时订单可以删除的数据,为2状态下的数据 end
+
         if(cutToolList.size()<=0){
             return R.result(0,null,"没有查询到需要有换刀/放刀架数据");
         }

+ 10 - 1
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/OrderTask.java

@@ -86,6 +86,14 @@ public class OrderTask extends Entity<Long> {
     @Excel(name = "原订单批次号")
     private String confBatchNo;
 
+    @ApiModelProperty(value = "是否可删除1否,2是")
+    @NotEmpty(message = "是否可删除1否,2是")
+    @Length(max = 255, message = "原订单批次号管理长度不能超过255")
+    @TableField(value = "is_delete", condition = LIKE)
+    @Excel(name = "是否可删除1否,2是")
+    private int isDelete;
+
+
     @ApiModelProperty(value = "起始刀位号")
     @NotEmpty(message = "起始刀位号")
     @Length(max = 30, message = "起始刀位号长度不能超过3")
@@ -112,7 +120,7 @@ public class OrderTask extends Entity<Long> {
 
 
     @Builder
-    public OrderTask(Long orderId, String start, String goal,String isMachine, String hasMaterial, String isXbk, String confBatchNo, String cutStartNo, String cutGoalNo, String isApply){
+    public OrderTask(Long orderId, String start, String goal,String isMachine, String hasMaterial, String isXbk, String confBatchNo, String cutStartNo, String cutGoalNo, String isApply,int isDelete){
             this.orderId = orderId;
             this.start = start;
             this.goal = goal;
@@ -123,6 +131,7 @@ public class OrderTask extends Entity<Long> {
             this.cutStartNo = cutStartNo;
             this.cutGoalNo = cutGoalNo;
             this.isApply = isApply;
+            this.isDelete = isDelete;
     }
 
 }