From 01decc48ce0887ec0d59ecb19e0083a48bb20f34 Mon Sep 17 00:00:00 2001 From: x_z Date: Wed, 27 Jul 2022 16:59:14 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8D=95=E6=8D=AE=E5=88=A0=E9=99=A4=EF=BC=8C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=A2=84=E9=AA=8C=E6=94=B6=E5=BA=93=E5=BA=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/basic/BussinessLocalTypeDao.java | 7 + .../inventory/InvPreInProductDetailDao.java | 7 + .../service/inout/impl/OrderServiceImpl.java | 188 ++++++++++++------ .../mapper/basic/BussinessLocalTypeDao.xml | 6 + .../inventory/InvPreInProductDetailDao.xml | 8 + 5 files changed, 157 insertions(+), 59 deletions(-) diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java index 205efa38..31d029f4 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java @@ -38,4 +38,11 @@ public interface BussinessLocalTypeDao { boolean deleteById(@Param("id") String id); List filterFoeThirdSys(); + + /** + * 根据扫码单据类型,关联查询业务单据是否是预验收单据类型 + * + * @param action + */ + boolean selectPreInByOrderType(String action); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreInProductDetailDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreInProductDetailDao.java index 2c03dd44..7a1231b2 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreInProductDetailDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreInProductDetailDao.java @@ -28,4 +28,11 @@ public interface InvPreInProductDetailDao { int statCount(FilterInvProductDetailRequest filterInvProductDetailRequest); List findAllCode(FilterInvProductDetailRequest filterInvProductDetailRequest); + + /** + * 根据orderId删除预验收库存详情 + * + * @param orderIdFk 扫码单据ID + */ + boolean deleteByOrderId(String orderIdFk); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java index 9152647b..b4ffdb15 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java @@ -9,6 +9,7 @@ import com.glxp.api.admin.constant.Constant; import com.glxp.api.admin.constant.ConstantStatus; import com.glxp.api.admin.constant.ConstantType; import com.glxp.api.admin.dao.basic.BasicThirdSysBusApiDao; +import com.glxp.api.admin.dao.basic.BussinessLocalTypeDao; import com.glxp.api.admin.dao.basic.BussinessTypeDao; import com.glxp.api.admin.dao.business.StockOrderDao; import com.glxp.api.admin.dao.business.StockOrderDetailDao; @@ -16,10 +17,7 @@ import com.glxp.api.admin.dao.inout.CodesDao; import com.glxp.api.admin.dao.inout.CodesTempDao; import com.glxp.api.admin.dao.inout.OrderDao; import com.glxp.api.admin.dao.inout.OrderDetailDao; -import com.glxp.api.admin.dao.inventory.InvProductDao; -import com.glxp.api.admin.dao.inventory.InvProductDetailDao; -import com.glxp.api.admin.dao.inventory.InvSubWarehouseDao; -import com.glxp.api.admin.dao.inventory.InvWarehouseDao; +import com.glxp.api.admin.dao.inventory.*; import com.glxp.api.admin.entity.basic.BasicThirdSysBusApiEntity; import com.glxp.api.admin.entity.basic.BussinessTypeEntity; import com.glxp.api.admin.entity.business.StockOrderEntity; @@ -65,15 +63,15 @@ public class OrderServiceImpl implements OrderService { @Resource InvWarehouseDao invWarehouseDao; @Resource - InvSubWarehouseService invSubWarehouseService; + private InvSubWarehouseService invSubWarehouseService; @Resource - CodesDao codesDao; + private CodesDao codesDao; @Resource - CodesTempDao codesTempDao; + private CodesTempDao codesTempDao; @Resource - SystemParamConfigService systemParamConfigService; + private SystemParamConfigService systemParamConfigService; @Resource - GennerOrderUtils gennerOrderUtils; + private GennerOrderUtils gennerOrderUtils; @Resource private BasicThirdSysBusApiDao basicThirdSysBusApiDao; @Resource @@ -86,6 +84,12 @@ public class OrderServiceImpl implements OrderService { private OrderDetailDao orderDetailDao; @Resource private InvSubWarehouseDao invSubWarehouseDao; + @Resource + private BussinessLocalTypeDao bussinessLocalTypeDao; + @Resource + private InvPreInProductDao invPreInProductDao; + @Resource + private InvPreInProductDetailDao invPreInProductDetailDao; @Override public List listOrders(OrderQueryRequest orderQueryRequest) { @@ -275,7 +279,7 @@ public class OrderServiceImpl implements OrderService { supplementOrder.setInvWarehouseCode(order.getFromSubInvCode()); } else { List invSubWarehouseEntities = invSubWarehouseService.findByParentId(supplementOrder.getLocStorageCode()); - if (CollUtil.isNotEmpty(invSubWarehouseEntities) && invSubWarehouseEntities.size() > 0) { + if (CollUtil.isNotEmpty(invSubWarehouseEntities) && invSubWarehouseEntities.size() > 0) { supplementOrder.setInvWarehouseCode(invSubWarehouseEntities.get(0).getCode()); } } @@ -487,59 +491,115 @@ public class OrderServiceImpl implements OrderService { orderFilterRequest.setId(id); OrderEntity orderEntity = orderDao.findOne(orderFilterRequest); if (orderEntity.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) { - //查询库存详情 - FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); - filterInvProductDetailRequest.setOrderIdFk(id); - List invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); - Map> invProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk)); - - List invProductList = new ArrayList<>(invProductDetailMap.keySet().size()); - - for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { - FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); - filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk()); - filterInvProductRequest.setSupId(invProductDetailEntity.getSupId()); - filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode()); - filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode()); - if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) { - filterInvProductRequest.setBatchNo("empty"); - } else { - filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo()); - } - List invProductEntities = invProductDao.filterInvProduct(filterInvProductRequest); - InvProductEntity productEntity = invProductEntities.get(0); - if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) { - //入库,在原有库存基础上减库存 - int count = productEntity.getInCount() - invProductDetailEntity.getCount(); - productEntity.setInCount(count); - } else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) { - //出库,在原有库存上增加库存 - int count = productEntity.getOutCount() - invProductDetailEntity.getCount(); - productEntity.setOutCount(count); - } - - invProductList.add(productEntity); - } - //删除单据相关数据,更新库存 try { - //删除库存详情 - invProductDetailDao.deleteByOrderId(id); - //更新库存 - for (InvProductEntity invProductEntity : invProductList) { - //查询库存码详情,如果库存码详情为空,则删除此库存 - FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest(); - detailParams.setBatchNo(invProductEntity.getBatchNo()); - detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode())); - detailParams.setProductIdFk(invProductEntity.getRelIdFk()); - int count = invProductDetailDao.statCount(detailParams); - if (count == 0) { - //如果库存码详情为空,则删除此库存 - invProductDao.deleteById(String.valueOf(invProductEntity.getId())); - } else { - invProductDao.updateInvProduct(invProductEntity); + //判断单据是否是预验收单据,如果是预验收单据,则删除预验收库库存 + if (isPreInOrder(orderEntity)) { + //查询预验收库详情 + FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); + filterInvProductDetailRequest.setOrderIdFk(id); + List invProductDetailEntities = invPreInProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); + Map> invPreInProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk)); + + List invPreInProductList = new ArrayList<>(invPreInProductDetailMap.keySet().size()); + + for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { + FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); + filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk()); + filterInvProductRequest.setSupId(invProductDetailEntity.getSupId()); + filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode()); + filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode()); + if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) { + filterInvProductRequest.setBatchNo("empty"); + } else { + filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo()); + } + List invPerInProductEntities = invPreInProductDao.filterInvProduct(filterInvProductRequest); + InvProductEntity invProductEntity = invPerInProductEntities.get(0); + if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) { + //入库,在原有库存基础上减库存 + int count = invProductEntity.getInCount() - invProductDetailEntity.getCount(); + invProductEntity.setInCount(count); + } else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) { + //出库,在原有库存上增加库存 + int count = invProductEntity.getOutCount() - invProductDetailEntity.getCount(); + invProductEntity.setOutCount(count); + } + + invPreInProductList.add(invProductEntity); + } + + //删除库存详情 + invPreInProductDetailDao.deleteByOrderId(id); + //更新库存 + for (InvProductEntity invProductEntity : invPreInProductList) { + //查询库存码详情,如果库存码详情为空,则删除此库存 + FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest(); + detailParams.setBatchNo(invProductEntity.getBatchNo()); + detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode())); + detailParams.setProductIdFk(invProductEntity.getRelIdFk()); + int count = invPreInProductDetailDao.statCount(detailParams); + if (count == 0) { + //如果库存码详情为空,则删除此库存 + invPreInProductDao.deleteById(String.valueOf(invProductEntity.getId())); + } else { + invProductDao.updateInvProduct(invProductEntity); + } + } + } else { + //查询库存详情 + FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); + filterInvProductDetailRequest.setOrderIdFk(id); + List invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); + Map> invProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk)); + + List invProductList = new ArrayList<>(invProductDetailMap.keySet().size()); + + for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { + FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); + filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk()); + filterInvProductRequest.setSupId(invProductDetailEntity.getSupId()); + filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode()); + filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode()); + if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) { + filterInvProductRequest.setBatchNo("empty"); + } else { + filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo()); + } + List invProductEntities = invProductDao.filterInvProduct(filterInvProductRequest); + InvProductEntity productEntity = invProductEntities.get(0); + if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) { + //入库,在原有库存基础上减库存 + int count = productEntity.getInCount() - invProductDetailEntity.getCount(); + productEntity.setInCount(count); + } else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) { + //出库,在原有库存上增加库存 + int count = productEntity.getOutCount() - invProductDetailEntity.getCount(); + productEntity.setOutCount(count); + } + + invProductList.add(productEntity); + } + + //删除库存详情 + invProductDetailDao.deleteByOrderId(id); + //更新库存 + for (InvProductEntity invProductEntity : invProductList) { + //查询库存码详情,如果库存码详情为空,则删除此库存 + FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest(); + detailParams.setBatchNo(invProductEntity.getBatchNo()); + detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode())); + detailParams.setProductIdFk(invProductEntity.getRelIdFk()); + int count = invProductDetailDao.statCount(detailParams); + if (count == 0) { + //如果库存码详情为空,则删除此库存 + invProductDao.deleteById(String.valueOf(invProductEntity.getId())); + } else { + invProductDao.updateInvProduct(invProductEntity); + } } } + //删除码详情 codesDao.deleteByOrderId(id); //查询业务单据 @@ -590,6 +650,16 @@ public class OrderServiceImpl implements OrderService { } } + /** + * 判断单据是否是预验收单据 + * + * @param orderEntity + * @return + */ + private boolean isPreInOrder(OrderEntity orderEntity) { + return bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction()); + } + @Override public boolean updateOrderInfo(String actDate, String auditTime, List orderIds) { return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds); diff --git a/api-admin/src/main/resources/mybatis/mapper/basic/BussinessLocalTypeDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/BussinessLocalTypeDao.xml index c665485e..ae54325d 100644 --- a/api-admin/src/main/resources/mybatis/mapper/basic/BussinessLocalTypeDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/basic/BussinessLocalTypeDao.xml @@ -235,4 +235,10 @@ from basic_third_sys_bus_api ); + + diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml index acf0bb70..0964a297 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml @@ -51,6 +51,9 @@ AND invWarehouseCode = #{invWarehouseCode} + + AND orderIdFk = #{orderIdFk} + @@ -225,6 +228,11 @@ + + delete from inv_prein_product_detail + where orderIdFk = #{orderIdFk} + + UPDATE inv_prein_product_detail