Explorar o código

后台业务处理

oyq28 %!s(int64=3) %!d(string=hai) anos
pai
achega
1f3af0a4bb
Modificáronse 20 ficheiros con 252 adicións e 34 borrados
  1. 4 4
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/aps/algorithm/ga/GAScheduler.java
  2. 1 1
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/OrderServiceImpl.java
  3. 35 10
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskNodeServiceImpl.java
  4. 2 2
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskServiceImpl.java
  5. 134 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/BomProcedureVersionServiceImpl.java
  6. 1 1
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionReadyCenter/service/impl/CuttingToolServiceImpl.java
  7. 3 3
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/MachineNodeServiceImpl.java
  8. 1 1
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/ProductionresourceBizServiceImpl.java
  9. 9 2
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/ProgramServiceImpl.java
  10. 2 2
      imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/operationManagementCenter/PlanMapper.xml
  11. 1 1
      imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/BBomProcedureToolMapper.xml
  12. 3 2
      imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/CuttingToolMapper.xml
  13. 5 2
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/SynProductionStatus.java
  14. 2 0
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionReadyCenter/CuttingToolController.java
  15. 1 1
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionReadyCenter/MToolClampController.java
  16. 1 1
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionReadyCenter/MachineCuttingToolController.java
  17. 9 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolPageDTO.java
  18. 6 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolSaveDTO.java
  19. 6 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/dto/CuttingToolUpdateDTO.java
  20. 26 1
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/entity/CuttingTool.java

+ 4 - 4
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/aps/algorithm/ga/GAScheduler.java

@@ -76,11 +76,11 @@ public class GAScheduler {
 				+ results.stream().mapToDouble(Double::doubleValue).min().orElse(0D)); */
 		long end = System.currentTimeMillis();
 		instance.getObjective().setObjectiveValue(results.stream().mapToDouble(Double::doubleValue).min().orElse(0D));
-		Iterator<Map.Entry<String, TTask>> it = instance.getOperationMap().entrySet().iterator();
-		while(it.hasNext()){
-			TTask operation = it.next().getValue();
+		//Iterator<Map.Entry<String, TTask>> it = instance.getOperationMap().entrySet().iterator();
+		//while(it.hasNext()){
+		//	TTask operation = it.next().getValue();
 			//System.out.println("[" + operation.getCompleteBatchNo() + "]" + operation.getProcedureNo() + "[" + operation.getMachineId() + "]" + ":"+ DateUtil.format(new Date(operation.getStart()),"yyyy-MM-dd HH:mm:ss") + "-" + DateUtil.format(new Date(operation.getFinish()),"yyyy-MM-dd HH:mm:ss"));
-		}
+		//}
 		//System.out.println(JSONObject.toJSONString(instance.getPartMap()));
 		System.out.println("排产调度用时:" + Double.valueOf((end - start) / 1000.0) + "秒");
 	}

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/OrderServiceImpl.java

@@ -976,7 +976,7 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
                                 }else{
                                     // 查询设备状态
                                     Productionresource productionresource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getId, bomProcedureProductionresource.getResourceId()));
-                                    if("1".equals(productionresource.getStatus()) || "1".equals(productionresource.getOnlineStatus())){
+                                    if("1".equals(productionresource.getStatus()) && ("1".equals(productionresource.getOnlineStatus()) || "2".equals(productionresource.getOnlineStatus()))){
                                         taskService.assemblingCandidate(candidateProMap, machineMap, workpiece, candidateProcesses, bomProcedure, machine, candidateProcess, bomProcedureProductionresource);
                                     }
                                 }

+ 35 - 10
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskNodeServiceImpl.java

@@ -1659,6 +1659,8 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             }
             //解锁相关资源
             unlockResource(taskNode, task, callBackJson);
+            //释放缓存过期数据
+            //unlockRedisData(taskNode, task, callBackJson);
 
             //更新订单表里的完成数量等等字段,一个任务执行完的时候更相信
             if (n == taskNodeList.size() - 1) {
@@ -1886,6 +1888,25 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
 
     }
 
+    /**
+     *
+     */
+    public void unlockRedisData(TaskNode taskNode, TTask task, JSONObject callBackJson){
+        //哈默机床上传文件缓存清空处理
+        //boolean bool = msgUtil.redis_get(DemoLineConstant.DEMOLINE_HEIDENHAIN_FILE_URL+"_"+task.getId())!=null? true:false;
+        //if(bool){
+        //    msgUtil.redis_del(DemoLineConstant.DEMOLINE_HEIDENHAIN_FILE_URL+"_"+task.getId());
+        //}
+        //呼叫工装缓存清空处理
+        boolean  bool2 = msgUtil.redis_get(YunjianConstant.YUNJIAN_FANMIAN + taskNode.getId())!=null && task.getStatus().equals("3");
+        if(bool2){
+            //翻面业务工序已完成
+            msgUtil.redis_del(YunjianConstant.YUNJIAN_FANMIAN + taskNode.getId());
+        }
+
+    }
+
+
     /**
      * 示范线出库入库
      *
@@ -1959,6 +1980,7 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                     stockInfoService.updateBatchById(stockInfoList);
                 }
             }
+            return R.success("");
         }
         if (DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_CK.equals(stockType)) {
             List<BomProcedureMeterial> meterialList =
@@ -2691,18 +2713,23 @@ planId));
         if (msgUtil.redis_get(YunjianConstant.YUNJIAN_FANMIAN + taskNodeId) != null) {
             return R.fail("呼叫机器人已提交,请勿重复操作");
         }
-        msgUtil.redis_set(YunjianConstant.YUNJIAN_FANMIAN + taskNodeId, YunjianConstant.YUNJIAN_FANMIAN + taskNodeId);
+        msgUtil.redis_set(YunjianConstant.YUNJIAN_FANMIAN + taskNodeId, YunjianConstant.YUNJIAN_FANMIAN + taskNodeId, 10, TimeUnit.DAYS);
 
+        List<TaskNode> fanMNodes = this.getFanManNodes(hisTask, callType);
         List<Long> taskIds = this.list(new LbqWrapper<TaskNode>().eq(TaskNode::getCompleteBatchNo,
                 hisTask.getCompleteBatchNo()).gt(TaskNode::getCompleteBatchSort, hisTask.getCompleteBatchSort()).orderByAsc(TaskNode::getCompleteBatchSort)).stream().map(TaskNode::getId).collect(Collectors.toList());
 
-        List<TaskNode> fanMNodes = this.getFanManNodes(hisTask, callType);
-        UpdateWrapper<TaskNode> updateWrapper = new UpdateWrapper<TaskNode>();
-        updateWrapper.lambda().in(TaskNode::getId, taskIds.toArray()).gt(TaskNode::getCompleteBatchSort,
-                hisTask.getCompleteBatchSort()).setSql("complete_batch_sort = complete_batch_sort + " + fanMNodes.size());
-        boolean bool = this.update(updateWrapper);
+        boolean bool = true;
+        if(taskIds.size()>0){
+            UpdateWrapper<TaskNode> updateWrapper = new UpdateWrapper<TaskNode>();
+            updateWrapper.lambda().in(TaskNode::getId, taskIds.toArray()).gt(TaskNode::getCompleteBatchSort,
+                    hisTask.getCompleteBatchSort()).setSql("complete_batch_sort = complete_batch_sort + " + fanMNodes.size());
+            bool = this.update(updateWrapper);
+        }
         if (bool) {
             this.saveBatch(fanMNodes);
+        }else{
+            return R.fail("节点数据更新失败");
         }
 
         TTask tTask = taskService.getById(hisTask.getTaskId());
@@ -2718,12 +2745,10 @@ planId));
                 tTask.getCompleteBatchNo()).orderByAsc(TaskNode::getCompleteBatchSort));
 
         JSONObject jsonObject = new JSONObject();
-        if(callType.equals("3")){
+        //动态生成节点前先下料零件
+        if(callType.equals("3") || callType.equals("2")){
             Storge currStorage = workpieceService.getWorkPieceStock(hisTask.getCompleteBatchNo(), false);
             jsonObject.put("srcPosition", currStorage.getId());
-            //限定伺服舵机
-            //jsonObject.put("targetPostion", this.getLikuStockInList());
-            //ProductionresourcePosition position = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getName, "伺服舵机"));
             jsonObject.put("targetPostion", "");
             jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CK);
         }

+ 2 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskServiceImpl.java

@@ -346,7 +346,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
                                 }else{
                                     // 查询设备状态
                                     Productionresource productionresource = productionresourceBizMapper.selectOne(Wraps.<Productionresource>lbQ().eq(Productionresource::getId, bomProcedureProductionresource.getResourceId()));
-                                    if("1".equals(productionresource.getStatus()) || "1".equals(productionresource.getOnlineStatus())){
+                                    if("1".equals(productionresource.getStatus()) && ("1".equals(productionresource.getOnlineStatus()) || "2".equals(productionresource.getOnlineStatus()))){
                                         assemblingCandidate(candidateProMap, machineMap, workpiece, candidateProcesses, bomProcedure, machine, candidateProcess, bomProcedureProductionresource);
                                     }
                                 }
@@ -431,7 +431,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
         Productionresource productionresource = productionresourceBizMapper.selectById(bomProcedureProductionresource.getResourceId());
 
 
-        if (!machineMap.containsKey(bomProcedureProductionresource.getResourceId()) && "1".equals(productionresource.getStatus()) && "1".equals(productionresource.getOnlineStatus())) {
+        if (!machineMap.containsKey(bomProcedureProductionresource.getResourceId()) && "1".equals(productionresource.getStatus()) && ("1".equals(productionresource.getOnlineStatus()) || "2".equals(productionresource.getOnlineStatus()) )) {
             machine.setId(bomProcedureProductionresource.getResourceId().longValue());
             // 添加设备维保时间片
             LbqWrapper<Repair> repairWrapper = new LbqWrapper<Repair>().eq(Repair::getProductionresourceId, bomProcedureProductionresource.getResourceId()).gt(Repair::getRepairStartTime, cn.hutool.core.date.DateUtil.toLocalDateTime(cn.hutool.core.date.DateUtil.date()));

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

@@ -27,6 +27,7 @@ import com.github.zuihou.common.constant.BizConstant;
 import com.github.zuihou.common.constant.DictionaryType;
 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.database.properties.DatabaseProperties;
 import com.github.zuihou.file.entity.Attachment;
 import com.github.zuihou.file.service.AttachmentService;
@@ -34,6 +35,7 @@ import com.github.zuihou.model.RemoteData;
 import com.github.zuihou.utils.BeanPlusUtil;
 import com.github.zuihou.utils.StrPool;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -624,12 +626,16 @@ public class BomProcedureVersionServiceImpl extends SuperServiceImpl<BomProcedur
 
             List<BomProcedureTray> bomProcedureTrays = bomProcedureTrayService.list(Wraps.<BomProcedureTray>lbQ().eq(BomProcedureTray::getProcedureId,preBomProcedure.getId()));
 
+            List<BomProcedureTray> procedureTrayList = bean.getProcedureTrayList();
             // 插入当前工序的托盘夹具
             for(BomProcedureTray tray:bomProcedureTrays){
                 //添加明细,添加选择的夹具
                 tray.setId(null);
                 tray.setProcedureId(currBomProcedure.getId());
                 tray.setGroupId(currGroupBean.getId());
+                if(procedureTrayList!=null && procedureTrayList.size()>0 && tray.getBizType().equals("2")){
+                    tray.setArmorPic(procedureTrayList.get(0).getArmorPic());
+                }
                 bomProcedureTrayService.save(tray);
             }
         }
@@ -899,6 +905,9 @@ public class BomProcedureVersionServiceImpl extends SuperServiceImpl<BomProcedur
         //固定请求查询上一序
         bean.setTrayConf("2");
         return getPreProcedureTray( bean);
+       /*
+        //替换工装图
+        return dataList; */
     }
 
     @Override
@@ -923,7 +932,10 @@ public class BomProcedureVersionServiceImpl extends SuperServiceImpl<BomProcedur
             //最终需要查询的工艺
             BomProcedureVersion targetBomProcedureVersion  = null;
             for(BomProcedureVersion bomProcedureVersion:list){
+                //boolean bool = bomProcedureVersion.getProcedureTrayList().size()>0 && StringUtils.isNotEmpty(bomProcedureVersion.getProcedureTrayList().get(0).getArmorPic());
                 if(!"2".equals(bomProcedureVersion.getTrayConf())){//非上一工序
+                //工装图设定处理
+                //if(bool){
                     targetBomProcedureVersion = bomProcedureVersion;
                     break;
                 }
@@ -938,6 +950,21 @@ public class BomProcedureVersionServiceImpl extends SuperServiceImpl<BomProcedur
                 return procedureTrayList;
             }
             procedureTrayList = getPreProcedureTray(targetBomProcedureVersion);
+            //工装图片替换
+            if(procedureTrayList.size()>0 && StringUtils.isNotEmpty(procedureTrayList.get(0).getArmorPic())){
+                String armorPic = procedureTrayList.get(0).getArmorPic();
+                BomProcedureTray bomProcedureTray = bomProcedureTrayService.getOne(new LbqWrapper<BomProcedureTray>().eq(BomProcedureTray::getBizType, "2").eq(BomProcedureTray::getProcedureId, bean.getId()));
+                if(null!=bomProcedureTray && StringUtils.isNotEmpty(bomProcedureTray.getArmorPic()) && !bomProcedureTray.getArmorPic().equals(armorPic)){
+                    procedureTrayList.get(0).setArmorPic(bomProcedureTray.getArmorPic());
+                }else if(null!=bomProcedureTray && StringUtils.isEmpty(bomProcedureTray.getArmorPic())){
+                    //List<Long> ids = list.stream().mapToLong(BomProcedureVersion::getId).boxed().collect(Collectors.toList());
+                    long preId = list.stream().mapToLong(BomProcedureVersion::getId).boxed().collect(Collectors.toList()).get(0);
+                    BomProcedureTray preProcedureTray = bomProcedureTrayService.getOne(new LbqWrapper<BomProcedureTray>().eq(BomProcedureTray::getProcedureId, preId).eq(BomProcedureTray::getBizType, "2"));
+                    if(null!=preProcedureTray && preProcedureTray.getArmorPic()!=armorPic){
+                        procedureTrayList.get(0).setArmorPic(preProcedureTray.getArmorPic());
+                    }
+                }
+            }
         }
         return procedureTrayList;
     }
@@ -1066,6 +1093,113 @@ public class BomProcedureVersionServiceImpl extends SuperServiceImpl<BomProcedur
         return targetBomProcedure;
     }
 
+    /**
+     * 复制工艺版本
+     *
+     * @param bean
+     * @return
+     */
+
+    @Override
+    public List<BomProcedureVersion> cloneProcedure(BomProcedureVersion bean) {
+        BomVersionInfo versionInfo = bomVersionInfoService.getById(bean.getVersionId());
+        BomVersionInfo bomVersionInfo = BomVersionInfo.builder().build();
+        String[] ignore = new String[]{
+                "id"
+        };
+        //赋值工艺版本数据
+        BeanUtil.copyProperties(versionInfo, bomVersionInfo, ignore);
+        bomVersionInfo.setVersion(versionInfo.getVersion()+".1").setNo(versionInfo.getNo()+"_1").setUseStatus("0").setAuditStatus("0").setRemark(versionInfo.getRemark()+"_克隆版");
+        bomVersionInfoService.save(bomVersionInfo);
+
+        List<BomProcedureVersion> bomProcedureVersionList = baseMapper.selectList(new LbqWrapper<BomProcedureVersion>().eq(BomProcedureVersion::getVersionId, versionInfo.getId()));
+
+        List<BomProcedureVersion> cloneList = Lists.newArrayList();
+        List<BomProcedureMeterial> materialList = Lists.newArrayList();
+        List<BomProcedureProgram> programList = Lists.newArrayList();
+        List<BomProcedureProductionresource> productionresourceList = Lists.newArrayList();
+        List<BomProcedureTray> trayList = Lists.newArrayList();
+        List<BomProcedureTrayGroup> trayGroupList = Lists.newArrayList();
+
+        bomProcedureVersionList.stream().forEach(item->{
+            //处理工艺管理信息
+            BomProcedureVersion bomProcedureVersion = BomProcedureVersion.builder().build();
+            BeanUtil.copyProperties(item, bomProcedureVersion, ignore);
+            bomProcedureVersion.setVersionId(bomVersionInfo.getId());
+            baseMapper.insert(bomProcedureVersion);
+            cloneList.add(bomProcedureVersion);
+
+            //处理工艺零件信息
+            BomProcedureMeterial  bomProcedureMeterial = BomProcedureMeterial.builder().build();
+            BomProcedureMeterial  sourceMeterial = bomProcedureMeterialService.getOne(new LbqWrapper<BomProcedureMeterial>().eq(BomProcedureMeterial::getProcedureId, item.getId()).last("limit 1"));
+            BeanUtil.copyProperties(sourceMeterial, bomProcedureMeterial, ignore);
+            bomProcedureMeterial.setProcedureId(bomProcedureVersion.getId());
+            materialList.add(bomProcedureMeterial);
+
+            //处理上传程序信息
+            BomProcedureProgram bomProcedureProgram = BomProcedureProgram.builder().build();
+            List<BomProcedureProgram> sourceProgramList  = bomProcedureProgramService.list(new LbqWrapper<BomProcedureProgram>().eq(BomProcedureProgram::getProcedureId, item.getId()));
+            if(null!=sourceProgramList && sourceProgramList.size()>0){
+                sourceProgramList.stream().forEach(sourceProgram-> {
+                    BeanUtil.copyProperties(sourceProgram, bomProcedureProgram, ignore);
+                    bomProcedureProgram.setProcedureId(bomProcedureVersion.getId());
+                    programList.add(bomProcedureProgram);
+                });
+            }
+
+            //处理关联设备
+            BomProcedureProductionresource bomProcedureProductionresource = BomProcedureProductionresource.builder().build();
+            List<BomProcedureProductionresource> sourceProductionresourceList  = bomProcedureProductionresourceService.list(new LbqWrapper<BomProcedureProductionresource>().eq(BomProcedureProductionresource::getProcedureId, item.getId()));
+            if(null!=sourceProductionresourceList && sourceProductionresourceList.size()>0){
+                sourceProductionresourceList.stream().forEach(sourceProductionresource-> {
+                    BeanUtil.copyProperties(sourceProductionresource, bomProcedureProductionresource, ignore);
+                    bomProcedureProductionresource.setProcedureId(bomProcedureVersion.getId());
+                    productionresourceList.add(bomProcedureProductionresource);
+                });
+            }
+
+            //处理子盘和子盘分组
+            List<BomProcedureTray> sourceBomProcedureTrayList = bomProcedureTrayService.list(new LbqWrapper<BomProcedureTray>().eq(BomProcedureTray::getProcedureId, item.getId()));
+            if(null!=sourceBomProcedureTrayList && sourceBomProcedureTrayList.size()>0){
+                sourceBomProcedureTrayList.stream().forEach(sourceBomProcedureTray-> {
+                    BomProcedureTray bomProcedureTray = BomProcedureTray.builder().build();
+                    BeanUtil.copyProperties(sourceBomProcedureTray, bomProcedureTray, ignore);
+                    bomProcedureTray.setProcedureId(bomProcedureVersion.getId());
+                    trayList.add(bomProcedureTray);
+                });
+            }
+
+            //处理子盘分组
+            BomProcedureTrayGroup bomProcedureTrayGroup = BomProcedureTrayGroup.builder().build();
+            List<BomProcedureTrayGroup> sourceBomProcedureTrayGroupList = bomProcedureTrayGroupService.list(new LbqWrapper<BomProcedureTrayGroup>().eq(BomProcedureTrayGroup::getProcedureId, item.getId()));
+            if(null!=sourceBomProcedureTrayGroupList && sourceBomProcedureTrayGroupList.size()>0){
+                sourceBomProcedureTrayGroupList.stream().forEach(sourceBomProcedureTrayGroup-> {
+                    BeanUtil.copyProperties(sourceBomProcedureTrayGroup, bomProcedureTrayGroup, ignore);
+                    bomProcedureTrayGroup.setProcedureId(bomProcedureVersion.getId());
+                    trayGroupList.add(bomProcedureTrayGroup);
+                });
+            }
+
+        });
+
+        //复制新增工艺管理数据
+        bomProcedureMeterialService.saveBatch(materialList);
+        if(programList.size()>0){
+            bomProcedureProgramService.saveBatch(programList);
+        }
+        if(productionresourceList.size()>0){
+            bomProcedureProductionresourceService.saveBatch(productionresourceList);
+        }
+        if(trayGroupList.size()>0){
+            bomProcedureTrayGroupService.saveBatch(trayGroupList);
+        }
+        if(trayList.size()>0){
+            bomProcedureTrayService.saveBatch(trayList);
+        }
+
+        return cloneList;
+    }
+
     /**
      * 再次修改配置后同步到正式数据
      * @param bean

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

@@ -44,7 +44,7 @@ public class CuttingToolServiceImpl extends SuperCacheServiceImpl<CuttingToolMap
 
     @Override
     public boolean check(CuttingToolSaveDTO data) {
-        return super.count(Wraps.<CuttingTool>lbQ().eq(CuttingTool::getCuttingToolName,data.getCuttingToolName()))>0;
+        return super.count(Wraps.<CuttingTool>lbQ().eq(CuttingTool::getCuttingToolName,data.getCuttingToolName()).eq(CuttingTool::getDeviceId, data.getDeviceId()))>0;
     }
 
 

+ 3 - 3
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/MachineNodeServiceImpl.java

@@ -255,12 +255,12 @@ public class MachineNodeServiceImpl implements NodeOperationService {
 //                    }
                     // TODO工件增加流水号
                     data.put("typeNo", "C");
-                    data.put("smalltypeNo", "K");
+                    data.put("smallTypeNo", "K");
                     data.put("orderNo", order.getOrderNo());
                     data.put("taskNo", task.getTaskNo());
                     data.put("productNo", tWorkpiece.getUniqueCode());
-                    data.put("batchNo", "000001");
-                    data.put("serialNo", "000001");
+                    data.put("batchNo", task.getCompleteBatchNo());
+                    data.put("serialNo", task.getProcedureSort());
                     map.put("data", data);
                     map.put("result", true);
                 }

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

@@ -126,7 +126,7 @@ public class ProductionresourceBizServiceImpl extends SuperServiceImpl<Productio
         String useState = map.get("useState").toString();
         //Long[] ids = new Long[]{1496364152329863168L, 1496364250765983744L, 1496364549605949440L};
         LambdaUpdateWrapper<Productionresource> updateWrapper = new UpdateWrapper<Productionresource>().lambda();
-        updateWrapper.set(Productionresource::getStatus, useState).in(Productionresource::getId, ids);
+        updateWrapper.set(Productionresource::getOnlineStatus, useState).in(Productionresource::getId, ids);
         baseMapper.update(null, updateWrapper);
         orderService.reschedulingPlanTasks();
         return true;

+ 9 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/ProgramServiceImpl.java

@@ -1,5 +1,6 @@
 package com.github.zuihou.business.productionResourceCenter.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
@@ -10,6 +11,8 @@ import com.github.zuihou.business.DemoLine.DemoLineConstant;
 import com.github.zuihou.business.productionReadyCenter.entity.BBomProcedureTool;
 import com.github.zuihou.business.productionReadyCenter.entity.BomProcedure;
 import com.github.zuihou.business.productionReadyCenter.entity.BomProcedureProductionresource;
+import com.github.zuihou.business.productionReadyCenter.entity.BomProcedureProgram;
+import com.github.zuihou.business.productionReadyCenter.service.BomProcedureProgramService;
 import com.github.zuihou.business.productionReadyCenter.service.BomProcedureToolService;
 import com.github.zuihou.business.productionResourceCenter.dao.ProductionresourceBizMapper;
 import com.github.zuihou.business.productionResourceCenter.dao.ProgramMapper;
@@ -21,6 +24,7 @@ import com.github.zuihou.business.productionResourceCenter.entity.ProgramSuitPro
 import com.github.zuihou.business.productionResourceCenter.entity.Tool;
 import com.github.zuihou.business.productionResourceCenter.service.ProgramService;
 import com.github.zuihou.business.productionResourceCenter.service.ProgramSuitProductionresourceService;
+import com.github.zuihou.business.util.CommonUtil;
 import com.github.zuihou.common.constant.UrlConfConstant;
 import com.github.zuihou.common.util.Scpclient;
 import com.github.zuihou.context.BaseContextHandler;
@@ -96,6 +100,8 @@ public class ProgramServiceImpl extends SuperServiceImpl<ProgramMapper, Program>
     private BomProcedureToolService bomProcedureToolService;
     @Autowired
     private ModuleService moduleService;
+    @Autowired
+    private BomProcedureProgramService bomProcedureProgramService;
 
     @Override
     public IPage<Program> pageList(IPage page, LbqWrapper<Program> wrapper) {
@@ -214,9 +220,10 @@ public class ProgramServiceImpl extends SuperServiceImpl<ProgramMapper, Program>
      * 查看程序
      */
     public Map getProgramContent(Program data){
-        Program program = baseMapper.selectById(data.getId());
+        //Program program = baseMapper.selectById(data.getId());
+        BomProcedureProgram program = bomProcedureProgramService.getById(data.getId());
         StringBuilder sb = new StringBuilder();
-        Map map = new HashMap<>();
+        Map map = BeanUtil.beanToMap(program);
         BufferedReader br = null;
         try {
             URL url = new URL(program.getFilePath());

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

@@ -195,8 +195,8 @@
             (SELECT
                 ibbpt.procedure_id AS procedureId,
                 ibbpp.resource_id AS resourceId,
-                GROUP_CONCAT(ibbpt.tool_name) AS needCuttingTools
-            FROM imcs_b_bom_procedure_tool ibbpt,imcs_b_bom_procedure_program ibbpp WHERE ibbpt.program_id = ibbpp.id
+                GROUP_CONCAT(ict.cutting_tool_name) AS needCuttingTools
+            FROM imcs_b_bom_procedure_tool ibbpt,imcs_b_bom_procedure_program ibbpp, imcs_cutting_tool ict WHERE ibbpt.program_id = ibbpp.id and ict.id = ibbpt.tool_id
             GROUP BY ibbpt.procedure_id,ibbpt.resource_id) produceCuttingTools left join
             (SELECT
                 icc.machine_id AS resourceId,

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/BBomProcedureToolMapper.xml

@@ -10,7 +10,7 @@
         <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
         <result column="update_user" jdbcType="BIGINT" property="updateUser"/>
         <result column="procedure_id" jdbcType="BIGINT" property="procedureId"/>
-        <result column="presource_id" jdbcType="BIGINT" property="resourceId"/>
+        <result column="resource_id" jdbcType="BIGINT" property="resourceId"/>
         <result column="tool_name" jdbcType="VARCHAR" property="toolName"/>
         <result column="use_time" jdbcType="VARCHAR" property="useTime"/>
     </resultMap>

+ 3 - 2
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/CuttingToolMapper.xml

@@ -18,7 +18,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id,create_user,create_time,update_user,update_time,remark,
+        id,create_user,create_time,update_user,update_time,remark,device_id,cutter_no,deviceName,
         cutting_tool_name, cutting_tool_type, specifications, status,cutting_tool_picture,cutting_tool_install_picture,program_id
     </sql>
 
@@ -26,7 +26,8 @@
         SELECT
         <include refid="Base_Column_List"/>
         FROM (
-            select t.*, p.program_id from imcs_cutting_tool t
+            select t.*, p.program_id,tp.name as deviceName from imcs_cutting_tool t
+            left join imcs_tenant_productionresource tp on t.device_id = tp.id
             left join imcs_b_bom_procedure_tool p on t.id = p.tool_id group by t.id
          ) s ${ew.customSqlSegment}
     </select>

+ 5 - 2
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/SynProductionStatus.java

@@ -164,8 +164,11 @@ public class SynProductionStatus {
                     //线边库节点的目标设备
                     com.github.zuihou.business.productionResourceCenter.entity.Productionresource device = productionresourceBizMapper.selectById(item.getTargetResourceId());
                     List targetList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[]{productionresource.getId().toString()});
-                    item.setTargetResourceId(productionresource.getId());
-                    return device.getModeSpecification().equals(productionresource.getModeSpecification()) && targetList.size()>0 && !device.getId().equals(productionresource.getId());
+                    if(device.getModeSpecification().equals(productionresource.getModeSpecification()) && targetList.size()>0 && !device.getId().equals(productionresource.getId())){
+                        item.setTargetResourceId(productionresource.getId());
+                        return true;
+                    }
+                    return false;
                 })).collect(Collectors.toList());
 
                 // 执行任务和节点设备更新

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

@@ -69,6 +69,7 @@ public class CuttingToolController extends SuperCacheController<CuttingToolServi
 
         LbqWrapper<CuttingTool> wrapper = wrap.lambda();
         wrapper.like(CuttingTool::getCuttingToolName, cuttingToolPage.getCuttingToolName())
+                .eq(CuttingTool::getDeviceId, cuttingToolPage.getDeviceId())
                 .like(CuttingTool::getSpecifications, cuttingToolPage.getSpecifications());
         //查询刀具是否已被占用
         if(map.size()>0 && map.containsKey("state")){
@@ -79,6 +80,7 @@ public class CuttingToolController extends SuperCacheController<CuttingToolServi
             String[] ids = StringUtils.split(map.get("ids"), ",");
             wrapper.or().in(CuttingTool::getId, ids);
         }
+        wrapper.orderByDesc(CuttingTool::getCreateTime);
         baseService.findPage(page, wrapper);
     }
 

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

@@ -53,7 +53,7 @@ public class MToolClampController extends SuperController<MToolClampService, Lon
 
         MToolClamp module = BeanUtil.toBean(data, MToolClamp.class);
         wrapper.like(MToolClamp::getName, module.getName())
-                .eq(MToolClamp::getNo, module.getNo() )
+                .like(MToolClamp::getNo, module.getNo() )
                 .eq(MToolClamp::getMaterialType, module.getMaterialType() )
                 .eq(MToolClamp::getStatus, module.getStatus())
                 .eq(MToolClamp::getBrand, module.getBrand())

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

@@ -67,7 +67,7 @@ public class MachineCuttingToolController extends SuperCacheController<MachineCu
             return success();
         } catch (Exception e) {
             log.error("sysCuttingTools error" + e.getMessage());
-            return fail("sysCuttingTools error");
+            return fail("刀具数据同步失败");
         }
     }
 }

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

@@ -90,4 +90,13 @@ public class CuttingToolPageDTO implements Serializable {
     @Length(max = 1, message = "状态 1-启用 0-禁用长度不能超过1")
     private String status;
 
+
+    @ApiModelProperty(value = "设备ID")
+    private Long deviceId;
+
+    @ApiModelProperty(value = "刀位号")
+    private int cutterNo;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
 }

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

@@ -96,4 +96,10 @@ public class CuttingToolSaveDTO implements Serializable {
     @Length(max = 1, message = "状态 1-启用 0-禁用长度不能超过1")
     private String status;
 
+    @ApiModelProperty(value = "设备ID")
+    private Long deviceId;
+
+    @ApiModelProperty(value = "刀位号")
+    private int cutterNo;
+
 }

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

@@ -100,4 +100,10 @@ public class CuttingToolUpdateDTO implements Serializable {
     @ApiModelProperty(value = "状态 1-启用 0-禁用")
     @Length(max = 1, message = "状态 1-启用 0-禁用长度不能超过1")
     private String status;
+
+    @ApiModelProperty(value = "设备ID")
+    private Long deviceId;
+
+    @ApiModelProperty(value = "刀位号")
+    private int cutterNo;
 }

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

@@ -122,6 +122,22 @@ public class CuttingTool extends Entity<Long> {
     private String status;
 
 
+    /**
+     * 设备ID
+     */
+    @ApiModelProperty(value = "关联设备ID")
+    @TableField(value = "device_id", condition = LIKE)
+    @Excel(name = "设备ID")
+    private Long deviceId;
+
+    /**
+     * 刀位号
+     */
+    @ApiModelProperty(value = "刀位号")
+    @TableField(value = "cutter_no", condition = LIKE)
+    @Excel(name = "刀位号")
+    private int cutterNo;
+
     /**
      * 刀具关联程序Id
      */
@@ -129,8 +145,15 @@ public class CuttingTool extends Entity<Long> {
     @TableField(exist = false)
     private Long programId;
 
+    /**
+     * 刀具关联程序Id
+     */
+    @ApiModelProperty(value = "设备名称")
+    @TableField(exist = false)
+    private String deviceName;
+
     @Builder
-    public CuttingTool(Long id, Long createUser, LocalDateTime createTime, Long updateUser, LocalDateTime updateTime,
+    public CuttingTool(Long id, Long createUser, LocalDateTime createTime, Long updateUser, LocalDateTime updateTime,Long deviceId, int cutterNo,
                     String cuttingToolName, RemoteData<String, String> cuttingToolType, String specifications, String status, String cuttingToolPicture,String cuttingToolInstallPicture) {
         this.id = id;
         this.createUser = createUser;
@@ -141,6 +164,8 @@ public class CuttingTool extends Entity<Long> {
         this.cuttingToolType = cuttingToolType;
         this.specifications = specifications;
         this.status = status;
+        this.deviceId = deviceId;
+        this.cutterNo = cutterNo;
         this.cuttingToolPicture = cuttingToolPicture;
         this.cuttingToolInstallPicture = cuttingToolInstallPicture;
     }