From 13200bb93638e4aac0329d34f1a7dff908050d28 Mon Sep 17 00:00:00 2001 From: anthonyywj2 <353682448@qq.com> Date: Tue, 13 Sep 2022 11:37:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80=E9=80=BB=E8=BE=91=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E6=A0=B9=E6=8D=AE=E6=98=AF=E5=90=A6=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E9=AA=8C=E6=94=B6=E4=BA=8C=E6=AC=A1=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/impl/StockOrderServiceImpl.java | 64 ++++++++--- .../sale/admin/util/BusTypeCheckUtils.java | 102 ++++++++++++++++++ .../src/main/resources/application.properties | 2 +- 3 files changed, 152 insertions(+), 16 deletions(-) create mode 100644 api-admin/src/main/java/com/glxp/sale/admin/util/BusTypeCheckUtils.java diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java index f41ca16..0dcc7f4 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java @@ -13,6 +13,7 @@ import com.glxp.sale.admin.dao.inventory.InvPreInProductDao; import com.glxp.sale.admin.dao.inventory.InvPreInProductDetailDao; import com.glxp.sale.admin.dao.inventory.InvProductDao; import com.glxp.sale.admin.dao.inventory.InvProductDetailDao; +import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; import com.glxp.sale.admin.entity.inout.OrderEntity; import com.glxp.sale.admin.entity.inout.StockOrderEntity; import com.glxp.sale.admin.entity.inout.StockOrderPrintEntity; @@ -22,7 +23,9 @@ import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; import com.glxp.sale.admin.req.inout.StockOrderQueryRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductRequest; +import com.glxp.sale.admin.service.basic.BussinessTypeService; import com.glxp.sale.admin.service.inout.StockOrderService; +import com.glxp.sale.admin.util.BusTypeCheckUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -53,6 +56,8 @@ public class StockOrderServiceImpl implements StockOrderService { private InvPreInProductDao invPreInProductDao; @Resource private CodesDao codesDao; + @Resource + BussinessTypeService bussinessTypeService; @Override @@ -168,21 +173,32 @@ public class StockOrderServiceImpl implements StockOrderService { StockOrderEntity stockOrderEntity = stockOrderDao.selectByBillNo(billNo); //查询扫码单据 OrderEntity orderEntity = orderDao.selectByBillNo(billNo); + BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(orderEntity.getAction()); if (stockOrderEntity.getStatus().equals(ConstantStatus.SORDER_CHECKED)) { //回退未验收单据 /* 业务逻辑: - 回滚扫码单据状态到等待校验,并置空业务单据关联的扫码单据号,将此业务单据与扫码单据脱离关联,恢复可以被选择的状态 + 1.单据类型需要一次验收 + 回滚扫码单据状态到等待校验,并置空业务单据关联的扫码单据号,将此业务单据与扫码单据脱离关联,恢复可以被选择的状态 + 2.单据类型不需要一次验收 + 回滚扫码单据状态到新增扫码单据,并置空业务单据关联的扫码单据号,并删除此业务单据 */ - stockOrderEntity.setOrderIdFk(null); - stockOrderEntity.setStatus(ConstantStatus.SORDER_CHECK); + if (BusTypeCheckUtils.isFirstCheck(bussinessTypeEntity, orderEntity)) { + stockOrderEntity.setOrderIdFk(null); + stockOrderEntity.setStatus(ConstantStatus.SORDER_CHECK); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK); + orderEntity.setErpFk(""); + stockOrderDao.updateById(stockOrderEntity); + orderDao.updateOrder(orderEntity); + } else { + orderEntity.setErpFk(""); + stockOrderDao.deleteById(stockOrderEntity.getId()); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); + orderDao.updateOrder(orderEntity); + } - orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK); - //更新单据状态 - stockOrderDao.updateById(stockOrderEntity); - orderDao.updateOrder(orderEntity); } else { //回退已完成单据 @@ -250,10 +266,6 @@ public class StockOrderServiceImpl implements StockOrderService { filterInvProductDetailRequest.setOrderIdFk(orderEntity.getId()); List invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); -// //合并各个产品集合数据 -// Map> invProductDetailMap = -// invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk)); - List invProductList = new ArrayList<>(); for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); @@ -277,8 +289,6 @@ public class StockOrderServiceImpl implements StockOrderService { } //删除库存详情 invProductDetailDao.deleteByOrderId(orderEntity.getId()); - //删除码详情 -// codesDao.deleteByOrderId(orderEntity.getId()); //更新库存 for (InvProductEntity invProductEntity : invProductList) { //查询库存码详情,如果库存码详情为空,则删除此库存 @@ -297,8 +307,32 @@ public class StockOrderServiceImpl implements StockOrderService { } } } - //修改单据状态到未验收 - stockOrderEntity.setStatus(ConstantStatus.SORDER_CHECKED); + //开始回退单据 + //回退逻辑 + //1.需要二次验收,则回退到未验收状态 + //2.不需要二次验收: + // 1. 需要一次验收:则回退到等待校验状态 + // 2. 不需要一次验收:则回退到新增扫码单据状态 + + if (BusTypeCheckUtils.isSecondCheck(bussinessTypeEntity, orderEntity)) { + stockOrderEntity.setStatus(ConstantStatus.SORDER_CHECKED); + } else { + if (BusTypeCheckUtils.isFirstCheck(bussinessTypeEntity, orderEntity)) { + stockOrderEntity.setOrderIdFk(null); + stockOrderEntity.setStatus(ConstantStatus.SORDER_CHECK); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK); + orderEntity.setErpFk(""); + stockOrderDao.updateById(stockOrderEntity); + orderDao.updateOrder(orderEntity); + } else { + orderEntity.setErpFk(""); + stockOrderDao.deleteById(stockOrderEntity.getId()); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); + orderDao.updateOrder(orderEntity); + } + } + + } //更新业务单据数据 diff --git a/api-admin/src/main/java/com/glxp/sale/admin/util/BusTypeCheckUtils.java b/api-admin/src/main/java/com/glxp/sale/admin/util/BusTypeCheckUtils.java new file mode 100644 index 0000000..15c82eb --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/util/BusTypeCheckUtils.java @@ -0,0 +1,102 @@ +package com.glxp.sale.admin.util; + +import com.glxp.sale.admin.constant.ConstantStatus; +import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; +import com.glxp.sale.admin.entity.inout.OrderEntity; + +public class BusTypeCheckUtils { + + public static boolean isFirstCheck(BussinessTypeEntity bussinessTypeEntity, OrderEntity orderEntity) { + if (bussinessTypeEntity.isCheckEnable()) { + if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIMS) { + if (bussinessTypeEntity.isCheckUdims()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_WEBNEW) { + if (bussinessTypeEntity.isCheckWebNew()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAED) { + if (bussinessTypeEntity.isCheckPdaEd()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAUN) { + if (bussinessTypeEntity.isCheckPdaUn()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PC) { + if (bussinessTypeEntity.isCheckPc()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_CHANGE) { + if (bussinessTypeEntity.isCheckChange()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PEACE_CHANGE) { + if (bussinessTypeEntity.isCheckBalacne()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIWMS) { + if (bussinessTypeEntity.isCheckUdiwms()) { + + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_COPY) { + if (bussinessTypeEntity.isCheckCopy()) { + + return true; + } + } + } + + return false; + } + + + public static boolean isSecondCheck(BussinessTypeEntity bussinessTypeEntity, OrderEntity orderEntity) { + + if (bussinessTypeEntity.isSecCheckEnable()) { + if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIMS) { + if (bussinessTypeEntity.isSecCheckUdims()) { + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_WEBNEW) { + if (bussinessTypeEntity.isSecCheckWebNew()) { + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAED) { + if (bussinessTypeEntity.isSecCheckPdaEd()) { + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAUN) { + if (bussinessTypeEntity.isSecCheckPdaUn()) { + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PC) { + if (bussinessTypeEntity.isSecCheckPc()) { + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_CHANGE) { + if (bussinessTypeEntity.isSecCheckChange()) { + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PEACE_CHANGE) { + if (bussinessTypeEntity.isSecCheckBalacne()) { + return true; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_COPY) { + if (bussinessTypeEntity.isSecCheckCopy()) { + return true; + } + } + } + return false; + } +} diff --git a/api-admin/src/main/resources/application.properties b/api-admin/src/main/resources/application.properties index e487e91..cb3acd2 100644 --- a/api-admin/src/main/resources/application.properties +++ b/api-admin/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.profiles.active=dev +spring.profiles.active=test1 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver