Преглед на файлове

后台业务功能处理测试

oyq28 преди 2 години
родител
ревизия
f2b5667905

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

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.ttl.threadpool.agent.TtlAgent;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.zuihou.base.R;
 import com.github.zuihou.base.service.SuperServiceImpl;
@@ -57,6 +58,7 @@ import com.github.zuihou.tenant.service.CodeRuleService;
 import com.github.zuihou.tenant.service.ProductionlineService;
 import com.github.zuihou.tenant.service.ProductionlineUserService;
 import com.github.zuihou.utils.SpringUtils;
+import javafx.concurrent.Task;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.formula.functions.T;
@@ -2394,18 +2396,21 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
         String taskNodeId = map.get("taskNodeId").toString();
 
         TaskNode hisTask = this.getById(taskNodeId);
+        TaskNode firstNode = this.getNextNTaskNode(hisTask, (hisTask.getCompleteBatchSort()-1)*(-1));
 
         List<BomProcedureTray>trayList = procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().in(BomProcedureTray::getProcedureId, hisTask.getProcedureId()));
         List<Long>trayIdList = trayList.stream().map(t->t.getTrayId()).collect(Collectors.toList());
 
+        List<BomProcedureTray> oldTrayList = procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().eq(BomProcedureTray::getProcedureId, firstNode.getProcedureId()));
+        List<Long> oldTrayIdList = oldTrayList.stream().map(t->t.getTrayId()).collect(Collectors.toList());
 
-        List<TaskNode> taskNodeList = baseMapper.selectList(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, hisTask.getCompleteBatchNo()).orderByAsc(TaskNode::getCompleteBatchSort));
+        /*List<TaskNode> taskNodeList = baseMapper.selectList(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, hisTask.getCompleteBatchNo()).orderByAsc(TaskNode::getCompleteBatchSort));
         TaskNode firstTaskNode = taskNodeList.get(0);
         List<BomProcedureTray>firsttrayList = procedureTrayService.list(Wraps.<BomProcedureTray>lbQ().in(BomProcedureTray::getProcedureId, firstTaskNode.getProcedureId()));
         List<Long>firsttrayIdList = firsttrayList.stream().map(t->t.getTrayId()).collect(Collectors.toList());
-
+         */
         //判断翻面得托盘工装和翻面前得是否一致
-        if(containAll(trayIdList,firsttrayIdList)){
+        if(CollectionUtil.join(trayIdList,"").equals(CollectionUtil.join(oldTrayIdList,""))){
             return R.fail("无需呼叫");
         }
 
@@ -2414,17 +2419,39 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             return R.fail("呼叫机器人尚未完成");
         }
         msgUtil.redis_set(YunjianConstant.YUNJIAN_FANMIAN+taskNodeId,YunjianConstant.YUNJIAN_FANMIAN+taskNodeId);
-
+        /*
         //获取机器人
         Long resourceId = getResourceIdByAutoCode("2");
         //呼叫
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("taskNodeId",taskNodeId);
-        jsonObject.put("taskNodeId"+"count", "0");
+        jsonObject.put(taskNodeId+"count", "0");
         jsonObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_VIRTUALLY);
         jsonObject.put("functionName", "取");
         jsonObject.put("resourceId",resourceId);
-        dynamicRabbitMq.sendMsg(resourceId.toString(),jsonObject.toString());
+        dynamicRabbitMq.sendMsg(resourceId.toString(),jsonObject.toString()); */
+        List<Long> taskIds = this.list(new LbqWrapper<TaskNode>().eq(TaskNode::getCompleteBatchNo, hisTask.getCompleteBatchNo()).gt(TaskNode::getCompleteBatchSort, hisTask.getCompleteBatchSort()).orderByAsc(TaskNode::getCompleteBatchSort)).stream().map(TaskNode::getId).collect(Collectors.toList());
+
+        List<TaskNode> fanMNodes = this.getFanManNodes(hisTask);
+        UpdateWrapper<TaskNode> updateWrapper = new UpdateWrapper<TaskNode>();
+        updateWrapper.lambda().in(TaskNode::getId, taskIds.toArray()).gt(TaskNode::getCompleteBatchSort, hisTask.getCompleteBatchSort()).setSql("complete_batch_sort = complete_batch_sort + "+fanMNodes.size());
+        boolean bool= this.update(updateWrapper);
+        if(bool) {
+            this.saveBatch(fanMNodes);
+        }
+
+        TTask tTask = taskService.getById(hisTask.getTaskId());
+        List<AAutoNodeLog> autoNodeLogList = autoNodeLogMapper.selectList(Wraps.<AAutoNodeLog>lbQ().eq(AAutoNodeLog::getTaskNodeId, taskNodeId));
+        AAutoNodeLog lg = autoNodeLogList.get(0);
+        List<TaskNode> taskNodeList = this.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, tTask.getCompleteBatchNo()).orderByAsc(TaskNode::getCompleteBatchSort));
+
+        JSONObject jsonObject = new JSONObject();
+        Storge currStorage = workpieceService.getWorkPieceStock(hisTask.getCompleteBatchNo(), false);
+        jsonObject.put("srcPosition", currStorage.getId());
+        //限定伺服舵机
+        jsonObject.put("targetPosition", "1496714517546008576");
+        jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_TRAY_CRK);
+        this.taskNodeCallbackBiz(hisTask, tTask, taskNodeList, lg, jsonObject.toJSONString());
         return R.success("");
     }
 
@@ -2432,19 +2459,40 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
     public R printCode(Map<String, Object> map) {
         ZplPrinter.init();
         ZplPrinter.resetZpl();
-        String content = ZplPrinter.getZpl();
-        return ZplPrinter.print(content)? R.success("打印成功"):R.fail("打印失败");
+        String content = map.containsKey("uniqueCode")? map.get("uniqueCode").toString() : "";
+        if(StringUtil.isEmpty(content))
+            return R.fail("编码为空");
+        return ZplPrinter.printer("", content.substring(0, 20))? R.success("打印成功"):R.fail("打印失败");
     }
 
-
-    private  Boolean containAll(List<Long> A, List<Long> B) {
-        List<Long> collect = A.stream().filter(item -> B.contains(item)).collect(Collectors.toList());
-        if (null != collect && collect.size() > 0) {
-            return true;
-        } else {
-            return false;
-        }
+    private List<TaskNode> getFanManNodes(TaskNode taskNode){
+        List<TaskNode> headNodes = new ArrayList<TaskNode>();
+        List<TaskNode> tailNodes = new ArrayList<TaskNode>();
+        //获取最终回立库的两个节点
+        List<TaskNode> backStockNodes = this.list(new LbqWrapper<TaskNode>().gt(TaskNode::getCompleteBatchSort, taskNode.getCompleteBatchSort()).orderByDesc(TaskNode::getCompleteBatchSort).last("limit 2"));
+
+        Collections.reverse(backStockNodes);
+        backStockNodes.stream().forEach(node -> {
+            TaskNode backNode = new TaskNode();
+            BeanUtil.copyProperties(node, backNode, "id");
+            backNode.setProcedureId(taskNode.getProcedureId()).setTaskId(taskNode.getTaskId());
+            tailNodes.add(backNode);
+        });
+
+        //重建最初获取工装节点
+        List<TaskNode> switchNodes = this.list(new LbqWrapper<TaskNode>().lt(TaskNode::getCompleteBatchSort, taskNode.getCompleteBatchSort()).orderByAsc(TaskNode::getCompleteBatchSort).last("limit 2"));
+        switchNodes.stream().forEach(node -> {
+            TaskNode headNode = new TaskNode();
+            BeanUtil.copyProperties(node, headNode, "id");
+            headNode.setProcedureId(taskNode.getProcedureId()).setTaskId(taskNode.getTaskId()).setExeStatus("1").setExeResult(null).setStartTime(null).setEndTime(null).setFeedback("");
+            headNodes.add(headNode);
+        });
+
+        tailNodes.addAll(headNodes);
+        for(int count=0; count<tailNodes.size();count++){
+            tailNodes.get(count).setCompleteBatchSort(taskNode.getCompleteBatchSort() + (count+1)).setPrority(count+2).setTaskNodeNo(taskNode.getTaskNodeNo()+"_"+(count+1));
+        }
+        return tailNodes;
     }
 
-
 }

+ 7 - 6
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/MachineNodeServiceImpl.java

@@ -247,13 +247,14 @@ public class MachineNodeServiceImpl implements NodeOperationService {
                     JSONObject data = new JSONObject();
                     //默认配置  后期可改可去
 
-                    if("capsule".equals(bomzZone.getNo())){
-                        data.put("typeNo", "C");
-                    }else if("framework".equals(bomzZone.getNo())){
-                        data.put("typeNo", "K");
-                    }
+//                    if("capsule".equals(bomzZone.getNo())){
+//                        data.put("typeNo", "C");
+//                    }else if("framework".equals(bomzZone.getNo())){
+//                        data.put("typeNo", "K");
+//                    }
                     // TODO工件增加流水号
-                    data.put("smalltypeNo", "2");
+                    data.put("typeNo", "C");
+                    data.put("smalltypeNo", "K");
                     data.put("orderNo", order.getOrderNo());
                     data.put("taskNo", task.getTaskNo());
                     data.put("productNo", tWorkpiece.getUniqueCode());

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

@@ -377,7 +377,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
         TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
 
-        if(taskNode.getCompleteBatchSort()==1 && count == 0){
+        if((taskNode.getCompleteBatchSort()==1 && count == 0)||(taskNode.getPrority()==4 && taskNode.getNodeType().equals("4"))){
             // 判断是否是单线单独运行
             if(1 == orderPlan.getSingleRunFlag()){
                 flikustockInfos = this.getProductionLineXbkStockList(nextTaskNode,task);
@@ -560,8 +560,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                         dataMap.put("result", false);
                     }else{
                         Map returnMap = null;
-                        String bizType = dataMap.get("bizType")==null?"":dataMap.get("bizType").toString();
-                        if("3".equals(bizType)){
+                        //String bizType = dataMap.get("bizType")==null?"":dataMap.get("bizType").toString();
+                        if("4".equals(taskNode.getNodeType()) && !StringUtils.contains(taskNode.getNodeName(), "翻面")){
                             returnMap = getFanmianTargetStorge(taskNode,dataMap);
                         }else {
                             returnMap = getTargetStorge(nextTaskNode,taskNode.getFindAgvFlag(),bomProcedure.getType());
@@ -867,10 +867,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
     public Map getFanmianTargetStorge(TaskNode taskNode,Map<String, Object> dataMap){
         Map returnMap = new HashMap();
         Storge targetStorge = null;
-        int count = Integer.parseInt(dataMap.get(taskNode.getId().toString() + "count") == null ? "0" : dataMap.get(taskNode.getId().toString() + "count").toString());
+        //int count = Integer.parseInt(dataMap.get(taskNode.getId().toString() + "count") == null ? "0" : dataMap.get(taskNode.getId().toString() + "count").toString());
+        int count = taskNode.getPrority()-1;
         Long resourceId = null;
-        if(count==0){//把托盘夹具挪到空的线边库
+        if(count==1){//把托盘夹具挪到空的线边库
             //获取机器人操作线边库
+            /*
             String xbkKey = zoneName+"-"+bomzZone.getNo();
             xbkArr = DictionaryKey.YJ_ZONE_XBK.get(xbkKey).split(",");
             xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
@@ -879,15 +881,33 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                 targetStorge = storgeService.getById(position.getStorgeId());
                 returnMap.put("storeResourceId",position.getResourceId());
                 returnMap.put("store",targetStorge);
-            }
-        }else if(count==2){//到线边库
+            } */
+            Long storgeId = getLikuStockInList();
+            targetStorge = storgeService.getById(storgeId);
+            returnMap.put("store", targetStorge);
+            returnMap.put("targetxbk","0");
+            returnMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK);
+
+        }else if(count==3){//到线边库
             //获取翻面工序的托盘夹具
+            /*
             ProductionresourcePosition position = getProductionresourcePosition(taskNode);
-            targetStorge = storgeService.getById(position.getStorgeId());
-            returnMap.put("storeResourceId",position.getResourceId());
-            returnMap.put("store",targetStorge);
-
-        }else if(count==4){//到上下料站
+            TTask tTask = tTaskMapper.selectById(taskNode.getTaskId());
+            List<StockInfo> stockInfos = this.getLikuStockList(tTask);
+            targetStorge = storgeService.getById(stockInfos.get(0).getStorgeId());
+            //returnMap.put("storeResourceId",position.getResourceId());  */
+            TTask tTask = tTaskMapper.selectById(taskNode.getTaskId());
+            resourceId = tTask.getResourceId();
+            targetList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[] {resourceId.toString()});
+            if(CollectionUtil.isNotEmpty(targetList)){
+                targetStorge = storgeService.getById(targetList.get(0).getStorgeId());
+                returnMap.put("storeResourceId",targetList.get(0).getResourceId());
+                returnMap.put("store", targetStorge);
+                returnMap.put("targetxbk","0");
+                returnMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK);
+            }
+        }
+        /*else if(count==4){//到上下料站
             //获取翻面工序的托盘夹具
             resourceId = taskNode.getTargetResourceId();
             targetList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[] {resourceId.toString()});
@@ -897,8 +917,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                 returnMap.put("store",targetStorge);
                 returnMap.put("targetxbk","0");
             }
-
-        }
+        } */
         return returnMap;
     }
 
@@ -1183,7 +1202,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         List<Long>trayIdList = trayList.stream().map(t->t.getTrayId()).collect(Collectors.toList());
         // 判断夹具是否有可用的,查询330个库位信息中是否还有夹具
 
-        List<StockInfo> allStockList = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().in(StockInfo::getGoodsId,trayIdList).in(StockInfo::getStorgeId,startProductionresourcePositionIds).orderByAsc(StockInfo::getStorgeId));
+        List<StockInfo> allStockList = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().isNull(StockInfo::getCompleteBatchNo).in(StockInfo::getGoodsId,trayIdList).in(StockInfo::getStorgeId,startProductionresourcePositionIds).orderByAsc(StockInfo::getStorgeId));
         if(CollectionUtil.isNotEmpty(allStockList)){
             Map<Long,List<StockInfo>>map = allStockList.stream().collect(groupingBy(StockInfo::getStorgeId));
             Long k = null;
@@ -1204,6 +1223,9 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                             oneTray = stockInfoList;
                         }
                     }
+                }else if(stockInfoList!=null&&stockInfoList.size()==1 && task.getProcedureName().contains("翻面")){
+                    //人工翻面根据夹具获取新工装
+                    returnList = stockInfoMapper.selectList(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, stockInfoList.get(0).getStorgeId()));
                 }
             }
             // mofify by yejian on 20220722 for 修改只有一个子盘的出库

+ 4 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/ZplPrinter.java

@@ -1,5 +1,6 @@
 package com.github.zuihou.business.util;
 
+import com.github.zuihou.common.util.StringUtil;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
@@ -41,7 +42,9 @@ public class ZplPrinter {
      */
     public static boolean printer(String serviceUrl, String materialCode) {
         ZplPrinter p = new ZplPrinter();
-        printerURI = serviceUrl;
+        if(!StringUtil.isEmpty(serviceUrl)){
+            printerURI = serviceUrl;
+        }
 
         //下边的条码
         String bar2 = materialCode;//20位