紧急问题修改,bug修改,后置拆零,扫码加锁,完成单据拆零待赋码

dev_2.5_mutiscan
yewj 3 months ago
parent 4a8f320746
commit d0500ba458

@ -126,7 +126,6 @@ public class SysCustomConfigController extends BaseController {
@AuthRuleAnnotation("")
@PostMapping("/getConfigs")
@Log(title = "界面配置管理")
public BaseResponse getConfigs(@RequestBody SysCustomConfigRequest request, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {

@ -463,21 +463,22 @@ public class IoCodeTempController extends BaseController {
AddCodeResult addCodeResult = new AddCodeResult();
List<String> codeList = addOrderCodeRequest.getCodeList();
if (CollUtil.isEmpty(codeList) && StrUtil.isEmpty(addOrderCodeRequest.getCode()))
return ResultVOUtils.error(500, "追溯码不能为空");
return ResultVOUtils.error(550, "追溯码不能为空");
if (StrUtil.isNotEmpty(addOrderCodeRequest.getCode()) && CollUtil.isEmpty(codeList)) {
codeList = new ArrayList<>();
codeList.add(addOrderCodeRequest.getCode());
addOrderCodeRequest.setCodeList(codeList);
}
if (CollUtil.isNotEmpty(codeList)) {
String firstCode = codeList.get(0);
UdiEntity udiEntity = FilterUdiUtils.getUdi(firstCode);
if (udiEntity == null) {
return ResultVOUtils.error(550, "追溯码格式错误!");
}
if (IntUtil.value(udiEntity.getProductType()) == 2) {
addOrderCodeRequest.setProductType(2);
}
}
// 获取第一个码判断类型,如果是药品类型则使用批量处理方法
if (!codeList.isEmpty() && IntUtil.value(addOrderCodeRequest.getProductType()) == 2) {
String firstCode = codeList.get(0);

@ -2,6 +2,7 @@ package com.glxp.api.controller.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -127,7 +129,18 @@ public class IoSplitController extends BaseController {
*/
@PostMapping("/udiwms/ioSplit/material/order/split")
public BaseResponse startSplit(@RequestBody AddTagCodeReqeust addTagCodeReqeust) {
List<IoCollectOrder> collectOrders = new ArrayList<>();
IoCollectOrder collectOrder = collectOrderService.getByBillNo(addTagCodeReqeust.getBillNo());
if (StrUtil.isNotEmpty(collectOrder.getSummaryNo())) {
List<IoCollectOrder> temps = collectOrderService.list(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getSummaryNo, collectOrder.getSummaryNo()));
if (CollUtil.isNotEmpty(temps)) {
collectOrders.addAll(temps);
}
} else {
collectOrders.add(collectOrder);
}
if (collectOrder == null) {
return ResultVOUtils.error(500, "未找到单据");
}
@ -137,7 +150,11 @@ public class IoSplitController extends BaseController {
if (sysWorkplaceDocumentEntity.getProductType() == 1) {
splitCodeService.preQxAutoTagCode(collectOrder, null);
} else {
splitCodeService.preAutoTagCode(collectOrder, null);
for (IoCollectOrder temp : collectOrders) {
splitCodeService.preAutoTagCode(temp, null);
}
}
collectOrderService.updateById(collectOrder);
return ResultVOUtils.success("后台已开始赋码,请稍后刷新查看");

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

@ -1527,7 +1527,7 @@ public class HeartService {
*
* @param exportType
*/
@Transactional(rollbackFor = Exception.class)
// @Transactional(rollbackFor = Exception.class)
public void pullData(BasicExportTypeEnum exportType) {
switch (exportType) {
case IO_ORDER:

@ -15,7 +15,7 @@ import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class)
public class BasicExportTimeServiceImpl extends ServiceImpl<BasicExportTimeDao,BasicExportStatusTimeEntity> implements BasicExportTimeService {
public class BasicExportTimeServiceImpl extends ServiceImpl<BasicExportTimeDao, BasicExportStatusTimeEntity> implements BasicExportTimeService {
@Resource
BasicExportTimeDao basicExportTimeDao;
@ -42,7 +42,7 @@ public class BasicExportTimeServiceImpl extends ServiceImpl<BasicExportTimeDao,B
@Override
public boolean insertExportStatus(BasicExportStatusTimeEntity basicExportStatusTimeEntity) {
return basicExportTimeDao.insertExportStatus(basicExportStatusTimeEntity);
return basicExportTimeDao.insertOrUpdate(basicExportStatusTimeEntity);
}

Loading…
Cancel
Save