|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.glxp.api.admin.service.inventory.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
@ -119,6 +120,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
|
|
|
|
|
invCountOrderDao.insert(invCountOrder);
|
|
|
|
|
} else {
|
|
|
|
|
InvCountOrder oldData = invCountOrderDao.selectByOrderId(invCountOrder.getOrderId());
|
|
|
|
|
BeanUtil.copyProperties(invCountOrder, oldData, "id", "createTime", "createUser");
|
|
|
|
|
oldData.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
|
|
|
|
|
invCountOrderDao.updateByOrderId(oldData);
|
|
|
|
|
}
|
|
|
|
@ -163,17 +165,20 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
|
|
|
|
|
|
|
|
|
|
//查询此产品的条码列表,判断此产品在库存中是多还是少
|
|
|
|
|
List<InvCountCodes> codesList = invCountCodesDao.selectByOrderIdAndProductId(invCountOrderDetail.getOrderIdFk(), invCountOrderDetail.getProductId());
|
|
|
|
|
//查询库存中此产品的码数据,用来判断盘单据条码是多码还是少码
|
|
|
|
|
List<String> invDetailCodes = invProductDetailDao.selectCodeByInvCodeAndProductId(invCountOrder.getInvStorageCode(), invCountOrder.getInvWarehouseCode(), invCountOrder.getInvSpaceCode(), invCountOrderDetail.getProductId());
|
|
|
|
|
for (InvCountCodes invCountCodes : codesList) {
|
|
|
|
|
//查询此条码在库存中是否存在
|
|
|
|
|
boolean contains = invDetailCodes.contains(invCountCodes.getCode());
|
|
|
|
|
if (!contains) {
|
|
|
|
|
invCountCodes.setStatus(1);
|
|
|
|
|
//判断盘点的码中是否有次产品的码
|
|
|
|
|
if (CollUtil.isNotEmpty(codesList)) {
|
|
|
|
|
//查询库存中此产品的码数据,用来判断盘单据条码是多码还是少码
|
|
|
|
|
List<String> invDetailCodes = invProductDetailDao.selectCodeByInvCodeAndProductId(invCountOrder.getInvStorageCode(), invCountOrder.getInvWarehouseCode(), invCountOrder.getInvSpaceCode(), invCountOrderDetail.getProductId());
|
|
|
|
|
for (InvCountCodes invCountCodes : codesList) {
|
|
|
|
|
//查询此条码在库存中是否存在
|
|
|
|
|
boolean contains = invDetailCodes.contains(invCountCodes.getCode());
|
|
|
|
|
if (!contains) {
|
|
|
|
|
invCountCodes.setStatus(1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//批量更新条码信息
|
|
|
|
|
invCountCodesDao.updateBatch(codesList);
|
|
|
|
|
}
|
|
|
|
|
//批量更新条码信息
|
|
|
|
|
invCountCodesDao.updateBatch(codesList);
|
|
|
|
|
}
|
|
|
|
|
//更新单据信息
|
|
|
|
|
invCountOrderDao.updateByPrimaryKey(invCountOrder);
|
|
|
|
@ -256,18 +261,14 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
|
|
|
|
|
if (invCountOrder.getCountType() == 1) {
|
|
|
|
|
//按照货位盘点,查询库存详情添加货位条件
|
|
|
|
|
invProductDetailRequest.setInvSpaceCode(invCountOrder.getInvSpaceCode());
|
|
|
|
|
} else if (invCountOrder.getCountType() == 2) {
|
|
|
|
|
//部分盘点,查询库存的产品信息
|
|
|
|
|
invProductDetailRequest.setProductIdList(countProductIds);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(invProductDetailRequest);
|
|
|
|
|
if (CollUtil.isEmpty(invProductDetailEntities)) {
|
|
|
|
|
log.info("产品:" + productId + " 非当前仓库产品,添加到盘点入库单条码中");
|
|
|
|
|
//将此条码添加到入库单据条码中
|
|
|
|
|
codesList.forEach(invCountCodes -> {
|
|
|
|
|
if (invCountCodes.getProductId().equals(productId)) {
|
|
|
|
|
if (invCountCodes.getProductId().equals(productId) && !verifyCodeExist(outOrderCodes, invCountCodes.getCode())) {
|
|
|
|
|
WarehouseEntity warehouseEntity = buildWarehouse(invCountOrder, invCountCodes.getCode(), invCountCodes.getProductId());
|
|
|
|
|
inOrderCodes.add(warehouseEntity);
|
|
|
|
|
}
|
|
|
|
@ -276,7 +277,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
|
|
|
|
|
//库存中存在此产品,筛选出盘点中不存在的条码,添加到盘点出库条码中
|
|
|
|
|
List<String> countCodes = codesList.stream().map(InvCountCodes::getCode).collect(Collectors.toList());
|
|
|
|
|
invProductDetailEntities.forEach(invProductDetailEntity -> {
|
|
|
|
|
if (!countCodes.contains(invProductDetailEntity.getOriginCode())) {
|
|
|
|
|
if (!countCodes.contains(invProductDetailEntity.getOriginCode()) && !verifyCodeExist(outOrderCodes, invProductDetailEntity.getCode())) {
|
|
|
|
|
WarehouseEntity warehouseEntity = buildWarehouse(invCountOrder, invProductDetailEntity.getCode(), invProductDetailEntity.getProductIdFk());
|
|
|
|
|
outOrderCodes.add(warehouseEntity);
|
|
|
|
|
}
|
|
|
|
@ -324,8 +325,24 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
|
|
|
|
|
invCountOrderDao.updateByOrderId(invCountOrder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 校验码重复
|
|
|
|
|
*
|
|
|
|
|
* @param codes
|
|
|
|
|
* @param code
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private boolean verifyCodeExist(List<WarehouseEntity> codes, String code) {
|
|
|
|
|
List<String> codesList = codes.stream().map(WarehouseEntity::getCode).collect(Collectors.toList());
|
|
|
|
|
if (codesList.contains(code)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static WarehouseEntity buildWarehouse(InvCountOrder invCountOrder, String code, String productId) {
|
|
|
|
|
WarehouseEntity warehouseEntity = new WarehouseEntity();
|
|
|
|
|
warehouseEntity.setOrderId(invCountOrder.getOrderId());
|
|
|
|
|
warehouseEntity.setCode(code);
|
|
|
|
|
warehouseEntity.setRelId(productId);
|
|
|
|
|
warehouseEntity.setMainAction(ConstantType.TYPE_PUT);
|
|
|
|
|