1.提交库存统计功能代码

2.查询参数类添加注释
master
MrZhai 3 years ago
parent 9a2e03aeae
commit 08b8f0f92c

@ -1,7 +1,7 @@
package com.glxp.sale.admin.controller.inventory; package com.glxp.sale.admin.controller.inventory;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo; 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.ConstantStatus;
import com.glxp.sale.admin.constant.ConstantType; import com.glxp.sale.admin.constant.ConstantType;
import com.glxp.sale.admin.entity.basic.UdiInfoEntity; 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.inventory.InvProductEntity;
import com.glxp.sale.admin.entity.udid.UdiEntity; import com.glxp.sale.admin.entity.udid.UdiEntity;
import com.glxp.sale.admin.req.info.DeleteRequest; 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.FilterCodeTraceRequest;
import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.sale.admin.req.inventory.FilterInvProductRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductRequest;
@ -84,7 +83,6 @@ public class InvProductsController {
return ResultVOUtils.success(pageSimpleResponse); return ResultVOUtils.success(pageSimpleResponse);
} }
@GetMapping("spms/inv/products/filterDetail") @GetMapping("spms/inv/products/filterDetail")
public BaseResponse filterInvProductDetail(FilterInvProductDetailRequest filterInvProductRequest) { public BaseResponse filterInvProductDetail(FilterInvProductDetailRequest filterInvProductRequest) {
if (SYSTEM_CUSTOMER_ID.equals(filterInvProductRequest.getCustomerId())) { 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<InvProductResponse> 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<InvProductResponse> pageInfo = new PageInfo<>(invProductResponses);
InvProductPageRespnonse<InvProductResponse> pageSimpleResponse = new InvProductPageRespnonse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(pageInfo.getList());
pageSimpleResponse.setShowSup(showSup);
return ResultVOUtils.success(pageSimpleResponse);
}
} }

@ -29,4 +29,7 @@ public interface InvProductDao {
boolean deleteById(@Param("id") String id); boolean deleteById(@Param("id") String id);
//库存统计查询
List<InvProductResponse> stockStatistics(FilterInvProductRequest filterInvProductRequest);
} }

@ -7,21 +7,29 @@ import lombok.Data;
public class FilterInvProductRequest extends ListPageRequest { public class FilterInvProductRequest extends ListPageRequest {
private String id; private String id;
//产品名称
private String cpmctymc; private String cpmctymc;
//产品标识DI
private String nameCode; private String nameCode;
private String relIdFk; private String relIdFk;
//规格型号
private String ggxh; private String ggxh;
//批次号
private String batchNo; private String batchNo;
private String productionDate; private String productionDate;
private String expireDate; private String expireDate;
//生产厂家
private String ylqxzcrbarmc; private String ylqxzcrbarmc;
//批准文号
private String zczbhhzbapzbh; private String zczbhhzbapzbh;
private String customerId; private String customerId;
private String productsName; private String productsName;
private String supId; private String supId;
//供应商名称
private String unitFk; private String unitFk;
//仓位码
private String invStorageCode; private String invStorageCode;
//货位码
private String invWarehouseCode; private String invWarehouseCode;
private String groupType; private String groupType;
} }

@ -23,4 +23,6 @@ public interface InvProductService {
boolean deleteById(String id); boolean deleteById(String id);
//库存统计
List<InvProductResponse> stockStatistics(FilterInvProductRequest filterInvProductRequest);
} }

@ -1,5 +1,6 @@
package com.glxp.sale.admin.service.inventory.impl; package com.glxp.sale.admin.service.inventory.impl;
import cn.hutool.core.collection.CollUtil;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.sale.admin.dao.inventory.InvProductDao; import com.glxp.sale.admin.dao.inventory.InvProductDao;
import com.glxp.sale.admin.entity.inventory.InvProductEntity; 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 org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
@Service @Service
public class InvProductServiceImpl implements InvProductService { public class InvProductServiceImpl implements InvProductService {
@ -79,4 +80,33 @@ public class InvProductServiceImpl implements InvProductService {
public boolean deleteById(String id) { public boolean deleteById(String id) {
return invProductDao.deleteById(id); return invProductDao.deleteById(id);
} }
@Override
public List<InvProductResponse> stockStatistics(FilterInvProductRequest filterInvProductRequest) {
if (filterInvProductRequest == null) {
return Collections.emptyList();
}
List<InvProductResponse> data = invProductDao.stockStatistics(filterInvProductRequest);
if (CollUtil.isNotEmpty(data)) {
//默认根据产品id分组
Set<String> relIdFkSet = new HashSet<>();
data.forEach(invProductResponse -> {
relIdFkSet.add(invProductResponse.getRelIdFk());
});
List<InvProductResponse> 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();
}
} }

@ -154,6 +154,58 @@
GROUP BY #{groupType} GROUP BY #{groupType}
</if> </if>
</select> </select>
<select id="stockStatistics" resultType="com.glxp.sale.admin.res.inventory.InvProductResponse"
parameterType="com.glxp.sale.admin.req.inventory.FilterInvProductRequest">
select bp.cpmctymc,
bp.nameCode,
ip.relIdFk,
bp.ggxh,
ip.batchNo,
ip.productionDate,
ip.expireDate,
bp.ylqxzcrbarmc,
bp.zczbhhzbapzbh,
ip.reCount,
ip.customerId,
bc.name companyName,
ip.unitFk,
ip.supId,
iw.name invStorageName,
inCount,
outCount
from inv_product ip
inner join basic_udirel bu on ip.relIdFk = bu.id
inner join basic_products bp on bu.uuid = bp.uuid
left join basic_corp bc on ip.supId = bc.erpId
left join inv_warehouse iw on iw.code = ip.invStorageCode
<where>
bp.diType = 1
<if test="cpmctymc != null and cpmctymc != ''">
and bp.cpmctymc like concat('%', #{cpmctymc,jdbcType=VARCHAR}, '%')
</if>
<if test="nameCode != null and nameCode != ''">
and bp.nameCode like concat('%', #{nameCode,jdbcType=VARCHAR}, '%')
</if>
<if test="ggxh != null and ggxh != ''">
and bp.ggxh like concat('%', #{ggxh,jdbcType=VARCHAR}, '%')
</if>
<if test="zczbhhzbapzbh != null and zczbhhzbapzbh != ''">
and bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh,jdbcType=VARCHAR}, '%')
</if>
<if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
AND bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc,jdbcType=VARCHAR}, '%')
</if>
<if test="supId != '' and supId != null">
AND supId like concat('%', #{supId,jdbcType=VARCHAR}, '%')
</if>
<if test="invStorageCode != '' and invStorageCode != null">
AND invStorageCode like concat('%', #{invStorageCode,jdbcType=VARCHAR}, '%')
</if>
<if test="batchNo != '' and batchNo != null">
AND ip.batchNo like concat('%', #{batchNo,jdbcType=VARCHAR}, '%')
</if>
</where>
</select>
<insert id="insertInvProduct" keyProperty="id" <insert id="insertInvProduct" keyProperty="id"
parameterType="com.glxp.sale.admin.entity.inventory.InvProductEntity"> parameterType="com.glxp.sale.admin.entity.inventory.InvProductEntity">
insert INTO inv_product insert INTO inv_product

Loading…
Cancel
Save