Browse Source

修改agv起点终点逻辑,修改工人翻面,下料逻辑

yejian 3 years ago
parent
commit
41c850808c

+ 2 - 2
imcs-admin-boot/imcs-authority-server/src/main/resources/logback-spring.xml

@@ -3,7 +3,7 @@
 
     <include resource="com/github/zuihou/log/logback/zuihou-defaults.xml"/>
 
-    <springProfile name="test,docker,prod">
+    <springProfile name="docker,prod">
         <logger name="com.github.zuihou.authority.controller" additivity="true" level="${log.level.controller}">
             <appender-ref ref="ASYNC_CONTROLLER_APPENDER"/>
         </logger>
@@ -42,7 +42,7 @@
         </logger>
     </springProfile>
 
-    <springProfile name="dev">
+    <springProfile name="test,dev">
         <logger name="com.github.zuihou.authority.controller" additivity="true" level="${log.level.controller}">
             <appender-ref ref="CONTROLLER_APPENDER"/>
         </logger>

+ 2 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/DemoLine/DemoLineConstant.java

@@ -246,6 +246,8 @@ public interface DemoLineConstant {
     String DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_RK = "DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_RK";
     //原料出库
     String DEMOLINE_STOCK_TYPE_METERIAL_CK = "DEMOLINE_STOCK_TYPE_METERIAL_CK";
+    //原料和夹具出库
+    String DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_CK = "DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_CK";
     //原料出入库
     String DEMOLINE_STOCK_TYPE_METERIAL_CRK = "DEMOLINE_STOCK_TYPE_METERIAL_CRK";
     //托板出入库

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

@@ -1520,6 +1520,9 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
      * @return
      */
     private boolean checkPushNextNode(TaskNode taskNode, JSONObject callBackJson) {
+        if(null == callBackJson){
+            return true;
+        }
         if (callBackJson.containsKey(DemoLineConstant.DEMOLINE_RXJQR_FLAG)) {//柔性机器人的多步骤执行
             int count = callBackJson.getString(taskNode.getId().toString() + "count") == null ? 0 : Integer.parseInt(callBackJson.getString(taskNode.getId().toString() + "count"));
             if (count < 2) {//
@@ -1563,9 +1566,6 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
      */
     public R<String> demoLineStock(TaskNode taskNode, TTask task, JSONObject callBackJson) {
         //没有回传参数,直接不需要出入库操作
-        if (callBackJson == null) {
-            return R.success("");
-        }
         String stockType = callBackJson.getString(DemoLineConstant.DEMOLINE_STOCK_TYPE);
         //如果没有起始、终点,则不需要出入库处理
         if (!DemoLineConstant.DEMOLINE_STOCK_TYPE_HAND_CK.equals(stockType) && !DemoLineConstant.DEMOLINE_STOCK_TYPE_HAND_RK.equals(stockType)) {//换手抓不需要原位置和目的位置

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

@@ -1059,8 +1059,8 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
 //                baseMapper.updateById(tTask);
 //            }
             // 调用rfid读取接口判断rfid里面是否子盘信息,写入原材料信息
-            String meterialId = map.get("meterialId").toString();
-            String uniqueCode = map.get("uniqueCode").toString();
+
+            String processType = map.get("processType").toString();
             // 判断当前工件是否存在夹具,没有夹具stock表插入夹具信息
 //            List<StockInfo> stockInfos = stockInfoService.list(Wraps.<StockInfo>lbQ().eq(StockInfo::getCompleteBatchNo, tTask.getCompleteBatchNo()));
 //
@@ -1090,22 +1090,45 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
 
             Storge currstorge = workpieceService.getWorkPieceStock(taskNode.getCompleteBatchNo(), false);
             if(currstorge!=null){
-                jsonObject.put("targetPostion", currstorge.getId());
-                jsonObject.put("srcPosition", "");
-
-                //查询库位里有托盘夹具,还是只有托盘
-                List<StockInfo>stockInfoList = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId, currstorge.getId()));
-                if(CollectionUtil.isNotEmpty(stockInfoList)&&stockInfoList.size()==2){//有托盘和夹具
-                    //入库
-                    jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_RK);
-                }
+                if("1".equals(processType)){
+                    String meterialId = map.get("meterialId").toString();
+                    String uniqueCode = map.get("uniqueCode").toString();
+                    // 上料
+                    jsonObject.put("targetPostion", currstorge.getId());
+                    jsonObject.put("srcPosition", "");
+
+                    //查询库位里有托盘夹具,还是只有托盘
+                    List<StockInfo>stockInfoList = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId, currstorge.getId()));
+                    if(CollectionUtil.isNotEmpty(stockInfoList)&&stockInfoList.size()==2){//有托盘和夹具
+                        //入库
+                        jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_RK);
+                    }
 
-                if(CollectionUtil.isNotEmpty(stockInfoList)&&stockInfoList.size()==1){//有托盘
-                    //入库
-                    jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_RK);
+                    if(CollectionUtil.isNotEmpty(stockInfoList)&&stockInfoList.size()==1){//有托盘
+                        //入库
+                        jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_RK);
+                    }
+                    //节点完成业务
+                    taskNodeService.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
+                }else if("2".equals(processType)){
+                    jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE,"");
+                    // 翻面 根据原型不做出入库操作
+                    taskNodeService.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
+                }else if("3".equals(processType)){
+                    // 下料 原材料肯定出库,需判断工人有没有点击拆除夹具,如果拆除了夹具,需要同时更新夹具的出库
+                    // 从redis中查找当前出库是否包含夹具
+                    // 下料
+                    jsonObject.put("srcPosition", currstorge.getId());
+                    jsonObject.put("targetPostion", "");
+                    String stockType = msgUtil.redis_get(taskNode.getCompleteBatchNo()+tTask.getProcedureNo()) == null ? "" : msgUtil.redis_get(taskNode.getCompleteBatchNo()+tTask.getProcedureNo()).toString();
+                    if(StringUtils.isNotBlank(stockType)){
+                        jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_CK);
+                    }else{
+                        jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CK);
+                    }
+                    taskNodeService.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
                 }
-                //节点完成业务
-                taskNodeService.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
+
             }
         }
         return  R.success();
@@ -1114,26 +1137,29 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
     @Override
     public R releaseClamp(Map<String, Object> map){
         TTask tTask = baseMapper.selectById(Long.valueOf(map.get("id").toString()));
-        // 根据设备点位信息删除对应的库位上的夹具信息
-        Map queryMap = new HashMap();
-        queryMap.put("resourceId", tTask.getResourceId());
-        List<ProductionresourcePosition> list = productionresourcePositionMapper.getStorgeIdByResource(queryMap);
-
-        if(CollectionUtil.isEmpty(list)){
-            return R.fail("设备不存在");
-        }
-        ProductionresourcePosition productionresourcePosition = list.get(0);
-
-        List<StockInfo> StockInfos  = stockInfoService.list(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,productionresourcePosition.getStorgeId()));
-       if(CollectionUtil.isEmpty(StockInfos)){
-           return R.fail("当前库位无料");
-       }
-
-        for(StockInfo stockInfo : StockInfos){
-            baseMapper.deleteById(stockInfo.getId());
-            //库存日志
-            stockLogService.saveLog(stockInfo, BizConstant.STOCK_TYPE_OUT);
-        }
+        TaskNode taskNode = taskNodeService.getOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId, tTask.getId()).eq(TaskNode::getExeStatus,"2"));
+        msgUtil.redis_set(tTask.getCompleteBatchNo() + tTask.getProcedureNo(),"1",24,TimeUnit.HOURS);
+        // 当前工件下料需要拆除夹具
+//        // 根据设备点位信息删除对应的库位上的夹具信息
+//        Map queryMap = new HashMap();
+//        queryMap.put("resourceId", tTask.getResourceId());
+//        List<ProductionresourcePosition> list = productionresourcePositionMapper.getStorgeIdByResource(queryMap);
+//
+//        if(CollectionUtil.isEmpty(list)){
+//            return R.fail("设备不存在");
+//        }
+//        ProductionresourcePosition productionresourcePosition = list.get(0);
+//
+//        List<StockInfo> StockInfos  = stockInfoService.list(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,productionresourcePosition.getStorgeId()));
+//       if(CollectionUtil.isEmpty(StockInfos)){
+//           return R.fail("当前库位无料");
+//       }
+//
+//        for(StockInfo stockInfo : StockInfos){
+//            baseMapper.deleteById(stockInfo.getId());
+//            //库存日志
+//            stockLogService.saveLog(stockInfo, BizConstant.STOCK_TYPE_OUT);
+//        }
         return R.success();
     }
 

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

@@ -527,12 +527,21 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         String xbkFlag = "";
 
         if("1".equals(findAgvFlag)){//需要提前锁定下个接驳位
+
+            TaskNode lastOperationTaskNode = taskNodeService.getOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId,taskNode.getTaskId()).orderByDesc(TaskNode::getCompleteBatchSort).last("limit 1"));
+
             //获取接驳位。
             Map map = storgeService.getPlateStorgeByNo(zZone);
             targetStorge = map.get("storge") ==null?null:(Storge)map.get("storge");
             String targetResourceId = map.get("resourceId") ==null?null:(String)map.get("resourceId");
             //对面产线接驳位不为空
-            String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(bomzZone.getName()).split(",");
+            TaskNode nextOperationFirstTaskNode = taskNodeService.getNextNTaskNode(lastOperationTaskNode,1);
+            ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,nextOperationFirstTaskNode.getResourceId()));
+            //获取产线ID
+            zoneId = zoneProductionresource.getZoneId();
+            zZone = zoneService.getById(zoneId);
+
+            String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(zZone.getName()).split(",");
             List<ProductionresourcePosition> jbwBList = productionresourcePositionService.getFreeProductionresourcePositionByNos(jbwArr);
 
             if(targetStorge!=null&&CollectionUtil.isNotEmpty(jbwBList)){
@@ -544,7 +553,6 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
                 //更新到targetresourceid
 //                TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);
-                TaskNode lastOperationTaskNode = taskNodeService.getOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId,taskNode.getTaskId()).orderByDesc(TaskNode::getCompleteBatchSort).last("limit 1"));
                 taskNode.setTargetResourceId(Long.parseLong(targetResourceId));
                 lastOperationTaskNode.setTargetResourceId(position.getResourceId());
                 lastOperationTaskNode.setResourceId(taskNode.getTargetResourceId());