|
|
|
@ -235,16 +235,16 @@ public class AddCoodeService {
|
|
|
|
|
if (StringUtils.isNotBlank(orderId)) {
|
|
|
|
|
existingCodesMap = codeTempService.batchCheckCodesExistence(processedCodes, orderId);
|
|
|
|
|
}
|
|
|
|
|
for (Map.Entry<String, IoCodeTempEntity> entry : existingCodesMap.entrySet()) {
|
|
|
|
|
IoCodeTempEntity codeTempEntity = entry.getValue();
|
|
|
|
|
if (codeTempEntity != null) {
|
|
|
|
|
VailCodeResultResponse invalidResponse = new VailCodeResultResponse();
|
|
|
|
|
invalidResponse.setCode(codeTempEntity.getCode());
|
|
|
|
|
invalidResponse.setStatus(2);
|
|
|
|
|
invalidResponse.setErrMsg("重复扫码");
|
|
|
|
|
vailCodeResultResponses.add(invalidResponse);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// for (Map.Entry<String, IoCodeTempEntity> entry : existingCodesMap.entrySet()) {
|
|
|
|
|
// IoCodeTempEntity codeTempEntity = entry.getValue();
|
|
|
|
|
// if (codeTempEntity != null) {
|
|
|
|
|
// VailCodeResultResponse invalidResponse = new VailCodeResultResponse();
|
|
|
|
|
// invalidResponse.setCode(codeTempEntity.getCode());
|
|
|
|
|
// invalidResponse.setStatus(2);
|
|
|
|
|
// invalidResponse.setErrMsg("重复扫码");
|
|
|
|
|
// vailCodeResultResponses.add(invalidResponse);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(invCode);
|
|
|
|
|
|
|
|
|
|
// 4. 获取组编号
|
|
|
|
@ -253,49 +253,54 @@ public class AddCoodeService {
|
|
|
|
|
int processors = Runtime.getRuntime().availableProcessors();
|
|
|
|
|
ExecutorService executor = Executors.newFixedThreadPool(Math.min(processors * 2, 10));
|
|
|
|
|
// 准备请求参数
|
|
|
|
|
IoOrderEntity orderEntity;
|
|
|
|
|
AddOrderRequest addOrderRequest = new AddOrderRequest();
|
|
|
|
|
BeanUtils.copyProperties(addOrderCodeRequest, addOrderRequest);
|
|
|
|
|
addOrderRequest.setBillNo(orderId);
|
|
|
|
|
addOrderRequest.setInvCode(invCode);
|
|
|
|
|
IoOrderEntity isExit = orderService.findByBillNo(orderId);
|
|
|
|
|
IoOrderEntity orderEntity = new IoOrderEntity();
|
|
|
|
|
if (isExit == null) {
|
|
|
|
|
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
|
|
|
|
|
orderEntity.setBillNo(orderNo);
|
|
|
|
|
orderEntity.setCorpOrderId(addOrderRequest.getCorpOrderId());
|
|
|
|
|
orderEntity.setMainAction(bussinessTypeEntity.getMainAction());
|
|
|
|
|
orderEntity.setAction(bussinessTypeEntity.getAction());
|
|
|
|
|
orderEntity.setFromCorp(addOrderRequest.getFromCorp());
|
|
|
|
|
if (StrUtil.isNotEmpty(addOrderRequest.getFromInvCode())) {
|
|
|
|
|
InvWarehouseEntity invWarehouseEntity1 = invWarehouseService.findByInvSubByCode(addOrderRequest.getFromInvCode());
|
|
|
|
|
orderEntity.setFromDeptCode(invWarehouseEntity1.getParentId());
|
|
|
|
|
}
|
|
|
|
|
orderEntity.setFromInvCode(addOrderRequest.getFromInvCode());
|
|
|
|
|
orderEntity.setFromType(ConstantStatus.FROM_WEBNEW);
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
|
|
|
|
|
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);
|
|
|
|
|
orderEntity.setCreateUser(authAdmin.getId() + "");
|
|
|
|
|
orderEntity.setCreateTime(new Date());
|
|
|
|
|
orderEntity.setUpdateUser(authAdmin.getId() + "");
|
|
|
|
|
orderEntity.setUpdateTime(new Date());
|
|
|
|
|
orderEntity.setCustomerId(authAdmin.getCustomerId() + "");
|
|
|
|
|
orderEntity.setDeptCode(invWarehouseEntity.getParentId());
|
|
|
|
|
orderEntity.setCheckPreInOrders(addOrderRequest.getCheckPreInOrders());
|
|
|
|
|
orderEntity.setInvCode(addOrderRequest.getInvCode());
|
|
|
|
|
orderEntity.setOrderType(addOrderRequest.getOrderType());
|
|
|
|
|
orderEntity.setBusType(bussinessTypeEntity.getBusType());
|
|
|
|
|
orderEntity.setSickerAdNum(addOrderRequest.getSickerAdNum());
|
|
|
|
|
orderEntity.setWorkPlaceCode(addOrderRequest.getWorkPlaceCode());
|
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
|
orderEntity.setFifoSplit(addOrderRequest.getFifoSplit());
|
|
|
|
|
|
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
|
// orderEntity.setWorkPlaceQueueCode(queueCode);
|
|
|
|
|
orderEntity.setProductType(2);
|
|
|
|
|
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
|
|
|
|
|
orderService.insertOrder(orderEntity);
|
|
|
|
|
addOrderRequest.setBillNo(orderNo);
|
|
|
|
|
} else orderEntity = isExit;
|
|
|
|
|
synchronized (addOrderCodeRequest.getCorpOrderId().intern()) {
|
|
|
|
|
BeanUtils.copyProperties(addOrderCodeRequest, addOrderRequest);
|
|
|
|
|
addOrderRequest.setBillNo(orderId);
|
|
|
|
|
addOrderRequest.setInvCode(invCode);
|
|
|
|
|
IoOrderEntity isExit = orderService.findByBillNo(orderId);
|
|
|
|
|
orderEntity = new IoOrderEntity();
|
|
|
|
|
if (isExit == null) {
|
|
|
|
|
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
|
|
|
|
|
orderEntity.setBillNo(orderNo);
|
|
|
|
|
orderEntity.setCorpOrderId(addOrderRequest.getCorpOrderId());
|
|
|
|
|
orderEntity.setMainAction(bussinessTypeEntity.getMainAction());
|
|
|
|
|
orderEntity.setAction(bussinessTypeEntity.getAction());
|
|
|
|
|
orderEntity.setFromCorp(addOrderRequest.getFromCorp());
|
|
|
|
|
if (StrUtil.isNotEmpty(addOrderRequest.getFromInvCode())) {
|
|
|
|
|
InvWarehouseEntity invWarehouseEntity1 = invWarehouseService.findByInvSubByCode(addOrderRequest.getFromInvCode());
|
|
|
|
|
orderEntity.setFromDeptCode(invWarehouseEntity1.getParentId());
|
|
|
|
|
}
|
|
|
|
|
orderEntity.setFromInvCode(addOrderRequest.getFromInvCode());
|
|
|
|
|
orderEntity.setFromType(ConstantStatus.FROM_WEBNEW);
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
|
|
|
|
|
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);
|
|
|
|
|
orderEntity.setCreateUser(authAdmin.getId() + "");
|
|
|
|
|
orderEntity.setCreateTime(new Date());
|
|
|
|
|
orderEntity.setUpdateUser(authAdmin.getId() + "");
|
|
|
|
|
orderEntity.setUpdateTime(new Date());
|
|
|
|
|
orderEntity.setCustomerId(authAdmin.getCustomerId() + "");
|
|
|
|
|
orderEntity.setDeptCode(invWarehouseEntity.getParentId());
|
|
|
|
|
orderEntity.setCheckPreInOrders(addOrderRequest.getCheckPreInOrders());
|
|
|
|
|
orderEntity.setInvCode(addOrderRequest.getInvCode());
|
|
|
|
|
orderEntity.setOrderType(addOrderRequest.getOrderType());
|
|
|
|
|
orderEntity.setBusType(bussinessTypeEntity.getBusType());
|
|
|
|
|
orderEntity.setSickerAdNum(addOrderRequest.getSickerAdNum());
|
|
|
|
|
orderEntity.setWorkPlaceCode(addOrderRequest.getWorkPlaceCode());
|
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
|
orderEntity.setFifoSplit(addOrderRequest.getFifoSplit());
|
|
|
|
|
orderEntity.setProductType(2);
|
|
|
|
|
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
|
|
|
|
|
|
|
|
|
|
// 使用corpOrderId作为同步锁
|
|
|
|
|
synchronized (addOrderRequest.getCorpOrderId().intern()) {
|
|
|
|
|
orderService.insertOrder(orderEntity);
|
|
|
|
|
addOrderRequest.setBillNo(orderNo);
|
|
|
|
|
}
|
|
|
|
|
} else orderEntity = isExit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 创建异步任务
|
|
|
|
|
List<CompletableFuture<VailCodeResultResponse>> futures = udiEntityMap.entrySet().stream().map(entry -> {
|
|
|
|
@ -366,8 +371,10 @@ public class AddCoodeService {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(successCodes)) {
|
|
|
|
|
List<IoCodeTempEntity> codeTempEntities = codeTempService.selectByCodes(successCodes, orderEntity.getBillNo());
|
|
|
|
|
genOrderDetailCodeBatch(orderEntity, codeTempEntities);
|
|
|
|
|
synchronized (orderEntity.getBillNo().intern()) {
|
|
|
|
|
List<IoCodeTempEntity> codeTempEntities = codeTempService.selectByCodes(successCodes, orderEntity.getBillNo());
|
|
|
|
|
genOrderDetailCodeBatch(orderEntity, codeTempEntities);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
addCodeResult.setOrderId(orderEntity.getBillNo());
|
|
|
|
|
addCodeResult.setVailCodeResultResponses(vailCodeResultResponses);
|
|
|
|
@ -521,7 +528,7 @@ public class AddCoodeService {
|
|
|
|
|
if (byBillNo != null && !StrUtil.isBlank(byBillNo.getWorkPlaceQueueCode())) {
|
|
|
|
|
queueCode = byBillNo.getWorkPlaceQueueCode();
|
|
|
|
|
} else {
|
|
|
|
|
// userId 没有什么用 设置为1 问题不大 避免空指针
|
|
|
|
|
// userId Nothing 没有什么用 设置为1 问题不大 避免空指针
|
|
|
|
|
queueCode = ioSplitFifoInvService.setQueueCode(addOrderRequest.getWorkPlaceCode(), 1 + "", udiRelevanceResponse1.getRelId());
|
|
|
|
|
addCodeResult.setQueueCode(queueCode);
|
|
|
|
|
}
|
|
|
|
|