|
|
@@ -1122,8 +1122,18 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
@Override
|
|
|
public R getStationTasks(Map<String, Object> map){
|
|
|
List<Map> stationTasks = baseMapper.getStationTasks(map);
|
|
|
- for(int i = 1; i<= stationTasks.size() ; i++){
|
|
|
- stationTasks.get(i-1).put("step",i);
|
|
|
+ int len = stationTasks.size()<3 ? stationTasks.size():3;
|
|
|
+ if(len>0) {
|
|
|
+ List<String> deviceNames = stationTasks.subList(0, len).stream().map(item -> {
|
|
|
+ TTask task = baseMapper.selectOne(new LbqWrapper<TTask>().eq(TTask::getCompleteBatchNo, item.get("completeBatchNo")).eq(TTask::getProcedureSort, (int) item.get("procedureSort") + 1));
|
|
|
+ return (task != null)? productionresourceBizMapper.selectOne(new LbqWrapper<Productionresource>().eq(Productionresource::getId, task.getResourceId())).getName() : "";
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ for (int i = 1; i <= stationTasks.size(); i++) {
|
|
|
+ stationTasks.get(i - 1).put("step", i);
|
|
|
+ if (deviceNames.size() >= i) {
|
|
|
+ stationTasks.get(i - 1).put("deviceName", deviceNames.get(i - 1));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return R.success(stationTasks);
|
|
|
}
|
|
|
@@ -1306,54 +1316,6 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
baseMapper.updateAllById(nextTask);
|
|
|
}
|
|
|
taskNodeService.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
|
|
|
- }else if("7".equals(processType)){
|
|
|
- //工序换料(下料当前工序零件且继续上料下一工序零件或当前工序未加工零件)
|
|
|
- String uniqueCode = map.get("uniqueCode").toString();
|
|
|
- jsonObject.put("uniqueCode", uniqueCode);
|
|
|
- int count = Integer.parseInt(map.get("count").toString());
|
|
|
- if(count>0 || StringUtil.isEmpty(uniqueCode)){
|
|
|
- //零件未上料,本零件执行零件下料释放资源
|
|
|
- jsonObject.put("srcPosition", currstorge.getId());
|
|
|
- jsonObject.put("targetPostion", "");
|
|
|
- jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CK);
|
|
|
- //未上料零件批量更新工序节点(跳过立库取工装的步骤,从1执行到3)
|
|
|
- /*
|
|
|
- List<TaskNode> dataList = taskNodeService.list(new LbqWrapper<TaskNode>().eq(TaskNode::getOrderId, taskNode.getOrderId()).eq(TaskNode::getCompleteBatchSort, 1).eq(TaskNode::getExeStatus, 2));
|
|
|
- dataList.stream().forEach(item->{
|
|
|
- List<TaskNode> nodeList = new ArrayList<TaskNode>();
|
|
|
- item.setExeStatus("3").setExeResult("1").setEndTime(new Date());
|
|
|
- TaskNode item2 = taskNodeService.getNextNTaskNode(item, 1);
|
|
|
- item2.setExeStatus("3").setExeResult("1").setEndTime(new Date());
|
|
|
- TaskNode item3 = taskNodeService.getNextNTaskNode(item2, 1);
|
|
|
- item3.setExeStatus("2").setEndTime(new Date());
|
|
|
- Collections.addAll(nodeList, item, item2, item3);
|
|
|
- taskNodeService.saveOrUpdateBatch(nodeList);
|
|
|
-
|
|
|
- TWorkpiece tWorkpiece = workpieceService.getOne(new LbqWrapper<TWorkpiece>().eq(TWorkpiece::getCompleteBatchNo, item.getCompleteBatchNo()).eq(TWorkpiece::getIsEnd, "0").eq(TWorkpiece::getCompleteBatchSort, 1));
|
|
|
- ProductionresourcePosition itemPosition = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getResourceId, item3.getResourceId()));
|
|
|
-
|
|
|
- tWorkpiece.setCompleteBatchSort(3).setStorgeId(itemPosition.getStorgeId()).setPointId(itemPosition.getPointId()).setTaskNodeId(item3.getId());
|
|
|
- workpieceService.updateById(tWorkpiece);
|
|
|
-
|
|
|
- JSONObject itemObject = new JSONObject();
|
|
|
- itemObject.put("bizType", BizConstant.MQ_TASK_NODE_TYPE_COMMON);
|
|
|
- itemObject.put("taskNodeId",item3.getId().toString());
|
|
|
- dynamicRabbitMq.sendMsg(item3.getResourceId().toString(),itemObject.toString());
|
|
|
-
|
|
|
- }); */
|
|
|
- }else{
|
|
|
- //零件替换上料
|
|
|
- /*
|
|
|
- ProductionresourcePosition position = productionresourcePositionService.getOne(new LbqWrapper<ProductionresourcePosition>().eq(ProductionresourcePosition::getName, "伺服舵机"));
|
|
|
- jsonObject.put("storeResourceId", position.getResourceId());
|
|
|
- jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_RK);
|
|
|
- jsonObject.put("targetxbk", "0"); */
|
|
|
- //
|
|
|
- jsonObject.put("targetPostion", currstorge.getId());
|
|
|
- jsonObject.put("srcPosition", currstorge.getId());
|
|
|
- jsonObject.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_METERIAL_CRK);
|
|
|
- }
|
|
|
- taskNodeService.taskNodeCallbackBiz(taskNode, tTask, taskNodeList, lg, jsonObject.toJSONString());
|
|
|
}
|
|
|
}
|
|
|
msgUtil.redis_del(id);
|
|
|
@@ -1469,12 +1431,14 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
public R confirmCode(Map<String, Object> map) {
|
|
|
TWorkpiece tWorkpiece = workpieceMapper.selectOne(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getOrderId, map.get("orderId").toString()).eq(TWorkpiece::getCompleteBatchNo, map.get("completeBatchNo").toString()).eq(TWorkpiece::getIsEnd, "0"));
|
|
|
if(null == tWorkpiece) return R.fail("零件不存在");
|
|
|
+ Map data = new HashMap();
|
|
|
+ data.put("uniqueCode", tWorkpiece.getUniqueCode());
|
|
|
TaskNode taskNode = taskNodeService.getById(tWorkpiece.getTaskNodeId());
|
|
|
+ //呼叫动态节点 无需验证次序
|
|
|
+ if(taskNode.getNodeType().equals("4")) return R.success(data);
|
|
|
//序列保持前后顺次一致
|
|
|
int procedureSort = Integer.parseInt(map.get("procedureSort").toString());
|
|
|
TTask task = this.getById(taskNode.getTaskId());
|
|
|
- Map data = new HashMap();
|
|
|
- data.put("uniqueCode", tWorkpiece.getUniqueCode());
|
|
|
return (procedureSort-1 == task.getProcedureSort())? R.success(data) : R.fail("执行任务与计划不一致");
|
|
|
}
|
|
|
|
|
|
@@ -1505,6 +1469,19 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
tray = trayService.getById(map.get("trayId").toString());
|
|
|
}
|
|
|
|
|
|
+ //线边库资源是否足够
|
|
|
+ boolean xbkValid = true;
|
|
|
+ Map paramMap = Maps.newHashMap();
|
|
|
+ paramMap.put("no", DictionaryKey.YJ_ZONE_XBK.get("plateAndClamp"));
|
|
|
+ String orgIdsStr = CommonUtil.getOrgIdsStr();
|
|
|
+ if(StringUtil.isNotEmpty(orgIdsStr)) {
|
|
|
+ paramMap.put("orgIds", orgIdsStr);
|
|
|
+ }
|
|
|
+ List<Map> xbkValidList = stockInfoService.getXbkCountByShelves(paramMap);
|
|
|
+ xbkValidList = xbkValidList.stream().filter(item->item.containsKey("cnt") && (long)item.get("cnt")<=3).collect(Collectors.toList());
|
|
|
+ if(xbkValidList.size()>0){
|
|
|
+ xbkValid = false;
|
|
|
+ }
|
|
|
//OP10工序未上料零件数量
|
|
|
int unFeedingCount = workpieceMapper.selectCount(new LbqWrapper<TWorkpiece>().eq(TWorkpiece::getOrderId, taskNode.getOrderId()).isNull(TWorkpiece::getUniqueCode).eq(TWorkpiece::getIsEnd, "0"));
|
|
|
//订单加工零件数
|
|
|
@@ -1514,6 +1491,10 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
|
|
|
// 上下料站工装是否存在
|
|
|
Long storgeId = productionresourcePositionMapper.getStorgeIdByResource(new HashMap<String, String>(){ { put("resourceId", taskNode.getResourceId().toString());}}).get(0).getStorgeId();
|
|
|
+ boolean locked = false;
|
|
|
+ Storge storge = storgeService.getById(storgeId);
|
|
|
+ //判断上下料站是否已经被任务锁定
|
|
|
+ locked = storge.getLockStatus().equals("0") && StringUtil.isNotEmpty(storge.getCompleteBatchNo()) && storge.getCampId()!=null;
|
|
|
|
|
|
List<StockInfo> stockInfoList = stockInfoService.list(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, storgeId).orderByAsc(StockInfo::getGoodsType));
|
|
|
int existed = stockInfoList.size();
|
|
|
@@ -1527,12 +1508,30 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
Map data = new HashMap();
|
|
|
data.put("unFeedingCount", unFeedingCount);
|
|
|
int count = materialCount - produceCount;
|
|
|
+ data.put("xbkValid", xbkValid);
|
|
|
data.put("count", count);
|
|
|
data.put("existed", existed);
|
|
|
data.put("matched", matched);
|
|
|
+ data.put("locked", locked);
|
|
|
return R.success(data);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public TTask getNNextTask(TTask task, int n) {
|
|
|
+ TTask nTask = baseMapper.selectOne(new LbqWrapper<TTask>().eq(TTask::getCompleteBatchNo, task.getCompleteBatchNo()).eq(TTask::getProcedureSort, task.getProcedureSort() + n ));
|
|
|
+ return nTask;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean checkStockNode(Map<String, Object> map) {
|
|
|
+ TaskNode taskNode = taskNodeService.getById(map.get("taskNodeId").toString());
|
|
|
+ TaskNode nextNode = taskNodeService.getNextNTaskNode(taskNode, 1);
|
|
|
+ if(null == nextNode || null == nextNode.getTaskId()) return false;
|
|
|
+ // true: 后续已经配置入库节点 false: 该任务后续无节点
|
|
|
+ boolean bool = taskNode.getTaskId().equals(nextNode.getTaskId());
|
|
|
+ return bool;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
//获取立库中可使用子盘工装数量
|
|
|
public List<Tray> getValidTrayCount(Map map) {
|
|
|
@@ -1545,7 +1544,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
|
|
|
//获取设备点位
|
|
|
List<Long> startProductionresourcePositionIds = productionresourcePositionMapper.selectList(new LbqWrapper<ProductionresourcePosition>().in(ProductionresourcePosition::getResourceId, productionresourceIds).eq(ProductionresourcePosition::getStatus,"0")).stream().map(ProductionresourcePosition::getStorgeId).collect(Collectors.toList());
|
|
|
//获取设备库位
|
|
|
- List<Long> stockIds = stockInfoMapper.selectList(new LbqWrapper<StockInfo>().in(StockInfo::getStorgeId,startProductionresourcePositionIds).eq(StockInfo::getGoodsType, "1")).stream().map(StockInfo::getGoodsId).collect(Collectors.toList());
|
|
|
+ List<Long> stockIds = stockInfoMapper.selectList(new LbqWrapper<StockInfo>().in(StockInfo::getStorgeId,startProductionresourcePositionIds).eq(StockInfo::getGoodsType, "1").eq(StockInfo::getLockStatus, "1")).stream().map(StockInfo::getGoodsId).collect(Collectors.toList());
|
|
|
//获取可用子盘
|
|
|
List<Tray> trayList = trayService.list(new LbqWrapper<Tray>().eq(Tray::getCategoryType, tray.getCategoryType()).eq(Tray::getProductionType, tray.getProductionType()).eq(Tray::getFiveAxis, tray.getFiveAxis()).in(Tray::getId, stockIds));
|
|
|
return trayList;
|