Bläddra i källkod

手动模式模拟联调问题修改

yejian016332 3 år sedan
förälder
incheckning
7a909459f4

+ 2 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/edgeLibrary/dao/StockInfoMapper.java

@@ -52,4 +52,6 @@ public interface StockInfoMapper extends SuperMapper<StockInfo> {
      * @return
      */
     int selectSumInStockByProductId(Map queryMap);
+
+    String selectMaxNoByProductId(Map queryMap);
 }

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/edgeLibrary/service/StockInfoService.java

@@ -165,5 +165,5 @@ public interface StockInfoService extends SuperService<StockInfo> {
 
     LinkedHashMap <String,Map <String,List<Map>>> demoLineAllStock();
 
-    R manualStockOut(String goodsId, Long storgeId);
+    R manualStockOut(String goodsId, Long storgeId, String category);
 }

+ 2 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/edgeLibrary/service/impl/StockInfoServiceImpl.java

@@ -623,8 +623,8 @@ public class StockInfoServiceImpl extends SuperServiceImpl<StockInfoMapper, Stoc
     }
 
     @Override
-    public R manualStockOut(String goodsId, Long storgeId) {
-        List<StockInfo>list  = baseMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,storgeId).eq(StockInfo::getUniqueCode,goodsId));
+    public R manualStockOut(String goodsId, Long storgeId, String category) {
+        List<StockInfo> list  = baseMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,storgeId).eq(StockInfo::getUniqueCode,goodsId).eq(StockInfo::getGoodsType,category));
         if(list==null||list.size()==0){
             return R.fail("没有库存");
         }

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

@@ -1216,12 +1216,20 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
         String code = bean.getCode();
         String msg = bean.getMsg();
         String taskNodeId = bean.getTaskNodeId() == null ? "" : bean.getTaskNodeId().toString();
+
+
+        String taskInfos = msgUtil.redis_get(taskNodeId).toString();
+
+        JSONObject taskInfosObject = JSONObject.parseObject(taskInfos);
+        ManualInfo manualInfo = JSONObject.parseObject(taskInfosObject.getString("taskInfo"),ManualInfo.class);
+
+
         String taskId = bean.getTaskId() == null ? "" : bean.getTaskId().toString();
         String bizCallBackData = bean.getBizCallBackData();
         String uid = bean.getUid() == null ? "" : bean.getUid().toString();
 
         String handModeFlag = bean.getHandModeFlag();
-        if("1".equals(handModeFlag)){//手动模式是特殊处理
+        if(null != manualInfo && "1".equals(manualInfo.getHandModeFlag())){//手动模式是特殊处理
             return  handModeStock(bean);
         }
 
@@ -1590,19 +1598,19 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
         }else{
             if(manualInfo.getNextTaskNodeIndex() > taskNodes.size() -1){
                 Map queryMap = new HashMap();
-                queryMap.put("pointId", manualInfo.getStartoperation());
+                queryMap.put("pointId", manualInfo.getStartpointId());
                 queryMap.put("resourceId", manualInfo.getStartResourceId());
 
                 List<ProductionresourcePosition> sourceList = productionresourcePositionMapper.getStorgeIdByResource(queryMap);
 
                 queryMap.clear();
-                queryMap.put("pointId", manualInfo.getEndoperation());
+                queryMap.put("pointId", manualInfo.getEndpointId());
                 queryMap.put("resourceId", manualInfo.getEndResourceId());
                 List<ProductionresourcePosition> targetList = productionresourcePositionMapper.getStorgeIdByResource(queryMap);
 
                 // 先将原库位上所有物料信息读取出来
-                List<StockInfo> stockInfos = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId, sourceList.get(0).getStorgeId()));
 
+                List<StockInfo> stockInfos = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId, sourceList.get(0).getStorgeId()));
                 for(StockInfo stockInfo : stockInfos){
                     // 更新出库信息
                     saveStockLog(stockInfo,BizConstant.STOCK_TYPE_OUT);
@@ -1612,10 +1620,11 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                     // 更新库位物料信息
                     stockInfoMapper.updateById(stockInfo);
                 }
+                msgUtil.redis_del(manualInfo.getManualId());
                 return R.success();
             }else{
                 // 继续执行后续结点
-                Map<String,Object> processInfo =  ManualTaskOperatorUtil.judgeProcessInfo((LinkedList<String>) taskNodes,manualInfo);
+                Map<String,Object> processInfo =  ManualTaskOperatorUtil.judgeProcessInfo((ArrayList<String>) taskNodes,manualInfo);
                 JSONObject returnDataObject = new JSONObject();
 
                 // 组装参数
@@ -1657,17 +1666,23 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
 
     @Override
     public R handModeStockOut(Map conMap) {
-        String resourceId = conMap.get("resourceId").toString();
-        String pointId = conMap.get("pointId").toString();
-        String category = conMap.get("category").toString();
-        String goodsId = conMap.get("goodsId").toString();
-        Map queryMap = new HashMap();
-        queryMap.put("pointId", pointId);
-        queryMap.put("resourceId", resourceId);
-        List<ProductionresourcePosition> list = productionresourcePositionMapper.getStorgeIdByResource(queryMap);
-        R result = R.success();
-        ProductionresourcePosition productionresourcePosition = list.get(0);
-        return stockInfoService.manualStockOut(goodsId, productionresourcePosition.getStorgeId());
+        try{
+            String resourceId = conMap.get("resourceId").toString();
+            String pointId = conMap.get("pointId").toString();
+            String category = conMap.get("category").toString();
+            String goodsId = conMap.get("goodsId").toString();
+            Map queryMap = new HashMap();
+            queryMap.put("pointId", pointId);
+            queryMap.put("resourceId", resourceId);
+            List<ProductionresourcePosition> list = productionresourcePositionMapper.getStorgeIdByResource(queryMap);
+            R result = R.success();
+            ProductionresourcePosition productionresourcePosition = list.get(0);
+            return stockInfoService.manualStockOut(goodsId, productionresourcePosition.getStorgeId(),category);
+        }catch (Exception e){
+            e.printStackTrace();
+            return R.fail("删除子盘夹具发生异常");
+        }
+
     }
 
 
@@ -1690,7 +1705,13 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             if("2".equals(category)){//托盘夹具
                 // 查询当前子盘使用的数量,根据出入库日志查询当前的子盘最大数量和库存数量进行比较进行累加
                 Tray tray = trayMapper.selectById(goodsId);
-                int maxTrayNo = stockLogMapper.selectMaxNoByProductId(queryMap);
+                String maxTray =  stockInfoMapper.selectMaxNoByProductId(queryMap);
+                int maxTrayNo = 0;
+                if(StringUtils.isBlank(maxTray)){
+                    maxTrayNo = 0;
+                }else{
+                    maxTrayNo = Integer.parseInt(maxTray);
+                }
                 int sumTray = stockInfoMapper.selectSumInStockByProductId(queryMap);
                 BigDecimal uniqueCode;
                 if(sumTray < tray.getNum()){
@@ -1699,10 +1720,18 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
                     return R.fail("当前托盘数量已用完");
                 }
                 result = stockInfoService.procedureTrayStockIn(uniqueCode, Long.valueOf(goodsId), list.get(0).getStorgeId());
-            }else if("1".equals(p.getCategory())){
+            }else if("1".equals(category)){
+                // 判断创建夹具之前
+
                 // 查询当前夹具使用的数量,根据出入库日志查询当前的夹具最大数量和库存数量进行比较进行累加
                 MToolClamp mToolClamp = mToolClampMapper.selectById(goodsId);
-                int maxMToolClampNo = stockLogMapper.selectMaxNoByProductId(queryMap);
+                String maxMToolClamp = stockInfoMapper.selectMaxNoByProductId(queryMap);
+                int maxMToolClampNo = 0;
+                if(StringUtils.isBlank(maxMToolClamp)){
+                    maxMToolClampNo = 0;
+                }else{
+                    maxMToolClampNo = Integer.parseInt(maxMToolClamp);
+                }
                 int sumMToolClamp = stockInfoMapper.selectSumInStockByProductId(queryMap);
                 BigDecimal uniqueCode;
                 if(sumMToolClamp < mToolClamp.getNum()){

+ 5 - 6
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/WorkpieceServiceImpl.java

@@ -104,7 +104,7 @@ public class WorkpieceServiceImpl extends SuperServiceImpl<WorkpieceMapper, TWor
     @Autowired
     private BomProcedureMapper bomProcedureMapper;
 
-    private static LinkedList<String> robotTaskNodes = new LinkedList<>();
+    private static ArrayList<String> robotTaskNodes = new ArrayList<>();
     static {
         robotTaskNodes.add("move");
         robotTaskNodes.add("get");
@@ -113,7 +113,7 @@ public class WorkpieceServiceImpl extends SuperServiceImpl<WorkpieceMapper, TWor
         robotTaskNodes.add("get");
         robotTaskNodes.add("put");
     }
-    private static LinkedList<String> robotNoMoveTaskNodes = new LinkedList<String>();
+    private static ArrayList<String> robotNoMoveTaskNodes = new ArrayList<String>();
     static {
         robotNoMoveTaskNodes.add("get");
         robotNoMoveTaskNodes.add("put");
@@ -373,10 +373,10 @@ public class WorkpieceServiceImpl extends SuperServiceImpl<WorkpieceMapper, TWor
 
         Storge storge = list.get(0);
 
-        if("1".equals(lockType)){//锁定
+        if("0".equals(lockType)){//锁定
             storge.setLockStatus("0");
             storgeMapper.updateById(storge);
-        }else if("0".equals(lockType)){//解锁
+        }else if("1".equals(lockType)){//解锁
             storge.setLockStatus("1");
             storgeMapper.updateById(storge);
         }
@@ -473,7 +473,6 @@ public class WorkpieceServiceImpl extends SuperServiceImpl<WorkpieceMapper, TWor
             devicePort = productionresource.getPort();
         }
         String jsonParam = ManualTaskOperatorUtil.getRequestParam(processInfo.get("location").toString(),manualInfo,"execProgram".equals(manualInfo.getManualIdType()) ? deviceUrl: processInfo.get("deviceUrl").toString(),"execProgram".equals(manualInfo.getManualIdType()) ? devicePort: processInfo.get("devicePort").toString());
-
         HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam, headers);
         //调用接口
         try {
@@ -483,7 +482,7 @@ public class WorkpieceServiceImpl extends SuperServiceImpl<WorkpieceMapper, TWor
             if("true".equals(returnDataObject.get("result"))){
                 // 放入redis,方便回调的时候判断是否是最后一个结点,如果是最后一个结点不在做任何逻辑,更新相应的库位信息
                 Map<String, Object> currentTask = new HashMap<String, Object>();
-                List<String> taskNodes = (List<String>) processInfo.get("taskNodes");
+                List<String> taskNodes = (List<String>) processInfo.get("remindTaskNodes");
                 currentTask.put("taskNodes",taskNodes);
                 currentTask.put("taskInfo",manualInfo);
                 JSONObject redisTask = new JSONObject();

+ 13 - 14
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/ManualTaskOperatorUtil.java

@@ -3,10 +3,7 @@ package com.github.zuihou.business.util;
 import com.alibaba.fastjson.JSONObject;
 import com.github.zuihou.business.externalApi.dto.ManualInfo;
 
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 手动模式下参数组装
@@ -15,7 +12,9 @@ public class ManualTaskOperatorUtil {
     /**
      * 上位机系统地址
      */
-    private static String hostSyetemUrl = "http://192.168.10.155:63570";
+//    private static String hostSyetemUrl = "http://192.168.170.240:8090";
+    private static String hostSyetemUrl = "http://192.168.10.155:63570/";
+
     /**
      * agv运输
      */
@@ -83,7 +82,7 @@ public class ManualTaskOperatorUtil {
      * @param manualInfo
      * @return
      */
-    public static Map<String,Object> judgeFirstProcessInfo(LinkedList<String> robotTaskNodes,LinkedList<String> robotNoMoveTaskNodes , ManualInfo manualInfo){
+    public static Map<String,Object> judgeFirstProcessInfo(ArrayList<String> robotTaskNodes, ArrayList<String> robotNoMoveTaskNodes , ManualInfo manualInfo){
         Map<String,Object> processInfo = new HashMap<String,Object>();
         String unit = manualInfo.getDeviceUnit();
         String manualType = manualInfo.getManualIdType();
@@ -131,12 +130,12 @@ public class ManualTaskOperatorUtil {
                 // 保障平台(质量中心) 代码先写死,6个动作,后续根据resource_code表中获取
                 // 执行第一个任务
                 int currentIndex = 0;
-                String taskType = robotTaskNodes.get(currentIndex);
+                String taskType = robotNoMoveTaskNodes.get(currentIndex);
                 int nextTaskNodeIndex = currentIndex +1;
                 if("get".equals(taskType)){
                     String hostSyetemTaskUrl = hostSyetemUrl + "/api/GetIntelligenceUnit";
                     String location = manualInfo.getStartpointId();
-                    setProcessInfo(robotTaskNodes, processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
+                    setProcessInfo(robotNoMoveTaskNodes, processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
                 }
                 manualInfo.setNextTaskNodeIndex(nextTaskNodeIndex);
             }
@@ -167,19 +166,19 @@ public class ManualTaskOperatorUtil {
             String hostSyetemTaskUrl = hostSyetemUrl + "/api/StartNCProgram";
             String location = manualInfo.getStartpointId();
             // 查找设备ip及端口
-            setProcessInfo( new LinkedList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
+            setProcessInfo( new ArrayList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
         }else if("clean".equals(manualType)) {
             String hostSyetemTaskUrl = hostSyetemUrl + "/api/StartCleanMachine";
             String location = manualInfo.getStartpointId();
-            setProcessInfo( new LinkedList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
+            setProcessInfo( new ArrayList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
         }else if("print".equals(manualType)) {
             String hostSyetemTaskUrl = hostSyetemUrl + "/api/StartLabelMachine";
             String location = manualInfo.getStartpointId();
-            setProcessInfo( new LinkedList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
+            setProcessInfo( new ArrayList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
         }else if("measuring".equals(manualType)) {
             String hostSyetemTaskUrl = hostSyetemUrl + "/api/StartCoordinateMeasuringMachine";
             String location = manualInfo.getStartpointId();
-            setProcessInfo( new LinkedList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
+            setProcessInfo( new ArrayList(), processInfo, hostSyetemTaskUrl, location, deviceUrl, devicePort);
         }
     }
 
@@ -189,7 +188,7 @@ public class ManualTaskOperatorUtil {
      * @param manualInfo
      * @return
      */
-    public static Map<String,Object> judgeProcessInfo(LinkedList<String> taskNodes, ManualInfo manualInfo){
+    public static Map<String,Object> judgeProcessInfo(ArrayList<String> taskNodes, ManualInfo manualInfo){
         String unit = manualInfo.getDeviceUnit();
         String manualType = manualInfo.getManualIdType();
         Map<String,Object> processInfo = new HashMap<String,Object>();
@@ -317,7 +316,7 @@ public class ManualTaskOperatorUtil {
      * @param deviceUrl
      * @param devicePort
      */
-    private static void setProcessInfo(LinkedList<String> taskNodes, Map<String, Object> processInfo, String hostSyetemTaskUrl, String location, String deviceUrl, String devicePort) {
+    private static void setProcessInfo(ArrayList<String> taskNodes, Map<String, Object> processInfo, String hostSyetemTaskUrl, String location, String deviceUrl, String devicePort) {
         processInfo.put("hostSyetemTaskUrl", hostSyetemTaskUrl);
         processInfo.put("deviceUrl", deviceUrl);
         processInfo.put("devicePort", devicePort);

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

@@ -145,7 +145,11 @@ GROUP BY
     </select>
 
     <select id="selectSumInStockByProductId" resultType="java.lang.Integer">
-        select sum(id) from imcs_s_stock_info where goods_id = #{goodsId}
+        select count(id) from imcs_s_stock_info where goods_id = #{goodsId}
+    </select>
+
+    <select id="selectMaxNoByProductId" resultType="java.lang.String">
+        select max(CONVERT(ifnull(unique_code,0), UNSIGNED INTEGER)) from imcs_s_stock_log where goods_id = #{goodsId} and opt_type = #{type}
     </select>
 
 </mapper>

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

@@ -195,7 +195,7 @@ public class WorkpieceController extends SuperController<WorkpieceService, Long,
     @ApiOperation(value = "删除子盘夹具(非订单)", notes = "删除(非订单)")
     @PostMapping("/handMode/delete")
     public R delete(@RequestBody Map map) {
-        return success(baseService.delete(map));
+        return baseService.delete(map);
     }
 
 
@@ -231,6 +231,7 @@ public class WorkpieceController extends SuperController<WorkpieceService, Long,
     @PostMapping("/handMode/manualTask")
     public R manualTask(@RequestBody ManualInfo manualInfo) {
         BaseContextHandler.setTenant("0000");
+        manualInfo.setHandModeFlag("1");
         log.info("开始执行手动任务,参数是{}", manualInfo.toString());
         try {
             return baseService.executeManualTask(manualInfo);

+ 6 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/externalApi/dto/ManualInfo.java

@@ -1,6 +1,7 @@
 package com.github.zuihou.business.externalApi.dto;
 
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 import lombok.experimental.Accessors;
 
@@ -91,4 +92,9 @@ public class ManualInfo {
      * 工件id
      */
     private String workpieceId;
+
+    /**
+     * 手动模式标志1-手动
+     */
+    private String handModeFlag;
 }