1.调整盘点代码

master
x_z 2 years ago
parent 76630f303d
commit 18719072d6

@ -62,4 +62,14 @@ public interface InvProductDetailDao extends BaseMapperPlus<InvProductDetailDao,
*/ */
List<String> selectSupIdByCode(@Param("code") String code); List<String> selectSupIdByCode(@Param("code") String code);
/**
*
*
* @param invCode
* @param invSpaceCode
* @param relId
* @param batchNo
* @return
*/
List<String> selectCountOrderCodes(@Param("invCode") String invCode, @Param("invSpaceCode") String invSpaceCode, @Param("relId") Long relId, @Param("batchNo") String batchNo);
} }

@ -1,12 +1,12 @@
package com.glxp.api.service.inv.impl; package com.glxp.api.service.inv.impl;
import cn.hutool.core.collection.CollUtil;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.enums.ResultEnum;
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.dao.inv.InvCountOrderDao; import com.glxp.api.dao.inv.*;
import com.glxp.api.dao.inv.InvCountOrderDetailDao; import com.glxp.api.entity.inv.InvCountCodesEntity;
import com.glxp.api.dao.inv.InvProductDao;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity; import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.entity.inv.InvCountOrderEntity; import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.entity.inv.InvProductEntity; import com.glxp.api.entity.inv.InvProductEntity;
@ -23,7 +23,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@Service @Service
@ -38,6 +40,8 @@ public class InvCountOrderDetailServiceImpl implements InvCountOrderDetailServic
private InvProductDao invProductDao; private InvProductDao invProductDao;
@Resource @Resource
private SqlSessionFactory sqlSessionFactory; private SqlSessionFactory sqlSessionFactory;
@Resource
private InvProductDetailDao invProductDetailDao;
@Override @Override
public List<InvCountOrderDetailEntity> filterList(FilterInvCountOrderDetailRequest detailRequest) { public List<InvCountOrderDetailEntity> filterList(FilterInvCountOrderDetailRequest detailRequest) {
@ -90,10 +94,38 @@ public class InvCountOrderDetailServiceImpl implements InvCountOrderDetailServic
InvCountOrderEntity invCountOrder = invCountOrderDao.selectByOrderId(orderId); InvCountOrderEntity invCountOrder = invCountOrderDao.selectByOrderId(orderId);
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED); SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED);
InvCountOrderDetailDao mapper = sqlSession.getMapper(InvCountOrderDetailDao.class); InvCountOrderDetailDao mapper = sqlSession.getMapper(InvCountOrderDetailDao.class);
InvCountCodesDao codeMapper = sqlSession.getMapper(InvCountCodesDao.class);
for (InvCountOrderDetailEntity orderDetailEntity : countOrderDetailList) { for (InvCountOrderDetailEntity orderDetailEntity : countOrderDetailList) {
InvProductEntity invProductEntity = invProductDao.selectProductInfo(orderDetailEntity.getRelId(), orderDetailEntity.getBatchNo(), invCountOrder.getDeptCode(), invCountOrder.getInvCode(), invCountOrder.getInvSpaceCode()); InvProductEntity invProductEntity = invProductDao.selectProductInfo(orderDetailEntity.getRelId(), orderDetailEntity.getBatchNo(), invCountOrder.getDeptCode(), invCountOrder.getInvCode(), invCountOrder.getInvSpaceCode());
orderDetailEntity.setInvNum(invProductEntity.getReCount()); orderDetailEntity.setInvNum(invProductEntity.getReCount());
orderDetailEntity.setCountNum(0); orderDetailEntity.setCountNum(0);
//TODO 此查询无法区分无序列号条码,待优化
//查询此库存的详情,构造并插入码数据
List<String> codes = invProductDetailDao.selectCountOrderCodes(invCountOrder.getInvCode(), invCountOrder.getInvSpaceCode(), orderDetailEntity.getRelId(), orderDetailEntity.getBatchNo());
if (CollUtil.isNotEmpty(codes)) {
Map<String, InvCountCodesEntity> codesMap = new HashMap<>(codes.size());
for (String code : codes) {
InvCountCodesEntity codesEntity = codesMap.get(code);
if (null == codesEntity) {
//构造条码信息
codesEntity.setCode(code);
codesEntity.setOrderIdFk(orderId);
codesEntity.setCount(1);
codesEntity.setBatchNo(orderDetailEntity.getBatchNo());
codesEntity.setRelId(orderDetailEntity.getRelId());
codesMap.put(code, codesEntity);
} else {
codesEntity.setCount(codesEntity.getCount() + 1);
}
}
for (String key : codesMap.keySet()) {
codeMapper.insert(codesMap.get(key));
}
}
mapper.insert(orderDetailEntity); mapper.insert(orderDetailEntity);
} }
sqlSession.commit(); sqlSession.commit();

@ -203,6 +203,7 @@
AND ipd.invSpaceCode = #{invSpaceCode} AND ipd.invSpaceCode = #{invSpaceCode}
</if> </if>
</where> </where>
group by ip.id
</select> </select>
<select id="getCountInvProduct" resultType="com.glxp.api.res.inv.InvProductResponse"> <select id="getCountInvProduct" resultType="com.glxp.api.res.inv.InvProductResponse">

@ -142,4 +142,23 @@
from inv_product_detail from inv_product_detail
where code = #{code} where code = #{code}
</select> </select>
<select id="selectCountOrderCodes" resultType="java.lang.String">
select distinct code
from inv_product_detail
<where>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
<if test="relId != null">
AND relId = #{relId}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
</where>
</select>
</mapper> </mapper>

Loading…
Cancel
Save