1.修复盘点功能bug

feature-order-fix
x_z 3 years ago
parent d0aa8e9412
commit 6b88b3f244

@ -491,7 +491,11 @@ public class InvProductsController {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
List<InvProductResponse> list = invProductService.getCountInvProductProduct(filterInvProductRequest);
return ResultVOUtils.success(list);
PageInfo<InvProductResponse> pageInfo = new PageInfo<>(list);
PageSimpleResponse<InvProductResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setList(pageInfo.getList());
pageSimpleResponse.setTotal(pageInfo.getTotal());
return ResultVOUtils.success(pageSimpleResponse);
}
}

@ -73,7 +73,7 @@ public interface InvCountOrderDetailDao {
* @param nameCode
* @return
*/
InvCountOrderDetail selectByOrderIdAndNameCode(@Param("orderIdFk") String orderIdFk, @Param("nameCode") String nameCode);
InvCountOrderDetail selectOrderDetail(@Param("orderIdFk") String orderIdFk, @Param("nameCode") String nameCode, @Param("batchNo") String batchNo);
/**
*

@ -1,6 +1,7 @@
package com.glxp.api.admin.service.inventory.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.dao.basic.UdiRelevanceDao;
import com.glxp.api.admin.dao.inventory.InvCountCodesDao;
@ -8,7 +9,9 @@ import com.glxp.api.admin.dao.inventory.InvCountOrderDetailDao;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.inventory.InvCountCodes;
import com.glxp.api.admin.entity.inventory.InvCountOrderDetail;
import com.glxp.api.admin.req.basic.FilterUdiInfoRequest;
import com.glxp.api.admin.req.inventory.FilterInvCountCodesRequest;
import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
import com.glxp.api.admin.service.inventory.InvCountCodesService;
import com.glxp.api.admin.util.FilterUdiUtils;
import com.glxp.api.common.enums.ResultEnum;
@ -54,13 +57,13 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
}
UdiEntity udi = FilterUdiUtils.getUdi(list.get(0).getCode());
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectByOrderIdAndNameCode(list.get(0).getOrderIdFk(), udi.getUdi());
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(list.get(0).getOrderIdFk(), udi.getUdi(), udi.getBatchNo());
if (invCountOrderDetail.getCountNum() == 1) {
//条码数量为1删除此产品的盘点单据详情
invCountOrderDetailDao.deleteByPrimaryKey(invCountOrderDetail.getId());
} else {
//条码数量大于1将此单据详情的盘点数量 - 1
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() - 1);
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() - getActCount(udi.getUdi()));
invCountOrderDetailDao.updateByPrimaryKey(invCountOrderDetail);
}
//删除此条码
@ -70,20 +73,25 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
@Override
public BaseResponse addCode(InvCountCodes invCountCodes) {
//查询此条码是否重复
Long count = invCountCodesDao.selectCountByCodeAndOrderId(invCountCodes.getCode(), invCountCodes.getOrderIdFk());
if (count > 0) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码重复!");
}
//解析条码
UdiEntity udi = FilterUdiUtils.getUdi(invCountCodes.getCode());
//查询此条码是否重复
//判断此产品是否有批次号如果没有批次号则直接在单据详情的盘点数量上加1
if (StrUtil.isNotBlank(udi.getBatchNo()) && StrUtil.isNotBlank(udi.getSerialNo())) {
Long count = invCountCodesDao.selectCountByCodeAndOrderId(invCountCodes.getCode(), invCountCodes.getOrderIdFk());
if (count > 0) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码重复!");
}
}
//查询单据详情,单据详情添加
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectByOrderIdAndNameCode(invCountCodes.getOrderIdFk(), udi.getUdi());
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(invCountCodes.getOrderIdFk(), udi.getUdi(), udi.getBatchNo());
if (null == invCountOrderDetail) {
return ResultVOUtils.error(ResultEnum.DATA_NOT, "当前仓库不存在此产品");
return ResultVOUtils.error(ResultEnum.DATA_NOT, "当前仓库或货位不存在此产品");
}
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() + 1);
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() + getActCount(udi.getUdi()));
invCountCodes.setProductId(invCountOrderDetail.getProductId());
invCountOrderDetailDao.updateByPrimaryKey(invCountOrderDetail);
invCountCodesDao.insert(invCountCodes);
@ -95,4 +103,23 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
return invCountCodesDao.countByOrderId(orderIdFk);
}
public int getActCount(String nameCode) {
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
filterUdiInfoRequest.setNameCode(nameCode);
List<UdiRelevanceResponse> list = udiRelevanceDao.filterUdiRelevance(null);
UdiRelevanceResponse udiInfoBean = list.get(0);
if (udiInfoBean != null) {
if (udiInfoBean.getIsUseDy() == 1 && udiInfoBean.getDiType() != 2) {
if (udiInfoBean.getBhzxxsbzsl() == 0)
return udiInfoBean.getZxxsbzbhsydysl();
else
return udiInfoBean.getZxxsbzbhsydysl() * udiInfoBean.getBhzxxsbzsl();
} else {
return udiInfoBean.getBhzxxsbzsl();
}
}
return 1;
}
}

@ -283,7 +283,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
log.info("盘点单据:{} 生成盘亏入库单据", invCountOrder.getOrderId());
OrderEntity order = createOrder(invCountSettingEntity, invCountOrder, ConstantType.TYPE_OUT);
log.info("盘盈入库单据号:{}", order.getId());
inOrderCodes.forEach(warehouseEntity -> {
outOrderCodes.forEach(warehouseEntity -> {
warehouseEntity.setOrderId(order.getId());
warehouseEntity.setAction(order.getAction());
warehouseEntity.setFromCorp(order.getFromCorp());
@ -292,7 +292,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
});
orderDao.insertOrder(order);
codesTempDao.insertCodesTemp(inOrderCodes);
codesTempDao.insertCodesTemp(outOrderCodes);
log.info("盘亏入库单据生成成功");
}

@ -146,6 +146,12 @@ public class InvProductServiceImpl implements InvProductService {
@Override
public List<InvProductResponse> getCountInvProductProduct(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.getCountInvProduct(filterInvProductRequest);
}

@ -321,11 +321,20 @@
and productId = #{productId}
</delete>
<select id="selectByOrderIdAndNameCode" resultMap="BaseResultMap">
<select id="selectOrderDetail" resultMap="BaseResultMap">
select *
from inv_count_order_detail
where orderIdFk = #{orderIdFk}
and nameCode = #{nameCode}
<where>
<if test="nameCode != null and nameCode != ''">
AND nameCode = #{nameCode}
</if>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
</where>
</select>
<select id="selectByOrderId" resultMap="BaseResultMap">

@ -187,7 +187,6 @@
<if test="invWarehouseCode != '' and invWarehouseCode != null">
AND invWarehouseCode = #{invWarehouseCode}
</if>
<if test="invCodes != null and invCodes.size > 0">
AND invStorageCode IN
<foreach collection="invCodes" item="id" index="index" open="(" close=")" separator=",">
@ -361,10 +360,20 @@
<select id="selectProductInfo" resultType="com.glxp.api.admin.entity.inventory.InvProductEntity">
select *
from inv_product
where relIdFk = #{productId}
and batchNo = #{batchNo}
and invStorageCode = #{invStorageCode}
and invWarehouseCode = #{invWarehouseCode}
<where>
<if test="productId != null and productId != ''">
and relIdFk = #{productId}
</if>
<if test="batchNo != null and batchNo != ''">
and batchNo = #{batchNo}
</if>
<if test="invStorageCode != null and invStorageCode != ''">
and invStorageCode = #{invStorageCode}
</if>
<if test="invWarehouseCode != null and invWarehouseCode != ''">
and invWarehouseCode = #{invWarehouseCode}
</if>
</where>
</select>
<select id="getCountInvProduct" resultType="com.glxp.api.admin.res.inventory.InvProductResponse">
@ -379,6 +388,9 @@
basic_products.cpmctymc
from inv_product_detail
left join inv_product on inv_product_detail.productIdFk = inv_product.relIdFk
and inv_product.batchNo = inv_product_detail.batchNo
and inv_product.invStorageCode = inv_product_detail.invStorageCode
and inv_product.invWarehouseCode = inv_product_detail.invWarehouseCode
left join basic_udirel on inv_product_detail.productIdFk = basic_udirel.id
left join basic_products on basic_products.uuid = basic_udirel.uuid
<where>
@ -391,7 +403,16 @@
<if test="invSpaceCode != null and invSpaceCode != ''">
AND inv_product_detail.invSpaceCode = #{invSpaceCode}
</if>
<if test="nameCode != null and nameCode != ''">
AND inv_product.nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="cpmctymc != null and cpmctymc != ''">
AND basic_products.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND inv_product.batchNo like concat('%', #{batchNo}, '%')
</if>
group by inv_product_detail.productIdFk, inv_product_detail.batchNo
</where>
group by inv_product_detail.productIdFk, inv_product_detail.batchNo
</select>
</mapper>

@ -359,7 +359,9 @@
left join basic_products bp on bp.uuid = bu.uuid
left join inv_warehouse on pd.invStorageCode = inv_warehouse.code
left join inv_warehouse_sub on pd.invWarehouseCode = inv_warehouse_sub.code
left join inv_space on pd.invSpaceCode = inv_space.code
left join inv_space
on pd.invSpaceCode = inv_space.code and inv_space.invStorageCode = pd.invStorageCode and
inv_space.invWarehouseCode = pd.invWarehouseCode
<where>
<if test="invStorageCode != null and invStorageCode != ''">
AND pd.invStorageCode = #{invStorageCode}

Loading…
Cancel
Save