Ver Fonte

单线运行beta
1.差登记子盘明细和入库信息的goodsid修改
2.上下料翻面登记数据串联逻辑
3.原材料登记接口

yejian016332 há 3 anos atrás
pai
commit
4fd6907ad7
12 ficheiros alterados com 229 adições e 93 exclusões
  1. 1 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/OrderServiceImpl.java
  2. 2 0
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/PlanServiceImpl.java
  3. 164 93
      imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/RobotNodeServiceImpl.java
  4. 1 0
      imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/operationManagementCenter/OrderController.java
  5. 7 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/OrderPageDTO.java
  6. 7 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/OrderSaveDTO.java
  7. 7 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/OrderUpdateDTO.java
  8. 7 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/PlanPageDTO.java
  9. 7 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/PlanSaveDTO.java
  10. 7 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/PlanUpdateDTO.java
  11. 10 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/Order.java
  12. 9 0
      imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/Plan.java

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

@@ -222,6 +222,7 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
         order.setZoneId(Long.parseLong(data.get("zoneId")==null?"0":data.get("zoneId").toString()));
         order.setDeliveryTime(DateUtil.stringToDate3(data.get("deliveryTime").toString()));
         order.setOrderTime(DateUtil.stringToDate3(data.get("orderTime").toString()));
+        order.setSingleRunFlag(data.get("singleRunFlag")==null ? 0: Integer.parseInt(data.get("singleRunFlag").toString()));
         super.save(order);
 
         int productNum = 0;

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

@@ -109,6 +109,7 @@ public class PlanServiceImpl extends SuperServiceImpl<PlanMapper, Plan> implemen
                         p.setAuditStatus("2");
                         p.setSchedulingStatus("0");
                         p.setProduceStatus("1");
+                        p.setSingleRunFlag(Integer.valueOf(map.get("singleRunFlag").toString()));
                         save(p);
                         int planNum =0;
                         if(lastNum>bomNum){
@@ -137,6 +138,7 @@ public class PlanServiceImpl extends SuperServiceImpl<PlanMapper, Plan> implemen
                     p.setAuditStatus("2");
                     p.setSchedulingStatus("0");
                     p.setProduceStatus("1");
+                    p.setSingleRunFlag(Integer.valueOf(map.get("singleRunFlag").toString()));
                     save(p);
                     List<PlanProduct> planProductList = planProductService.saveDefaultPlanProductByOrder(m,p, orderProductBomNum);
                     p.setPlanProductList(planProductList);

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

@@ -17,10 +17,10 @@ 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.externalApi.service.ExternalApiService;
+import com.github.zuihou.business.operationManagementCenter.dao.PlanMapper;
+import com.github.zuihou.business.operationManagementCenter.dao.PlanProductMapper;
 import com.github.zuihou.business.operationManagementCenter.dao.TTaskMapper;
-import com.github.zuihou.business.operationManagementCenter.entity.TTask;
-import com.github.zuihou.business.operationManagementCenter.entity.TWorkpiece;
-import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
+import com.github.zuihou.business.operationManagementCenter.entity.*;
 import com.github.zuihou.business.operationManagementCenter.service.TaskNodeService;
 import com.github.zuihou.business.operationManagementCenter.service.WorkpieceService;
 import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
@@ -45,6 +45,8 @@ import com.github.zuihou.common.constant.ParameterKey;
 import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.common.util.UniqueKeyGenerator;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import com.google.common.collect.Maps;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -122,6 +124,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
     private BomProcedureService bomProcedureService;
     @Autowired
     private RestTemplate restTemplate;
+    @Autowired
+    private PlanMapper planMapper;
 
     private Map<String, Object> map = Maps.newHashMap();
 
@@ -169,6 +173,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
     private boolean assembleFlag = true;
 
+    private Plan orderPlan;
+
     @Override
     public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
         //productionresourcePosition = getResourcePosition(taskNode);
@@ -211,7 +217,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         BBom bom = bBomMapper.selectById(task.getBomId());
         bomZzoneId = bom.getZoneId();
         bomzZone = zoneService.getById(bomZzoneId);
-
+        orderPlan = planMapper.selectOne(Wraps.<Plan>lbQ().eq(Plan::getId, task.getPlanId()));
         // 判断该节点使用那条线的plc
         plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
         String paramKey = zZone.getNo() + "_plc";
@@ -360,7 +366,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
 
         if(taskNode.getCompleteBatchSort()==1){
-            flikustockInfos = this.getLikuStockList(task);
+            // 判断是否是单线单独运行
+            if(1 == orderPlan.getSingleRunFlag()){
+                flikustockInfos = this.getProductionLineXbkStockList(task);
+            }else{
+                flikustockInfos = this.getLikuStockList(task);
+            }
         }
         //缓存位判断处理
         if ("取".equals(functionName)) {
@@ -710,7 +721,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                         // 判断是工件坐标系还是质量测量
                         if ("1".equals(procedure.getThreeDimensionalConf()) || "1".equals(procedure.getThreeDimensionalDeviationConf())) {
                             // 质量检测
-                            dataMap.put("method", "SendThreeCoordinates");
+//                            dataMap.put("method", "SendThreeCoordinates");
+                            dataMap.put("method", "SendServoStacker");
                             locationMap.put("workId", taskNode.getCompleteBatchNo());
                             locationMap.put("procedureNo", task.getProcedureNo());
                             if("1".equals(procedure.getThreeDimensionalConf())){
@@ -752,6 +764,40 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         return dataMap;
     }
 
+    /**
+     * 线内单独运行直接查找线边库上的子盘夹具毛料齐全的库位信息
+     * @param task
+     * @return
+     */
+    private List<StockInfo> getProductionLineXbkStockList(TTask task) {
+        List<StockInfo> returnList = null;
+        List<StockInfo> oneTray = null;
+
+        List<Productionresource> productionresources = productionresourceBizMapper.selectList(Wraps.<Productionresource>lbQ().like(Productionresource::getCode,DictionaryKey.YJ_ZONE_XBK.get(bomzZone.getName())));
+        List<Long> productionresourceIds = productionresources.stream().map(t->t.getId()).collect(Collectors.toList());
+        List<ProductionresourcePosition> startProductionresourcePositions = productionresourcePositionMapper.selectList(Wraps.<ProductionresourcePosition>lbQ().in(ProductionresourcePosition::getResourceId, productionresourceIds).eq(ProductionresourcePosition::getStatus,"0"));
+        List<Long> startProductionresourcePositionIds = startProductionresourcePositions.stream().map(t->t.getStorgeId()).collect(Collectors.toList());
+
+        BBom bBom = bBomMapper.selectOne(Wraps.<BBom>lbQ().eq(BBom::getId,task.getBomId()));
+        List<StockInfo> allStockList = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getGoodsId,bBom.getMeterialId()).in(StockInfo::getStorgeId,startProductionresourcePositionIds).isNull(StockInfo::getCompleteBatchNo).orderByAsc(StockInfo::getStorgeId));
+        if(CollectionUtil.isNotEmpty(allStockList)){
+            Map<Long,List<StockInfo>>map = allStockList.stream().collect(groupingBy(StockInfo::getStorgeId));
+            Long k = null;
+            for(Long key:map.keySet()){
+                k = key;
+                // 只查找物料齐套的(托盘,夹具,原材料)
+                List<StockInfo> stockInfoList = map.get(key);
+                if(stockInfoList!=null && stockInfoList.size() == 3 ){
+                    returnList = stockInfoList;
+                    break;
+                }else{
+                    continue;
+                }
+            }
+        }
+        return returnList;
+    }
+
 
     /**
      * 判断机器人是否可用
@@ -781,105 +827,130 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         String xbkFlag = "";
 
         if("1".equals(findAgvFlag)){ //需要提前锁定下个接驳位
-            // begin modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
-            // 先找到处理节点下一节点agv起点地址
-
-            TaskNode lastAgvTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);;
-            //获取接驳位。agvEndStationStorge
-            Map map = storgeService.getPlateStorgeByNo(zZone,bomzZone);
-
-            String startAgvStationCode = map.get("jbwCode") ==null?null:map.get("jbwCode").toString();
-            targetStorge = map.get("storge") ==null?null:(Storge)map.get("storge");
-            String targetResourceId = map.get("resourceId") ==null?null:(String)map.get("resourceId");
-            // 在向下找agv终点位子
-            // 下一个节点机器人所属产线
-            TaskNode afterLastAgvTaskNode = taskNodeService.getNextNTaskNode(lastAgvTaskNode,1);
-            ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,afterLastAgvTaskNode.getResourceId()));
-            //获取产线ID
-            Long agvGoalZoneId = zoneProductionresource.getZoneId();
-            ZZone agvGoalZone = zoneService.getById(agvGoalZoneId);
-            String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(agvGoalZone.getNo()).split(",");
-            List<ProductionresourcePosition> jbwBList = productionresourcePositionService.getFreeProductionresourceAgvPositionByNos(jbwArr);
+
+            if("1".equals(orderPlan.getSingleRunFlag())){
+                // 单线运行,直接不找agv,驱动机器人帮运至线边库存放
+// 判断当前节点设备所属产线,如果是保障平台,区分订单是舱体还是框体
+                if("safeguard".equals(zZone.getNo())){
+                    //获取机器人操作线边库
+                    String xbkKey = zoneName+"-"+bomzZone.getNo();
+                    xbkArr = DictionaryKey.YJ_ZONE_XBK.get(xbkKey).split(",");
+                    xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
+                }else{
+                    //获取机器人操作线边库
+                    xbkArr = DictionaryKey.YJ_ZONE_XBK.get(zoneName).split(",");
+                    xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
+                }
+                log.info("查找线边库库位{}",xbkList.get(0).getPointId());
+                if(CollectionUtil.isNotEmpty(xbkList)){
+                    ProductionresourcePosition position = xbkList.get(0);
+                    targetStorge = storgeService.getById(position.getStorgeId());
+                    returnMap.put("storeResourceId",position.getResourceId());
+                    returnMap.put("store",targetStorge);
+                    returnMap.put("targetxbk","0");
+                }
+            }else{
+                // begin modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
+                // 先找到处理节点下一节点agv起点地址
+
+                TaskNode lastAgvTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);;
+                //获取接驳位。agvEndStationStorge
+                Map map = storgeService.getPlateStorgeByNo(zZone,bomzZone);
+
+                String startAgvStationCode = map.get("jbwCode") ==null?null:map.get("jbwCode").toString();
+                targetStorge = map.get("storge") ==null?null:(Storge)map.get("storge");
+                String targetResourceId = map.get("resourceId") ==null?null:(String)map.get("resourceId");
+                // 在向下找agv终点位子
+                // 下一个节点机器人所属产线
+                TaskNode afterLastAgvTaskNode = taskNodeService.getNextNTaskNode(lastAgvTaskNode,1);
+                ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,afterLastAgvTaskNode.getResourceId()));
+                //获取产线ID
+                Long agvGoalZoneId = zoneProductionresource.getZoneId();
+                ZZone agvGoalZone = zoneService.getById(agvGoalZoneId);
+                String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(agvGoalZone.getNo()).split(",");
+                List<ProductionresourcePosition> jbwBList = productionresourcePositionService.getFreeProductionresourceAgvPositionByNos(jbwArr);
 //            log.info("节点{},查询终点接驳位接驳位数量{}",taskNode.getId(),jbwBList);
-            if(targetStorge!=null&&CollectionUtil.isNotEmpty(jbwBList)){
-                ProductionresourcePosition position = null;
-                for(ProductionresourcePosition productionresourcePosition : jbwBList){
-                    String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
-                    if(zoneType.equals(ParameterKey.ZONE_SFX)){
-                        if(productionresourcePosition.getCode().equals(DictionaryKey.SFX_JBW_RELATION.get(startAgvStationCode))){
+                if(targetStorge!=null&&CollectionUtil.isNotEmpty(jbwBList)){
+                    ProductionresourcePosition position = null;
+                    for(ProductionresourcePosition productionresourcePosition : jbwBList){
+                        String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
+                        if(zoneType.equals(ParameterKey.ZONE_SFX)){
+                            if(productionresourcePosition.getCode().equals(DictionaryKey.SFX_JBW_RELATION.get(startAgvStationCode))){
+                                position = productionresourcePosition;
+                                break;
+                            }
+                        }else{
                             position = productionresourcePosition;
                             break;
                         }
-                    }else{
-                        position = productionresourcePosition;
-                        break;
-                    }
 
-                }
+                    }
 //                log.info("节点{},查询到终点接驳位{}",taskNode.getId(),position);
-                if(null!=position){
-                    agvEndStationStorge =storgeService.getById(position.getStorgeId());
-                    //更新到targetresourceid
+                    if(null!=position){
+                        agvEndStationStorge =storgeService.getById(position.getStorgeId());
+                        //更新到targetresourceid
 //                TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);
-                    taskNode.setTargetResourceId(Long.parseLong(targetResourceId));
-                    lastAgvTaskNode.setTargetResourceId(position.getResourceId());
-                    lastAgvTaskNode.setResourceId(taskNode.getTargetResourceId());
-                    taskNodeService.updateById(taskNode);
-                    taskNodeService.updateById(lastAgvTaskNode);
+                        taskNode.setTargetResourceId(Long.parseLong(targetResourceId));
+                        lastAgvTaskNode.setTargetResourceId(position.getResourceId());
+                        lastAgvTaskNode.setResourceId(taskNode.getTargetResourceId());
+                        taskNodeService.updateById(taskNode);
+                        taskNodeService.updateById(lastAgvTaskNode);
 //                    log.info("节点{},更新相应节点接驳位信息完成",taskNode.getId());
-                }
-                returnMap.put("storeResourceId",targetResourceId);
-                returnMap.put("store",targetStorge);
-                returnMap.put("targetxbk","0");
-
-            }else{
-                //需要放到线边库
-                // begin add by yejian on 20220802 for 调度空托盘流转
-                Long tempAgvTaskStartResourceId = map.get("tempAgvTaskStartResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskStartResourceId").toString());
-                Long tempAgvTaskEndResourceId = map.get("tempAgvTaskEndResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskEndResourceId").toString());
-                String tempAgvTaskStartPoint = map.get("tempAgvTaskStartPoint") == null?null:(String)map.get("tempAgvTaskStartPoint");
-                String tempAgvTaskEndPoint = map.get("tempAgvTaskEndPoint") == null?null:(String)map.get("tempAgvTaskEndPoint");
-                Storge tempAgvTaskStartPointStorge = map.get("tempAgvTaskStartPointStorge") == null?null:(Storge)map.get("tempAgvTaskStartPointStorge");
-                Storge tempAgvTaskEndPointStorge = map.get("tempAgvTaskEndPointStorge") == null?null:(Storge)map.get("tempAgvTaskEndPointStorge");
-                log.info("节点{}接驳位不可用,动态调度接驳位起点{}、终点{}",taskNode.getId(),tempAgvTaskStartPoint,tempAgvTaskEndPoint);
-
-                if(StringUtils.isNotBlank(tempAgvTaskStartPoint) && StringUtils.isNotBlank(tempAgvTaskEndPoint)){
-                    // 锁定起点终点接驳位
-                    Map agvData = new HashMap();
-                    agvData.put("start", tempAgvTaskStartPoint);
-                    agvData.put("goal", tempAgvTaskEndPoint);
-                    agvData.put("taskId", taskNode.getTaskId());
-                    agvData.put("taskNodeId", taskNode.getId());
-                    // 0:节点自动调度 1:节点资源不可用人工调度
-                    agvData.put("agvTaskType", "1");
-                    JSONObject agvParam = new JSONObject();
-                    agvParam.putAll(agvData);
-                    String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
+                    }
+                    returnMap.put("storeResourceId",targetResourceId);
+                    returnMap.put("store",targetStorge);
+                    returnMap.put("targetxbk","0");
 
-                    // 锁定预占资源
-                    storgeService.lockStorge(tempAgvTaskStartPointStorge, null);
-                    storgeService.lockStorge(tempAgvTaskEndPointStorge, null);
-
-                    // 更新接驳位信息
-                    taskNode.setTargetResourceId(tempAgvTaskEndResourceId);
-                    lastAgvTaskNode.setResourceId(tempAgvTaskEndResourceId);
-                    lastAgvTaskNode.setTargetResourceId(tempAgvTaskStartResourceId);
-                    taskNodeService.updateById(taskNode);
-                    taskNodeService.updateById(lastAgvTaskNode);
-                    log.info("节点{}更新调度agv任务起点{},终点{}",taskNode.getId(),tempAgvTaskEndResourceId,tempAgvTaskStartResourceId);
-
-                    if(zoneType.equals(ParameterKey.ZONE_SFX)){
-                        agvData.put("transferType","agv");
-                        R addAgvTask = externalApiService.processTransferJob(agvData);
-                    }else{
-                        R addHikTask = agvHikOrderInfoService.addHikTask(agvData);
+                }else{
+                    //需要放到线边库
+                    // begin add by yejian on 20220802 for 调度空托盘流转
+                    Long tempAgvTaskStartResourceId = map.get("tempAgvTaskStartResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskStartResourceId").toString());
+                    Long tempAgvTaskEndResourceId = map.get("tempAgvTaskEndResourceId")== null?null:Long.valueOf(map.get("tempAgvTaskEndResourceId").toString());
+                    String tempAgvTaskStartPoint = map.get("tempAgvTaskStartPoint") == null?null:(String)map.get("tempAgvTaskStartPoint");
+                    String tempAgvTaskEndPoint = map.get("tempAgvTaskEndPoint") == null?null:(String)map.get("tempAgvTaskEndPoint");
+                    Storge tempAgvTaskStartPointStorge = map.get("tempAgvTaskStartPointStorge") == null?null:(Storge)map.get("tempAgvTaskStartPointStorge");
+                    Storge tempAgvTaskEndPointStorge = map.get("tempAgvTaskEndPointStorge") == null?null:(Storge)map.get("tempAgvTaskEndPointStorge");
+                    log.info("节点{}接驳位不可用,动态调度接驳位起点{}、终点{}",taskNode.getId(),tempAgvTaskStartPoint,tempAgvTaskEndPoint);
+
+                    if(StringUtils.isNotBlank(tempAgvTaskStartPoint) && StringUtils.isNotBlank(tempAgvTaskEndPoint)){
+                        // 锁定起点终点接驳位
+                        Map agvData = new HashMap();
+                        agvData.put("start", tempAgvTaskStartPoint);
+                        agvData.put("goal", tempAgvTaskEndPoint);
+                        agvData.put("taskId", taskNode.getTaskId());
+                        agvData.put("taskNodeId", taskNode.getId());
+                        // 0:节点自动调度 1:节点资源不可用人工调度
+                        agvData.put("agvTaskType", "1");
+                        JSONObject agvParam = new JSONObject();
+                        agvParam.putAll(agvData);
+                        String zoneType = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(ParameterKey.ZONE_TYPE).toString());
+
+                        // 锁定预占资源
+                        storgeService.lockStorge(tempAgvTaskStartPointStorge, null);
+                        storgeService.lockStorge(tempAgvTaskEndPointStorge, null);
+
+                        // 更新接驳位信息
+                        taskNode.setTargetResourceId(tempAgvTaskEndResourceId);
+                        lastAgvTaskNode.setResourceId(tempAgvTaskEndResourceId);
+                        lastAgvTaskNode.setTargetResourceId(tempAgvTaskStartResourceId);
+                        taskNodeService.updateById(taskNode);
+                        taskNodeService.updateById(lastAgvTaskNode);
+                        log.info("节点{}更新调度agv任务起点{},终点{}",taskNode.getId(),tempAgvTaskEndResourceId,tempAgvTaskStartResourceId);
+
+                        if(zoneType.equals(ParameterKey.ZONE_SFX)){
+                            agvData.put("transferType","agv");
+                            R addAgvTask = externalApiService.processTransferJob(agvData);
+                        }else{
+                            R addHikTask = agvHikOrderInfoService.addHikTask(agvData);
+                        }
                     }
-                }
-                // end add by yejian on 20220802 for 调度空托盘流转
+                    // end add by yejian on 20220802 for 调度空托盘流转
 
-                xbkFlag = "1";
+                    xbkFlag = "1";
+                }
+                // end modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
             }
-            // end modify by yejian on 20220513 for agv动态查找满足抽检一个工序需多次调度agv问题
+
         }else {
             // begin modify by yejian on 20220515 for 下料库位问题修改
             TaskNode beforTaskNode = taskNodeService.getNextNTaskNode(taskNode,-1);

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

@@ -152,6 +152,7 @@ public class OrderController extends SuperController<OrderService, Long, Order,
     @ApiOperation(value = "新增订单", notes = "新增订单")
     @PostMapping("/save")
     public R<Order> save(@RequestBody Map<String,Object> model) {
+        model.put("singleRunFlag","1");
         Order order = baseService.save(model);
         return success(order);
     }

+ 7 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/OrderPageDTO.java

@@ -145,6 +145,13 @@ public class OrderPageDTO implements Serializable {
     @Length(max = 16, message = "生产状态(1-待生产2-生产中3-暂停4-已完成)长度不能超过16")
     private String produceStatus;
 
+    /**
+     * 线内单据运行标志
+     */
+    @ApiModelProperty(value = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    private String singleRunFlag;
+
     @ApiModelProperty(value = "客户名称")
     @TableField(exist = false)
     private String custDesc;

+ 7 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/OrderSaveDTO.java

@@ -145,6 +145,13 @@ public class OrderSaveDTO implements Serializable {
     @Length(max = 16, message = "生产状态(1-待生产2-生产中3-暂停4-已完成)长度不能超过16")
     private String produceStatus;
 
+    /**
+     * 线内单据运行标志
+     */
+    @ApiModelProperty(value = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    private String singleRunFlag;
+
     /**
      * 明细列表
      */

+ 7 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/OrderUpdateDTO.java

@@ -149,6 +149,13 @@ public class OrderUpdateDTO implements Serializable {
     @Length(max = 16, message = "生产状态(1-待生产2-生产中3-暂停4-已完成)长度不能超过16")
     private String produceStatus;
 
+    /**
+     * 线内单据运行标志
+     */
+    @ApiModelProperty(value = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    private String singleRunFlag;
+
     /**
      * 明细列表
      */

+ 7 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/PlanPageDTO.java

@@ -127,6 +127,13 @@ public class PlanPageDTO implements Serializable {
     @Length(max = 12, message = "节拍类型(1-自动2-自有节拍)长度不能超过12")
     private String rhythmType;
 
+    /**
+     * 线内单据运行标志
+     */
+    @ApiModelProperty(value = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    private String singleRunFlag;
+
     @ApiModelProperty(value = "任务批次号")
     @TableField(exist = false)
     private String taskBatchNo;

+ 7 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/PlanSaveDTO.java

@@ -116,4 +116,11 @@ public class PlanSaveDTO implements Serializable {
     @Length(max = 12, message = "节拍类型(1-自动2-自有节拍)长度不能超过12")
     private String rhythmType;
 
+    /**
+     * 线内单据运行标志
+     */
+    @ApiModelProperty(value = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    private String singleRunFlag;
+
 }

+ 7 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/dto/PlanUpdateDTO.java

@@ -120,4 +120,11 @@ public class PlanUpdateDTO implements Serializable {
     @ApiModelProperty(value = "节拍类型(1-自动2-自有节拍)")
     @Length(max = 12, message = "节拍类型(1-自动2-自有节拍)长度不能超过12")
     private String rhythmType;
+
+    /**
+     * 线内单据运行标志
+     */
+    @ApiModelProperty(value = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    private String singleRunFlag;
 }

+ 10 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/Order.java

@@ -204,6 +204,16 @@ public class Order extends Entity<Long> {
     @Excel(name = "生产状态(1-待生产2-生产中3-暂停4-已完成)")
     private String produceStatus;
 
+
+    /**
+     * 线内单据运行标志(1-待生产2-生产中3-暂停4-已完成)
+     */
+    @ApiModelProperty(value = "线内单据运行标志")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    @TableField(value = "single_run_flag", condition = LIKE)
+    @Excel(name = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    private Integer singleRunFlag;
+
     @ApiModelProperty(value = "客户名称")
     @TableField(exist = false)
     private String custDesc;

+ 9 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/Plan.java

@@ -190,6 +190,15 @@ public class Plan extends Entity<Long> {
     @Excel(name = "节拍类型(1-自动2-自有节拍)")
     private String rhythmType;
 
+    /**
+     * 线内单据运行标志(1-待生产2-生产中3-暂停4-已完成)
+     */
+    @ApiModelProperty(value = "线内单据运行标志")
+    @Length(max = 1, message = "线内单据运行标志(0-全流程 1-线内单独运行)长度不能超过1")
+    @TableField(value = "single_run_flag", condition = LIKE)
+    @Excel(name = "线内单据运行标志(0-全流程 1-线内单独运行)")
+    private Integer singleRunFlag;
+
     @ApiModelProperty(value = "订单状态")
     @TableField(exist = false)
     private String orderStatus;