1.修复发送任务的问题;2.修复完成工作发生的问题。
This commit is contained in:
parent
2022369830
commit
4df1d073c7
|
|
@ -1951,7 +1951,6 @@ public class TaskController {
|
|||
*/
|
||||
@PostMapping("/confirmFinishedWork")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "工作完成确认", logMethod = "confirmFinishedWork")
|
||||
public String confirmFinishedWork(@RequestBody WorkQuery workQuery) {
|
||||
logger.info("工作完成确认:{},ip地址:{}", convertJsonString(workQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
|
|
@ -2003,9 +2002,7 @@ public class TaskController {
|
|||
}
|
||||
return convertJsonString(response);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.error("工作完成确认异常");
|
||||
logger.error("工作完成确认异常:{}", convertJsonString(e));
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("工作完成确认异常");
|
||||
return convertJsonString(response);
|
||||
|
|
|
|||
|
|
@ -129,10 +129,10 @@ public class WmsJobServiceImplements implements IWmsJobService {
|
|||
// 循环发送任务
|
||||
for (int i = 0; i < request.size(); i += maxWcsAcceptNums) {
|
||||
List<WcsTaskRequest> tempRequest = request.subList(i, Math.min(i + maxWcsAcceptNums, request.size()));
|
||||
logger.info("向WCS发送任务{}-{},地址:{},请求详情:{}", i + 1, Math.min(i + maxWcsAcceptNums, request.size()), url, convertJsonString(request));
|
||||
ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, convertJsonString(request)), ResponseEntity.class);
|
||||
logger.info("向WCS发送任务{}-{},地址:{},请求详情:{}", i + 1, Math.min(i + maxWcsAcceptNums, request.size()), url, convertJsonString(tempRequest));
|
||||
ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, convertJsonString(tempRequest)), ResponseEntity.class);
|
||||
try {
|
||||
logService.save(new WmsLog(WmsUtils.generateId("LOG_"), "向WCS发送任务", "SetStackerTask", JSON.toJSONString(request), JSON.toJSONString(result), url, LocalDateTime.now(), "WMS"));
|
||||
logService.save(new WmsLog(WmsUtils.generateId("LOG_"), "向WCS发送任务", "SetStackerTask", JSON.toJSONString(tempRequest), JSON.toJSONString(result), url, LocalDateTime.now(), "WMS"));
|
||||
} catch (Exception e) {
|
||||
logger.error("保存发送任务的日志错误。");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -774,22 +774,20 @@ public class WorkServiceImplements implements IWorkService {
|
|||
.eq(ELocationConfig::getWorkStation, workStation));
|
||||
// 保存一下记录
|
||||
List<ELocationConfigLast> eLocationConfigLastList = ELocationConfig.toLocationsConfigLastList(eLocationConfigList);
|
||||
// 先清空之前的
|
||||
eLocationConfigLastService.remove(new LambdaQueryWrapper<ELocationConfigLast>()
|
||||
.eq(ELocationConfigLast::getWorkStation, workStation));
|
||||
eLocationConfigLastService.saveBatch(eLocationConfigLastList);
|
||||
// 删除所有的标签配置
|
||||
eLocationConfigService.remove(new LambdaQueryWrapper<ELocationConfig>()
|
||||
.eq(ELocationConfig::getWorkStation, workStation));
|
||||
|
||||
// 查询当前站台的所有工作流列表
|
||||
List<WorkFlow> workFlowList = workFlowService.list(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkStation, workStation)
|
||||
.eq(WorkFlow::getWorkStatus, 2));
|
||||
if (workFlowList.isEmpty()) {
|
||||
return "没有已完成的工作流可以确认";
|
||||
}
|
||||
// 保存,防止标签未打印
|
||||
workFlowLastService.remove(new LambdaQueryWrapper<WorkFlowLast>().eq(WorkFlowLast::getWorkStation, workStation));
|
||||
workFlowLastService.saveBatch(BeanUtil.copyToList(workFlowList, WorkFlowLast.class));
|
||||
// workSummary列表
|
||||
List<WorkSummary> workSummaryList = new ArrayList<>();
|
||||
List<KateOrders> needUpdateKateOrdersList = new ArrayList<>();
|
||||
for (WorkFlow workFlow : workFlowList) {
|
||||
WorkSummary summary = new WorkSummary();
|
||||
summary.setWorkFlowId(workFlow.getWorkFlowId());
|
||||
|
|
@ -814,34 +812,76 @@ public class WorkServiceImplements implements IWorkService {
|
|||
summary.setELocationId(!currentBoxELocationList.isEmpty() ? currentBoxELocationList.get(0).getELocationId() : "");
|
||||
workSummaryList.add(summary);
|
||||
// 更新工单表
|
||||
kateOrdersService.update(new LambdaUpdateWrapper<KateOrders>()
|
||||
.set(KateOrders::getOrderStatus, 4)
|
||||
.set(KateOrders::getFinishTime, LocalDateTime.now())
|
||||
.set(KateOrders::getPickedQuantity, workFlow.getPickedNum())
|
||||
.set(KateOrders::getLackQuantity, workFlow.getNeedNum().subtract(workFlow.getPickedNum()))
|
||||
.eq(KateOrders::getOrderId, workFlow.getOrderId())
|
||||
.eq(KateOrders::getSupplyArea, workFlow.getWorkCenter())
|
||||
.eq(KateOrders::getGoodsId, workFlow.getGoodsId()));
|
||||
// 如果当前工单已经没有未完成的工作,更新DBS状态完成
|
||||
if (!kateOrdersService.exists(new LambdaQueryWrapper<KateOrders>()
|
||||
.eq(KateOrders::getOrderId, workFlow.getOrderId())
|
||||
.ne(KateOrders::getOrderStatus, 4))) {
|
||||
kateDBSService.update(new LambdaUpdateWrapper<KateDBS>()
|
||||
.set(KateDBS::getDbsStatus, 2)
|
||||
.set(KateDBS::getLastUpdateTime, LocalDateTime.now())
|
||||
.eq(KateDBS::getWorkOrder, workFlow.getOrderId()));
|
||||
KateOrders tempKateOrder = new KateOrders();
|
||||
tempKateOrder.setOrderId(workFlow.getOrderId());
|
||||
tempKateOrder.setFinishTime(LocalDateTime.now());
|
||||
tempKateOrder.setPickedQuantity(workFlow.getPickedNum());
|
||||
tempKateOrder.setLackQuantity(workFlow.getNeedNum().subtract(workFlow.getPickedNum()));
|
||||
tempKateOrder.setOrderStatus(4);
|
||||
needUpdateKateOrdersList.add(tempKateOrder);
|
||||
}
|
||||
// 工单相关
|
||||
List<String> orderIdList = needUpdateKateOrdersList.stream().map(KateOrders::getOrderId).distinct().toList();
|
||||
List<String> workOrderList = needUpdateKateOrdersList.stream().map(KateOrders::getWorkOrder).distinct().toList();
|
||||
// 查询出这些workOrder的工单
|
||||
List<KateOrders> kateOrdersList = kateOrdersService.list(new LambdaQueryWrapper<KateOrders>()
|
||||
.in(KateOrders::getWorkOrder, workOrderList));
|
||||
Map<String, Integer> finishWorkOrderMap = new HashMap<>();
|
||||
if (!kateOrdersList.isEmpty()) {
|
||||
for (KateOrders kateOrders : kateOrdersList) {
|
||||
if (orderIdList.contains(kateOrders.getOrderId())) {
|
||||
// 本次完成的工单
|
||||
kateOrders.setOrderStatus(4);
|
||||
}
|
||||
// 判断是否完成
|
||||
if (kateOrders.getOrderStatus() != 4) {
|
||||
finishWorkOrderMap.put(kateOrders.getWorkOrder(), finishWorkOrderMap.getOrDefault(kateOrders.getWorkOrder(), 0) - 1);
|
||||
} else {
|
||||
if (!finishWorkOrderMap.containsKey(kateOrders.getWorkOrder())) {
|
||||
finishWorkOrderMap.put(kateOrders.getWorkOrder(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 筛选出已经全部完成的工单
|
||||
List<String> needFinishWorkOrderList = new ArrayList<>();
|
||||
for (String workOrder : finishWorkOrderMap.keySet()) {
|
||||
if (finishWorkOrderMap.get(workOrder) >= 0) {
|
||||
needFinishWorkOrderList.add(workOrder);
|
||||
}
|
||||
}
|
||||
//解决workSummary的主键冲突问题 去掉workSummaryListlist中对象WorkFlowId重复的对象
|
||||
workSummaryList = workSummaryList.stream().collect(Collectors.toMap(WorkSummary::getWorkFlowId, a -> a, (k1, k2) -> k1)).values().stream().collect(Collectors.toList());
|
||||
|
||||
boolean doTransResult = dbTransUtils.useTran(() -> {
|
||||
workSummaryService.saveOrUpdateBatch(workSummaryList);
|
||||
// 先清空之前的
|
||||
eLocationConfigLastService.remove(new LambdaQueryWrapper<ELocationConfigLast>()
|
||||
.eq(ELocationConfigLast::getWorkStation, workStation));
|
||||
eLocationConfigLastService.saveBatch(eLocationConfigLastList);
|
||||
// 删除所有的标签配置
|
||||
eLocationConfigService.remove(new LambdaQueryWrapper<ELocationConfig>()
|
||||
.eq(ELocationConfig::getWorkStation, workStation));
|
||||
// 移除工作流
|
||||
workFlowService.remove(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkStation, workStation));
|
||||
// 移库站台要料
|
||||
goodsToStationService.remove(new LambdaQueryWrapper<GoodsToStation>()
|
||||
.eq(GoodsToStation::getWorkStation, workStation));
|
||||
// 完成工单
|
||||
if (!needUpdateKateOrdersList.isEmpty()) {
|
||||
kateOrdersService.updateBatchById(needUpdateKateOrdersList);
|
||||
}
|
||||
// 完成dbs
|
||||
if (!needFinishWorkOrderList.isEmpty()) {
|
||||
kateDBSService.update(new LambdaUpdateWrapper<KateDBS>()
|
||||
.set(KateDBS::getDbsStatus, 2)
|
||||
.set(KateDBS::getLastUpdateTime, LocalDateTime.now())
|
||||
.in(KateDBS::getWorkOrder, needFinishWorkOrderList));
|
||||
}
|
||||
});
|
||||
if (!doTransResult) {
|
||||
logger.error("完成工作执行数据库事务异常。");
|
||||
return "完成站台:" + workStation + "工作执行数据库事务异常!";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("完成站台:{},工作发生异常:{}", workStation, e.getMessage());
|
||||
result = "完成站台:" + workStation + "工作发生异常!";
|
||||
|
|
|
|||
|
|
@ -101,9 +101,9 @@ public class HttpUtils {
|
|||
HttpGet httpGet = new HttpGet(url);
|
||||
// 设置超时时间
|
||||
RequestConfig requestConfig = RequestConfig.custom()
|
||||
.setConnectTimeout(5000)
|
||||
.setConnectionRequestTimeout(1000)
|
||||
.setSocketTimeout(5000).build();
|
||||
.setConnectTimeout(15000)
|
||||
.setConnectionRequestTimeout(15000)
|
||||
.setSocketTimeout(15000).build();
|
||||
httpGet.setConfig(requestConfig);
|
||||
for(Map.Entry<String, String> entry : header.entrySet()){
|
||||
|
||||
|
|
@ -153,9 +153,9 @@ public class HttpUtils {
|
|||
httpClient = HttpClients.createDefault();
|
||||
HttpPost httppost = new HttpPost(url);
|
||||
RequestConfig requestConfig = RequestConfig.custom()
|
||||
.setConnectTimeout(5000)
|
||||
.setConnectionRequestTimeout(5000)
|
||||
.setSocketTimeout(5000).build();
|
||||
.setConnectTimeout(15000)
|
||||
.setConnectionRequestTimeout(15000)
|
||||
.setSocketTimeout(15000).build();
|
||||
httppost.setConfig(requestConfig);
|
||||
httppost.setHeader("Content-Type", "application/json;charset=UTF-8");
|
||||
if (StringUtils.isEmpty(token) && StringUtils.isNotEmpty(userName) && StringUtils.isNotEmpty(password)) {
|
||||
|
|
@ -197,9 +197,9 @@ public class HttpUtils {
|
|||
httpClient = HttpClients.createDefault();
|
||||
HttpPost httppost = new HttpPost(url);
|
||||
RequestConfig requestConfig = RequestConfig.custom()
|
||||
.setConnectTimeout(5000)
|
||||
.setConnectionRequestTimeout(1000)
|
||||
.setSocketTimeout(5000).build();
|
||||
.setConnectTimeout(15000)
|
||||
.setConnectionRequestTimeout(15000)
|
||||
.setSocketTimeout(15000).build();
|
||||
httppost.setConfig(requestConfig);
|
||||
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
|
||||
if (StringUtils.isEmpty(token) && StringUtils.isNotEmpty(userName) && StringUtils.isNotEmpty(password)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user