From 0f3d83a8549cc1e62d4ac2f37f27fb97e898bf4d Mon Sep 17 00:00:00 2001 From: anthonywj Date: Sun, 5 Feb 2023 16:23:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=A0=A1=E9=AA=8C=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/constant/ConstantStatus.java | 3 +- .../inout/IoCodeTempController.java | 4 +- .../entity/inout/IoOrderDetailBizEntity.java | 4 + .../entity/inout/IoOrderDetailCodeEntity.java | 3 + .../glxp/api/entity/inout/IoOrderEntity.java | 3 + ...outService.java => IoAddInoutService.java} | 6 +- .../service/inout/IoCheckInoutService.java | 261 ++++++++++++++++++ .../api/service/inout/IoCodeTempService.java | 3 + .../api/service/inout/IoGenInvService.java | 10 + .../inout/impl/IoCodeTempServiceImpl.java | 5 + .../api/service/inv/InvPreinOrderService.java | 5 + .../api/service/inv/InvProductService.java | 5 + .../inv/impl/InvPreinOrderServiceImpl.java | 8 + .../inv/impl/InvProductServiceImpl.java | 8 + 14 files changed, 324 insertions(+), 4 deletions(-) rename src/main/java/com/glxp/api/service/inout/{IoTransInoutService.java => IoAddInoutService.java} (99%) create mode 100644 src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java create mode 100644 src/main/java/com/glxp/api/service/inout/IoGenInvService.java create mode 100644 src/main/java/com/glxp/api/service/inv/InvPreinOrderService.java create mode 100644 src/main/java/com/glxp/api/service/inv/InvProductService.java create mode 100644 src/main/java/com/glxp/api/service/inv/impl/InvPreinOrderServiceImpl.java create mode 100644 src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java diff --git a/src/main/java/com/glxp/api/constant/ConstantStatus.java b/src/main/java/com/glxp/api/constant/ConstantStatus.java index c9368fc65..a977e9fd1 100644 --- a/src/main/java/com/glxp/api/constant/ConstantStatus.java +++ b/src/main/java/com/glxp/api/constant/ConstantStatus.java @@ -9,10 +9,11 @@ public class ConstantStatus { public static final Integer ORDER_STATUS_TEMP_SAVE = -1; //等待提交(草稿) public static final Integer ORDER_STATUS_PROCESS = 1; //等待处理 public static final Integer ORDER_STATUS_CHECK = 2; //等待校验 - public static final Integer ORDER_STATUS_FAIL = 3; //重码校验失败 + public static final Integer ORDER_STATUS_FAIL = 3; //单据校验失败 public static final Integer ORDER_STATUS_SUCCESS = 4; //已校验 public static final Integer ORDER_STATUS_ADDITIONAL = 5; //补录单据 public static final Integer ORDER_STATUS_DOING = 6; + public static final Integer ORDER_STATUS_RECEIVEED = 7; //订单处理状态 public static final Integer ORDER_DEAL_DRAFT = 1; //草稿 diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 874dc2c8b..d5ec7184c 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -35,7 +35,7 @@ import com.glxp.api.service.basic.*; import com.glxp.api.service.inout.IoCodeTempService; import com.glxp.api.service.inout.IoOrderDetailCodeService; import com.glxp.api.service.inout.IoOrderService; -import com.glxp.api.service.inout.IoTransInoutService; +import com.glxp.api.service.inout.IoAddInoutService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; @@ -67,7 +67,7 @@ public class IoCodeTempController extends BaseController { @Resource private SpsDirectClient spsDirectClient; @Resource - IoTransInoutService transInoutService; + IoAddInoutService transInoutService; @Resource private SystemParamConfigService systemParamConfigService; @Resource diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java index da462466d..ce14a94b5 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java @@ -184,5 +184,9 @@ public class IoOrderDetailBizEntity implements Serializable { @TableField(value = "remark5") private String remark5; + + @TableField(exist = false) + private boolean checkSuccess; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java index cedaaf208..f6a229669 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java @@ -184,5 +184,8 @@ public class IoOrderDetailCodeEntity implements Serializable { @TableField(value = "remark5") private String remark5; + @TableField(exist = false) + private boolean checkSuccess; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java index 8e3a2c2e1..ef435ecc6 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java @@ -178,5 +178,8 @@ public class IoOrderEntity implements Serializable { @TableField(value = "remark") private String remark; + @TableField(value = "errMsg") + private String errMsg; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/service/inout/IoTransInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java similarity index 99% rename from src/main/java/com/glxp/api/service/inout/IoTransInoutService.java rename to src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index 7729aaa40..1372c75e1 100644 --- a/src/main/java/com/glxp/api/service/inout/IoTransInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -28,7 +28,7 @@ import java.util.ArrayList; import java.util.List; @Service -public class IoTransInoutService { +public class IoAddInoutService { @Resource private IBasicBussinessTypeService basicBussinessTypeService; @@ -95,6 +95,10 @@ public class IoTransInoutService { } } + + + + //校验条码关联供应商 public String checkExitSup(Long relId) { FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest = new FilterCompanyProductRelevanceRequest(); diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java new file mode 100644 index 000000000..b7baa843b --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -0,0 +1,261 @@ +package com.glxp.api.service.inout; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.*; +import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.service.basic.IBasicBussinessTypeService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * 校验出入库服务 + */ +@Service +public class IoCheckInoutService { + + @Resource + IoOrderService orderService; + @Resource + IoCodeService codeService; + @Resource + IoCodeTempService codeTempService; + @Resource + IBasicBussinessTypeService basicBussinessTypeService; + @Resource + IoOrderDetailCodeService orderDetailCodeService; + @Resource + IoOrderDetailBizService orderDetailBizService; + @Resource + IoOrderDetailResultService orderDetailResultService; + + public void check(String orderId) { + IoOrderEntity orderEntity = orderService.findByBillNo(orderId); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); + if (!bussinessTypeEntity.isCheckEnable()) { + unCheckFinish(orderEntity); + } else { + if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIMS) { + if (!bussinessTypeEntity.isCheckUdims()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_WEBNEW) { + if (!bussinessTypeEntity.isCheckWebNew()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAED) { + if (!bussinessTypeEntity.isCheckPdaEd()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAUN) { + if (!bussinessTypeEntity.isCheckPdaUn()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PC) { + if (!bussinessTypeEntity.isCheckPc()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_CHANGE) { + if (!bussinessTypeEntity.isCheckChange()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PEACE_CHANGE) { + if (!bussinessTypeEntity.isCheckBalance()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDISP) { + if (!bussinessTypeEntity.isCheckSp()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_COPY) { + if (!bussinessTypeEntity.isCheckCopy()) { + unCheckFinish(orderEntity); + return; + } + } + checkFinish(orderEntity); + } + } + + public void unCheckFinish(IoOrderEntity orderEntity) { + + List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); + + if (CollUtil.isEmpty(orderDetailCodeEntities)) { + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderEntity.setErrMsg("校验失败,扫码详情为空!"); + orderService.update(orderEntity); + return; + } + orderDetailCodeEntities.forEach(orderDetailCodeEntity -> + { + //生成业务单据 + IoOrderDetailBizEntity orderDetailBizEntity = new IoOrderDetailBizEntity(); + BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailBizEntity); + orderDetailBizService.insert(orderDetailBizEntity); + + + //生成单据结果 + IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); + BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailResultEntity); + orderDetailResultService.insert(orderDetailResultEntity); + + }); + + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_RECEIVEED); + orderEntity.setUpdateTime(new Date()); + orderService.update(orderEntity); + } + + public void checkFinish(IoOrderEntity orderEntity) { + List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); + List orderDetailBizEntities = orderDetailBizService.findByOrderId(orderEntity.getBillNo()); + + if (CollUtil.isEmpty(orderDetailCodeEntities)) { + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderEntity.setErrMsg("校验失败,扫码详情为空!"); + orderService.update(orderEntity); + return; + } + + if (CollUtil.isEmpty(orderDetailBizEntities)) { + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderEntity.setErrMsg("校验失败,业务详情为空!"); + orderService.update(orderEntity); + return; + } + String errMsg = ""; + //正向校验 + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null + && checkBatchNo(bizEntity, codeEntity) == null + && checkProductDate(bizEntity, codeEntity) == null + && checkExpireDate(bizEntity, codeEntity) == null + ) { + + if (checkCount(bizEntity, codeEntity) == null) { + bizEntity.setCheckSuccess(true); + codeEntity.setCheckSuccess(true); + } + break; + } + } + } + + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + if (!bizEntity.isCheckSuccess()) { + errMsg = errMsg + bizEntity.getCoName() + ";"; + } + } + + //反向校验 + for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null + && checkBatchNo(bizEntity, codeEntity) == null + && checkProductDate(bizEntity, codeEntity) == null + && checkExpireDate(bizEntity, codeEntity) == null + ) { + + if (checkCount(bizEntity, codeEntity) == null) { + bizEntity.setCheckSuccess(true); + codeEntity.setCheckSuccess(true); + } + break; + } + } + } + + for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + if (!codeEntity.isCheckSuccess()) { + errMsg = errMsg + codeEntity.getCoName() + ";"; + } + } + + if (StrUtil.isEmpty(errMsg)) { + orderEntity.setErrMsg(errMsg + "校验失败"); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderService.update(orderEntity); + } else { + //生成单据结果 + for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) { + IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); + BeanUtils.copyProperties(orderDetailBizEntity, orderDetailResultEntity); + orderDetailResultService.insert(orderDetailResultEntity); + } + + //临时表转正式表 + List codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo()); + for (IoCodeTempEntity codeTempEntity : codeTempEntities) { + IoCodeEnttity codeEnttity = new IoCodeEnttity(); + BeanUtils.copyProperties(codeTempEntity, codeEnttity); + codeService.insert(codeEnttity); + } + codeTempService.deleteByBillNo(orderEntity.getBillNo()); + orderEntity.setErrMsg("校验成功!"); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_SUCCESS); + orderEntity.setUpdateTime(new Date()); + orderService.update(orderEntity); + } + } + + public String checkId(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + + if (bizEntity.getBindRlFk() == codeEntity.getBindRlFk()) { + return null; + } else { + return "产品ID不匹配"; + } + } + + public String checkBatchNo(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + + if (StrUtil.nullToEmpty(bizEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) { + return null; + } else { + return bizEntity.getCoName() + "批次号不匹配"; + } + } + + public String checkProductDate(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + if (StrUtil.nullToEmpty(bizEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) { + return null; + } else { + return bizEntity.getCoName() + "批次号不匹配"; + } + } + + public String checkExpireDate(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + if (StrUtil.nullToEmpty(bizEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) { + return null; + } else { + return bizEntity.getCoName() + "批次号不匹配"; + } + } + + public String checkCount(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + if (bizEntity.getReCount() == codeEntity.getReCount()) { + return null; + } + return bizEntity.getCoName() + "数量不匹配!"; + } +} diff --git a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java index ba9cbeb7e..c0821493f 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java @@ -24,4 +24,7 @@ public interface IoCodeTempService { List findByOrderId(String billNo); TableDataInfo findByOrderId(FilterIoCodeRequest filterIoCodeRequest); + + + int deleteByBillNo(String orderId); } diff --git a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java new file mode 100644 index 000000000..85cfa704d --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -0,0 +1,10 @@ +package com.glxp.api.service.inout; + +import org.springframework.stereotype.Service; + + +@Service +public class IoGenInvService { + + +} diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java index 847f37df6..8cdc64e6c 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java @@ -64,4 +64,9 @@ public class IoCodeTempServiceImpl implements IoCodeTempService { return TableDataInfo.build(page); } + @Override + public int deleteByBillNo(String orderId) { + return ioCodeTempDao.delete(new QueryWrapper().eq("orderId", orderId)); + } + } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinOrderService.java b/src/main/java/com/glxp/api/service/inv/InvPreinOrderService.java new file mode 100644 index 000000000..57196a302 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreinOrderService.java @@ -0,0 +1,5 @@ +package com.glxp.api.service.inv; + +public interface InvPreinOrderService { + +} diff --git a/src/main/java/com/glxp/api/service/inv/InvProductService.java b/src/main/java/com/glxp/api/service/inv/InvProductService.java new file mode 100644 index 000000000..408f51730 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvProductService.java @@ -0,0 +1,5 @@ +package com.glxp.api.service.inv; + +public interface InvProductService { + +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreinOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreinOrderServiceImpl.java new file mode 100644 index 000000000..716b144a3 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreinOrderServiceImpl.java @@ -0,0 +1,8 @@ +package com.glxp.api.service.inv.impl; + +import com.glxp.api.service.inv.InvPreinOrderService; +import org.springframework.stereotype.Service; + +@Service +public class InvPreinOrderServiceImpl implements InvPreinOrderService { +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java new file mode 100644 index 000000000..d6200d703 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java @@ -0,0 +1,8 @@ +package com.glxp.api.service.inv.impl; + +import com.glxp.api.service.inv.InvProductService; +import org.springframework.stereotype.Service; + +@Service +public class InvProductServiceImpl implements InvProductService { +}