From bd7154b81bb148a3a8c300f7e8bd6ed6e7079ef0 Mon Sep 17 00:00:00 2001 From: chenhc <2369838784@qq.com> Date: Fri, 23 Feb 2024 11:08:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=8F=90=E4=BA=A4=E6=97=B6=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8F=B7=E5=94=AF=E4=B8=80=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/constant/ConstantType.java | 4 +- .../com/glxp/api/dao/inout/IoCodeDao.java | 8 +++ .../service/inout/IoCheckInoutService.java | 71 ++++++++++++++----- .../api/service/inout/impl/IoCodeService.java | 10 ++- .../mybatis/mapper/inout/IoCodeDao.xml | 20 ++++++ 5 files changed, 94 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/glxp/api/constant/ConstantType.java b/src/main/java/com/glxp/api/constant/ConstantType.java index 77235d6a..2387fa94 100644 --- a/src/main/java/com/glxp/api/constant/ConstantType.java +++ b/src/main/java/com/glxp/api/constant/ConstantType.java @@ -3,6 +3,6 @@ package com.glxp.api.constant; public interface ConstantType { String TYPE_STOCK_CHECK = "StockCheck"; //盘点 - String TYPE_PUT = "WareHouseIn"; //出库 - String TYPE_OUT = "WareHouseOut"; //入库 + String TYPE_PUT = "WareHouseIn"; //入库 + String TYPE_OUT = "WareHouseOut"; //出库 } diff --git a/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java b/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java index 275fb88e..ef767432 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java +++ b/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java @@ -6,6 +6,7 @@ import com.glxp.api.req.inout.FilterCodeRequest; import com.glxp.api.res.inout.IoCodeResponse; import java.util.List; +import java.util.Map; public interface IoCodeDao extends BaseMapperPlus { @@ -24,4 +25,11 @@ public interface IoCodeDao extends BaseMapperPlus filterList(FilterCodeRequest filterCodeRequest); + + /** + * code分组sum实际库存数量 + * @param codes + * @return + */ + List findByCodeSumReCount(List codes); } diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java index 8ef5d727..93f51662 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -18,6 +18,9 @@ import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; +import com.glxp.api.exception.JsonException; +import com.glxp.api.exception.ServiceException; +import com.glxp.api.res.inout.IoCodeResponse; import com.glxp.api.res.inout.IoOrderCheckResultResponse; import com.glxp.api.res.inout.IoOrderDetailBizResponse; import com.glxp.api.res.inout.IoOrderDetailCodeResponse; @@ -156,63 +159,101 @@ public class IoCheckInoutService { orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST); orderService.update(orderEntity); + List codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo()); + //序列号唯一性校验 + serialNoUniquenessVerification(codeTempEntities); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); if (!bussinessTypeEntity.isCheckEnable()) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); } else { if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIMS) { if (bussinessTypeEntity.getCheckUdims() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_WEBNEW) { if (bussinessTypeEntity.getCheckWebNew() == 0 || bussinessTypeEntity.getCheckWebNew() == 4) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAED) { if (bussinessTypeEntity.getCheckPdaEd() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAUN) { if (bussinessTypeEntity.getCheckPdaUn() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PC) { if (bussinessTypeEntity.getCheckPc() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_CHANGE) { if (bussinessTypeEntity.getCheckChange() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PEACE_CHANGE) { if (bussinessTypeEntity.getCheckBalance() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDISP) { if (bussinessTypeEntity.getCheckSp() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_COPY) { if (bussinessTypeEntity.getCheckCopy() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_REVIEW) { if (bussinessTypeEntity.getCheckReview() == 0) { - unCheckFirstFinish(orderEntity); + unCheckFirstFinish(orderEntity,codeTempEntities); return; } } - checkFirstFinish(orderEntity); + checkFirstFinish(orderEntity,codeTempEntities); + } + } + + /** + * code列表中 有序列号的 进行唯一校验 + * 1、查找出临时code中 有 序列号的 code集合 + * 2、在正式code表里 对code分组sum库存 前提是 在待校验code集合中 校验出库存大于0抛出异常 + */ + private void serialNoUniquenessVerification(List codeTempEntities) { + if (CollUtil.isNotEmpty(codeTempEntities)){ + List codes = new ArrayList<>(codeTempEntities.size()); + codeTempEntities.stream().forEach( x -> { + if (StrUtil.isNotBlank(x.getSerialNo())){ + codes.add(x.getCode()); + } + }); + + if (CollUtil.isNotEmpty(codes)){ + //正式code表里 对code分组sum实际库存数量 + List codeSumReCountList = codeService.findByCodeSumReCount(codes); + if (codeSumReCountList.size() > 0 ){ + StringBuilder msg = new StringBuilder(); + codeSumReCountList.forEach( x -> { + if (x.getReCount() > 0){ + msg.append(x.getCode()+","); + } + }); + if (StrUtil.isNotEmpty(msg)){ + msg.deleteCharAt(msg.length()-1); + throw new JsonException(500,"产品UDI码:" + msg + "存库唯一性校验不通过!"); + } + } + } } + } @Resource @@ -334,7 +375,7 @@ public class IoCheckInoutService { //一次校验(无需校验)完成 - public void unCheckFirstFinish(IoOrderEntity orderEntity) { + public void unCheckFirstFinish(IoOrderEntity orderEntity,List codeTempEntities) { List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); @@ -380,7 +421,6 @@ public class IoCheckInoutService { //临时表转正式表 - List codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo()); for (IoCodeTempEntity codeTempEntity : codeTempEntities) { IoCodeEntity codeEnttity = new IoCodeEntity(); BeanUtils.copyProperties(codeTempEntity, codeEnttity); @@ -402,7 +442,7 @@ public class IoCheckInoutService { //一次校验完成 - public void checkFirstFinish(IoOrderEntity orderEntity) { + public void checkFirstFinish(IoOrderEntity orderEntity,List codeTempEntities) { List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); List orderDetailBizEntities = orderDetailBizService.findByOrderId(orderEntity.getBillNo()); @@ -502,7 +542,6 @@ public class IoCheckInoutService { // orderDetailCodeDao.updateBatchById(orderDetailCodeEntities); //临时表转正式表 - List codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo()); for (IoCodeTempEntity codeTempEntity : codeTempEntities) { IoCodeEntity codeEnttity = new IoCodeEntity(); BeanUtils.copyProperties(codeTempEntity, codeEnttity); diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoCodeService.java b/src/main/java/com/glxp/api/service/inout/impl/IoCodeService.java index 49c9cf26..4aee862e 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoCodeService.java @@ -24,6 +24,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; @Service @Transactional(rollbackFor = Exception.class) @@ -149,5 +150,12 @@ public class IoCodeService extends ServiceImpl { return ioCodeResponses; } - + /** + * code分组sum实际库存数量 + * @param codes + * @return + */ + public List findByCodeSumReCount(List codes) { + return ioCodeDao.findByCodeSumReCount(codes); + } } diff --git a/src/main/resources/mybatis/mapper/inout/IoCodeDao.xml b/src/main/resources/mybatis/mapper/inout/IoCodeDao.xml index 07c4936a..d61a3dd0 100644 --- a/src/main/resources/mybatis/mapper/inout/IoCodeDao.xml +++ b/src/main/resources/mybatis/mapper/inout/IoCodeDao.xml @@ -107,4 +107,24 @@ group by ic.id + + + +