|
@@ -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;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|