diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/BussinessLocalTypeDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/BussinessLocalTypeDao.java index 123d30a..59eb56d 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/BussinessLocalTypeDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/BussinessLocalTypeDao.java @@ -31,4 +31,11 @@ public interface BussinessLocalTypeDao { boolean deleteById(@Param("id") String id); BussinessLocalTypeEntity selectById(String id); + + /** + * 根据扫码单据类型,关联查询业务单据是否是预验收单据类型 + * + * @param action + */ + boolean selectPreInByOrderType(String action); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvPreInProductDetailDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvPreInProductDetailDao.java index 4f0f0ef..325154d 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvPreInProductDetailDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvPreInProductDetailDao.java @@ -30,4 +30,11 @@ public interface InvPreInProductDetailDao { List findAllCode(FilterInvProductDetailRequest filterInvProductDetailRequest); boolean deleteAll(); + + /** + * 根据orderId删除预验收库存详情 + * + * @param orderIdFk 扫码单据ID + */ + boolean deleteByOrderId(String orderIdFk); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java index 43b80be..fb3e8c4 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java @@ -7,12 +7,10 @@ import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageHelper; import com.glxp.sale.admin.constant.ConstantStatus; import com.glxp.sale.admin.constant.ConstantType; +import com.glxp.sale.admin.dao.basic.BussinessLocalTypeDao; import com.glxp.sale.admin.dao.basic.BussinessTypeDao; import com.glxp.sale.admin.dao.inout.*; -import com.glxp.sale.admin.dao.inventory.InvProductDao; -import com.glxp.sale.admin.dao.inventory.InvProductDetailDao; -import com.glxp.sale.admin.dao.inventory.InvSubWarehouseDao; -import com.glxp.sale.admin.dao.inventory.InvWarehouseDao; +import com.glxp.sale.admin.dao.inventory.*; import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; import com.glxp.sale.admin.entity.inout.OrderEntity; import com.glxp.sale.admin.entity.inout.StockOrderEntity; @@ -49,25 +47,25 @@ import java.util.stream.Collectors; public class OrderServiceImpl implements OrderService { @Resource - OrderDao orderDao; + private OrderDao orderDao; @Resource - WarehouseDao warehouseDao; + private WarehouseDao warehouseDao; @Resource - BussinessTypeDao bussinessTypeDao; + private BussinessTypeDao bussinessTypeDao; @Resource - StockOrderDao stockOrderDao; + private StockOrderDao stockOrderDao; @Resource - InvWarehouseDao invWarehouseDao; + private 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 InvProductDao invProductDao; @Resource @@ -78,6 +76,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) { @@ -445,59 +449,114 @@ 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); + } h + } + } 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); //查询业务单据 @@ -553,4 +612,15 @@ public class OrderServiceImpl implements OrderService { return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds); } + + /** + * 判断单据是否是预验收单据 + * + * @param orderEntity + * @return + */ + private boolean isPreInOrder(OrderEntity orderEntity) { + return bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction()); + } + } 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 7f21fee..3d89b86 100644 --- a/api-admin/src/main/resources/mybatis/mapper/basic/BussinessLocalTypeDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/basic/BussinessLocalTypeDao.xml @@ -198,4 +198,10 @@ FROM basic_bustype_local WHERE id = #{id} + + 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 a762813..98f0127 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} +