瀏覽代碼

后台业务功能处理

oyq28 1 周之前
父節點
當前提交
fdcb0d309d

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

@@ -414,6 +414,10 @@ public class TaskWorkNode {
                                 workpieceService.removeById(currWorkpiece.getId());
                                 planMapper.deleteById(plan.getId());
                                 orderMapper.deleteById(order.getId());
+
+                                //原订单恢复初始化
+
+
                             }
 
                         }

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

@@ -102,9 +102,9 @@ public class OrderTaskServiceImpl extends SuperServiceImpl<OrderTaskMapper, Orde
         String[] startNameCondition = orderTask.getStart().split("_");
         String[] goalNameCondition = orderTask.getGoal().split("_");
         if(startNameCondition.length != 2 || goalNameCondition.length != 2) return false;
-        Storge startStorge = storgeService.getOne(new LbqWrapper<Storge>().likeRight(Storge::getName, startNameCondition[0]).eq(Storge::getPointId, startNameCondition[1]));
+        Storge startStorge = storgeService.getOne(new LbqWrapper<Storge>().eq(Storge::getPointId, startNameCondition[1]));
         if(null == startStorge) return false;
-        Storge goalStorge = storgeService.getOne(new LbqWrapper<Storge>().likeRight(Storge::getName, goalNameCondition[0]).eq(Storge::getPointId, goalNameCondition[1]));
+        Storge goalStorge = storgeService.getOne(new LbqWrapper<Storge>().eq(Storge::getPointId, goalNameCondition[1]));
 
         Long startResourceId = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getStorgeId, startStorge.getId()).last("limit 1")).getResourceId();
         Long endResourceId = (null==goalStorge) ? null : productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getStorgeId, goalStorge.getId()).last("limit 1")).getResourceId();
@@ -283,10 +283,10 @@ public class OrderTaskServiceImpl extends SuperServiceImpl<OrderTaskMapper, Orde
         switch(conditionName){
             case "BZ":  businessName = DemoLineConstant.DEMOLINE_BZ_LINE_MOVE;   break;
             case "KT":  businessName = DemoLineConstant.DEMOLINE_KT_LINE_MOVE;    break;
-            //case "CT":  businessName = DemoLineConstant.DEMOLINE_CT_LINE_MOVE;    break;
+            case "CT":  businessName = DemoLineConstant.DEMOLINE_CT_LINE_MOVE;    break;
             case "YP":  businessName = DemoLineConstant.DEMOLINE_YP_LINE_MOVE;   break;
             case "ZC":  businessName = DemoLineConstant.DEMOLINE_ZC_LINE_MOVE;   break;
-            case "CT": businessName = DemoLineConstant.DEMOLINE_TOOL_ROBOT_ACTION; break;
+            case "CT2": businessName = DemoLineConstant.DEMOLINE_TOOL_ROBOT_ACTION; break;
         }
         ResourceBusiness resourceBusiness = resourceBusinessMapper.selectOne(new LbqWrapper<ResourceBusiness>().eq(ResourceBusiness::getName, businessName));
         //初始化任务

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

@@ -27,6 +27,7 @@ import com.github.zuihou.business.edgeLibrary.entity.StockInfo;
 import com.github.zuihou.business.edgeLibrary.entity.StockLog;
 import com.github.zuihou.business.edgeLibrary.entity.Storge;
 import com.github.zuihou.business.edgeLibrary.service.StockInfoService;
+import com.github.zuihou.business.edgeLibrary.service.StockLogService;
 import com.github.zuihou.business.edgeLibrary.service.StorgeService;
 import com.github.zuihou.business.externalApi.dto.ManualInfo;
 import com.github.zuihou.business.operationManagementCenter.dao.*;
@@ -202,6 +203,9 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
     @Autowired
     private TrayService trayService;
 
+    @Autowired
+    private StockLogService stockLogService;
+
     //总控IP
     private String ZK_ip = "192.168.1.41";
 
@@ -2417,8 +2421,6 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                             task.getProcedureId()));
             // 毛料出库
             if (meterialList != null && meterialList.size() > 0) {
-
-                //List<StockInfo> trayList = stockInfoService.list(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, ));
                 R<String> ckresult = stockInfoService.meterialStockOut(meterialList.get(0),
                         Long.parseLong(srcStorgeId), task.getCompleteBatchNo());
 
@@ -2462,7 +2464,8 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             }
             return result;
 
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK.equals(stockType)) {//出入库
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK.equals(stockType)) {//出入库
             List<BomProcedureMeterial> meterialList =
                     bomProcedureMeterialService.list(Wraps.<BomProcedureMeterial>lbQ().eq(BomProcedureMeterial::getProcedureId,
                             task.getProcedureId()));
@@ -2478,9 +2481,9 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                 }
                 return ckresult;
             }
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_TRAY_CRK.equals(stockType)) {//机器人放子盘夹具到上下料站
-//            List<BomProcedureTray> trayList = procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().eq
-//            (BomProcedureTray::getId,task.ge()));
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_TRAY_CRK.equals(stockType)) {
+            //机器人放子盘夹具到上下料站
             List<BomProcedureTray> trayList =
                     procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().eq(BomProcedureTray::getProcedureId,
                             task.getProcedureId()).orderByAsc(BomProcedureTray::getBizType));
@@ -2497,7 +2500,10 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                     }
                 }
             }
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK.equals(stockType)) {//托盘夹具、原料一起出库
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK.equals(stockType)) {
+            /*
+            //托盘夹具、原料一起出库
             List<BomProcedureMeterial> meterialList =
                     bomProcedureMeterialService.list(Wraps.<BomProcedureMeterial>lbQ().eq(BomProcedureMeterial::getProcedureId,
                             task.getProcedureId()));
@@ -2524,8 +2530,29 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                                 result.getData(), task.getCompleteBatchNo());
                     }
                 }
-            }
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_PLATE_CRK.equals(stockType)) {//托板出入库
+            } */
+            List<StockInfo> stockInfoList = stockInfoService.list(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId,srcStorgeId).in(StockInfo::getGoodsType, new String[]{"1","2", "4"}));
+            if(stockInfoList.size()==0) return R.fail("库位数据为空");
+            if(stockInfoList.size() > 3){
+                // 解决库位混乱 保持数据正确性迁移
+                IPage<StockLog> page = new Page<StockLog>(1L, 3L);
+                LbqWrapper<StockLog> wrapper = new LbqWrapper<StockLog>();
+                wrapper.eq(StockLog::getStorgeId, srcStorgeId).eq(StockLog::getCompleteBatchNo, task.getCompleteBatchNo()).orderByDesc(StockLog::getId);
+                IPage ipage = stockLogService.pageLog(page, wrapper);
+                List<StockLog> stockLogList = ipage.getRecords();
+                List unicodeList = stockLogList.stream().map(StockLog::getUniqueCode).collect(Collectors.toList());
+                stockInfoList = stockInfoList.stream().filter(item -> unicodeList.contains(item.getUniqueCode())).collect(Collectors.toList());
+            }
+
+            //批量更新库位位置 从起点->终点
+            UpdateWrapper<StockInfo> updateWrapper = new UpdateWrapper<StockInfo>();
+            Long[] ids = stockInfoList.stream().map(StockInfo::getId).toArray(Long[]::new);
+            updateWrapper.lambda().set(StockInfo::getStorgeId, targetStorgeId).in(StockInfo::getId, ids);
+            stockInfoService.update(null, updateWrapper);
+
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_PLATE_CRK.equals(stockType)) {
+            //托板出入库
             //WMS只要把原材料入库
             R<StockInfo> ckresult = stockInfoService.plateStockOut(Long.parseLong(srcStorgeId),
                     task.getCompleteBatchNo());
@@ -2536,7 +2563,9 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                 return rkresult;
             }
             return R.success("");
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK_WITH_PLATE.equals(stockType)) {//托板出入库
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK_WITH_PLATE.equals(stockType)) {
+            //托板出入库
             List<BomProcedureMeterial> meterialList =
                     bomProcedureMeterialService.list(Wraps.<BomProcedureMeterial>lbQ().eq(BomProcedureMeterial::getProcedureId,
                             task.getProcedureId()));
@@ -2573,15 +2602,21 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                 return rkresultStock;
             }
             return R.success("");
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_HAND_CK.equals(stockType)) {//手抓出库
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_HAND_CK.equals(stockType)) {
+            //手抓出库
             //WMS只要把原材料入库
             R<String> ckresult = stockInfoService.handStockOut();
             return ckresult;
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_HAND_RK.equals(stockType)) {//手抓入库
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_HAND_RK.equals(stockType)) {
+            //手抓入库
             //WMS只要把原材料入库
             R<String> rkresult = stockInfoService.handStockIn(task.getCompleteBatchNo());
             return rkresult;
-        } else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_RK.equals(stockType)) {//原材料和夹具入库
+        }
+        else if (DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_JIAJU_RK.equals(stockType)) {
+            //原材料和夹具入库
             List<BomProcedureMeterial> meterialList =
                     bomProcedureMeterialService.list(Wraps.<BomProcedureMeterial>lbQ().eq(BomProcedureMeterial::getProcedureId,
                             task.getProcedureId()));
@@ -2606,7 +2641,8 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                 }
             }
             return result;
-        }else if (DemoLineConstant.DEMOLINE_CUT_TOOL_CRK.equals(stockType)){
+        }
+        else if (DemoLineConstant.DEMOLINE_CUT_TOOL_CRK.equals(stockType)){
             //刀具出入库处理
             targetStorgeId = callBackJson.getString("targetPostion");
             String locationNo = callBackJson.getString("locationNo"); //起始刀位号
@@ -2634,7 +2670,6 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                     throw new RuntimeException(e);
                 }
 
-
                cuttingTool.setDeviceId(0L).setCutterNo(0L);
                cuttingToolService.updateById(cuttingTool);
                //刀具出库移动到目的位

+ 6 - 6
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/strategy/impl/CacheRobotStrategy.java

@@ -273,12 +273,12 @@ public class CacheRobotStrategy implements RobotStrategy {
             msgUtil.redis_set(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_STORE + taskNode.getId(), targetStorge, 10, TimeUnit.DAYS);
         } else {
             //暂存位优先级处理判断
-            TaskNode beforeNode = taskNodeService.getNextNTaskNode(taskNode, -1);
-            boolean condition = beforeNode!=null && beforeNode.getNodeName().contains("下料") && "04".equals(beforeNode.getInterfaceType()) && "4".equals(taskNode.getNodeType());
-            //排除回库生成节点
-            if(hcwList.size()==1 && !condition){
-                targetStorge = hcwStorge;
-            }
+//            TaskNode beforeNode = taskNodeService.getNextNTaskNode(taskNode, -1);
+//            boolean condition = beforeNode!=null && beforeNode.getNodeName().contains("下料") && "04".equals(beforeNode.getInterfaceType()) && "4".equals(taskNode.getNodeType());
+//            //排除回库生成节点
+//            if(hcwList.size()==1 && !condition){
+//                targetStorge = hcwStorge;
+//            }
             if (targetXbk.equals("0")) {
                 //目标缓存
                 msgUtil.redis_set(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_STORE + taskNode.getId(), targetStorge, 10, TimeUnit.DAYS);

+ 0 - 1
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/edgeLibrary/StockLogMapper.xml

@@ -81,5 +81,4 @@
                           order by l.id asc
              ) s ${ew.customSqlSegment}
     </select>
-
 </mapper>

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

@@ -2,6 +2,7 @@ package com.github.zuihou.business.controller.edgeLibrary;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.zuihou.authority.entity.core.Station;
 import com.github.zuihou.base.request.PageParams;
 import com.github.zuihou.business.edgeLibrary.dto.StockInfoPageDTO;

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

@@ -514,7 +514,6 @@ public class ToolbarController {
             boolean isFirst = item.getCompleteBatchSort().equals(1);
             boolean isAgv = item.getInterfaceType().equals("03");
             if(isAgv){
-                //item.setResourceId(null).setTargetResourceId(null);
                 agvList.add(item.getCompleteBatchSort());
                 if(!isFirst) {
                     nodeSortList.add(item.getCompleteBatchSort() - 1);
@@ -791,5 +790,10 @@ public class ToolbarController {
         return stationUserController.addCutToolTask(data);
     }
 
+    @ApiOperation(value = "添加自定义订单任务", notes = "添加自定义订单任务")
+    @PostMapping("/addOrderTask")
+    public R addOrderTask(@RequestBody Map data) {
+        return stationUserController.addOrderTask(data);
+    }
 }
 

+ 51 - 0
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/StationUserController.java

@@ -288,4 +288,55 @@ public class StationUserController extends SuperController<StationUserService, L
         orderTaskService.prodNode(orderTask, bom, plan.getId().toString());
         return success();
     }
+
+    @ApiOperation(value = "新增自定义订单任务", notes = "新增自定义订单任务")
+    @PostMapping("/addOrderTask")
+    public R addOrderTask(@RequestBody Map<String,Object> model) {
+        BBom bom = bBomService.getOne(new LbqWrapper<BBom>().eq(BBom::getStatus, "1").orderByDesc(BBom::getCreateTime).last("limit 1"));
+        Map<String, Object> params = new HashMap<String, Object>(){
+            {
+                put("deliveryTime", DateUtil.dateToString(new Date()));
+                put("hasMaterial", "0");
+                put("orderTime", DateUtil.dateToString(new Date()));
+                put("singleTaskFlag", "1");
+                put("status", "1");
+                put("zoneId", bom.getZoneId());
+                put("orderName", "orderTask"+new Date().getTime());
+            }
+        };
+        Map<String, Object> orderProduct = new HashMap<String, Object>(){
+            {
+                put("id", bom.getMeterialId());
+                put("bomId", bom.getId());
+                put("bomNum", "1");
+                put("deliveryTime", DateUtil.dateToString(new Date()));
+            }
+        };
+        MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getOne(new LbqWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, bom.getMeterialId()).last("limit 1"));
+        orderProduct.put("meterialReceiveId", mMeterialReceiveLog.getId());
+        orderProduct.put("furnaceBatchNo", mMeterialReceiveLog.getFurnaceBatchNo());
+        List<Map> orderProductList = Lists.newArrayList();
+
+        orderProductList.add(orderProduct);
+        params.put("orderProductList", orderProductList);
+
+        Order order = orderService.save(params);
+        String start = model.containsKey("start")? model.get("start").toString() : null;
+        String goal = model.containsKey("goal")? model.get("goal").toString() : null;
+        if(StringUtil.isEmpty(start) || StringUtil.isEmpty(goal)) return R.fail("传参有误");
+        //目标位是刀具上下料站 则启用天轨线边库刀架支持
+        OrderTask orderTask = OrderTask.builder().orderId(order.getId())
+                .hasMaterial("0").isMachine("0").isXbk("1").start(model.get("start").toString()).goal(model.get("goal").toString())
+                .build();
+        orderTaskService.save(orderTask);
+        OrderUpdateDTO orderUpdateDTO = OrderUpdateDTO.builder().ids(Arrays.asList(order.getId())).auditStatus("1").build();
+        orderService.updateStatus(orderUpdateDTO);
+
+        OrderUpdateDTO orderUpdateDTO2 = OrderUpdateDTO.builder().ids(Arrays.asList(order.getId())).auditStatus("2").build();
+        orderService.updateStatus(orderUpdateDTO2);
+
+        Plan plan = planService.getOne(new LbqWrapper<Plan>().eq(Plan::getOrderId, order.getId()).last("limit 1"));
+        orderTaskService.prodNode(orderTask, bom, plan.getId().toString());
+        return success();
+    }
 }

+ 3 - 3
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/ToolController.java

@@ -135,18 +135,18 @@ public class ToolController extends SuperController<ToolService, Long, Tool, Too
                 Map<String, String> data = Maps.newHashMap();
                 //获取机床待取库位
                 ProductionresourcePosition productionresourcePosition = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getResourceId, item.getMachineId()).like(ProductionresourcePosition::getPointId, "CNC0").last("LIMIT 1"));
-                data.put("start", "CT_" + productionresourcePosition.getPointId());
+                data.put("start", "CT2_" + productionresourcePosition.getPointId());
                 if (isWarn) {
                     //报警直接上下料站下料
                     List<ProductionresourcePosition> cutToolStationList = productionresourcePositionService.list(new LbqWrapper<ProductionresourcePosition>().like(ProductionresourcePosition::getPointId, "LAUPT"));
                     ProductionresourcePosition cutToolStation = cutToolStationList.get(i);
                     Productionresource productionresource = productionresourceBizService.getById(cutToolStation.getResourceId());
                     data.put("goalType", productionresource.getCode());
-                    data.put("goal", cutToolStation.getPointId());
+                    data.put("goal", "CT2_"+cutToolStation.getPointId());
                 } else {
                     //非报警移动到线边库释放刀具
                     data.put("goalType", DictionaryKey.YJ_ZONE_XBK.get(zoneName + "-tool"));
-                    data.put("goal", xbkList.get(i).getPointId());
+                    data.put("goal", "CT2_"+ xbkList.get(i).getPointId());
                 }
 
                 String cutPosition = item.getCuttingToolPosition().replace("1.", "");