|
|
@ -235,16 +235,16 @@ public class AddCoodeService {
|
|
|
|
if (StringUtils.isNotBlank(orderId)) {
|
|
|
|
if (StringUtils.isNotBlank(orderId)) {
|
|
|
|
existingCodesMap = codeTempService.batchCheckCodesExistence(processedCodes, orderId);
|
|
|
|
existingCodesMap = codeTempService.batchCheckCodesExistence(processedCodes, orderId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (Map.Entry<String, IoCodeTempEntity> entry : existingCodesMap.entrySet()) {
|
|
|
|
// for (Map.Entry<String, IoCodeTempEntity> entry : existingCodesMap.entrySet()) {
|
|
|
|
IoCodeTempEntity codeTempEntity = entry.getValue();
|
|
|
|
// IoCodeTempEntity codeTempEntity = entry.getValue();
|
|
|
|
if (codeTempEntity != null) {
|
|
|
|
// if (codeTempEntity != null) {
|
|
|
|
VailCodeResultResponse invalidResponse = new VailCodeResultResponse();
|
|
|
|
// VailCodeResultResponse invalidResponse = new VailCodeResultResponse();
|
|
|
|
invalidResponse.setCode(codeTempEntity.getCode());
|
|
|
|
// invalidResponse.setCode(codeTempEntity.getCode());
|
|
|
|
invalidResponse.setStatus(2);
|
|
|
|
// invalidResponse.setStatus(2);
|
|
|
|
invalidResponse.setErrMsg("重复扫码");
|
|
|
|
// invalidResponse.setErrMsg("重复扫码");
|
|
|
|
vailCodeResultResponses.add(invalidResponse);
|
|
|
|
// vailCodeResultResponses.add(invalidResponse);
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(invCode);
|
|
|
|
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(invCode);
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 获取组编号
|
|
|
|
// 4. 获取组编号
|
|
|
@ -253,12 +253,14 @@ public class AddCoodeService {
|
|
|
|
int processors = Runtime.getRuntime().availableProcessors();
|
|
|
|
int processors = Runtime.getRuntime().availableProcessors();
|
|
|
|
ExecutorService executor = Executors.newFixedThreadPool(Math.min(processors * 2, 10));
|
|
|
|
ExecutorService executor = Executors.newFixedThreadPool(Math.min(processors * 2, 10));
|
|
|
|
// 准备请求参数
|
|
|
|
// 准备请求参数
|
|
|
|
|
|
|
|
IoOrderEntity orderEntity;
|
|
|
|
AddOrderRequest addOrderRequest = new AddOrderRequest();
|
|
|
|
AddOrderRequest addOrderRequest = new AddOrderRequest();
|
|
|
|
|
|
|
|
synchronized (addOrderCodeRequest.getCorpOrderId().intern()) {
|
|
|
|
BeanUtils.copyProperties(addOrderCodeRequest, addOrderRequest);
|
|
|
|
BeanUtils.copyProperties(addOrderCodeRequest, addOrderRequest);
|
|
|
|
addOrderRequest.setBillNo(orderId);
|
|
|
|
addOrderRequest.setBillNo(orderId);
|
|
|
|
addOrderRequest.setInvCode(invCode);
|
|
|
|
addOrderRequest.setInvCode(invCode);
|
|
|
|
IoOrderEntity isExit = orderService.findByBillNo(orderId);
|
|
|
|
IoOrderEntity isExit = orderService.findByBillNo(orderId);
|
|
|
|
IoOrderEntity orderEntity = new IoOrderEntity();
|
|
|
|
orderEntity = new IoOrderEntity();
|
|
|
|
if (isExit == null) {
|
|
|
|
if (isExit == null) {
|
|
|
|
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
|
|
|
|
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
|
|
|
|
orderEntity.setBillNo(orderNo);
|
|
|
|
orderEntity.setBillNo(orderNo);
|
|
|
@ -288,14 +290,17 @@ public class AddCoodeService {
|
|
|
|
orderEntity.setWorkPlaceCode(addOrderRequest.getWorkPlaceCode());
|
|
|
|
orderEntity.setWorkPlaceCode(addOrderRequest.getWorkPlaceCode());
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
orderEntity.setFifoSplit(addOrderRequest.getFifoSplit());
|
|
|
|
orderEntity.setFifoSplit(addOrderRequest.getFifoSplit());
|
|
|
|
|
|
|
|
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
|
|
|
|
// orderEntity.setWorkPlaceQueueCode(queueCode);
|
|
|
|
|
|
|
|
orderEntity.setProductType(2);
|
|
|
|
orderEntity.setProductType(2);
|
|
|
|
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
|
|
|
|
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 使用corpOrderId作为同步锁
|
|
|
|
|
|
|
|
synchronized (addOrderRequest.getCorpOrderId().intern()) {
|
|
|
|
orderService.insertOrder(orderEntity);
|
|
|
|
orderService.insertOrder(orderEntity);
|
|
|
|
addOrderRequest.setBillNo(orderNo);
|
|
|
|
addOrderRequest.setBillNo(orderNo);
|
|
|
|
|
|
|
|
}
|
|
|
|
} else orderEntity = isExit;
|
|
|
|
} else orderEntity = isExit;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
// 创建异步任务
|
|
|
|
// 创建异步任务
|
|
|
|
List<CompletableFuture<VailCodeResultResponse>> futures = udiEntityMap.entrySet().stream().map(entry -> {
|
|
|
|
List<CompletableFuture<VailCodeResultResponse>> futures = udiEntityMap.entrySet().stream().map(entry -> {
|
|
|
@ -366,9 +371,11 @@ public class AddCoodeService {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(successCodes)) {
|
|
|
|
if (CollUtil.isNotEmpty(successCodes)) {
|
|
|
|
|
|
|
|
synchronized (orderEntity.getBillNo().intern()) {
|
|
|
|
List<IoCodeTempEntity> codeTempEntities = codeTempService.selectByCodes(successCodes, orderEntity.getBillNo());
|
|
|
|
List<IoCodeTempEntity> codeTempEntities = codeTempService.selectByCodes(successCodes, orderEntity.getBillNo());
|
|
|
|
genOrderDetailCodeBatch(orderEntity, codeTempEntities);
|
|
|
|
genOrderDetailCodeBatch(orderEntity, codeTempEntities);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
addCodeResult.setOrderId(orderEntity.getBillNo());
|
|
|
|
addCodeResult.setOrderId(orderEntity.getBillNo());
|
|
|
|
addCodeResult.setVailCodeResultResponses(vailCodeResultResponses);
|
|
|
|
addCodeResult.setVailCodeResultResponses(vailCodeResultResponses);
|
|
|
|
log.info("批量处理药品追溯码完成,共{}个,耗时{}ms", codeList.size(), (System.currentTimeMillis() - startTime));
|
|
|
|
log.info("批量处理药品追溯码完成,共{}个,耗时{}ms", codeList.size(), (System.currentTimeMillis() - startTime));
|
|
|
@ -521,7 +528,7 @@ public class AddCoodeService {
|
|
|
|
if (byBillNo != null && !StrUtil.isBlank(byBillNo.getWorkPlaceQueueCode())) {
|
|
|
|
if (byBillNo != null && !StrUtil.isBlank(byBillNo.getWorkPlaceQueueCode())) {
|
|
|
|
queueCode = byBillNo.getWorkPlaceQueueCode();
|
|
|
|
queueCode = byBillNo.getWorkPlaceQueueCode();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
// userId 没有什么用 设置为1 问题不大 避免空指针
|
|
|
|
// userId Nothing 没有什么用 设置为1 问题不大 避免空指针
|
|
|
|
queueCode = ioSplitFifoInvService.setQueueCode(addOrderRequest.getWorkPlaceCode(), 1 + "", udiRelevanceResponse1.getRelId());
|
|
|
|
queueCode = ioSplitFifoInvService.setQueueCode(addOrderRequest.getWorkPlaceCode(), 1 + "", udiRelevanceResponse1.getRelId());
|
|
|
|
addCodeResult.setQueueCode(queueCode);
|
|
|
|
addCodeResult.setQueueCode(queueCode);
|
|
|
|
}
|
|
|
|
}
|
|
|
|