1.添加库存查询相关接口

master
x_z 2 years ago
parent 99dc7ea920
commit acb39129e9

@ -0,0 +1,151 @@
package com.glxp.api.controller.inv;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.req.inv.FilterInvProductRequest;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inv.InvProductDetailResponse;
import com.glxp.api.res.inv.InvProductPageResponse;
import com.glxp.api.res.inv.InvProductResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.auth.WarehouseUserService;
import com.glxp.api.service.inv.InvProductDetailService;
import com.glxp.api.service.inv.InvProductService;
import com.glxp.api.util.udi.FilterUdiUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Slf4j
@RestController
public class InvProductController {
@Resource
private InvProductService invProductService;
@Resource
private InvProductDetailService invProductDetailService;
@Resource
private WarehouseUserService warehouseUserService;
@Resource
private CustomerService customerService;
/**
*
*
* @param filterInvProductRequest
* @return
*/
@GetMapping("/spms/inv/product/filter")
public BaseResponse filterList(FilterInvProductRequest filterInvProductRequest) {
boolean showSup = false; //前端控制表格显示列字段
if (StrUtil.isNotBlank(filterInvProductRequest.getUdiCode())) {
filterInvProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvProductRequest.getUdiCode()));
}
if (StrUtil.isBlank(filterInvProductRequest.getInvCode())) {
List<String> invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr());
if (CollUtil.isNotEmpty(invCodes)) {
filterInvProductRequest.setInvCodes(invCodes);
}
}
List<InvProductResponse> list = invProductService.filterList(filterInvProductRequest);
PageInfo<InvProductResponse> pageInfo = new PageInfo<>(list);
InvProductPageResponse<InvProductResponse> pageResponse = new InvProductPageResponse();
pageResponse.setList(pageInfo.getList());
pageResponse.setTotal(pageResponse.getTotal());
pageResponse.setShowSup(showSup);
return ResultVOUtils.success(pageResponse);
}
/**
*
*
* @param filterInvProductDetailRequest
* @return
*/
@GetMapping("/spms/inv/product/filterDetail")
public BaseResponse filterInvProductDetail(FilterInvProductDetailRequest filterInvProductDetailRequest) {
if (StrUtil.isBlank(filterInvProductDetailRequest.getBatchNo())) {
filterInvProductDetailRequest.setBatchNo("empty");
}
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest);
PageInfo<InvProductDetailEntity> pageInfo = new PageInfo<>(invProductDetailEntities);
List<InvProductDetailResponse> list = new ArrayList<>();
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
invProductDetailEntities.forEach(invProductDetailEntity -> {
InvProductDetailResponse response = new InvProductDetailResponse();
BeanUtil.copyProperties(invProductDetailEntity, response);
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
response.setMainActionStr("出库");
response.setOutCount(invProductDetailEntity.getCount());
} else {
response.setMainActionStr("入库");
response.setInCount(invProductDetailEntity.getCount());
}
list.add(response);
});
}
PageSimpleResponse<InvProductDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(list);
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*
* @param deleteRequest
* @param bindingResult
* @return
*/
@PostMapping("/spms/inv/product/delete")
public BaseResponse deleteInvProduct(@RequestBody DeleteRequest deleteRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
String id = deleteRequest.getId();
InvProductEntity invProductEntity = invProductService.findById(deleteRequest.getId());
if (null != invProductEntity) {
FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest();
detailRequest.setSupId(invProductEntity.getSupId());
detailRequest.setRelId(String.valueOf(invProductEntity.getRelIdFk()));
detailRequest.setInvCode(invProductEntity.getInvCode());
if (StrUtil.isBlank(invProductEntity.getBatchNo())) {
detailRequest.setBatchNo("empty");
} else {
detailRequest.setBatchNo(invProductEntity.getBatchNo());
}
invProductService.deleteById(id);
invProductDetailService.deleteInvProductDetail(detailRequest);
return ResultVOUtils.success("删除成功");
} else {
return ResultVOUtils.error(500, "删除失败");
}
}
}

@ -41,7 +41,7 @@ public interface WarehouseUserDao {
List<WarehouseUserEntity> selectListkey(FilterInvLinkDataRequest filterInvLinkDataRequest);
List<WarehouseUserEntity> selectNotSelectUserid(@Param("userIds")List<Long> userIds );
List<WarehouseUserEntity> selectCodeByUser(@Param("userId") String userId);
List<String> selectCodeByUser(@Param("userId") String userId);
void deleteByCode(@Param("code") String code);

@ -1,10 +1,21 @@
package com.glxp.api.dao.inv;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvProductRequest;
import com.glxp.api.res.inv.InvProductResponse;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface InvProductDao extends BaseMapperPlus<InvProductDao, InvProductEntity, InvProductEntity> {
/**
*
*
* @param filterInvProductRequest
* @return
*/
List<InvProductResponse> filterList(FilterInvProductRequest filterInvProductRequest);
}

@ -1,10 +1,22 @@
package com.glxp.api.dao.inv;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface InvProductDetailDao extends BaseMapperPlus<InvProductDetailDao, InvProductDetailEntity, InvProductDetailEntity> {
/**
*
*
* @param filterInvProductDetailRequest
* @return
*/
List<InvProductDetailEntity> filterInvProductDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest);
boolean deleteInvProductDetail(FilterInvProductDetailRequest detailRequest);
}

@ -0,0 +1,83 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class FilterInvProductDetailRequest extends ListPageRequest {
/**
* UDI
*/
private String code;
/**
*
*/
private String mainAction;
/**
*
*/
private String action;
/**
* ID
*/
private String supId;
/**
* ID
*/
private String relId;
/**
*
*/
private String nameCode;
/**
*
*/
private String orderId;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private String invSpaceCode;
/**
*
*/
private String originCode;
/**
*
*/
private String batchNo;
/**
* ID
*/
private List<String> productIdList;
/**
*
*/
private String updateTime;
}

@ -0,0 +1,101 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class FilterInvProductRequest extends ListPageRequest {
private String id;
/**
*
*/
private String cpmctymc;
/**
* DI
*/
private String nameCode;
/**
* UDI
*/
private String udiCode;
/**
* ID
*/
private String relIdFk;
/**
*
*/
private String ggxh;
/**
*
*/
private String batchNo;
/**
*
*/
private String productionDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String ylqxzcrbarmc;
/**
*
*/
private String zczbhhzbapzbh;
/**
* ID
*/
private String customerId;
/**
* ID
*/
private String supId;
/**
*
*/
private String supName;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private List<String> invCodes;
/**
*
*/
private String cplb;
}

@ -0,0 +1,124 @@
package com.glxp.api.res.inv;
import lombok.Data;
import java.util.Date;
/**
* VO
*/
@Data
public class InvProductDetailResponse {
private Integer id;
/**
* UDI
*/
private String code;
/**
*
*/
private String orderId;
/**
* ID
*/
private Long relId;
/**
*
*/
private String nameCode;
/**
*
*/
private String batchNo;
/**
*
*/
private String produceDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String serialNo;
/**
*
*/
private String supId;
/**
*
*/
private Integer count;
/**
*
*/
private Integer reCount;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private String invSpaceCode;
/**
*
*/
private String originCode;
/**
*
*/
private Integer purchaseType;
/**
*
*/
private Date updateTime;
/**
*
*/
private String mainAction;
/**
*
*/
private String action;
/**
*
*/
private String mainActionStr;
/**
*
*/
private Integer inCount;
/**
*
*/
private Integer outCount;
}

@ -0,0 +1,17 @@
package com.glxp.api.res.inv;
import com.glxp.api.res.PageSimpleResponse;
import lombok.Data;
/**
*
*/
@Data
public class InvProductPageResponse<T> extends PageSimpleResponse<T> {
/**
*
*/
private boolean showSup;
}

@ -0,0 +1,10 @@
package com.glxp.api.res.inv;
import lombok.Data;
/**
* VO
*/
@Data
public class InvProductResponse {
}

@ -22,7 +22,7 @@ public interface WarehouseUserService {
List<WarehouseUserEntity> getListByCode(String code);
List<WarehouseUserEntity> selectCodeByUser(String userId);
List<String> selectCodeByUser(String userId);
List<WarehouseUserEntity> filterWarehouseUsers(FilterInvUserRequest filterInvUserRequest);

@ -45,7 +45,7 @@ public class WarehouseUserServiceImpl implements WarehouseUserService {
}
@Override
public List<WarehouseUserEntity> selectCodeByUser(String userId) {
public List<String> selectCodeByUser(String userId) {
return warehouseUserDao.selectCodeByUser(userId);
}

@ -1,7 +1,7 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import java.util.List;
@ -12,4 +12,14 @@ public interface InvProductDetailService {
List<InvProductDetailEntity> selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode);
boolean insertList(List<InvProductDetailEntity> invProductDetailEntities);
/**
*
*
* @param filterInvProductDetailRequest
* @return
*/
List<InvProductDetailEntity> filterInvProductDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest);
boolean deleteInvProductDetail(FilterInvProductDetailRequest detailRequest);
}

@ -1,6 +1,8 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvProductRequest;
import com.glxp.api.res.inv.InvProductResponse;
import java.util.List;
@ -15,4 +17,27 @@ public interface InvProductService {
InvProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode);
/**
*
*
* @param filterInvProductRequest
* @return
*/
List<InvProductResponse> filterList(FilterInvProductRequest filterInvProductRequest);
/**
* ID
*
* @param id
* @return
*/
InvProductEntity findById(String id);
/**
*
*
* @param id
* @return
*/
boolean deleteById(String id);
}

@ -1,14 +1,16 @@
package com.glxp.api.service.inv.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.inv.InvProductDetailDao;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.service.inv.InvProductDetailService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Service
@ -32,4 +34,20 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
public boolean insertList(List<InvProductDetailEntity> invProductDetailEntities) {
return invProductDetailDao.insertBatch(invProductDetailEntities);
}
@Override
public List<InvProductDetailEntity> filterInvProductDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest) {
if (null == filterInvProductDetailRequest) {
return Collections.emptyList();
}
if (null != filterInvProductDetailRequest.getPage() && null != filterInvProductDetailRequest.getLimit()) {
PageHelper.offsetPage((filterInvProductDetailRequest.getPage() - 1) * filterInvProductDetailRequest.getLimit(), filterInvProductDetailRequest.getLimit());
}
return invProductDetailDao.filterInvProductDetailList(filterInvProductDetailRequest);
}
@Override
public boolean deleteInvProductDetail(FilterInvProductDetailRequest detailRequest) {
return invProductDetailDao.deleteInvProductDetail(detailRequest);
}
}

@ -1,13 +1,17 @@
package com.glxp.api.service.inv.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.inv.InvProductDao;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvProductRequest;
import com.glxp.api.res.inv.InvProductResponse;
import com.glxp.api.service.inv.InvProductService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Service
@ -37,4 +41,25 @@ public class InvProductServiceImpl implements InvProductService {
return invProductDao.selectOne(new QueryWrapper<InvProductEntity>().eq("relIdFk", relId).eq("batchNo", batchNo).eq("supId", supId).eq("deptCode", deptCode).eq("invCode", invCode));
}
@Override
public List<InvProductResponse> filterList(FilterInvProductRequest filterInvProductRequest) {
if (null == filterInvProductRequest) {
return Collections.emptyList();
}
if (null != filterInvProductRequest.getPage() && null != filterInvProductRequest.getLimit()) {
PageHelper.offsetPage((filterInvProductRequest.getPage() - 1) * filterInvProductRequest.getLimit(), filterInvProductRequest.getLimit());
}
return invProductDao.filterList(filterInvProductRequest);
}
@Override
public InvProductEntity findById(String id) {
return invProductDao.selectById(id);
}
@Override
public boolean deleteById(String id) {
return invProductDao.deleteById(id) == 1 ? true : false;
}
}

@ -303,9 +303,8 @@
</select>
<select id="selectCodeByUser" resultMap="BaseResultMap">
select auth_warehouse_user.*
<select id="selectCodeByUser" resultType="java.lang.String">
select code
from auth_warehouse_user
where userId = #{userId}
</select>

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inv.InvProductDao">
<select id="filterList" resultType="com.glxp.api.res.inv.InvProductResponse"
parameterType="com.glxp.api.req.inv.FilterInvProductRequest">
select ip.id,
ip.nameCode,
bp.cpmctymc,
ip.relIdFk,
bp.ggxh,
ip.batchNo,
ip.productionDate,
ip.expireDate,
bp.ylqxzcrbarmc,
bp.zczbhhzbapzbh,
ip.inCount,
ip.outCount,
ip.reCount,
ip.customerId,
basic_corp.name supName,
ip.supId,
auth_dept.name deptName,
auth_warehouse.name invName,
ip.deptCode,
ip.invCode
from inv_product ip
inner join basic_udirel on ip.relIdFk = basic_udirel.id
inner join basic_products bp on basic_udirel.uuid = bp.uuid
left join basic_corp on ip.supId = basic_corp.erpId
left join auth_dept on auth_dept.code = ip.deptCode
left join auth_warehouse on auth_warehouse.code = ip.invCode
<where>
bp.diType = 1
<if test="cpmctymc != null and cpmctymc != ''">
AND bp.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="nameCode != null and nameCode != ''">
AND ip.nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="relIdFk != null and relIdFk != ''">
AND ip.relIdFk = #{relIdFk}
</if>
<if test="ggxh != null and ggxh != ''">
AND bp.ggxh like concat('%', #{ggxh}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND ip.batchNo like concat('%', #{batchNo}, '%')
</if>
<if test="productionDate != null and productionDate != ''">
AND ip.productionDate = #{productionDate}
</if>
<if test="expireDate != null and expireDate != ''">
AND ip.expireDate = #{expireDate}
</if>
<if test="ylqxzcrbarmc != null and ylqxzcrbarmc != ''">
AND bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc}, '%')
</if>
<if test="zczbhhzbapzbh != null and zczbhhzbapzbh != ''">
AND bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%')
</if>
<if test="customerId != null and customerId != ''">
AND ip.customerId = #{customerId}
</if>
<if test="supId != null and supId != ''">
AND ip.supId = #{supId}
</if>
<if test="deptCode != null and deptCode != ''">
AND ip.deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND ip.invCode = #{invCode}
</if>
<if test="invCodes != null and invCodes.size() != 0">
AND ip.invCode in
<foreach collection="invCodes" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inv.InvProductDetailDao">
<select id="filterInvProductDetailList" resultType="com.glxp.api.entity.inv.InvProductDetailEntity"
parameterType="com.glxp.api.req.inv.FilterInvProductDetailRequest">
select *
from inv_product_detail
<where>
<if test="code != null and code != ''">
AND originCode = #{code}
</if>
<if test="mainAction != null and mainAction != ''">
AND mainAction = #{mainAction}
</if>
<if test="action != null and action != ''">
AND action = #{action}
</if>
<if test="supId != null and supId != ''">
and supId = #{supId}
</if>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="nameCode != null and nameCode != ''">
AND nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="orderId != null and orderId != ''">
AND orderId = #{orderId}
</if>
<if test="deptCode != null and deptCode != ''">
AND deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
<if test="originCode != null and originCode != ''">
AND originCode = #{originCode}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == 'empty'">
AND batchNo is null
</if>
<if test="productIdList != null and productIdList.size() != 0">
AND relId in
<foreach collection="productIdList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="updateTime != null and updateTime != ''">
AND updateTime <![CDATA[ <= ]]> #{updateTime}
</if>
</where>
</select>
<delete id="deleteInvProductDetail">
delete
from inv_product_detail
<where>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="batchNo != null and batchNo != '' and batchNo != 'empty'">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == 'empty'">
AND batchNo is null
</if>
<if test="supId != null and supId != ''">
AND supId = #{supId}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
</where>
</delete>
</mapper>
Loading…
Cancel
Save