预验收功能

master
anthonywj 2 years ago
parent ce2bb2475a
commit c5dab991d3

@ -442,7 +442,7 @@ public class IoCodeTempController extends BaseController {
} }
//校验预验收库存是否已存在 //校验预验收库存是否已存在
if (addOrderRequest.isPreCheck()) { if (bussinessTypeEntity.isScanPreIn()) {
InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findOneByCode(code); InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findOneByCode(code);
if (invProductDetailEntity == null) { if (invProductDetailEntity == null) {
return ResultVOUtils.error(500, "预验收库存未存在此产品!"); return ResultVOUtils.error(500, "预验收库存未存在此产品!");
@ -450,7 +450,6 @@ public class IoCodeTempController extends BaseController {
if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo()) if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo())
&& !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) { && !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) {
return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!");
} }
if (StrUtil.isNotEmpty(orderId)) {//非首次添加 if (StrUtil.isNotEmpty(orderId)) {//非首次添加
if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品

@ -2,16 +2,23 @@ package com.glxp.api.controller.inv;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.controller.BaseController; import com.glxp.api.controller.BaseController;
import com.glxp.api.req.inout.FilterOrderRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinRequest; import com.glxp.api.req.inv.FilterInvPreinRequest;
import com.glxp.api.res.inout.IoOrderResponse; import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinOrderResponse; import com.glxp.api.res.inv.InvPreinOrderResponse;
import com.glxp.api.service.inv.InvPreProductDetailService;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinOrderService; import com.glxp.api.service.inv.InvPreinOrderService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.regexp.RE;
import org.springframework.web.bind.annotation.GetMapping; 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 org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -24,7 +31,8 @@ public class InvPreinOrderController extends BaseController {
@Resource @Resource
InvPreinOrderService invPreinOrderService; InvPreinOrderService invPreinOrderService;
@Resource
InvPreinDetailService invPreinDetailService;
@GetMapping("/udiwms/inv/prein/filter") @GetMapping("/udiwms/inv/prein/filter")
public BaseResponse filterOrder(FilterInvPreinRequest filterInvPreinRequest) { public BaseResponse filterOrder(FilterInvPreinRequest filterInvPreinRequest) {
@ -33,4 +41,25 @@ public class InvPreinOrderController extends BaseController {
return ResultVOUtils.page(pageInfo); return ResultVOUtils.page(pageInfo);
} }
@GetMapping("/udiwms/inv/prein/detail")
public BaseResponse filterDetail(FilterInvPreinDetailRequest filterInvPreinDetailRequest) {
List<InvPreinDetailResponse> list = invPreinDetailService.filterList(filterInvPreinDetailRequest);
PageInfo<InvPreinDetailResponse> pageInfo = new PageInfo<>(list);
return ResultVOUtils.page(pageInfo);
}
@AuthRuleAnnotation("")
@PostMapping("udiwms/inv/prein/delete")
public BaseResponse deletById(@RequestBody DeleteRequest deleteRequest) {
if (StrUtil.isEmpty(deleteRequest.getBillNo()))
return ResultVOUtils.error(500, "单据号不能为空");
invPreinOrderService.deleteByOrderId(deleteRequest.getBillNo());
invPreinDetailService.deleteByOrderId(deleteRequest.getBillNo());
return ResultVOUtils.success("删除成功!");
}
} }

@ -3,8 +3,18 @@ package com.glxp.api.dao.inv;
import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.entity.inv.InvPreinOrderEntity; import com.glxp.api.entity.inv.InvPreinOrderEntity;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinRequest;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinOrderResponse;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper @Mapper
public interface InvPreinDetailDao extends BaseMapperPlus<InvPreinDetailDao, InvPreinDetailEntity, InvPreinDetailEntity> { public interface InvPreinDetailDao extends BaseMapperPlus<InvPreinDetailDao, InvPreinDetailEntity, InvPreinDetailEntity> {
List<InvPreinDetailResponse> filterList(FilterInvPreinDetailRequest filterInvPreinDetailRequest);
} }

@ -12,6 +12,6 @@ import java.util.List;
public interface InvPreinOrderDao extends BaseMapperPlus<InvPreinOrderDao, InvPreinOrderEntity, InvPreinOrderEntity> { public interface InvPreinOrderDao extends BaseMapperPlus<InvPreinOrderDao, InvPreinOrderEntity, InvPreinOrderEntity> {
public List<InvPreinOrderResponse> filterList(FilterInvPreinRequest filterInvPreinRequest); List<InvPreinOrderResponse> filterList(FilterInvPreinRequest filterInvPreinRequest);
} }

@ -315,6 +315,10 @@ public class BasicBussinessTypeEntity {
@TableField(value = "preIn") @TableField(value = "preIn")
private boolean preIn; private boolean preIn;
@TableField(value = "preInBack")
private boolean preInBack;
/** /**
* *
*/ */

@ -74,6 +74,9 @@ public class InvPreinOrderEntity {
@TableField(value = "customerId") @TableField(value = "customerId")
private Integer customerId; private Integer customerId;
@TableField(value = "deptCode")
private String deptCode;
/** /**
* *
*/ */

@ -0,0 +1,10 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
@Data
public class FilterInvPreinDetailRequest extends ListPageRequest {
private String orderId;
}

@ -7,5 +7,8 @@ import lombok.Data;
public class FilterInvPreinRequest extends ListPageRequest { public class FilterInvPreinRequest extends ListPageRequest {
private String billNo; private String billNo;
private String fromCorp;
private String startTime;
private String endTime;
} }

@ -82,6 +82,7 @@ public class BasicBussinessTypeResponse {
private String prefix; private String prefix;
private String localPrefix; private String localPrefix;
private boolean preIn; private boolean preIn;
private boolean preInBack;
private boolean outToSpms; private boolean outToSpms;
private boolean ullageFill; private boolean ullageFill;
private boolean scanPreIn; private boolean scanPreIn;
@ -122,4 +123,5 @@ public class BasicBussinessTypeResponse {
*/ */
private String originAction; private String originAction;
} }

@ -209,6 +209,7 @@ public class IoOrderResponse {
private boolean enableSupplementOrder; private boolean enableSupplementOrder;
public String getFromName() { public String getFromName() {
if (StrUtil.isNotEmpty(fromCorpName)) if (StrUtil.isNotEmpty(fromCorpName))

@ -0,0 +1,66 @@
package com.glxp.api.res.inv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class InvPreinDetailResponse {
private Integer id;
/**
*
*/
private String code;
/**
*
*/
private String orderId;
/**
*
*/
private String nameCode;
/**
*
*/
private String batchNo;
/**
*
*/
private String produceDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String serialNo;
/**
*
*/
private Long relId;
/**
*
*/
private int count;
/**
*
*/
private int reCount;
private String productName;
}

@ -69,5 +69,13 @@ public class InvPreinOrderResponse {
*/ */
private String remark; private String remark;
private String billTypeNames;
private String createUserName;
private String updateUserName;
private String reviewUserName;
private String fromCorpName;
private String deptName;
private String invName;
} }

@ -11,6 +11,7 @@ import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinOrderService; import com.glxp.api.service.inv.InvPreinOrderService;
import com.glxp.api.util.udi.FilterUdiUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -512,8 +513,36 @@ public class IoCheckInoutService {
IoOrderEntity preInEntity = orderService.findByBillNo(key); IoOrderEntity preInEntity = orderService.findByBillNo(key);
preInEntity.setPreOutBillNo(orderEntity.getBillNo()); preInEntity.setPreOutBillNo(orderEntity.getBillNo());
orderService.update(preInEntity); orderService.update(preInEntity);
if (bussinessTypeEntity.isPreInBack()) { //预验收如果带回,则清空相关预验收库存;
invPreinOrderService.deleteByOrderId(preInEntity.getBillNo()); invPreinOrderService.deleteByOrderId(preInEntity.getBillNo());
invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); invPreinDetailService.deleteByOrderId(preInEntity.getBillNo());
} else { //预验收如果不带回,则清除已出库相关库存
for (IoCodeEntity codeEntity : codeList) {
if (StrUtil.isEmpty(codeEntity.getSerialNo())) {
InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode());
int count = invPreinDetailEntity.getCount() - 1;
if (count == 0) {
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} else {
invPreinDetailEntity.setCount(count);
invPreinDetailService.update(invPreinDetailEntity);
}
int reCount = invPreinDetailEntity.getReCount() - codeEntity.getReCount();
if (reCount == 0) {
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} else {
invPreinDetailEntity.setReCount(reCount);
invPreinDetailService.update(invPreinDetailEntity);
}
} else {
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
}
}
}
} }
orderEntity.setPreInBillNo(preInBillNo.substring(1)); orderEntity.setPreInBillNo(preInBillNo.substring(1));
orderService.update(orderEntity); orderService.update(orderEntity);

@ -39,4 +39,6 @@ public interface InvPreProductDetailService {
* @param detailRequest * @param detailRequest
*/ */
boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest);
} }

@ -1,11 +1,18 @@
package com.glxp.api.service.inv; package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinRequest;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinOrderResponse;
import java.util.List; import java.util.List;
public interface InvPreinDetailService { public interface InvPreinDetailService {
List<InvPreinDetailResponse> filterList(FilterInvPreinDetailRequest filterInvPreinDetailRequest);
void insertList(List<InvPreinDetailEntity> invPreinDetailEntities); void insertList(List<InvPreinDetailEntity> invPreinDetailEntities);
List<InvPreinDetailEntity> findByCode(String code); List<InvPreinDetailEntity> findByCode(String code);
@ -13,4 +20,12 @@ public interface InvPreinDetailService {
InvPreinDetailEntity findOneByCode(String code); InvPreinDetailEntity findOneByCode(String code);
int deleteByOrderId(String orderId); int deleteByOrderId(String orderId);
InvPreinDetailEntity findByCode(String orderId, String code);
int deleteByCode(String orderId, String code);
int update(InvPreinDetailEntity invPreinDetailEntity);
} }

@ -16,4 +16,6 @@ public interface InvPreinOrderService {
public void insert(InvPreinOrderEntity invPreinOrderEntity); public void insert(InvPreinOrderEntity invPreinOrderEntity);
int deleteByOrderId(String orderId); int deleteByOrderId(String orderId);
} }

@ -83,4 +83,5 @@ public class InvPreProductDetailServiceImpl implements InvPreProductDetailServic
public boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest) { public boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest) {
return invPreProductDetailDao.deleteInvPreProductDetail(detailRequest); return invPreProductDetailDao.deleteInvPreProductDetail(detailRequest);
} }
} }

@ -2,14 +2,19 @@ package com.glxp.api.service.inv.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.inv.InvPreinDetailDao; import com.glxp.api.dao.inv.InvPreinDetailDao;
import com.glxp.api.dao.inv.InvPreinOrderDao; import com.glxp.api.dao.inv.InvPreinOrderDao;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinDetailService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections;
import java.util.List; import java.util.List;
@Service @Service
@ -19,6 +24,17 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService {
@Resource @Resource
InvPreinDetailDao invPreinDetailDao; InvPreinDetailDao invPreinDetailDao;
@Override
public List<InvPreinDetailResponse> filterList(FilterInvPreinDetailRequest filterInvPreinDetailRequest) {
if (null == filterInvPreinDetailRequest) {
return Collections.emptyList();
}
if (null != filterInvPreinDetailRequest.getPage() && null != filterInvPreinDetailRequest.getLimit()) {
PageHelper.offsetPage((filterInvPreinDetailRequest.getPage() - 1) * filterInvPreinDetailRequest.getLimit(), filterInvPreinDetailRequest.getLimit());
}
return invPreinDetailDao.filterList(filterInvPreinDetailRequest);
}
@Override @Override
public void insertList(List<InvPreinDetailEntity> invPreinDetailEntities) { public void insertList(List<InvPreinDetailEntity> invPreinDetailEntities) {
invPreinDetailDao.insertBatch(invPreinDetailEntities); invPreinDetailDao.insertBatch(invPreinDetailEntities);
@ -40,7 +56,27 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService {
@Override @Override
public int deleteByOrderId(String orderId) { public int deleteByOrderId(String orderId) {
return invPreinDetailDao.delete(new QueryWrapper<InvPreinDetailEntity>().eq("orderIdFk", orderId)); return invPreinDetailDao.delete(new QueryWrapper<InvPreinDetailEntity>().eq("orderId", orderId));
}
@Override
public InvPreinDetailEntity findByCode(String orderId, String code) {
List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper<InvPreinDetailEntity>().eq("orderId", orderId).eq("code", code).last("limit 1"));
if (CollUtil.isNotEmpty(invPreinDetailEntities)) {
return invPreinDetailEntities.get(0);
}
return null;
}
@Override
public int deleteByCode(String orderId, String code) {
return invPreinDetailDao.delete(new QueryWrapper<InvPreinDetailEntity>().eq("orderId", orderId).eq("code", code));
}
@Override
public int update(InvPreinDetailEntity invPreinDetailEntity) {
return invPreinDetailDao.updateById(invPreinDetailEntity);
} }

@ -39,7 +39,7 @@ public class InvPreinOrderServiceImpl implements InvPreinOrderService {
@Override @Override
public int deleteByOrderId(String orderId) { public int deleteByOrderId(String orderId) {
return invPreinOrderDao.delete(new QueryWrapper<InvPreinOrderEntity>().eq("orderId", orderId)); return invPreinOrderDao.delete(new QueryWrapper<InvPreinOrderEntity>().eq("billNo", orderId));
} }
} }

@ -63,7 +63,7 @@
defaultUnit, prefix, outToSpms, ullageFill, scanPreIn, vailInv, defaultUnit, prefix, outToSpms, ullageFill, scanPreIn, vailInv,
entrutSpms, codeFillCheck, defaultSubInv, defaultInv, orderVisibleType, entrutSpms, codeFillCheck, defaultSubInv, defaultInv, orderVisibleType,
checkCopy, secCheckCopy, originAction, advanceType, changeEnable, checkCopy, secCheckCopy, originAction, advanceType, changeEnable,
spUse, preIn, supplementAll, createUser, createTime) spUse, preIn, supplementAll, createUser, createTime,preInBack)
values ( values (
#{mainAction}, #{mainAction},
#{action}, #{action},
@ -116,7 +116,7 @@
#{preIn}, #{preIn},
#{supplementAll}, #{supplementAll},
#{createUser}, #{createUser},
#{createTime} #{createTime},#{preInBack}
) )
</insert> </insert>

@ -0,0 +1,18 @@
<?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.InvPreinDetailDao">
<select id="filterList" parameterType="com.glxp.api.req.inv.FilterInvPreinDetailRequest"
resultType="com.glxp.api.res.inv.InvPreinDetailResponse">
select ic.*,
bp.cpmctymc productName
from inv_prein_detail ic
left join basic_udirel bu on bu.id = ic.relId
left join basic_products bp on bu.uuid = bp.uuid
<where>
<if test="orderId != null and orderId != ''">
AND ic.orderId = #{orderId}
</if>
</where>
group by ic.id
</select>
</mapper>

@ -0,0 +1,34 @@
<?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.InvPreinOrderDao">
<select id="filterList" parameterType="com.glxp.api.req.inv.FilterInvPreinRequest"
resultType="com.glxp.api.res.inv.InvPreinOrderResponse">
select io.*,
(select name from basic_bussiness_type bus where bus.action = io.action) billTypeName,
(select name from auth_dept ad where ad.code = io.deptCode) deptName,
(select name from auth_warehouse aw where aw.code = io.invCode) invName,
(select employeeName from auth_user au where au.id = io.createUser) createUserName,
(select employeeName from auth_user au2 where au2.id = io.updateUser) updateUserName,
(select employeeName from auth_user au3 where au3.id = io.reviewUser) reviewUserName,
(select name from basic_corp bc where bc.erpId = io.fromCorp) fromCorpName
from inv_prein_order as io
<where>
<if test="billNo != null and billNo != ''">
AND billNo like concat('%', #{billNo}, '%')
</if>
<if test="fromCorp != null and fromCorp != ''">
AND fromCorp = #{fromCorp}
</if>
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND date_format(createTime, '%Y-%m-%d') between date_format(#{startTime}, '%Y-%m-%d') and
date_format(#{endTime}, '%Y-%m-%d')
</if>
<if test="startTime != null and startTime != '' and (endTime == null or endTime == '')">
AND date_format(createTime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d')
</if>
<if test="endTime != null and endTime != '' and (startTime == null or startTime == '')">
AND date_format(createTime, '%Y-%m-%d') &lt;= date_format(#{endTime}, '%Y-%m-%d')
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save