寄售库存校验,仓库查询

master
anthonywj 2 years ago
parent 10d93106ce
commit 263e5d0dac

@ -22,6 +22,7 @@ import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity; import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
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.entity.system.SystemParamConfigEntity; import com.glxp.api.entity.system.SystemParamConfigEntity;
import com.glxp.api.req.basic.CompanyProductRelevanceRequest; import com.glxp.api.req.basic.CompanyProductRelevanceRequest;
@ -36,6 +37,7 @@ import com.glxp.api.res.inout.IoCodeTempResponse;
import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.*; import com.glxp.api.service.basic.*;
import com.glxp.api.service.inout.*; import com.glxp.api.service.inout.*;
import com.glxp.api.service.inv.InvPreProductDetailService;
import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinProductDetailService; import com.glxp.api.service.inv.InvPreinProductDetailService;
import com.glxp.api.service.inv.InvProductDetailService; import com.glxp.api.service.inv.InvProductDetailService;
@ -90,6 +92,8 @@ public class IoCodeTempController extends BaseController {
@Resource @Resource
InvPreinProductDetailService invPreinProductDetailService; InvPreinProductDetailService invPreinProductDetailService;
@Resource @Resource
InvPreProductDetailService invPreProductDetailService;
@Resource
InvProductDetailService invProductDetailService; InvProductDetailService invProductDetailService;
@Resource @Resource
@ -527,9 +531,34 @@ public class IoCodeTempController extends BaseController {
} }
// 是否检验寄售库存 // 是否检验寄售库存
if (bussinessTypeEntity.isAdvancePreIn()) {
int preInCount = invPreProductDetailService.findCountByCode(code);
InvPreProductDetailEntity invPreinDetailEntity = invPreProductDetailService.findUseOneByCode(code);
if (preInCount <= 0) {
return ResultVOUtils.error(500, "寄售库存数量不足!");
} else {
if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo())
&& !invPreinDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) {
return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!");
}
if (StrUtil.isNotEmpty(orderId)) {//非首次添加
if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品
//无序列号,则可能存在多个预验收入库单
IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code);
if (codeTempEntity != null) {
if (preInCount < (codeTempEntity.getMyCount() + 1)) {
return ResultVOUtils.error(500, "超出寄售存数量");
}
}
} else {
if (preInCount < 1) {
return ResultVOUtils.error(500, "寄售库存数量不足");
}
}
}
}
}
if (addOrderRequest.getFromCorp() == null) { if (addOrderRequest.getFromCorp() == null) {

@ -407,5 +407,5 @@ public class BasicBussinessTypeEntity {
// 寄售使用禁止无库存出库 // 寄售使用禁止无库存出库
@TableField(value = "advancePreIn") @TableField(value = "advancePreIn")
private Integer advancePreIn; private boolean advancePreIn;
} }

@ -1,5 +1,6 @@
package com.glxp.api.service.inv; package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
@ -49,5 +50,9 @@ public interface InvPreProductDetailService {
*/ */
boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest);
int findCountByCode(String code);
InvPreProductDetailEntity findUseOneByCode(String code);
} }

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType; import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.basic.BasicBussinessTypeDao; import com.glxp.api.dao.basic.BasicBussinessTypeDao;
import com.glxp.api.dao.basic.UdiProductDao; import com.glxp.api.dao.basic.UdiProductDao;
@ -11,6 +12,7 @@ import com.glxp.api.dao.inout.IoOrderDao;
import com.glxp.api.dao.inv.InvPreProductDetailDao; import com.glxp.api.dao.inv.InvPreProductDetailDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
@ -132,4 +134,31 @@ public class InvPreProductDetailServiceImpl implements InvPreProductDetailServic
return invPreProductDetailDao.deleteInvPreProductDetail(detailRequest); return invPreProductDetailDao.deleteInvPreProductDetail(detailRequest);
} }
@Override
public int findCountByCode(String code) {
List<InvPreProductDetailEntity> invPreinDetailEntities = invPreProductDetailDao.selectList(new QueryWrapper<InvPreProductDetailEntity>().eq("code", code));
int count = 0;
if (CollUtil.isNotEmpty(invPreinDetailEntities)) {
for (InvPreProductDetailEntity invProductDetailEntity : invPreinDetailEntities) {
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT))
count = count + invProductDetailEntity.getReCount();
else {
count = count - invProductDetailEntity.getReCount();
}
}
}
return count;
}
@Override
public InvPreProductDetailEntity findUseOneByCode(String code) {
List<InvPreProductDetailEntity> invPreinDetailEntities = invPreProductDetailDao.selectList(new QueryWrapper<InvPreProductDetailEntity>().eq("code", code)
.eq("status", ConstantStatus.INVIN_IN).last("limit 1"));
if (CollUtil.isNotEmpty(invPreinDetailEntities)) {
return invPreinDetailEntities.get(0);
}
return null;
}
} }

@ -72,7 +72,7 @@
<if test="pcode != null"> <if test="pcode != null">
AND pcode = #{pcode} AND pcode = #{pcode}
</if> </if>
<if test="userId != null"> <if test="CustomerId != '' and CustomerId != null and userId != null">
AND auth_warehouse_user.userId = #{userId} AND auth_warehouse_user.userId = #{userId}
</if> </if>

Loading…
Cancel
Save