业务单据,库存相关bug修改

master
anthonywj 2 years ago
parent b911d27085
commit dfd5e936cb

@ -182,6 +182,8 @@ public class Constant {
*/ */
public static final String ORDER_STATUS_NEW_ORDER = "newOrder"; public static final String ORDER_STATUS_NEW_ORDER = "newOrder";
/** /**
* - * -
*/ */

@ -453,9 +453,15 @@ public class IoCodeTempController extends BaseController {
} }
if (StrUtil.isNotEmpty(orderId)) {//非首次添加 if (StrUtil.isNotEmpty(orderId)) {//非首次添加
if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品
//无序列号,则可能存在多个预验收入库单
IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code); IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code);
List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailService.findByCode(code);
int count = 0;
for (InvPreinDetailEntity temp : invPreinDetailEntities) {
count = count + temp.getCount();
}
if (codeTempEntity != null) { if (codeTempEntity != null) {
if (invProductDetailEntity.getCount() < (codeTempEntity.getMyCount() + 1)) { if (count < (codeTempEntity.getMyCount() + 1)) {
return ResultVOUtils.error(500, "超出预验收库存数量"); return ResultVOUtils.error(500, "超出预验收库存数量");
} }
} }
@ -497,6 +503,9 @@ public class IoCodeTempController extends BaseController {
if (codeEnttitys.size() > 0) { if (codeEnttitys.size() > 0) {
exitLocalEntity = isExitLocal(code, codeEnttitys); exitLocalEntity = isExitLocal(code, codeEnttitys);
if (exitLocalEntity != null) { if (exitLocalEntity != null) {
if (StrUtil.isEmpty(exitLocalEntity.getSupId()) || exitLocalEntity.getRelId() == null) {
return ResultVOUtils.error(500, "当前UDI码已存在且存在异常未处理");
}
udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(exitLocalEntity.getNameCode()); udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(exitLocalEntity.getNameCode());
BeanUtils.copyProperties(exitLocalEntity, genDetaiEntity); BeanUtils.copyProperties(exitLocalEntity, genDetaiEntity);
genDetaiEntity.setCount(1); genDetaiEntity.setCount(1);
@ -781,7 +790,7 @@ public class IoCodeTempController extends BaseController {
// return ResultVOUtils.error(500, "当前库存不足不允许0库存出库"); // return ResultVOUtils.error(500, "当前库存不足不允许0库存出库");
// } // }
} else { } else {
int count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), null); int count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), null);
if (count <= 0) { if (count <= 0) {
return ResultVOUtils.error(500, "当前库存不足不允许0库存出库"); return ResultVOUtils.error(500, "当前库存不足不允许0库存出库");
} else { } else {
@ -857,7 +866,7 @@ public class IoCodeTempController extends BaseController {
IoOrderEntity orderEntity = orderService.findByBillNo(codeTempEntity.getOrderId()); IoOrderEntity orderEntity = orderService.findByBillNo(codeTempEntity.getOrderId());
if (codeTempEntity.getMyCount() > 1) { if (codeTempEntity.getMyCount() > 1) {
codeTempEntity.setCount(codeTempEntity.getMyCount() - 1); codeTempEntity.setCount(codeTempEntity.getMyCount() - 1);
codeTempEntity.setReCount(codeTempEntity.getMyCount() - udiCalCountUtil.getActCount(codeTempEntity.getRelId())); codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getActCount(codeTempEntity.getRelId()));
codeTempService.updateById(codeTempEntity); codeTempService.updateById(codeTempEntity);
} else { } else {
codeTempService.deleteById(id); codeTempService.deleteById(id);
@ -870,8 +879,8 @@ public class IoCodeTempController extends BaseController {
int orderCount = orderDetailCodeEntity.getCount(); int orderCount = orderDetailCodeEntity.getCount();
int orderReCount = orderDetailCodeEntity.getReCount(); int orderReCount = orderDetailCodeEntity.getReCount();
if (orderCount > 1) { if (orderCount > 1) {
orderDetailCodeEntity.setCount(orderCount - codeTempEntity.getMyCount()); orderDetailCodeEntity.setCount(orderCount - 1);
orderDetailCodeEntity.setReCount(orderReCount - codeTempEntity.getMyReCount()); orderDetailCodeEntity.setReCount(orderReCount - udiCalCountUtil.getActCount(codeTempEntity.getRelId()));
ioOrderDetailCodeService.update(orderDetailCodeEntity); ioOrderDetailCodeService.update(orderDetailCodeEntity);
} else { } else {
ioOrderDetailCodeService.deleteById(orderDetailCodeEntity.getId()); ioOrderDetailCodeService.deleteById(orderDetailCodeEntity.getId());

@ -91,17 +91,23 @@ public class IoOrderController extends BaseController {
if (CollUtil.isEmpty(orderDetailBizEntities)) { if (CollUtil.isEmpty(orderDetailBizEntities)) {
return ResultVOUtils.error(500, "请先录入产品!"); return ResultVOUtils.error(500, "请先录入产品!");
} }
String vailKey = "";
for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) { for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) {
if (orderDetailBizEntity.getBindRlFk() == null) { if (orderDetailBizEntity.getBindRlFk() == null) {
return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定唯一耗材编码!"); return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定唯一耗材编码!");
} }
if (StrUtil.isEmpty(orderDetailBizEntity.getSupId())) { if (StrUtil.isEmpty(orderDetailBizEntity.getSupId())) {
return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定供应商!"); return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定供应商!");
} }
if (orderDetailBizEntity.getCount() == 0) {
return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "产品数量不能为0");
}
// if(orderDetailBizEntity.)
} }
IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo()); IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo());
ioAddInoutService.dealBusProcess(orderEntity); ioAddInoutService.dealBusProcess(orderEntity);
return ResultVOUtils.success("提交成功!"); return ResultVOUtils.success("提交成功!");

@ -85,10 +85,6 @@ public class InvPreProductController {
*/ */
@GetMapping("/spms/inv/pre/product/filterDetail") @GetMapping("/spms/inv/pre/product/filterDetail")
public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) { public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) {
if (StrUtil.isBlank(detailRequest.getBatchNo())) {
detailRequest.setBatchNo("empty");
}
List<InvPreProductDetailEntity> invPreProductDetailEntities = invPreProductDetailService.filterPreProductDetailList(detailRequest); List<InvPreProductDetailEntity> invPreProductDetailEntities = invPreProductDetailService.filterPreProductDetailList(detailRequest);
PageInfo<InvPreProductDetailEntity> pageInfo = new PageInfo<>(invPreProductDetailEntities); PageInfo<InvPreProductDetailEntity> pageInfo = new PageInfo<>(invPreProductDetailEntities);

@ -86,10 +86,6 @@ public class InvProductController {
*/ */
@GetMapping("/spms/inv/product/filterDetail") @GetMapping("/spms/inv/product/filterDetail")
public BaseResponse filterInvProductDetail(FilterInvProductDetailRequest filterInvProductDetailRequest) { public BaseResponse filterInvProductDetail(FilterInvProductDetailRequest filterInvProductDetailRequest) {
if (StrUtil.isBlank(filterInvProductDetailRequest.getBatchNo())) {
filterInvProductDetailRequest.setBatchNo("empty");
}
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest); List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest);
PageInfo<InvProductDetailEntity> pageInfo = new PageInfo<>(invProductDetailEntities); PageInfo<InvProductDetailEntity> pageInfo = new PageInfo<>(invProductDetailEntities);

@ -191,6 +191,9 @@ public class IoCheckInoutService {
orderService.update(orderEntity); orderService.update(orderEntity);
return; return;
} }
orderDetailBizService.deleteByOrderId(orderEntity.getBillNo());
orderDetailResultService.deleteByOrderId(orderEntity.getBillNo());
orderDetailCodeEntities.forEach(orderDetailCodeEntity -> orderDetailCodeEntities.forEach(orderDetailCodeEntity ->
{ {
//生成业务单据 //生成业务单据
@ -306,6 +309,7 @@ public class IoCheckInoutService {
orderService.update(orderEntity); orderService.update(orderEntity);
} else { } else {
//生成单据结果 //生成单据结果
orderDetailResultService.deleteByOrderId(orderEntity.getBillNo());
for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) { for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) {
IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity();
BeanUtils.copyProperties(orderDetailBizEntity, orderDetailResultEntity); BeanUtils.copyProperties(orderDetailBizEntity, orderDetailResultEntity);
@ -527,6 +531,8 @@ public class IoCheckInoutService {
//预验收出库,删掉对应预验收库存 //预验收出库,删掉对应预验收库存
if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) { if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) {
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo()); List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());
//找出UDI码对应的预验收入库单号
Map<String, String> preInOrder = new HashMap<>(); Map<String, String> preInOrder = new HashMap<>();
for (IoCodeEntity warehouseEntity : codeList) { for (IoCodeEntity warehouseEntity : codeList) {
List<InvPreinDetailEntity> invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode()); List<InvPreinDetailEntity> invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode());
@ -542,27 +548,31 @@ public class IoCheckInoutService {
preInEntity.setPreOutBillNo(orderEntity.getBillNo()); preInEntity.setPreOutBillNo(orderEntity.getBillNo());
orderService.update(preInEntity); orderService.update(preInEntity);
//预验收不删除单号,方便后续查询
if (bussinessTypeEntity.isPreInBack()) { //预验收如果带回,则清空相关预验收库存; if (bussinessTypeEntity.isPreInBack()) { //预验收如果带回,则清空相关预验收库存;
invPreinOrderService.deleteByOrderId(preInEntity.getBillNo()); // invPreinOrderService.deleteByOrderId(preInEntity.getBillNo());
invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); invPreinDetailService.deleteByOrderId(preInEntity.getBillNo());
} else { //预验收如果不带回,则清除已出库相关库存 } else { //预验收如果不带回,则清除已出库相关库存
for (IoCodeEntity codeEntity : codeList) { for (IoCodeEntity codeEntity : codeList) {
if (StrUtil.isEmpty(codeEntity.getSerialNo())) { if (StrUtil.isEmpty(codeEntity.getSerialNo())) {
InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode()); InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode());
int count = invPreinDetailEntity.getCount() - 1; if (invPreinDetailEntity != null) {
if (count == 0) { int count = invPreinDetailEntity.getCount() - 1;
invPreinDetailService.deleteByCode(key, codeEntity.getCode()); if (count == 0) {
} else { invPreinDetailService.deleteByCode(key, codeEntity.getCode());
invPreinDetailEntity.setCount(count); } else {
invPreinDetailService.update(invPreinDetailEntity); invPreinDetailEntity.setCount(count);
} invPreinDetailService.update(invPreinDetailEntity);
int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount(); }
if (reCount == 0) { int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount();
invPreinDetailService.deleteByCode(key, codeEntity.getCode()); if (reCount == 0) {
} else { invPreinDetailService.deleteByCode(key, codeEntity.getCode());
invPreinDetailEntity.setReCount(reCount); } else {
invPreinDetailService.update(invPreinDetailEntity); invPreinDetailEntity.setReCount(reCount);
invPreinDetailService.update(invPreinDetailEntity);
}
} }
} else { } else {
invPreinDetailService.deleteByCode(key, codeEntity.getCode()); invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} }

@ -474,7 +474,7 @@ public class IoOrderServiceImpl implements IoOrderService {
filterOrderRequest.setOrderType(ConstantStatus.ORDER_TYPE_SCAN); filterOrderRequest.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);
break; break;
case Constant.ORDER_STATUS_NEW_ORDER: case Constant.ORDER_STATUS_NEW_ORDER:
filterOrderRequest.setStatuses(Arrays.asList(1, 2, 3, 4, 6)); filterOrderRequest.setStatuses(Arrays.asList(1, 2, 4));
filterOrderRequest.setDealStatuses(Arrays.asList(1, 2)); filterOrderRequest.setDealStatuses(Arrays.asList(1, 2));
break; break;
case Constant.ORDER_STATUS_UN_CHECK: case Constant.ORDER_STATUS_UN_CHECK:

@ -47,7 +47,7 @@ public interface InvProductDetailService {
void setOrderInfo(InvProductDetailResponse response); void setOrderInfo(InvProductDetailResponse response);
int vailStockCount(Long relId, String invStorageCode, String invWarehouseCode, String invSpaceCode); int vailStockCount(Long relId, String batchNo, String supId, String deptCode, String invCode, String invSpaceCode);
} }

@ -131,19 +131,21 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
@Override @Override
public int vailStockCount(Long relId, String deptCode, String invCode, String invSpaceCode) { public int vailStockCount(Long relId, String batchNo, String supId, String deptCode, String invCode, String invSpaceCode) {
if (relId == null) { if (relId == null) {
return 0; return 0;
} }
List<InvProductDetailEntity> datas = List<InvProductDetailEntity> datas =
invProductDetailDao.selectList(new QueryWrapper<InvProductDetailEntity>().eq("relId", relId).eq("deptCode", deptCode).eq("invCode", invCode).eq("invSpaceCode", invSpaceCode)); invProductDetailDao.selectList(new QueryWrapper<InvProductDetailEntity>().eq("relId", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo)
.isNull(StrUtil.isEmpty(batchNo), "batchNo").eq(StrUtil.isNotEmpty(supId),"supId", supId).eq("deptCode", deptCode).eq("invCode", invCode).eq(StrUtil.isNotEmpty(invSpaceCode), "invSpaceCode", invSpaceCode));
int count = 0; int count = 0;
if (CollUtil.isNotEmpty(datas)) { if (CollUtil.isNotEmpty(datas)) {
for (InvProductDetailEntity invProductDetailEntity : datas) { for (InvProductDetailEntity invProductDetailEntity : datas) {
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT))
count = count + invProductDetailEntity.getCount(); count = count + invProductDetailEntity.getReCount();
else { else {
count = count - invProductDetailEntity.getCount(); count = count - invProductDetailEntity.getReCount();
} }
} }
} }

@ -73,6 +73,7 @@
AND orderType = #{orderType} AND orderType = #{orderType}
</if> </if>
</where> </where>
order by createTime desc
</select> </select>
<select id="filterOrderList" resultType="com.glxp.api.entity.inout.IoOrderEntity"> <select id="filterOrderList" resultType="com.glxp.api.entity.inout.IoOrderEntity">
@ -122,6 +123,7 @@
AND date_format(createTime, '%Y-%m-%d') &lt;= date_format(#{endTime}, '%Y-%m-%d') AND date_format(createTime, '%Y-%m-%d') &lt;= date_format(#{endTime}, '%Y-%m-%d')
</if> </if>
</where> </where>
order by createTime desc
</select> </select>

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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.InvPreProductDetailDao"> <mapper namespace="com.glxp.api.dao.inv.InvPreProductDetailDao">
<select id="filterPreProductDetailList" resultType="com.glxp.api.entity.inv.InvPreProductDetailEntity"> <select id="filterPreProductDetailList" resultType="com.glxp.api.entity.inv.InvPreProductDetailEntity">
select * select *
from inv_pre_product_detail from inv_pre_product_detail
@ -39,7 +38,7 @@
<if test="batchNo != null and batchNo != ''"> <if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo} AND batchNo = #{batchNo}
</if> </if>
<if test="batchNo == 'empty'"> <if test="batchNo == null and batchNo == ''">
AND batchNo is null AND batchNo is null
</if> </if>
<if test="productIdList != null and productIdList.size() != 0"> <if test="productIdList != null and productIdList.size() != 0">

@ -38,10 +38,10 @@
<if test="invSpaceCode != null and invSpaceCode != ''"> <if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode} AND invSpaceCode = #{invSpaceCode}
</if> </if>
<if test="batchNo != null and batchNo != '' and batchNo != 'empty'"> <if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo} AND batchNo = #{batchNo}
</if> </if>
<if test="batchNo == 'empty'"> <if test="batchNo == null and batchNo == ''">
AND batchNo is null AND batchNo is null
</if> </if>
<if test="productionDate != null and productionDate != ''"> <if test="productionDate != null and productionDate != ''">

Loading…
Cancel
Save