Просмотр исходного кода

fix:优化刀具入库后是否自动进机床

wang.sq@aliyun.com 2 недель назад
Родитель
Сommit
e6ad897d83

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

@@ -21,10 +21,7 @@ import com.github.zuihou.business.externalApi.service.AgvHikOrderInfoService;
 import com.github.zuihou.business.externalApi.service.ExternalApiService;
 import com.github.zuihou.business.operationManagementCenter.dao.*;
 import com.github.zuihou.business.operationManagementCenter.entity.*;
-import com.github.zuihou.business.operationManagementCenter.service.OrderService;
-import com.github.zuihou.business.operationManagementCenter.service.OrderTaskService;
-import com.github.zuihou.business.operationManagementCenter.service.TaskNodeService;
-import com.github.zuihou.business.operationManagementCenter.service.WorkpieceService;
+import com.github.zuihou.business.operationManagementCenter.service.*;
 import com.github.zuihou.business.productionReadyCenter.dao.AAutoNodeLogMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.BomProcedureMapper;
@@ -176,6 +173,9 @@ public class TaskWorkNode {
     @Autowired
     private CuttingToolApplyService cuttingToolApplyService;
 
+    @Autowired
+    private ToolTaskService toolTaskService;
+
     //总控端口
     private final String ZK_port = "120";
 
@@ -438,16 +438,21 @@ public class TaskWorkNode {
                                 //天轨刀具换刀重新出发取操作流程
                                 if(StringUtils.isNotEmpty(orderTask.getConfBatchNo()) && orderTask.getIsMachine().equals("0")){
                                     String confBatchNo = orderTask.getConfBatchNo();
-                                    List<Long> cuttingToolIdList = cuttingToolService.list(new LbqWrapper<CuttingTool>().eq(CuttingTool::getCuttingToolNo, confBatchNo).or().eq(CuttingTool::getCuttingToolName, confBatchNo)).stream().map(CuttingTool::getId).collect(Collectors.toList());
-                                    if(cuttingToolIdList.size() == 0 ){
+                                    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());
                                         return;
                                     }
+
+                                    List<Long> cuttingToolIdList = list.stream().map(CuttingTool::getId).collect(Collectors.toList());
+                                    Map<Long, List<CuttingTool>> collect = list.stream().collect(groupingBy(CuttingTool::getId));
+
                                     List<StockInfo> stockInfoList = stockInfoMapper.selectList(new LbqWrapper<StockInfo>().eq(StockInfo::getGoodsType, "6").in(StockInfo::getGoodsId, cuttingToolIdList));
                                     List<Long> storgeIdList = stockInfoList.stream().map(StockInfo::getStorgeId).collect(Collectors.toList());
-                                    List<ProductionresourcePosition> productionresourcePositionList = productionresourcePositionService.getFreeProductionresourcePositionByNos(new String[]{"CT_02"});
+
+                                    List<ProductionresourcePosition> productionresourcePositionList = productionresourcePositionService.getProductionresourcePositionByNos(new String[]{"CT_02"});
 
                                     productionresourcePositionList =  productionresourcePositionList.stream().filter(item -> {
                                         return storgeIdList.contains(item.getStorgeId());
@@ -461,17 +466,39 @@ public class TaskWorkNode {
                                     }
 
                                     ProductionresourcePosition productionresourcePosition = productionresourcePositionList.get(0);
+
                                     String ecssystemurl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ECSSYSTEMURL).toString());
                                     String addCutToolTaskUrl = ecssystemurl + "/toolbar/addCutToolTask";
 
+                                    CuttingTool cuttingTool = collect.get(productionresourcePosition.getGoodsId()).get(0);
                                     //触发取刀架刀具放入机床
                                     //同步添加天轨处理订单
                                     JSONObject params = new JSONObject();
+                                    params.put("brandName", cuttingTool.getCuttingToolName());
+                                    params.put("brandNo", cuttingTool.getCuttingToolNo());
+                                    params.put("goodsId", cuttingTool.getId());
+                                    params.put("goalType", productionresourcePosition.getCode());
                                     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());
+
+                                    // 判断是不是HD的刀具,重新组装后入库,需要送入到机床中
+                                    if(StringUtil.isNotEmpty(cuttingTool.getDoc()) && cuttingTool.getDoc().contains("HD")){
+                                        String[] split = cuttingTool.getDoc().split("&");
+                                        //获取机床待取库位
+                                        ProductionresourcePosition cncProductionresourcePosition = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getResourceId, Long.parseLong(split[0])).like(ProductionresourcePosition::getPointId, "CNCT").last("LIMIT 1"));
+                                        Productionresource productionresource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getId,Long.parseLong(split[0]) ));
+                                        R<List<String>> cutToolShelfDevice = toolTaskService.getCutToolShelfDevice(productionresource.getCode());
+                                        if(!cutToolShelfDevice.getIsSuccess()){
+                                            log.setFeedback(cutToolShelfDevice.getMsg());
+                                            return;
+                                        }
+
+                                        params.put("goal", "CT_"+ cncProductionresourcePosition.getPointId());
+                                        params.put("cutGoalNo", cutToolShelfDevice.getData().get(0));
+
+                                    }
 
                                     //添加刀具取任务
                                     msgUtil.httpForPost(addCutToolTaskUrl, params.toJSONString());

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

@@ -111,6 +111,8 @@ public class MachineCuttingToolServiceImpl extends SuperCacheServiceImpl<Machine
 
     @Override
     public List<MachineCuttingTool> sysCuttingTools(MachineCuttingTool data) throws Exception{
+        log.info("================机床刀具数据同步 查询参数================" + JSONObject.toJSONString(data) );
+
         BaseContextHandler.setTenant("0000");
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_JSON);
@@ -144,7 +146,7 @@ public class MachineCuttingToolServiceImpl extends SuperCacheServiceImpl<Machine
                     ResponseEntity<String> postForEntity = restTemplate.postForEntity(instructionUrl, request, String.class);
                     resultData = postForEntity.getBody();
                 } else {
-                    resultData = "{\"result\":\"true\",\"msg\":\"success\",\"code\":200,\"total\":0,\"data\":[{\"position\":\"1.1\",\"number\":\"1\",\"name\":\"XD20\",\"warnLife\":\"0\",\"targetLife\":\"2282.88\",\"workPiece\":null,\"workPieceWarn\":null,\"workPieceTarget\":null,\"wear\":null,\"wearWarn\":null,\"wearTarget\":null,\"sisterNo\":null,\"toolEdgeNo\":null,\"toolPosition\":null,\"toolRadius\":null,\"tl\":\"0\",\"doc\":\"\",\"isMainShaft\":\"0\"},{\"position\":\"1.5\",\"number\":\"5\",\"name\":\"7-N123F2-57032R-C5RG-C5L90\",\"warnLife\":\"0\",\"targetLife\":\"6.78\",\"workPiece\":null,\"workPieceWarn\":null,\"workPieceTarget\":null,\"wear\":null,\"wearWarn\":null,\"wearTarget\":null,\"sisterNo\":null,\"toolEdgeNo\":null,\"toolPosition\":null,\"toolRadius\":null,\"tl\":\"0\",\"doc\":\"\",\"isMainShaft\":\"0\"}]}\n";
+                    resultData = "{\"result\":\"true\",\"msg\":\"success\",\"code\":200,\"total\":0,\"data\":[{\"position\":\"1.1\",\"number\":\"1\",\"name\":\"XD20\",\"warnLife\":\"0\",\"targetLife\":\"2282.88\",\"workPiece\":null,\"workPieceWarn\":null,\"workPieceTarget\":null,\"wear\":null,\"wearWarn\":null,\"wearTarget\":null,\"sisterNo\":null,\"toolEdgeNo\":null,\"toolPosition\":null,\"toolRadius\":null,\"tl\":\"0\",\"doc\":\"\",\"isMainShaft\":\"0\"},{\"position\":\"1.5\",\"number\":\"5\",\"name\":\"7-N123F2-57032R-C5RG-C5L90\",\"warnLife\":\"0\",\"targetLife\":\"6.78\",\"workPiece\":null,\"workPieceWarn\":null,\"workPieceTarget\":null,\"wear\":null,\"wearWarn\":null,\"wearTarget\":null,\"sisterNo\":null,\"toolEdgeNo\":null,\"toolPosition\":null,\"toolRadius\":null,\"tl\":\"0\",\"doc\":\"FDJ\",\"isMainShaft\":\"0\"}]}\n";
                 }
 
                 JSONObject resultObj = JSONObject.parseObject(resultData);
@@ -206,10 +208,13 @@ public class MachineCuttingToolServiceImpl extends SuperCacheServiceImpl<Machine
                         CuttingTool cuttingTool = cutterDataAll.get(Long.parseLong(cuttingToolNo)).get(0);
                         cuttingTool.setDeviceId(resourceId);
                         cuttingTool.setCutterNo(Long.parseLong(position.replace("1.","")));
+                        cuttingTool.setDoc("");
+                        if(tool.containsKey("doc")&& tool.getString("doc").length()>0){
+                            cuttingTool.setDoc(resourceId+"&"+ tool.getString("doc"));
+                        }
 
                         cuttingToolMapper.updateById(cuttingTool);
 
-
                         machineCuttingTool.setCuttingToolPicture(cuttingTool.getCuttingToolPicture());
                         machineCuttingTool.setCuttingToolInstallPicture(cuttingTool.getCuttingToolInstallPicture());
                     }

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

@@ -63,6 +63,13 @@ public interface ProductionresourcePositionService extends SuperService<Producti
 
     ProductionresourcePosition getJBWPositionByCode(String resourceCode);
 
+    /**
+     * 根据设备编号获取已经有的物料信息
+     * @param noArr
+     * @return
+     */
+    List<ProductionresourcePosition>getProductionresourcePositionByNos(String [] noArr);
+
     /**
      * 根据设备编号获取空闲位置
      * @param noArr
@@ -71,7 +78,7 @@ public interface ProductionresourcePositionService extends SuperService<Producti
     List<ProductionresourcePosition>getFreeProductionresourcePositionByNos(String [] noArr);
 
     /**
-     * 根据设备编号,或者去空闲位置刀具的
+     * 根据设备编号,获取空闲位置刀具的点位信息
      * @param noArr
      * @return
      */

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

@@ -302,6 +302,14 @@ public class ProductionresourcePositionServiceImpl extends SuperServiceImpl<Prod
         }
     }
 
+    @Override
+    public List<ProductionresourcePosition> getProductionresourcePositionByNos(String noArr[]) {
+        Map map = new HashMap();
+        map.put("codes",StringUtil.changeIdsArrToSubQueryStr(noArr));
+        map.put("fullFlag","1");
+        List<ProductionresourcePosition>list = baseMapper.getPPList(map);
+        return list;
+    }
 
     @Override
     public List<ProductionresourcePosition> getFreeProductionresourcePositionByNos(String noArr[]) {

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

@@ -796,7 +796,8 @@ public class ToolbarController {
     @ApiOperation(value = "添加刀具任务", notes = "添加刀具任务")
     @PostMapping("/addCutToolTask")
     public R addCutToolTask(@RequestBody Map data) {
-        return stationUserController.addCutToolTask(data);
+        R r = stationUserController.addCutToolTask(data);
+        return r;
     }
 
     @ApiOperation(value = "添加自定义订单任务", notes = "添加自定义订单任务")

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

@@ -133,6 +133,7 @@ public class CuttingToolApplyController extends SuperCacheController<CuttingTool
     @ApiOperation(value = "自动换刀", notes = "自动换刀")
     @PostMapping("/cuttingToolTask")
     public R<Boolean> cuttingToolTask() {
+        log.info("===============查询刀具安装申请表进行自动上刀====================");
         BaseContextHandler.setTenant("0000");
         IPage<CuttingToolApply> page = new Page<CuttingToolApply>(1L, 100L);
         List<CuttingToolApply> dataList = baseService.findPageByQueryWrapper(page, new LbqWrapper<CuttingToolApply>().eq(CuttingToolApply::getProcessStatus, "0").orderByAsc(CuttingToolApply::getCreateTime).orderByAsc(CuttingToolApply::getPlanId).orderByAsc(CuttingToolApply::getResourceId).orderByAsc(CuttingToolApply::getProcessStatus)).getRecords();

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

@@ -437,8 +437,8 @@ public class StationUserController extends SuperController<StationUserService, L
         jsonSub.put("doc",  model.get("doc").toString());
 
         JSONObject jsonMain = new JSONObject();
-        jsonMain.put("port", productionresource.getIp());
-        jsonMain.put("url", productionresource.getPort());
+        jsonMain.put("port", productionresource.getPort());
+        jsonMain.put("url", productionresource.getIp());
         jsonMain.put("taskId", System.currentTimeMillis()+"");
         jsonMain.put("taskNodeId", System.currentTimeMillis()+ "1");
         jsonMain.put("data", jsonSub);

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

@@ -148,6 +148,12 @@ public class CuttingTool extends Entity<Long> {
     @Excel(name = "物料描述,多个用分号’;‘隔开")
     private String factoryMaterialDesc;
 
+    @ApiModelProperty(value = "刀具是否需要取出, 设备id+ 取标识")
+    @Length(max = 20, message = "备注长度不能超过255")
+    @TableField(value = "doc", condition = LIKE)
+    @Excel(name = "刀具是否需要取出, 设备id+ 取标识")
+    private String doc;
+
     @TableField(exist = false)
     private String deviceName;