diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java index 537713e..7c8fc41 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java @@ -1,7 +1,7 @@ package com.glxp.sale.admin.controller.inventory; +import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; -import com.glxp.sale.admin.constant.Constant; import com.glxp.sale.admin.constant.ConstantStatus; import com.glxp.sale.admin.constant.ConstantType; import com.glxp.sale.admin.entity.basic.UdiInfoEntity; @@ -11,7 +11,6 @@ import com.glxp.sale.admin.entity.inventory.InvProductDetailEntity; import com.glxp.sale.admin.entity.inventory.InvProductEntity; import com.glxp.sale.admin.entity.udid.UdiEntity; import com.glxp.sale.admin.req.info.DeleteRequest; -import com.glxp.sale.admin.req.inout.OrderQueryRequest; import com.glxp.sale.admin.req.inventory.FilterCodeTraceRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductRequest; @@ -84,7 +83,6 @@ public class InvProductsController { return ResultVOUtils.success(pageSimpleResponse); } - @GetMapping("spms/inv/products/filterDetail") public BaseResponse filterInvProductDetail(FilterInvProductDetailRequest filterInvProductRequest) { if (SYSTEM_CUSTOMER_ID.equals(filterInvProductRequest.getCustomerId())) { @@ -264,5 +262,42 @@ public class InvProductsController { } + /** + * 库存统计 + * + * @param filterInvProductRequest + * @return + */ + @GetMapping("/spms/inv/products/stockStatistics") + public BaseResponse stockStatistics(FilterInvProductRequest filterInvProductRequest) { + boolean showSup = false; + if (SYSTEM_CUSTOMER_ID.equals(filterInvProductRequest.getCustomerId())) { + filterInvProductRequest.setCustomerId(null); + showSup = true; + } else { + CompanyEntity companyEntity = companyService.findCompany(Long.parseLong(filterInvProductRequest.getCustomerId())); + filterInvProductRequest.setSupId(companyEntity.getUnitIdFk()); + filterInvProductRequest.setCustomerId(null); + } + + List invProductResponses; + if (StrUtil.isBlank(filterInvProductRequest.getCpmctymc()) && StrUtil.isBlank(filterInvProductRequest.getNameCode()) + && StrUtil.isBlank(filterInvProductRequest.getGgxh()) && StrUtil.isBlank(filterInvProductRequest.getZczbhhzbapzbh()) + && StrUtil.isBlank(filterInvProductRequest.getYlqxzcrbarmc()) && StrUtil.isBlank(filterInvProductRequest.getSupId()) + && StrUtil.isBlank(filterInvProductRequest.getInvStorageCode()) && StrUtil.isBlank(filterInvProductRequest.getBatchNo())) { + //参数为空,走库存查询逻辑 + invProductResponses = invProductService.filterJoinInvProduct(filterInvProductRequest); + } else { + //参数不为空,走库存统计逻辑 + invProductResponses = invProductService.stockStatistics(filterInvProductRequest); + } + PageInfo pageInfo = new PageInfo<>(invProductResponses); + InvProductPageRespnonse pageSimpleResponse = new InvProductPageRespnonse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(pageInfo.getList()); + pageSimpleResponse.setShowSup(showSup); + return ResultVOUtils.success(pageSimpleResponse); + } + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvProductDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvProductDao.java index 8ed0582..ac89dcd 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvProductDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inventory/InvProductDao.java @@ -29,4 +29,7 @@ public interface InvProductDao { boolean deleteById(@Param("id") String id); + //库存统计查询 + List stockStatistics(FilterInvProductRequest filterInvProductRequest); + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/req/inventory/FilterInvProductRequest.java b/api-admin/src/main/java/com/glxp/sale/admin/req/inventory/FilterInvProductRequest.java index bb185a8..ed32d8a 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/req/inventory/FilterInvProductRequest.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/req/inventory/FilterInvProductRequest.java @@ -7,21 +7,29 @@ import lombok.Data; public class FilterInvProductRequest extends ListPageRequest { private String id; + //产品名称 private String cpmctymc; + //产品标识DI private String nameCode; private String relIdFk; + //规格型号 private String ggxh; + //批次号 private String batchNo; private String productionDate; private String expireDate; + //生产厂家 private String ylqxzcrbarmc; + //批准文号 private String zczbhhzbapzbh; private String customerId; private String productsName; private String supId; + //供应商名称 private String unitFk; + //仓位码 private String invStorageCode; + //货位码 private String invWarehouseCode; - private String groupType; } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/InvProductService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/InvProductService.java index c9f25f7..867dc27 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/InvProductService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/InvProductService.java @@ -23,4 +23,6 @@ public interface InvProductService { boolean deleteById(String id); + //库存统计 + List stockStatistics(FilterInvProductRequest filterInvProductRequest); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/impl/InvProductServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/impl/InvProductServiceImpl.java index f102cc4..be6ddf2 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/impl/InvProductServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inventory/impl/InvProductServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.sale.admin.service.inventory.impl; +import cn.hutool.core.collection.CollUtil; import com.github.pagehelper.PageHelper; import com.glxp.sale.admin.dao.inventory.InvProductDao; import com.glxp.sale.admin.entity.inventory.InvProductEntity; @@ -9,8 +10,8 @@ import com.glxp.sale.admin.service.inventory.InvProductService; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service public class InvProductServiceImpl implements InvProductService { @@ -79,4 +80,33 @@ public class InvProductServiceImpl implements InvProductService { public boolean deleteById(String id) { return invProductDao.deleteById(id); } + + @Override + public List stockStatistics(FilterInvProductRequest filterInvProductRequest) { + if (filterInvProductRequest == null) { + return Collections.emptyList(); + } + List data = invProductDao.stockStatistics(filterInvProductRequest); + if (CollUtil.isNotEmpty(data)) { + //默认根据产品id分组 + Set relIdFkSet = new HashSet<>(); + data.forEach(invProductResponse -> { + relIdFkSet.add(invProductResponse.getRelIdFk()); + }); + + List result = new ArrayList<>(); + + for (String relIdFk : relIdFkSet) { + InvProductResponse invProductResponse = data.stream().filter(product -> product.getRelIdFk().equals(relIdFk)).collect(Collectors.toList()).get(0); + int inCount = data.stream().filter(product -> product.getRelIdFk().equals(relIdFk)).mapToInt(InvProductResponse::getInCount).sum(); + int outCount = data.stream().filter(product -> product.getRelIdFk().equals(relIdFk)).mapToInt(InvProductResponse::getOutCount).sum(); + invProductResponse.setInCount(inCount); + invProductResponse.setOutCount(outCount); + invProductResponse.setReCount(inCount - outCount); + result.add(invProductResponse); + } + return result; + } + return Collections.emptyList(); + } } diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml index 702f5a0..5163ede 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvProductDao.xml @@ -154,6 +154,58 @@ GROUP BY #{groupType} + insert INTO inv_product