|
@@ -25,6 +25,7 @@ import com.github.zuihou.business.edgeLibrary.service.StockLogService;
|
|
|
import com.github.zuihou.business.edgeLibrary.service.StorgeService;
|
|
|
import com.github.zuihou.business.operationManagementCenter.dao.*;
|
|
|
import com.github.zuihou.business.operationManagementCenter.entity.*;
|
|
|
+import com.github.zuihou.business.operationManagementCenter.service.TaskNodeService;
|
|
|
import com.github.zuihou.business.operationManagementCenter.service.TaskService;
|
|
|
import com.github.zuihou.business.operationManagementCenter.service.WorkpieceService;
|
|
|
import com.github.zuihou.business.productionReadyCenter.dao.*;
|
|
@@ -123,7 +124,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
@Autowired
|
|
|
private StockInfoMapper stockInfoMapper;
|
|
|
@Autowired
|
|
|
- private TaskNodeMapper taskNodeMapper;
|
|
|
+ private TaskNodeService taskNodeService;
|
|
|
@Autowired
|
|
|
private MsgUtil msgUtil;
|
|
|
@Autowired
|
|
@@ -1041,7 +1042,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
baseMapper.updateById(tTask);
|
|
|
}
|
|
|
}else if("end".equals(type)) {
|
|
|
- TaskNode taskNode = taskNodeMapper.selectOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId, tTask.getId()).eq(TaskNode::getExeStatus,"2"));
|
|
|
+ TaskNode taskNode = taskNodeService.getOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId, tTask.getId()).eq(TaskNode::getExeStatus,"2"));
|
|
|
String id = taskNode.getId().toString();
|
|
|
//验证是否重复回调
|
|
|
String cacheId = msgUtil.redis_get(id) == null ? "" : msgUtil.redis_get(id).toString();
|
|
@@ -1080,7 +1081,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
//根据任务查出所有的自动化节点
|
|
|
- List<TaskNode> taskNodeList = taskNodeMapper.selectList(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, tTask.getCompleteBatchNo()));
|
|
|
+ List<TaskNode> taskNodeList = taskNodeService.list(Wraps.<TaskNode>lbQ().eq(TaskNode::getCompleteBatchNo, tTask.getCompleteBatchNo()));
|
|
|
|
|
|
// Storge jbwFromStorge = (Storge) msgUtil.redis_get(DemoCacheKey.DEMOLINE_CIRCULATION_STORAGE + "_" + tTask.getCompleteBatchNo());
|
|
|
// //2、取出上下料站
|
|
@@ -1092,83 +1093,12 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
//入库
|
|
|
jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_RK);
|
|
|
//节点完成业务
|
|
|
- this.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
|
|
|
+ taskNodeService.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
|
|
|
|
|
|
}
|
|
|
return R.success();
|
|
|
}
|
|
|
|
|
|
- private void taskNodeCallbackBiz(TaskNode taskNode, TTask task, List<TaskNode> taskNodeList, AAutoNodeLog lg, String bizCallBackData) {
|
|
|
- //回调的参数
|
|
|
- JSONObject callBackJson = JSONObject.parseObject(bizCallBackData);
|
|
|
-
|
|
|
- //获取当前自动化节点的顺序
|
|
|
- int n = taskNode.getCompleteBatchSort() - 1;
|
|
|
-
|
|
|
- updateBizStatus(taskNode, task, taskNodeList, lg, callBackJson);
|
|
|
-
|
|
|
- //websocket推送TODO临时注释
|
|
|
-// msgUtil.pushTask(task);
|
|
|
-
|
|
|
- //推送到消息队列
|
|
|
- msgUtil.pushToNextMq(taskNode, task, taskNodeList, n, callBackJson);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private void updateBizStatus(TaskNode taskNode, TTask task, List<TaskNode> taskNodeList, AAutoNodeLog lg, JSONObject callBackJson) {
|
|
|
- //如果是推送当前节点到mq(一个节点执行多次。就不需要更新数据状态)
|
|
|
- if (this.checkPushNextNode(taskNode, callBackJson)){
|
|
|
- //获取当前自动化节点的顺序
|
|
|
- int n = taskNode.getCompleteBatchSort() - 1;
|
|
|
- //插入执行日志
|
|
|
- lg.setExeStatus("3");
|
|
|
- lg.setExeResult("1").setEndTime(new Date());
|
|
|
- autoNodeLogMapper.updateAllById(lg);
|
|
|
- //更新节点任务
|
|
|
- taskNode.setExeStatus("3").setExeResult("1").setEndTime(new Date());
|
|
|
- taskNodeMapper.updateById(taskNode);
|
|
|
- //把当前完成的节点放入缓存,用于推送任务完成的百分比
|
|
|
- NumberFormat numberFormat = NumberFormat.getInstance();
|
|
|
- numberFormat.setMaximumFractionDigits(2);
|
|
|
-
|
|
|
- msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_PERCENT + "_" + task.getResourceId(), numberFormat.format(100 * (float) (n + 1) / (float) taskNodeList.size()));
|
|
|
- task.setProcess(Double.parseDouble(numberFormat.format(100 * (float) (n + 1) / (float) taskNodeList.size())));
|
|
|
-
|
|
|
- //更新订单表里的完成数量等等字段
|
|
|
- if (n == 0 && "1".equals(task.getFirstProcedureFlag())) {
|
|
|
- Order order = orderMapper.selectById(task.getOrderId());
|
|
|
- order.setProduceNum((order.getProduceNum() == null ? 0 : order.getProduceNum()) + 1);
|
|
|
- orderMapper.updateAllById(order);
|
|
|
- }
|
|
|
- //解锁相关资源
|
|
|
- unlockResource(taskNode, task);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void unlockResource(TaskNode taskNode, TTask task) {
|
|
|
- //删除当前节点的锁定
|
|
|
- List<Storge> storgeList = storgeService.list(Wraps.<Storge>lbQ().eq(Storge::getCampId, taskNode.getId()));
|
|
|
- if (CollectionUtil.isNotEmpty(storgeList)) {
|
|
|
- storgeService.unlockStorgeList(storgeList);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean checkPushNextNode(TaskNode taskNode, JSONObject callBackJson) {
|
|
|
- if (callBackJson.containsKey(DemoLineConstant.DEMOLINE_RXJQR_FLAG)) {//柔性机器人的多步骤执行
|
|
|
- int count = callBackJson.getString(taskNode.getId().toString() + "count") == null ? 0 : Integer.parseInt(callBackJson.getString(taskNode.getId().toString() + "count"));
|
|
|
- if (count < 2) {//
|
|
|
- return false;
|
|
|
- }
|
|
|
- } else if (callBackJson.containsKey(DemoLineConstant.DEMOLINE_CHANGEHAND_FLAG) || callBackJson.containsKey(DemoLineConstant.DEMOLINE_RXJQR_NOMOVE_FLAG)) {//机器人换手或无需移动的柔性机器人
|
|
|
- int count = callBackJson.getString(taskNode.getId().toString() + "count") == null ? 0 : Integer.parseInt(callBackJson.getString(taskNode.getId().toString() + "count"));
|
|
|
- if (count < 1) {//
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public R releaseClamp(Map<String, Object> map){
|
|
|
TTask tTask = baseMapper.selectById(Long.valueOf(map.get("id").toString()));
|