1.修复发送任务的问题;2.修复完成工作发生的问题。

This commit is contained in:
梁州 2025-11-19 10:02:30 +08:00
parent 2022369830
commit 4df1d073c7
4 changed files with 83 additions and 46 deletions

View File

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

View File

@ -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("保存发送任务的日志错误。");
}

View File

@ -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 + "工作发生异常!";

View File

@ -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)) {