Explorar o código

切换产线模式

姚云青 %!s(int64=3) %!d(string=hai) anos
pai
achega
b411d143a3

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

@@ -10,10 +10,7 @@ import com.github.zuihou.business.edgeLibrary.entity.StockInfo;
 import com.github.zuihou.business.edgeLibrary.entity.Storge;
 import com.github.zuihou.business.edgeLibrary.service.StorgeService;
 import com.github.zuihou.business.externalApi.service.AgvHikOrderInfoService;
-import com.github.zuihou.business.operationManagementCenter.dao.OrderMapper;
-import com.github.zuihou.business.operationManagementCenter.dao.PlanMapper;
-import com.github.zuihou.business.operationManagementCenter.dao.TTaskMapper;
-import com.github.zuihou.business.operationManagementCenter.dao.TaskNodeMapper;
+import com.github.zuihou.business.operationManagementCenter.dao.*;
 import com.github.zuihou.business.operationManagementCenter.entity.TTask;
 import com.github.zuihou.business.operationManagementCenter.entity.TWorkpiece;
 import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
@@ -97,6 +94,9 @@ public class TaskWorkNode {
     @Autowired
     private WorkpieceService workpieceService;
 
+    @Autowired
+    private WorkpieceMapper workpieceMapper;
+
     @Autowired
     private ProductionresourcePositionService productionresourcePositionService;
 
@@ -565,6 +565,13 @@ public class TaskWorkNode {
             //业务序列节点
             //ResourceAutoCode parentAutoCode = resourceAutoCodeService.getById(resourceAutoCode.getParentId());
             logger.info("=============进入自动化节点条件检测==============" + resourceAutoCode.getName());
+
+            //判断是不是在切换模式,重新排产等特殊情况下
+            map = checkPreCondition(taskNode, task, map);
+            Object o = map.get("result");
+            if(o!=null&&o.toString().equals("false")){
+                return map;
+            }
             map = nodeOperationService.checkCondition(taskNode, task, map);
         } else {
             logger.info("=============进入线边库条件检测==============" + resourceAutoCode.getName());
@@ -843,5 +850,26 @@ public class TaskWorkNode {
         }
         return true;
     }
+
+
+    /**
+     * 前置条件验证,目前主要验证是不是在重新排产
+     * @param taskNode
+     * @param task
+     * @param dataMap
+     * @return
+     */
+    public Map checkPreCondition(TaskNode taskNode, TTask task, Map<String, Object> dataMap){
+        TWorkpiece workpiece = workpieceMapper.selectOne(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getCompleteBatchNo,taskNode.getCompleteBatchNo()));
+        String exchangeZoneFlag = workpiece.getExchangeZoneFlag();
+        Long exchangeProcedureId = workpiece.getExchangeProcedureId();
+        if(StringUtil.isNotEmpty(exchangeZoneFlag)&&exchangeProcedureId!=null){//正在切换产线
+            if(exchangeProcedureId.longValue()!=taskNode.getProcedureId().longValue()){
+                dataMap.put("result", false);
+                dataMap.put("msg", DictionaryKey.NodeException.RE_SCHEDURE);
+            }
+        }
+        return dataMap;
+    }
 }
 

+ 7 - 7
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/MsgUtil.java

@@ -98,13 +98,13 @@ public class MsgUtil implements ApplicationContextAware {
         if(n<taskNodeList.size()-1){//尚未执行到最后一个
             TaskNode nextTaskNode = taskNodeList.get(n+1);
 
-            //如果切换了产线,则只把当前工序走完
-            if(currWorkpiece!=null&&"1".equals(currWorkpiece.getExchangeZoneFlag())){
-                Long exchangeProcedureId = currWorkpiece.getExchangeProcedureId();
-                if(exchangeProcedureId.longValue()!=nextTaskNode.getProcedureId().longValue()){
-                    return;
-                }
-            }
+//            //如果切换了产线,则只把当前工序走完
+//            if(currWorkpiece!=null&&"1".equals(currWorkpiece.getExchangeZoneFlag())){
+//                Long exchangeProcedureId = currWorkpiece.getExchangeProcedureId();
+//                if(exchangeProcedureId.longValue()!=nextTaskNode.getProcedureId().longValue()){
+//                    return;
+//                }
+//            }
 
             jsonObject.put("taskNodeId",nextTaskNode.getId().toString());
             if(callBackJson.containsKey(DemoLineConstant.DEMOLINE_XBKFLAG)){//临时存放到了线边库,向虚拟线边库发一个MQ。

+ 1 - 0
imcs-admin-boot/imcs-common/src/main/java/com/github/zuihou/common/constant/DictionaryKey.java

@@ -31,6 +31,7 @@ public interface DictionaryKey {
     //节点枚举异常
     enum NodeException {
        TIME_OUT("超时", 1), RUNNING_FALSE("设备运行不正常", 2),
+        RE_SCHEDURE("正在重新排产", 6),
        NO_RESOURCE("无可运行资源", 3), RESOURCE_LOCK("设备已锁定", 4),NO_COMPLETE("设备不完整", 5);
        private String name;
        private int index;