wuhb 2 settimane fa
parent
commit
4052d34b8e

+ 24 - 7
mes/ktg-mes/src/main/java/com/ktg/mes/rms/service/impl/RmsLineServiceImpl.java

@@ -525,7 +525,7 @@ public class RmsLineServiceImpl implements IRmsLineService {
             if(flowTask.getDeviceType() != null){
                 //容器类型判断
                 if (!boxCode.equals("") && ((boxCode.startsWith("TP") && !flowTask.getFlowTaskName().equals("拼合单")) ||
-                        !boxCode.substring(0, 2).equals("TP") && flowTask.getFlowTaskName().equals("拼合单"))) continue;
+                        !boxCode.startsWith("TP") && flowTask.getFlowTaskName().equals("拼合单"))) continue;
                 rmsTaskPool = runTask(flowTask, rmsLine, rmsTaskPool, rmsTaskOutstockLine, rmsTaskInstockLine, rmsBox, totalNum, parentId, groupCode);
                 if(rmsTaskPool == null){
                     log.info("任务逻辑结束");
@@ -1713,19 +1713,35 @@ public class RmsLineServiceImpl implements IRmsLineService {
             if(rmsTaskPool.getIsMaster() == null){
                 rmsTaskPool.setIsMaster(0);
             }
-            if(rmsTaskPool.getIsMaster() == 1) {
+//            if(rmsTaskPool.getIsMaster() == 1) {
+//                if (rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.ROLLERAGV.getValue() + "") ||
+//                        rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.LIFTAGV.getValue() + "") ||
+//                        rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.LATENTAGV.getValue() + "")) {
+//                    rmsTaskPool.setCheck(true);
+//                    ApiCache.addAgvTask(rmsTaskPool);
+//                }
+//                if(rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.RAILAGV.getValue() + "")){
+//                    rmsTaskPool.setCheck(true);
+//                    ApiCache.addRailAgvTask(rmsTaskPool);
+//                }
+//                if (Long.parseLong(rmsTaskPool.getDeviceType()) == DeviceTypeEnum.LIFT.getValue()) {
+//                    rmsTaskPool.setCheck(true);
+//                    ApiCache.addSingeLiftTask(rmsTaskPool);
+//                }
+//            }
+            if(rmsTaskPool.getParentId() == 0L){
                 if (rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.ROLLERAGV.getValue() + "") ||
                         rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.LIFTAGV.getValue() + "") ||
                         rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.LATENTAGV.getValue() + "")) {
-                    rmsTaskPool.setCheck(true);
+                    rmsTaskPool.setCheck(false);
                     ApiCache.addAgvTask(rmsTaskPool);
                 }
                 if(rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.RAILAGV.getValue() + "")){
-                    rmsTaskPool.setCheck(true);
+                    rmsTaskPool.setCheck(false);
                     ApiCache.addRailAgvTask(rmsTaskPool);
                 }
                 if (Long.parseLong(rmsTaskPool.getDeviceType()) == DeviceTypeEnum.LIFT.getValue()) {
-                    rmsTaskPool.setCheck(true);
+                    rmsTaskPool.setCheck(false);
                     ApiCache.addSingeLiftTask(rmsTaskPool);
                 }
             }
@@ -1739,8 +1755,9 @@ public class RmsLineServiceImpl implements IRmsLineService {
             if (rmsTaskPool.getParentId()==null && prevPool!=null){
                 rmsTaskPool.setParentId(prevPool.getTaskId());
             }
-            if(rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.ROLLERAGV.getValue()+"")||
-                    rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.LIFTAGV.getValue() + "")){
+            if(rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.ROLLERAGV.getValue()+"")
+                    || rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.LIFTAGV.getValue() + "")
+                    || rmsTaskPool.getDeviceType().equals(DeviceTypeEnum.RAILAGV.getValue() + "")){
                 int i = rmsTaskPoolMapper.insertRmsTaskPool(rmsTaskPool);
                 if (i == 0) {
                     throw new Exception("AGV任务新增失败");

+ 16 - 5
mes/ktg-mes/src/main/java/com/ktg/mes/rms/task/ApiStockTask.java

@@ -272,10 +272,13 @@ public class ApiStockTask {
                     log.info(runPool.getGroupCode()+ "|" + runPool.getTaskId() + "任务正在执行");
                     throw new Exception(runPool.getGroupCode()+"入库正在运行");
                 }
+//                ============debug模式=============
                 boolean isValid = checkPushRollerLift(rmsTaskPool);
                 if (!isValid) {
                     throw new Exception(rmsTaskPool + "入库对接平台上有物料");
                 }
+//                ============debug模式=============
+
                 if (!runRailAgvThread.isEmpty()) {
                     List<RailAgvThread> validThread = new ArrayList<>();
                     for (RailAgvThread runThread : runRailAgvThread) {
@@ -512,6 +515,8 @@ public class ApiStockTask {
                         return;
                     }
                 }
+
+//=========================debug================
                 Boolean liftOk = checkWithTimeout(() -> checkLiftStatus(taskPool, liftCode, 0), 5000);
                 if (liftOk == null) {
                     log.warn("{} 状态检查超时,跳过", liftCode);
@@ -530,6 +535,8 @@ public class ApiStockTask {
                     log.info(liftCode + "对接平台上有物料");
                     return;
                 }
+//=========================debug================
+
                 if(isStop){
                     throw new Exception(taskPool.getTaskName() + "任务锁定");
                 }
@@ -541,6 +548,7 @@ public class ApiStockTask {
                     try {
                         if("3".equals(taskPool.getTaskStatus())
                                 ||"4".equals(taskPool.getTaskStatus())){
+                            queue.poll();
                             updateCancelRemark(taskPool, msg);
                         }else{
                             updateRemark(taskPool, msg);
@@ -611,7 +619,7 @@ public class ApiStockTask {
         if(pool.isCheck() && pool.getTaskType().equals(fromType)){
             List<RmsTaskPool> rmsTaskPools = rmsTaskPoolService.queryFirstRunPool(pool);
             RmsTaskPool taskPoolAgv = rmsTaskPools.stream().filter(item->item.getDeviceType().equals(DeviceTypeEnum.ROLLERAGV.getValue()+"")).findFirst().orElse(null);
-            RmsTaskPool taskPoolRailAgv = rmsTaskPools.stream().filter(item->item.getDeviceType().equals(DeviceTypeEnum.ROLLERAGV.getValue()+"")).findFirst().orElse(null);
+            RmsTaskPool taskPoolRailAgv = rmsTaskPools.stream().filter(item->item.getDeviceType().equals(DeviceTypeEnum.RAILAGV.getValue()+"")).findFirst().orElse(null);
             if(taskPoolRailAgv != null){
                 boolean isConnRms = checkAgvServer(taskPoolRailAgv);
                 if(!isConnRms){
@@ -640,6 +648,11 @@ public class ApiStockTask {
                     });
                 }
             }
+            if(pool.getParentId() == null){
+                pool.setTaskStatus("3");
+                apiCache.getOrSetRedis(ApiCache.ERROR_POOL, pool.getGroupCode(), 1);
+                throw new Exception("无效任务:" + pool.getTaskId());
+            }
             if(pool.getParentId() != 0L && isNext != 2){
                 isNext = 0;
             }
@@ -1076,13 +1089,11 @@ public class ApiStockTask {
                 RmsHelper rmsHelper = RmsHelper.getInstance();
                 rmsHelper.init();
             }
-            if(String.valueOf(DeviceTypeEnum.ROLLERAGV.getValue()).equals(rmsTaskPool.getDeviceType())) {
-                RmsHelper rmsHelper = RmsHelper.getInstance();
-                rmsHelper.init();
-            }
             if(String.valueOf(DeviceTypeEnum.RAILAGV.getValue()).equals(rmsTaskPool.getDeviceType())) {
+//                ============debug模式=============
                 RailHelper railHelper = RailHelper.getInstance();
                 railHelper.init();
+//                ============debug模式=============
             }
             return true;
         }catch (Exception ex){

+ 9 - 9
mes/ktg-mes/src/main/java/com/ktg/mes/rms/thread/LiftThread.java

@@ -115,6 +115,7 @@ public class LiftThread extends BaseThread{
             waitByTask();
             checkNextTask();
             rmsTaskPoolService.closeAutoGroupTask(rmsTaskPool);
+            log.info("=========轨道车任务完成:"+rmsTaskPool.getTaskId()+"=========");
         }catch (Exception ex){
             log.error("error", ex);
             rmsTaskPool.setStep(runIndex);
@@ -147,6 +148,9 @@ public class LiftThread extends BaseThread{
         if(TaskTypeEnum.PULL.getValue().equals(rmsTaskPool.getTaskType())){
             ApiCache.addTopAgvList(rmsTaskPool);
         }
+        if(nextTaskPools==null || nextTaskPools.isEmpty()){
+            log.info("没有下级任务");
+        }
     }
 
     public void requestTask() throws Exception {
@@ -445,6 +449,8 @@ public class LiftThread extends BaseThread{
             if(!lineList.isEmpty()){
                 rmsTaskPool.setSourceId(lineList.get(0).getLineId());
                 rmsTaskPool.setBoxCode(lineList.get(0).getBoxCode());
+            }else {
+                rmsTaskPool.setBoxCode(boxCodeOrItemCode);
             }
             rmsTaskPool.setSourceType(inStock.getErpInstockCode());
             rmsTaskPool.setStockId(inStock.getInstockId());
@@ -531,17 +537,8 @@ public class LiftThread extends BaseThread{
 //    }
 
 
-
     //再入库,要扣除冻结数量
     public void updateRepInStock(Long lineId, String boxCode) throws Exception {
-//        DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
-//        definition.setPropagationBehaviorName("PROPAGATION_REQUIRED");
-//        TransactionStatus transaction = transactionManager.getTransaction(definition);
-        updateInStock(lineId, boxCode);
-//            transactionManager.commit(transaction);
-    }
-
-    public void updateInStock(Long lineId, String boxCode) throws Exception {
         BigDecimal subQty = BigDecimal.ZERO;
         RmsTaskInstockLine rmsTaskInstockLine = new RmsTaskInstockLine();
         if(!ObjectUtils.isEmpty(lineId)){
@@ -571,6 +568,9 @@ public class LiftThread extends BaseThread{
         }
         runIndex = 26;
         WmRmsBox wmRmsBox = wmRmsBoxService.selectWmRmsBoxByBoxCode(rmsTaskPool.getBoxCode());
+        if(wmRmsBox == null){
+            throw new Exception("没有找到料框"+rmsTaskPool.getBoxCode());
+        }
         rmsTaskInstock = rmsTaskInstockService.selectRmsTaskInstockByInstockId(rmsTaskInstock.getInstockId());
         if(isDone){
             RmsTaskInstock instock = new RmsTaskInstock();

+ 32 - 32
mes/ktg-mes/src/main/java/com/ktg/mes/rms/thread/RailAgvThread.java

@@ -77,41 +77,41 @@ public class RailAgvThread extends BaseThread{
                 robotId = rmsTaskPool.getLiftCode();
             }
             String taskType = rmsTaskPool.getTaskType();
-            String data = railHelper.sendAgvTask(rmsTaskPool.getFromSite(), rmsTaskPool.getToSite()
-                    , rmsTaskPool.getPickTime(), rmsTaskPool.getKeyRoute(), taskType
-                    , robotType, robotId);
-            JSONObject dataJson = JSONUtil.toBean(data, JSONObject.class);
-            String rmsRemoteTaskId = dataJson.getStr("id");
-            if(StringUtils.isNotEmpty(rmsRemoteTaskId)){
-                if(rmsTaskPool.getIsWait() == 0){
-                    updateRemark(rmsRemoteTaskId, 1, 3, rmsTaskPool.getTaskName()+"任务已发送");
-                }else{
-                    updateRemark(rmsRemoteTaskId, 1, 3, rmsTaskPool.getTaskName()+"任务已发送,等待中");
-                }
-            }else{
-                throw new Exception("AGV任务请求失败");
-            }
-            boolean isRunDone = true;
-            if(TaskTypeEnum.X2B_ROLLER_BACK_UP.getValue().equals(rmsTaskPool.getTaskType())
-                ||TaskTypeEnum.X2B_ROLLER_BACK_DOWN.getValue().equals(rmsTaskPool.getTaskType())){
-                isRunDone = waitAgv(rmsRemoteTaskId);
-            }else{
-                if(rmsTaskPool.getIsWait() != 0){    //不是出入库,不滚动,判断等待用wait
-                    log.info("开始AGV等待任务完成");
-                    isRunDone = waitAgv(rmsRemoteTaskId);
-                }
-            }
-            if(!isRunDone){
-                log.info("任务被取消,结束线程");
-                cancleOrder();
-                return;
-            }
-            waitByTask();
-            if(StringUtils.isNotNull(rmsRemoteTaskId)){
+//            String data = railHelper.sendAgvTask(rmsTaskPool.getFromSite(), rmsTaskPool.getToSite()
+//                    , rmsTaskPool.getPickTime(), rmsTaskPool.getKeyRoute(), taskType
+//                    , robotType, robotId);
+//            JSONObject dataJson = JSONUtil.toBean(data, JSONObject.class);
+//            String rmsRemoteTaskId = dataJson.getStr("id");
+//            if(StringUtils.isNotEmpty(rmsRemoteTaskId)){
+//                if(rmsTaskPool.getIsWait() == 0){
+//                    updateRemark(rmsRemoteTaskId, 1, 3, rmsTaskPool.getTaskName()+"任务已发送");
+//                }else{
+//                    updateRemark(rmsRemoteTaskId, 1, 3, rmsTaskPool.getTaskName()+"任务已发送,等待中");
+//                }
+//            }else{
+//                throw new Exception("AGV任务请求失败");
+//            }
+//            boolean isRunDone = true;
+//            if(TaskTypeEnum.X2B_ROLLER_BACK_UP.getValue().equals(rmsTaskPool.getTaskType())
+//                ||TaskTypeEnum.X2B_ROLLER_BACK_DOWN.getValue().equals(rmsTaskPool.getTaskType())){
+//                isRunDone = waitAgv(rmsRemoteTaskId);
+//            }else{
+//                if(rmsTaskPool.getIsWait() != 0){    //不是出入库,不滚动,判断等待用wait
+//                    log.info("开始AGV等待任务完成");
+//                    isRunDone = waitAgv(rmsRemoteTaskId);
+//                }
+//            }
+//            if(!isRunDone){
+//                log.info("任务被取消,结束线程");
+//                cancleOrder();
+//                return;
+//            }
+//            waitByTask();
+//            if(StringUtils.isNotNull(rmsRemoteTaskId)){
                 updateOrder();
                 updateRemark(null,2, 2, "成功");
                 checkNextTask();
-            }
+//            }
             rmsTaskPoolService.closeAutoGroupTask(rmsTaskPool);
         }catch (Exception ex){
             log.error("AGV异常:" + JSONUtil.toJsonStr(rmsTaskPool), ex);

+ 4 - 1
mes/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmStorageLocationServiceImpl.java

@@ -9,6 +9,8 @@ import com.ktg.common.exception.taskPool.DvMachineryLocationNotExistException;
 import com.ktg.common.exception.taskPool.DvMachineryNotExistException;
 import com.ktg.common.exception.taskPool.TaskPoolLiftNotExistException;
 import com.ktg.common.utils.DateUtils;
+import com.github.pagehelper.PageHelper;
+import com.ktg.common.utils.PageUtils;
 import com.ktg.common.utils.ServletUtils;
 import com.ktg.common.utils.StringUtils;
 import com.ktg.common.utils.ip.IpUtils;
@@ -195,6 +197,7 @@ public class WmStorageLocationServiceImpl implements IWmStorageLocationService
     @Override
     public WmStorageLocation getLocationDetailByMachinery(String deviceCode) throws Exception {
         Map<String,Object> map = new HashMap<>();
+        PageHelper.clearPage();
         SysDevice sysDevice = sysDeviceMapper.selectSysDeviceByDeviceCode(deviceCode);
         if(!ObjectUtils.isEmpty(sysDevice)){
             String location = sysDevice.getLocation();
@@ -261,7 +264,7 @@ public class WmStorageLocationServiceImpl implements IWmStorageLocationService
 
     @Override
     public List<WmStorageLocation> getLocationListDetailsByMachinery(String deviceCode, String searchKey) throws Exception {
-        Map<String, Object> map = new HashMap<>();
+        PageUtils.clearPage();
         SysDevice sysDevice = sysDeviceMapper.selectSysDeviceByDeviceCode(deviceCode);
         List<WmStorageLocation> wmStorageLocationList = new ArrayList<>();