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