|
|
|
@ -3,13 +3,10 @@ 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.inventory.InvMaintenanceOrderDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvMaintenanceOrderDetailDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
|
|
|
|
|
import com.glxp.api.admin.constant.ConstantType;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.*;
|
|
|
|
|
import com.glxp.api.admin.entity.basic.UdiEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvMaintenanceOrderDetailEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvMaintenanceOrderEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.*;
|
|
|
|
|
import com.glxp.api.admin.req.inventory.AddMAOrderDetailRequest;
|
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvMAOrderDetailRequest;
|
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
|
|
|
|
@ -25,7 +22,10 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Service
|
|
|
|
@ -38,6 +38,10 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
|
|
|
|
|
private InvMaintenanceOrderDao invMaintenanceOrderDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private InvProductDetailDao invProductDetailDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private InvMaintenanceExplanationDao invMaExplanationDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private InvProductDao invProductDao;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<InvMAOrderDetailResponse> filterList(FilterInvMAOrderDetailRequest filterInvMAOrderDetailRequest) {
|
|
|
|
@ -56,6 +60,9 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
|
|
|
|
|
UdiEntity udi = FilterUdiUtils.getUdi(invMaintenanceOrderDetailEntity.getCode());
|
|
|
|
|
//查询此条码是否重复
|
|
|
|
|
InvMaintenanceOrderDetailEntity maintenanceOrderDetailEntity = invMAOrderDetailDao.selectByOrderIdAndCode(invMaintenanceOrderDetailEntity.getOrderIdFk(), invMaintenanceOrderDetailEntity.getCode());
|
|
|
|
|
|
|
|
|
|
//查询养护说明
|
|
|
|
|
InvMaintenanceExplanationEntity invMaintenanceExplanation = invMaExplanationDao.selectByStatus(1);
|
|
|
|
|
if (null != maintenanceOrderDetailEntity) {
|
|
|
|
|
if (StrUtil.isBlank(udi.getSerialNo()) || (StrUtil.isBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo()))) {
|
|
|
|
|
maintenanceOrderDetailEntity.setCount(maintenanceOrderDetailEntity.getCount() + 1);
|
|
|
|
@ -87,6 +94,9 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
|
|
|
|
|
invMaintenanceOrderDetailEntity.setExpireDate(udi.getExpireDate());
|
|
|
|
|
invMaintenanceOrderDetailEntity.setNameCode(udi.getUdi());
|
|
|
|
|
invMaintenanceOrderDetailEntity.setProductId(invProductDetailEntities.get(0).getProductIdFk());
|
|
|
|
|
if (null != invMaintenanceExplanation) {
|
|
|
|
|
invMaintenanceOrderDetailEntity.setRemark(invMaintenanceExplanation.getText());
|
|
|
|
|
}
|
|
|
|
|
invMAOrderDetailDao.insert(invMaintenanceOrderDetailEntity);
|
|
|
|
|
} else {
|
|
|
|
|
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "当前仓库中不存在此产品,无法进行养护!");
|
|
|
|
@ -110,25 +120,68 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public BaseResponse batchAddDetail(AddMAOrderDetailRequest addMAOrderDetailRequest) {
|
|
|
|
|
for (String invProductId : addMAOrderDetailRequest.getInvProductIds()) {
|
|
|
|
|
//查询库存养护记录说明
|
|
|
|
|
InvMaintenanceExplanationEntity invMaintenanceExplanation = invMaExplanationDao.selectByStatus(1);
|
|
|
|
|
//遍历库存ID,查找库存详情的条码信息,生成库存养护记录详情
|
|
|
|
|
addMAOrderDetailRequest.getInvProductIds().forEach(invProductId -> {
|
|
|
|
|
//查询库存信息
|
|
|
|
|
InvProductEntity invProductEntity = invProductDao.selectById(invProductId);
|
|
|
|
|
//查询库存详情码信息
|
|
|
|
|
FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest();
|
|
|
|
|
detailRequest.setId(invProductId);
|
|
|
|
|
detailRequest.setProductIdFk(invProductEntity.getRelIdFk());
|
|
|
|
|
detailRequest.setBatchNo(invProductEntity.getBatchNo());
|
|
|
|
|
detailRequest.setInvStorageCode(invProductEntity.getInvStorageCode());
|
|
|
|
|
detailRequest.setInvWarehouseCode(invProductEntity.getInvWarehouseCode());
|
|
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(detailRequest);
|
|
|
|
|
InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0);
|
|
|
|
|
//生成库存养护记录详情
|
|
|
|
|
InvMaintenanceOrderDetailEntity maOrderDetail = new InvMaintenanceOrderDetailEntity();
|
|
|
|
|
maOrderDetail.setOrderIdFk(addMAOrderDetailRequest.getOrderIdFk());
|
|
|
|
|
maOrderDetail.setCode(invProductDetailEntity.getOriginCode());
|
|
|
|
|
maOrderDetail.setProductId(invProductDetailEntity.getProductIdFk());
|
|
|
|
|
UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getOriginCode());
|
|
|
|
|
maOrderDetail.setNameCode(udi.getUdi());
|
|
|
|
|
maOrderDetail.setProduceDate(invProductDetailEntity.getProductionDate());
|
|
|
|
|
maOrderDetail.setExpireDate(invProductDetailEntity.getExpireDate());
|
|
|
|
|
maOrderDetail.setCount(invProductDetailEntity.getCount());
|
|
|
|
|
maOrderDetail.setMaintenanceStatus(0);
|
|
|
|
|
maOrderDetail.setDeviceStatus(1);
|
|
|
|
|
invMAOrderDetailDao.insert(maOrderDetail);
|
|
|
|
|
}
|
|
|
|
|
//提取去重后的码集合
|
|
|
|
|
List<String> codeList = invProductDetailEntities.stream().map(InvProductDetailEntity::getOriginCode).distinct().collect(Collectors.toList());
|
|
|
|
|
//初始化码数量计算集合数据
|
|
|
|
|
Map<String, Integer> codeMap = new HashMap<>(codeList.size());
|
|
|
|
|
codeList.forEach(code -> codeMap.put(code, 0));
|
|
|
|
|
//计算当前在库存中的码明细
|
|
|
|
|
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
|
|
|
|
|
Integer count = codeMap.get(invProductDetailEntity.getOriginCode());
|
|
|
|
|
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
|
|
|
|
|
//出库
|
|
|
|
|
count = count - 1;
|
|
|
|
|
} else {
|
|
|
|
|
//入库
|
|
|
|
|
count = count + 1;
|
|
|
|
|
}
|
|
|
|
|
codeMap.put(invProductDetailEntity.getOriginCode(), count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//根据库存中的码明细,生成库存养护记录详情
|
|
|
|
|
for (String code : codeMap.keySet()) {
|
|
|
|
|
if (codeMap.get(code) > 0) {
|
|
|
|
|
//获取库存详情
|
|
|
|
|
InvProductDetailEntity invProductDetailEntity = null;
|
|
|
|
|
for (InvProductDetailEntity detailEntity : invProductDetailEntities) {
|
|
|
|
|
if (detailEntity.getOriginCode().equals(code)) {
|
|
|
|
|
invProductDetailEntity = detailEntity;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//生成库存养护记录详情
|
|
|
|
|
InvMaintenanceOrderDetailEntity maOrderDetail = new InvMaintenanceOrderDetailEntity();
|
|
|
|
|
maOrderDetail.setOrderIdFk(addMAOrderDetailRequest.getOrderIdFk());
|
|
|
|
|
maOrderDetail.setCode(invProductDetailEntity.getOriginCode());
|
|
|
|
|
maOrderDetail.setProductId(invProductDetailEntity.getProductIdFk());
|
|
|
|
|
UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getOriginCode());
|
|
|
|
|
maOrderDetail.setNameCode(udi.getUdi());
|
|
|
|
|
maOrderDetail.setProduceDate(udi.getProduceDate());
|
|
|
|
|
maOrderDetail.setExpireDate(udi.getExpireDate());
|
|
|
|
|
maOrderDetail.setBatchNo(udi.getBatchNo());
|
|
|
|
|
maOrderDetail.setCount(codeMap.get(code));
|
|
|
|
|
maOrderDetail.setMaintenanceStatus(0);
|
|
|
|
|
maOrderDetail.setDeviceStatus(1);
|
|
|
|
|
if (null != invMaintenanceExplanation) {
|
|
|
|
|
maOrderDetail.setRemark(invMaintenanceExplanation.getText());
|
|
|
|
|
}
|
|
|
|
|
invMAOrderDetailDao.insert(maOrderDetail);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return ResultVOUtils.success("添加成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|