oyq28 1 неделя назад
Родитель
Сommit
9602fcca34

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

@@ -29,12 +29,8 @@ import com.github.zuihou.business.productionReadyCenter.dao.AAutoNodeLogMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.BomProcedureMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.BomProcedureProgramMapper;
-import com.github.zuihou.business.productionReadyCenter.entity.AAutoNodeLog;
-import com.github.zuihou.business.productionReadyCenter.entity.BBom;
-import com.github.zuihou.business.productionReadyCenter.entity.BomProcedure;
-import com.github.zuihou.business.productionReadyCenter.service.AAutoNodeLogService;
-import com.github.zuihou.business.productionReadyCenter.service.BomProcedureProductionresourceService;
-import com.github.zuihou.business.productionReadyCenter.service.BomProcedureService;
+import com.github.zuihou.business.productionReadyCenter.entity.*;
+import com.github.zuihou.business.productionReadyCenter.service.*;
 import com.github.zuihou.business.productionResourceCenter.dao.ProductionresourceBizMapper;
 import com.github.zuihou.business.productionResourceCenter.dao.ProductionresourcePositionMapper;
 import com.github.zuihou.business.productionResourceCenter.dao.ResourceAutoCodeMapper;
@@ -174,6 +170,9 @@ public class TaskWorkNode {
     @Autowired
     private OrderTaskService orderTaskService;
 
+    @Autowired
+    private CuttingToolService cuttingToolService;
+
     //总控端口
     private final String ZK_port = "120";
 
@@ -421,9 +420,9 @@ public class TaskWorkNode {
                                 planMapper.deleteById(plan.getId());
                                 orderMapper.deleteById(order.getId());
 
-                                //原订单恢复初始化
+                                //地轨原订单恢复初始化
                                 //获取原订单零件批次号
-                                if(StringUtils.isNotEmpty(orderTask.getConfBatchNo())){
+                                if(StringUtils.isNotEmpty(orderTask.getConfBatchNo()) && orderTask.getIsMachine().equals("1")){
                                     String hostSystemUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ECSSYSTEMURL).toString());
                                     String eraseWorkPieceUrl = hostSystemUrl + "/api/authority/toolbar/eraseWorkPiece";
                                     JSONObject params = new JSONObject();
@@ -434,6 +433,40 @@ public class TaskWorkNode {
                                     stockInfoMapper.delete(new LbqWrapper<StockInfo>().eq(StockInfo::getCompleteBatchNo, orderTask.getConfBatchNo()));
                                 }
 
+                                //天轨刀具换刀重新出发取操作流程
+                                if(StringUtils.isNotEmpty(orderTask.getConfBatchNo()) && orderTask.getIsMachine().equals("0")){
+                                    String confBatchNo = orderTask.getConfBatchNo();
+                                    List<CuttingTool> cuttingToolList = cuttingToolService.list(new LbqWrapper<CuttingTool>().eq(CuttingTool::getCuttingToolNo, confBatchNo).or().eq(CuttingTool::getCuttingToolName, confBatchNo));
+                                    if(cuttingToolList.size() == 0 ){
+                                        msgUtil.createWarnLog("指定待取刀具数据不存在", "DataException");
+                                        return;
+                                    }
+                                    CuttingTool cuttingTool = cuttingToolList.get(0);
+                                    StockInfo stockInfo = stockInfoMapper.selectOne(new LbqWrapper<StockInfo>().eq(StockInfo::getGoodsType, "6").eq(StockInfo::getGoodsId, cuttingTool.getId()));
+                                    if(null == stockInfo){
+                                        msgUtil.createWarnLog("指定待取刀具库位信息不存在", "DataException");
+                                        return;
+                                    }
+                                    String hostSystemUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ECSSYSTEMURL).toString());
+                                    String addCutToolTaskUrl = hostSystemUrl + "/api/authority/toolbar/addCutToolTask";
+
+                                    //触发取刀架刀具放入机床
+                                    //同步添加天轨处理订单
+                                    JSONObject params = new JSONObject();
+                                    ProductionresourcePosition productionresourcePosition = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getStorgeId, stockInfo.getStorgeId()).last("LIMIT 1"));
+                                    params.put("start", "CT_"+ productionresourcePosition.getPointId());
+                                    params.put("goal", orderTask.getStart());
+                                    params.put("cutGoalNo", orderTask.getCutStartNo());
+                                    params.put("cutStartNo", "0");
+                                    params.put("goalType", productionresourcePosition.getCode());
+
+                                    //添加刀具取任务
+                                    msgUtil.httpForPost(addCutToolTaskUrl, params.toJSONString());
+
+                                }
+
+                                //删除自定义订单内容
+                                orderTaskService.removeById(orderTask.getId());
                             }
 
                         }

+ 3 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/MachineCuttingToolServiceImpl.java

@@ -168,9 +168,11 @@ public class MachineCuttingToolServiceImpl extends SuperCacheServiceImpl<Machine
                 machineCuttingTool.setTl(tl);
                 String doc = tool.getString("doc");
                 machineCuttingTool.setDoc(doc);
+                String rd = tool.getString("rd");
+                machineCuttingTool.setRd(rd);
                 baseMapper.insert(machineCuttingTool);
                 //刀具报警 调用天轨 目标去刀具上下料站
-                if(!map.containsKey(resourceId) && (tl.equals("L") || doc.equals("HD"))){
+                if(!map.containsKey(resourceId) && (doc.equals("FDJ") || doc.equals("HD"))){
                     map.put(resourceId, machineCuttingTool);
                 }
             }

+ 1 - 1
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/operationManagementCenter/ToolbarController.java

@@ -547,7 +547,7 @@ public class ToolbarController {
         });
         taskService.updateBatchById(taskList);
         //删除历史日志
-                
+
         return R.success();
     }
 

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

@@ -275,10 +275,14 @@ public class StationUserController extends SuperController<StationUserService, L
         String start = model.containsKey("start")? model.get("start").toString() : null;
         if(StringUtil.isEmpty(goalType) || StringUtil.isEmpty(start)) return R.fail("传参有误");
         //目标位是刀具上下料站 则启用天轨线边库刀架支持
+        //isMachine=0 判断天轨功能事件
         String isXbk = (goalType.contains("365") || goalType.contains("366")) && start.contains("CNC0") ? "1": "0";
+        //刀具待取刀具号或刀具规格处理 (空则无后续取 反之则取指定刀具)
+        String confBatchNo = !model.containsKey("rd") && !model.containsKey("specification") ? "" : (model.containsKey("rd")? model.get("rd").toString() : model.get("specification").toString());
+
         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())
+                .cutStartNo(model.get("cutStartNo").toString()).cutGoalNo(model.get("cutGoalNo").toString()).confBatchNo(confBatchNo)
                 .build();
         orderTaskService.save(orderTask);
         OrderUpdateDTO orderUpdateDTO = OrderUpdateDTO.builder().ids(Arrays.asList(order.getId())).auditStatus("1").build();
@@ -340,6 +344,7 @@ public class StationUserController extends SuperController<StationUserService, L
         updateWrapper.lambda().set(TaskNode::getExeStatus, "3").eq(TaskNode::getExeStatus,"2").eq(TaskNode::getCompleteBatchNo, tWorkpiece.getCompleteBatchNo());
         taskNodeService.update(null, updateWrapper);
 
+        //isMachine=1 判断地轨功能事件
         OrderTask orderTask = OrderTask.builder().orderId(order.getId())
                 .hasMaterial("0").isMachine("1").isXbk("1").start(model.get("start").toString()).goal(model.get("goal").toString()).confBatchNo(tWorkpiece.getCompleteBatchNo())
                 .build();

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

@@ -29,6 +29,7 @@ import com.google.common.collect.Maps;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.validation.annotation.Validated;
@@ -146,10 +147,22 @@ public class ToolController extends SuperController<ToolService, Long, Tool, Too
                     Productionresource productionresource = productionresourceBizService.getById(cutToolStation.getResourceId());
                     data.put("goalType", productionresource.getCode());
                     data.put("goal", "CT_"+cutToolStation.getPointId());
+                    //刀具报警
+                    if(StringUtils.isEmpty(item.getRd())){
+                        data.put("specification", item.getCuttingToolName());
+                    }else{
+                        data.put("rd", item.getRd());
+                    }
                 } else {
                     //非报警移动到线边库释放刀具
                     data.put("goalType", DictionaryKey.YJ_ZONE_XBK.get(zoneName + "-tool"));
                     data.put("goal", "CT_"+ xbkList.get(i).getPointId());
+                    //放刀架 不取或者取指定规格刀
+                    //String rd = this.getSpecification(item.getMachineId(), item);
+                    //rd为空不取刀具  rd为刀架上待取刀具的刀具号
+                    if(!StringUtils.isEmpty(item.getRd())) {
+                        data.put("rd", item.getRd());
+                    }
                 }
 
                 String cutPosition = item.getCuttingToolPosition().replace("1.", "");
@@ -163,4 +176,25 @@ public class ToolController extends SuperController<ToolService, Long, Tool, Too
         return R.success();
     }
 
+
+    /**
+     *  获取放刀架后待取刀具规格信息
+     * @param machineId  设备ID
+     * @param machineCuttingTool 当前刀具规格
+     * @return
+     */
+    private  String getSpecification(long machineId, MachineCuttingTool machineCuttingTool){
+        //放刀架
+        int count = machineCuttingToolService.count(new LbqWrapper<MachineCuttingTool>().eq(MachineCuttingTool::getMachineId, machineId));
+        // 机床刀位未全部占满 当前刀具放刀架无后续取刀具处理
+        if ( count < 40) return null;
+        // 机床刀位全部占满 刀具放刀架伴随后续取等数量刀具任务处理
+        if (count == 40){
+
+        }
+        return null;
+    }
+
+
+
 }

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

@@ -161,4 +161,10 @@ public class MachineCuttingToolPageDTO implements Serializable {
     @ApiModelProperty(value = "换刀标识位")
     private String doc;
 
+    /**
+     * 取刀具号
+     */
+    @ApiModelProperty(value = "取刀具号")
+    private String rd;
+
 }

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

@@ -153,4 +153,10 @@ public class MachineCuttingToolSaveDTO implements Serializable {
      */
     @ApiModelProperty(value = "换刀标识位")
     private String doc;
+
+    /**
+     * 取刀具号
+     */
+    @ApiModelProperty(value = "取刀具号")
+    private String rd;
 }

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

@@ -192,6 +192,14 @@ public class MachineCuttingTool extends Entity<Long> {
     @Excel(name = "锁定状态")
     private String tl;
 
+    /**
+     * 锁定状态
+     */
+    @ApiModelProperty(value = "取刀具号")
+    @TableField(value = "rd", condition = EQUAL)
+    @Excel(name = "取刀具号")
+    private String rd;
+
     /**
      * 锁定运行状态
      */