Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

wang.sq@aliyun.com 3 mesiacov pred
rodič
commit
db490ffc46

+ 2 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/OrderTaskService.java

@@ -2,10 +2,11 @@ package com.github.zuihou.business.operationManagementCenter.service;
 
 import com.github.zuihou.base.service.SuperService;
 import com.github.zuihou.business.operationManagementCenter.entity.OrderTask;
+import com.github.zuihou.business.productionReadyCenter.entity.BBom;
 
 public interface OrderTaskService extends SuperService<OrderTask> {
 
-    boolean prodNode(OrderTask orderTask, String planId);
+    boolean prodNode(OrderTask orderTask, BBom bom, String planId);
 
     boolean isOneLine(String startName, String goalName);
 }

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

@@ -15,8 +15,11 @@ import com.github.zuihou.business.enumeration.TaskTypeEnum;
 import com.github.zuihou.business.operationManagementCenter.dao.OrderTaskMapper;
 import com.github.zuihou.business.operationManagementCenter.entity.*;
 import com.github.zuihou.business.operationManagementCenter.service.*;
+import com.github.zuihou.business.productionReadyCenter.entity.BBom;
+import com.github.zuihou.business.productionReadyCenter.entity.BomProcedure;
 import com.github.zuihou.business.productionReadyCenter.entity.BomProcedureProductionresource;
 import com.github.zuihou.business.productionReadyCenter.service.BomProcedureProductionresourceService;
+import com.github.zuihou.business.productionReadyCenter.service.BomProcedureService;
 import com.github.zuihou.business.productionResourceCenter.dao.ResourceBusinessMapper;
 import com.github.zuihou.business.productionResourceCenter.entity.Productionresource;
 import com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition;
@@ -89,8 +92,11 @@ public class OrderTaskServiceImpl extends SuperServiceImpl<OrderTaskMapper, Orde
     @Autowired
     private OrderProductService orderProductService;
 
+    @Autowired
+    private BomProcedureService bomProcedureService;
+
     @Override
-    public boolean prodNode(OrderTask orderTask, String planId) {
+    public boolean prodNode(OrderTask orderTask, BBom bom, String planId) {
 
         //依据配置动态更新节点
         String[] startNameCondition = orderTask.getStart().split("_");
@@ -105,7 +111,7 @@ public class OrderTaskServiceImpl extends SuperServiceImpl<OrderTaskMapper, Orde
 
         if(startNameCondition[0].equals(goalNameCondition[0])){
             //同产线内简易搬运处理
-            this.inLineHandle(orderTask, startStorge, goalStorge, startNameCondition[0], endResourceId);
+            this.inLineHandle(orderTask, startStorge, bom, startNameCondition[0], startResourceId, endResourceId);
             return true;
         }
 
@@ -220,7 +226,7 @@ public class OrderTaskServiceImpl extends SuperServiceImpl<OrderTaskMapper, Orde
      * @return
      */
 
-    public TTask getSimpleTask(int currentSort, Order order, Long resourceBusinessId){
+    public TTask getSimpleTask(int currentSort, Order order, BBom bom, Long startResourceId, Long resourceBusinessId){
         TTask simpleTask = taskService.getOne(new LambdaQueryWrapper<TTask>().eq(TTask::getResourceBusinessId, resourceBusinessId).eq(TTask::getProcedureSort, currentSort).orderByDesc(TTask::getCreateTime).last("limit 1"));
         //OrderProduct orderProduct = orderProductService.getOne(new LambdaQueryWrapper<OrderProduct>().eq(OrderProduct::getBomNum, 1).orderByDesc(OrderProduct::getCreateTime).last("limit 1"));
         Plan plan = planService.getOne(new LambdaQueryWrapper<Plan>().eq(Plan::getProduceStatus, "4").orderByDesc(Plan::getCreateTime).last("limit 1"));
@@ -228,11 +234,12 @@ public class OrderTaskServiceImpl extends SuperServiceImpl<OrderTaskMapper, Orde
         //OrderProduct initProduct = OrderProduct.builder().build();
         Plan initPlan = Plan.builder().build();
         if(simpleTask == null){
-            String procedureName = currentSort==0?"上料":"加工";
+            String procedureName = "上料";
             //初始化默认简易任务
-            Long resourceId = currentSort==0? 1496363582865014784L: 1496358051194601472L;
-            Long procedureId = currentSort==0? 1706213820864659456L: 1706558306123776000L;
-            Long bomId = 1660938345225650176L;
+            Long bomId = bom.getId();
+            Long resourceId = startResourceId;
+            BomProcedure bomProcedure = bomProcedureService.getOne(new LbqWrapper<BomProcedure>().eq(BomProcedure::getName, procedureName).orderByDesc(BomProcedure::getCreateTime).last("limit 1"));
+            Long procedureId = null!=bomProcedure ? bomProcedure.getId(): 1234567890L;
             initTask.setCompleteBatchNo(UUID.randomUUID().toString().replace("-", ""));
             initTask.setOrderNo(order.getOrderNo()).setProcedureNo("OP05").setProcedureName(procedureName).setResourceId(resourceId).setProcedureId(procedureId).setTaskNo(codeRuleService.getBillCode(CodeRuleModule.CODE_RULE_TASK)).
                     setOrderId(order.getId()).setProcedureSort(0).setFirstProcedureFlag("1").setLastProcedureFlag("1").setDraftFlag("0").setResourceBusinessId(resourceBusinessId).setBomId(bomId);
@@ -255,10 +262,10 @@ public class OrderTaskServiceImpl extends SuperServiceImpl<OrderTaskMapper, Orde
      *
      * @param orderTask
      * @param startStorge
-     * @param goalStorge
+     * @param bom
      * @param conditionName
      */
-    public void inLineHandle(OrderTask orderTask, Storge startStorge, Storge goalStorge, String conditionName, Long endResourceId){
+    public void inLineHandle(OrderTask orderTask, Storge startStorge, BBom bom, String conditionName, Long startResourceId, Long endResourceId){
         //线内提出多余的task任务
         int currentSort = conditionName.equals("BZ")? 0:1;
         Order order = orderService.getById(orderTask.getOrderId());
@@ -267,14 +274,14 @@ 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 "CT2": businessName = DemoLineConstant.DEMOLINE_TOOL_ROBOT_ACTION; break;
+            case "CT": businessName = DemoLineConstant.DEMOLINE_TOOL_ROBOT_ACTION; break;
         }
         ResourceBusiness resourceBusiness = resourceBusinessMapper.selectOne(new LbqWrapper<ResourceBusiness>().eq(ResourceBusiness::getName, businessName));
         //初始化任务
-        TTask simpleTask = this.getSimpleTask(currentSort, order, resourceBusiness.getId());
+        TTask simpleTask = this.getSimpleTask(currentSort, order, bom, startResourceId, resourceBusiness.getId());
         taskService.save(simpleTask);
         //初始化任务节点
         List<TaskNode> switchNodes = taskNodeService.getCreateTaskNode(resourceBusiness.getId(), simpleTask);

+ 9 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/RobotNodeServiceImpl2.java

@@ -214,8 +214,15 @@ public class RobotNodeServiceImpl2 implements NodeOperationService {
         zoneId = zoneProductionresource.getZoneId();
         zZone = zoneService.getById(zoneId);
         zoneName = zZone.getName();
-        String cache = zoneService.getRobotTypebyZone(zoneName);
-        robotStrategy = robotHandlerContext.getStrategy(cache);
+
+        Productionresource productionresource = productionresourceBizMapper.selectById(taskNode.getResourceId());
+        if(productionresource.getCode().contains("jqr2")){
+            robotStrategy = robotHandlerContext.getStrategy(BizConstant.ROBOT_TYPE_CUTTOOL);
+        }else{
+            String cache = zoneService.getRobotTypebyZone(zoneName);
+            robotStrategy = robotHandlerContext.getStrategy(cache);
+        }
+
         robotInfo = robotStrategy.robotInfo(taskNode, zoneName);
         bomzZone = zoneService.getById(zoneId);
         /*

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

@@ -1,31 +1,201 @@
 package com.github.zuihou.business.productionResourceCenter.strategy.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.github.zuihou.business.DemoLine.DemoCacheKey;
+import com.github.zuihou.business.DemoLine.DemoLineConstant;
+import com.github.zuihou.business.DemoLine.YunjianConstant;
 import com.github.zuihou.business.edgeLibrary.entity.StockInfo;
 import com.github.zuihou.business.edgeLibrary.entity.Storge;
-import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
+import com.github.zuihou.business.edgeLibrary.service.StorgeService;
+import com.github.zuihou.business.operationManagementCenter.entity.*;
+import com.github.zuihou.business.operationManagementCenter.service.*;
+import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
+import com.github.zuihou.business.productionReadyCenter.entity.BBom;
 import com.github.zuihou.business.productionReadyCenter.entity.BomProcedure;
+import com.github.zuihou.business.productionResourceCenter.dao.ProductionresourceBizMapper;
+import com.github.zuihou.business.productionResourceCenter.dao.ZZoneProductionresourceMapper;
+import com.github.zuihou.business.productionResourceCenter.entity.Productionresource;
 import com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition;
+import com.github.zuihou.business.productionResourceCenter.entity.ZZone;
+import com.github.zuihou.business.productionResourceCenter.entity.ZZoneProductionresource;
+import com.github.zuihou.business.productionResourceCenter.service.ProductionresourcePositionService;
+import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
 import com.github.zuihou.business.productionResourceCenter.strategy.RobotStrategy;
+import com.github.zuihou.business.util.MsgUtil;
+import com.github.zuihou.common.constant.DictionaryKey;
+import com.github.zuihou.common.util.StringUtil;
+import com.github.zuihou.database.mybatis.conditions.Wraps;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+import com.github.zuihou.tenant.service.ProductionresourceService;
+import com.google.common.collect.Maps;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 @Component("TOOLROBOT")
 public class ToolRobotStrategy implements RobotStrategy {
+
+    @Autowired
+    private ZZoneProductionresourceMapper zZoneProductionresourceMapper;
+
+    @Autowired
+    private TaskNodeService taskNodeService;
+
+    @Autowired
+    private TaskService taskService;
+
+    @Autowired
+    private ZZoneService zoneService;
+
+    @Autowired
+    private PlanService planService;
+
+    @Autowired
+    private ProductionresourceService productionresourceService;
+
+    @Autowired
+    private BBomMapper bBomMapper;
+
+    @Autowired
+    private MsgUtil msgUtil;
+
+    @Autowired
+    private StorgeService storgeService;
+
+    @Autowired
+    private WorkpieceService workpieceService;
+
+    @Autowired
+    private ProductionresourceBizMapper productionresourceBizMapper;
+
+    @Autowired
+    private ProductionresourcePositionService productionresourcePositionService;
+
+    @Autowired
+    private OrderTaskService orderTaskService;
+
+
     @Override
     public Map robotInfo(TaskNode taskNode, String zoneName) {
-        return null;
+        // 天轨机器人初始化
+        Map<String, Object> robotInfo = Maps.newConcurrentMap();
+        TTask task = taskService.getById(taskNode.getTaskId());
+        //获取天轨机器人
+        //com.github.zuihou.business.productionResourceCenter.entity.Productionresource robot = productionresourceBizMapper.selectById(taskNode.getResourceId());
+        Productionresource cutToolRobot = productionresourceBizMapper.selectOne(new LbqWrapper<Productionresource>().likeRight(Productionresource::getCode, "jqr2").last("limit 1"));
+        ZZone zZone = zoneService.getOne(new LbqWrapper<ZZone>().eq(ZZone::getName, zoneName).last("limit 1"));
+        BBom bom = bBomMapper.selectById(task.getBomId());
+        OrderTask orderTask = orderTaskService.getById(task.getOrderId());
+
+        Map plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+
+        robotInfo.put("robot", cutToolRobot);
+        robotInfo.put("zZone", zZone);
+        robotInfo.put("bom", bom);
+        robotInfo.put("plcInfo", plcInfo);
+        robotInfo.put("orderTask", orderTask);
+        robotInfo.put("singleRunFlag", "1");
+        return robotInfo;
     }
 
     @Override
-    public Map robotCheck(TaskNode taskNode, Map robotInfo, List<StockInfo> flikustockInfos, BomProcedure bomProcedure,Map<String, Object> dataMap) {
-        return null;
+    public Map robotCheck(TaskNode taskNode, Map robotInfo, List<StockInfo> flikustockInfos, BomProcedure bomProcedure,Map<String, Object> returnMap) {
+        Map<String, Object> dataMap = Maps.newConcurrentMap();
+        dataMap.put(taskNode.getId().toString() + "count", 0);
+        dataMap.put(YunjianConstant.YUNJIAN_ROBORT_CACHE_FLAG, "0");
+        Storge startStore = null;
+        OrderTask orderTask = (OrderTask) robotInfo.get("orderTask");
+        if (CollectionUtil.isNotEmpty(flikustockInfos)) {
+            //刀具线边库查询
+            startStore = storgeService.getById(flikustockInfos.get(0).getStorgeId());
+        }else {
+            //硬件设备库位
+            List<ProductionresourcePosition> storgeList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[]{taskNode.getResourceId().toString()});
+            startStore = storgeService.getById(storgeList.get(0).getStorgeId());
+        }
+        //CCS判断取条件是否满足
+        boolean bool = true;
+        if(!bool){
+            msgUtil.createWarnLog("刀具节点起始位取条件不满足","DataException");
+            dataMap.put("result", false);
+            dataMap.put("resultmsg","刀具节点起始位取条件不满足");
+            return dataMap;
+        }
+
+        //处理目标库位
+        returnMap = this.robotTarget(taskNode, robotInfo, null, bomProcedure,returnMap);
+
+        Storge targetStorge = !returnMap.containsKey("store") ? null : (Storge) returnMap.get("store");
+        Long targetStorgeResourceId = !returnMap.containsKey("storeResourceId") ? null : Long.valueOf(returnMap.get("storeResourceId").toString());
+
+        if (ObjectUtil.isEmpty(targetStorge)) {
+            dataMap.put("result", false);
+            dataMap.put("resultmsg","目标点位不满足,线边库不符合要求存放");
+            return dataMap;
+        }
+        //String targetXbk = !returnMap.containsKey("targetxbk") ? null : returnMap.get("targetxbk").toString();
+
+        //处理机器人库位
+        List<ProductionresourcePosition> robotList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[]{taskNode.getResourceId().toString()});
+        Map putMap = this.robotPut(returnMap, taskNode, startStore, targetStorge, robotList, null, targetStorgeResourceId);
+        return putMap;
     }
 
     @Override
-    public Map robotPut(Map dataMap, TaskNode taskNode, Storge startStorge, Storge endStorge, List<ProductionresourcePosition> robotList, String targetxbk, Long targetStorgeResourceId) {
-        return null;
+    public Map robotPut(Map returnMap, TaskNode taskNode, Storge startStorge, Storge targetStorge, List<ProductionresourcePosition> robotList, String targetxbk, Long targetStorgeResourceId) {
+        Map<String, List<ProductionresourcePosition>> jqrMap = robotList.stream().collect(Collectors.groupingBy(ProductionresourcePosition::getPointId));
+        Storge jqrStorge = null;
+        List<ProductionresourcePosition> jqrList = jqrMap.get(DemoLineConstant.DEMOLINE_RJQR_ZS);
+        if(jqrList.size() == 0){
+            returnMap.put("result", false);
+            return returnMap;
+        }else {
+            jqrStorge = storgeService.getById(jqrList.get(0).getStorgeId());
+            if (null == jqrStorge) {
+                returnMap.put("result", false);
+                return returnMap;
+            }
+        }
+        jqrStorge.setCompleteBatchNo(taskNode.getCompleteBatchNo());
+        storgeService.lockStorge(jqrStorge, taskNode.getId());
+        targetStorge.setCompleteBatchNo(taskNode.getCompleteBatchNo());
+        storgeService.lockStorge(targetStorge, taskNode.getId());
+
+        msgUtil.redis_set(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_STORE + taskNode.getId(), targetStorge, 10, TimeUnit.DAYS);
+
+        returnMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK);
+        returnMap.put("taskType", DictionaryKey.TASK_TYPE.get("CARRY")); //移动类型
+        // 根据起始点位,获取点位属于的类型
+
+        Map locationMap = new HashMap();
+        locationMap.put("location", startStorge.getPointId());  //零件当前位置
+        locationMap.put("destLocation", targetStorge.getPointId()); //机器人缓存位
+
+        TTask task = taskService.getById(taskNode.getTaskId());
+        OrderTask orderTask = orderTaskService.getOne(new LbqWrapper<OrderTask>().eq(OrderTask::getOrderId, task.getOrderId()).last("LIMIT 1"));
+        if(StringUtil.isNotEmpty(orderTask.getCutStartNo()) && !orderTask.getCutStartNo().equals("0")) {
+            locationMap.put("locationNo", "");  //起始刀位号
+        }
+        if(StringUtil.isNotEmpty(orderTask.getCutGoalNo()) && !orderTask.getCutGoalNo().equals("0")) {
+            locationMap.put("destLocationNo", "");  //目的刀位号
+        }
+
+        locationMap.put("taskType", DictionaryKey.TASK_TYPE.get("CARRY"));
+        locationMap.put("carryType", "1");
+        returnMap.put(YunjianConstant.YUNJIAN_ROBORT_CACHE_FLAG, "1");
+        returnMap.put("data", locationMap);
+        returnMap.put("method", "RobotAction");
+        returnMap.put("result", true);
+        returnMap.put("fromStorge", startStorge);
+        returnMap.put("toStorge", targetStorge);
+
+        return returnMap;
     }
 
     @Override
@@ -33,4 +203,31 @@ public class ToolRobotStrategy implements RobotStrategy {
         return null;
     }
 
+    //获取目标地址
+    public Map robotTarget(TaskNode taskNode, Map robotInfo, List<ProductionresourcePosition> xbkList, BomProcedure bomProcedure, Map<String, Object> returnMap) {
+        List<ProductionresourcePosition> targetList = null;
+        Long targetResourceId = taskNode.getTargetResourceId();
+        if(targetResourceId == null){
+            msgUtil.createWarnLog("刀具节点目标位数据为空","DataException");
+            return null;
+        }
+        targetList = productionresourcePositionService.getFreeProductionresourcePositionByIds(new String[]{targetResourceId.toString()});
+        if(CollectionUtil.isEmpty(targetList)){
+            msgUtil.createWarnLog("刀具节点目标位被占用","DataException");
+            return null;
+        }
+        //CCS判断目标位点位是否允许放置判断
+        boolean bool = true;
+        if(!bool){
+            msgUtil.createWarnLog("刀具节点目标位放置条件不满足","DataException");
+            return null;
+        }
+        Storge targetStorge = storgeService.getById(targetList.get(0).getStorgeId());
+        returnMap.put("storeResourceId", targetList.get(0).getResourceId());
+        returnMap.put("store", targetStorge);
+        returnMap.put("targetxbk", "0");
+
+        return returnMap;
+    }
+
 }

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

@@ -220,7 +220,8 @@ public class StationUserController extends SuperController<StationUserService, L
         Order order = orderService.save(params);
         String goal = model.containsKey("goal")? model.get("goal").toString() : "BZ_367";
         OrderTask orderTask = OrderTask.builder().orderId(order.getId())
-                .hasMaterial("1").isMachine("1").isXbk("1").start(model.get("start").toString()).goal(goal)
+                .hasMaterial("0").isMachine("0").isXbk("1").start(model.get("start").toString()).goal(goal)
+                .cutStartNo(model.get("cutStartNo").toString()).cutGoalNo(model.get("cutStartNo").toString())
                 .build();
         orderTaskService.save(orderTask);
         OrderUpdateDTO orderUpdateDTO = OrderUpdateDTO.builder().ids(Arrays.asList(order.getId())).auditStatus("1").build();
@@ -230,7 +231,7 @@ public class StationUserController extends SuperController<StationUserService, L
         orderService.updateStatus(orderUpdateDTO2);
 
         Plan plan = planService.getOne(new LbqWrapper<Plan>().eq(Plan::getOrderId, order.getId()).last("limit 1"));
-        orderTaskService.prodNode(orderTask, plan.getId().toString());
+        orderTaskService.prodNode(orderTask, bom, plan.getId().toString());
         return success();
     }
 }

+ 17 - 1
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/OrderTask.java

@@ -79,6 +79,20 @@ public class OrderTask extends Entity<Long> {
     @Excel(name = "状态")
     private String confStatus;
 
+    @ApiModelProperty(value = "起始刀位号")
+    @NotEmpty(message = "起始刀位号")
+    @Length(max = 3, message = "起始刀位号长度不能超过3")
+    @TableField(value = "cut_start_no", condition = LIKE)
+    @Excel(name = "起始刀位号")
+    private String cutStartNo;
+
+    @ApiModelProperty(value = "目的刀位号")
+    @NotEmpty(message = "目的刀位号")
+    @Length(max = 3, message = "目的刀位号长度不能超过3")
+    @TableField(value = "cut_goal_no", condition = LIKE)
+    @Excel(name = "目的刀位号")
+    private String cutGoalNo;
+
     @ApiModelProperty(value = "零件名称")
     @TableField(exist = false)
     @Excel(name = "零件名称")
@@ -91,13 +105,15 @@ public class OrderTask extends Entity<Long> {
 
 
     @Builder
-    public OrderTask(Long orderId, String start, String goal,String isMachine, String hasMaterial, String isXbk){
+    public OrderTask(Long orderId, String start, String goal,String isMachine, String hasMaterial, String isXbk, String cutStartNo, String cutGoalNo){
             this.orderId = orderId;
             this.start = start;
             this.goal = goal;
             this.isMachine = isMachine;
             this.hasMaterial = hasMaterial;
             this.isXbk = isXbk;
+            this.cutStartNo = cutStartNo;
+            this.cutGoalNo = cutGoalNo;
     }
 
 }

+ 2 - 0
imcs-admin-boot/imcs-common/src/main/java/com/github/zuihou/common/constant/BizConstant.java

@@ -208,6 +208,8 @@ public interface BizConstant {
 
     String ROBOT_TYPE_NOCACHE = "NOCACHE";
 
+    String ROBOT_TYPE_CUTTOOL = "TOOLROBOT";
+
     //公共接口异常名称
 
     String MQ_GLOBAL_EXCEPTION = "GLOBAL_EXCEPTION";