|
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.common.entity.AvailableStockBo;
|
|
@@ -29,18 +30,22 @@ import com.fjhx.mes.service.production.ProduceOrderService;
|
|
|
import com.fjhx.mes.service.production.ProductionTaskProgressService;
|
|
|
import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
|
|
|
import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
|
|
|
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
|
|
|
+import com.fjhx.sale.entity.arrival.vo.ArrivalDetailVo;
|
|
|
import com.fjhx.sale.entity.contract.po.Contract;
|
|
|
import com.fjhx.sale.entity.contract.po.ContractProduct;
|
|
|
import com.fjhx.sale.entity.contract.po.ContractProductBom;
|
|
|
import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
|
|
|
import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
|
|
|
import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
|
|
|
+import com.fjhx.sale.mapper.arrival.ArrivalDetailMapper;
|
|
|
import com.fjhx.sale.mapper.purchase.EhsdPurchaseProductMapper;
|
|
|
import com.fjhx.sale.service.contract.ContractProductBomService;
|
|
|
import com.fjhx.sale.service.contract.ContractProductService;
|
|
|
import com.fjhx.sale.service.contract.ContractService;
|
|
|
import com.fjhx.socket.core.PushTypeEnum;
|
|
|
import com.fjhx.socket.core.WebSocketPush;
|
|
|
+import com.fjhx.supply.service.supplier.SupplierInfoService;
|
|
|
import com.fjhx.tenant.utils.DeptUstil;
|
|
|
import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
|
import com.fjhx.wms.entity.stock.po.StockJournalDetails;
|
|
@@ -52,7 +57,6 @@ import com.fjhx.wms.service.stock.StockWaitDetailsService;
|
|
|
import com.fjhx.wms.service.stock.StockWaitService;
|
|
|
import com.ruoyi.common.core.domain.BasePo;
|
|
|
import com.ruoyi.common.core.domain.entity.SysDept;
|
|
|
-import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.common.utils.wrapper.SqlField;
|
|
@@ -107,6 +111,10 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
private StockWaitService stockWaitService;
|
|
|
@Autowired
|
|
|
private StockWaitDetailsService stockWaitDetailsService;
|
|
|
+ @Autowired
|
|
|
+ private ArrivalDetailMapper arrivalDetailMapper;
|
|
|
+ @Autowired
|
|
|
+ private SupplierInfoService supplierInfoService;
|
|
|
|
|
|
@Override
|
|
|
public Page<ProductionOrderVo> getPage(ProduceOrderSelectDto dto) {
|
|
@@ -252,6 +260,12 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
Long contractId = produceOrderDto.getContractId();
|
|
|
Assert.notEmpty(produceOrderDto.getContractId(), "合同id不能为空!");
|
|
|
|
|
|
+
|
|
|
+ ProductionOrder one = this.getOne(q -> q.eq(ProductionOrder::getContractId, contractId));
|
|
|
+ if (ObjectUtil.isNotEmpty(one)) {
|
|
|
+ produceOrderDto.setId(one.getId());
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
SysDept produceCompany = sysDeptService.getById(produceOrderDto.getProduceCompanyId());
|
|
|
Assert.notEmpty(produceCompany, "查询不到生产公司信息");
|
|
@@ -273,7 +287,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
|
|
|
produceOrderDto.setCode(contract.getCode());
|
|
|
produceOrderDto.setProduceStatus(0);
|
|
|
- this.save(produceOrderDto);
|
|
|
+ this.saveOrUpdate(produceOrderDto);
|
|
|
|
|
|
|
|
|
|
|
@@ -367,12 +381,8 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
inOutBoMap.put(materialId, inOutBo);
|
|
|
}
|
|
|
|
|
|
- List<Long> materialIds = cpBList.stream().map(ContractProductBom::getMaterialId).collect(Collectors.toList());
|
|
|
- Map<Long, ProductInfo> materialMap = productInfoService.mapKEntity(ProductInfo::getId, q -> q.in(ProductInfo::getId, materialIds));
|
|
|
-
|
|
|
|
|
|
List<SubscribeDetail> subscribeDetailList = new ArrayList<>();
|
|
|
-
|
|
|
|
|
|
List<AvailableStockBo> collect = inOutBoMap.values().stream().collect(Collectors.toList());
|
|
|
|
|
@@ -393,11 +403,136 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
subscribeDetailList.add(subscribeDetail);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
|
|
|
subscribeDetailService.saveBatch(subscribeDetailList);
|
|
|
}
|
|
|
|
|
|
+ void updateMaterialWaitPurchase(Long newContractId) {
|
|
|
+ Contract newContract = contractService.getById(newContractId);
|
|
|
+ Long oldContractId = newContract.getOldContractId();
|
|
|
+ Long companyId = newContract.getCompanyId();
|
|
|
+
|
|
|
+ List<ContractProductBomVo> oldProductBomListSum = contractProductBomService.getContractProductBomQuantitySum(oldContractId);
|
|
|
+
|
|
|
+
|
|
|
+ List<ContractProductBomVo> contractProductBomQuantitySum = contractProductBomService.getContractProductBomQuantitySum(newContractId);
|
|
|
+ Map<Long, BigDecimal> newQuantityMap = contractProductBomQuantitySum.stream().collect(Collectors.toMap(ContractProductBom::getMaterialId, ContractProductBom::getQuantity));
|
|
|
+
|
|
|
+
|
|
|
+ List<AvailableStockBo> availableStockBoList = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ List<EhsdPurchaseProductVo> purchaseQuantitySumByContractId = ehsdPurchaseProductMapper.getPurchaseQuantitySumByContractId(newContractId);
|
|
|
+ Map<Long, BigDecimal> collect = purchaseQuantitySumByContractId.stream().collect(Collectors.toMap(EhsdPurchaseProduct::getProductId, EhsdPurchaseProduct::getQuantity));
|
|
|
+
|
|
|
+
|
|
|
+ for (ContractProductBomVo oldContractProductBom : oldProductBomListSum) {
|
|
|
+ Long materialId = oldContractProductBom.getMaterialId();
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal newQuantity = newQuantityMap.get(materialId);
|
|
|
+
|
|
|
+ BigDecimal purchaseQuantity = collect.getOrDefault(materialId, BigDecimal.ZERO);
|
|
|
+
|
|
|
+
|
|
|
+ SubscribeDetail subscribeDetail = subscribeDetailService.getOne(q -> q
|
|
|
+ .eq(SubscribeDetail::getContractId, newContractId)
|
|
|
+ .eq(SubscribeDetail::getProductId, materialId)
|
|
|
+ );
|
|
|
+ BigDecimal demandPurchaseCount = BigDecimal.ZERO;
|
|
|
+ if (ObjectUtils.isNotEmpty(subscribeDetail)) {
|
|
|
+ demandPurchaseCount = subscribeDetail.getCount();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ AvailableStockBo availableStockBo = new AvailableStockBo();
|
|
|
+ availableStockBo.setProductId(materialId);
|
|
|
+ availableStockBo.setQuantity(oldContractProductBom.getQuantity());
|
|
|
+ availableStockBo.setNewQuantity(newQuantity);
|
|
|
+ availableStockBo.setInStockQuantity(purchaseQuantity);
|
|
|
+ availableStockBo.setDemandPurchaseCount(demandPurchaseCount);
|
|
|
+
|
|
|
+ availableStockBoList.add(availableStockBo);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Map<Long, BigDecimal> oldQuantityMap = oldProductBomListSum.stream().collect(Collectors.toMap(ContractProductBom::getMaterialId, ContractProductBom::getQuantity));
|
|
|
+ for (ContractProductBomVo newPurchaseProduct : contractProductBomQuantitySum) {
|
|
|
+ Long materialId = newPurchaseProduct.getMaterialId();
|
|
|
+
|
|
|
+ BigDecimal bigDecimal = oldQuantityMap.get(materialId);
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(bigDecimal)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ AvailableStockBo availableStockBo = new AvailableStockBo();
|
|
|
+ availableStockBo.setProductId(materialId);
|
|
|
+ availableStockBo.setQuantity(BigDecimal.ZERO);
|
|
|
+ availableStockBo.setNewQuantity(newPurchaseProduct.getQuantity());
|
|
|
+ availableStockBo.setInStockQuantity(BigDecimal.ZERO);
|
|
|
+ availableStockBo.setDemandPurchaseCount(BigDecimal.ZERO);
|
|
|
+
|
|
|
+ availableStockBoList.add(availableStockBo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ productInfoService.editAvailableQuantity(availableStockBoList, newContractId, ProductAvailableRecordType.SALE_UPDATE, companyId);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for (AvailableStockBo availableStockBo : availableStockBoList) {
|
|
|
+
|
|
|
+ Long materialId = availableStockBo.getProductId();
|
|
|
+ SubscribeDetail subscribeDetail = subscribeDetailService.getOne(q -> q.eq(SubscribeDetail::getContractId, newContractId)
|
|
|
+ .eq(SubscribeDetail::getProductId, materialId)
|
|
|
+ );
|
|
|
+
|
|
|
+ BigDecimal requiredQuantity = availableStockBo.getNewQuantity();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (requiredQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ if (ObjectUtils.isEmpty(subscribeDetail)) {
|
|
|
+
|
|
|
+ subscribeDetail = new SubscribeDetail();
|
|
|
+ subscribeDetail.setProductId(materialId);
|
|
|
+ subscribeDetail.setCount(BigDecimal.ZERO);
|
|
|
+ subscribeDetail.setStatus(15);
|
|
|
+ subscribeDetail.setContractId(newContractId);
|
|
|
+ subscribeDetail.setDataType(1);
|
|
|
+ subscribeDetail.setCompanyId(companyId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ subscribeDetail.setCount(requiredQuantity);
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal purchaseQuantity = availableStockBo.getInStockQuantity();
|
|
|
+ int status = purchaseQuantity.compareTo(requiredQuantity) >= 0 ? 20 : 30;
|
|
|
+ if (purchaseQuantity.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ status = 15;
|
|
|
+ }
|
|
|
+ subscribeDetail.setStatus(status);
|
|
|
+
|
|
|
+ subscribeDetailService.saveOrUpdate(subscribeDetail);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(subscribeDetail)) {
|
|
|
+ subscribeDetailService.removeById(subscribeDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
* 创建生产任务
|
|
|
*/
|
|
@@ -413,19 +548,49 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
List<ProductionOrderDetail> productionOrderDetailList = new ArrayList<>();
|
|
|
List<ContractProduct> contractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, contractId));
|
|
|
|
|
|
+
|
|
|
+ List<Long> cpIds = contractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
|
|
|
+ produceOrderDetailService.update(q -> q
|
|
|
+ .eq(ProductionOrderDetail::getProduceOrderId, orderDtoId)
|
|
|
+ .eq(ProductionOrderDetail::getContractId, contractId)
|
|
|
+ .notIn(ProductionOrderDetail::getContractDetailId, cpIds)
|
|
|
+ .set(ProductionOrderDetail::getProduceStatus, 99)
|
|
|
+ );
|
|
|
+
|
|
|
for (ContractProduct contractProduct : contractProductList) {
|
|
|
- ProductionOrderDetail productionOrderDetail = new ProductionOrderDetail();
|
|
|
+ ProductionOrderDetail productionOrderDetail = produceOrderDetailService.getOne(q -> q
|
|
|
+ .eq(ProductionOrderDetail::getProduceOrderId, orderDtoId)
|
|
|
+ .eq(ProductionOrderDetail::getContractId, contractId)
|
|
|
+ .eq(ProductionOrderDetail::getContractDetailId, contractProduct.getId())
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isEmpty(productionOrderDetail)) {
|
|
|
+ productionOrderDetail = new ProductionOrderDetail();
|
|
|
+ productionOrderDetail.setFinishQuantity(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
productionOrderDetail.setProduceOrderId(orderDtoId);
|
|
|
productionOrderDetail.setContractId(contractId);
|
|
|
productionOrderDetail.setContractDetailId(contractProduct.getId());
|
|
|
productionOrderDetail.setProductId(contractProduct.getProductId());
|
|
|
productionOrderDetail.setQuantity(contractProduct.getQuantity());
|
|
|
- productionOrderDetail.setFinishQuantity(BigDecimal.ZERO);
|
|
|
+
|
|
|
+
|
|
|
+ if (productionOrderDetail.getFinishQuantity().compareTo(productionOrderDetail.getQuantity()) >= 0) {
|
|
|
+
|
|
|
+ productionOrderDetail.setProduceStatus(2);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ productionOrderDetail.setProduceStatus(1);
|
|
|
+ }
|
|
|
+ if (productionOrderDetail.getFinishQuantity().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+
|
|
|
+ productionOrderDetail.setProduceStatus(0);
|
|
|
+ }
|
|
|
+
|
|
|
productionOrderDetail.setProduceStatus(0);
|
|
|
productionOrderDetail.setCompanyId(companyId);
|
|
|
productionOrderDetailList.add(productionOrderDetail);
|
|
|
}
|
|
|
- produceOrderDetailService.saveBatch(productionOrderDetailList);
|
|
|
+ produceOrderDetailService.saveOrUpdateBatch(productionOrderDetailList);
|
|
|
|
|
|
List<Long> productIds = productionOrderDetailList.stream().map(ProductionOrderDetail::getProductId).collect(Collectors.toList());
|
|
|
|
|
@@ -436,21 +601,31 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
for (ProductionOrderDetail productionOrderDetail : productionOrderDetailList) {
|
|
|
List<ProductionProcessesVo> productionProcessesVos = processesMap.getOrDefault(productionOrderDetail.getProductId(), new ArrayList<>());
|
|
|
for (ProductionProcessesVo productionProcessesVo : productionProcessesVos) {
|
|
|
- ProductionTaskProgress prodTaskProgress = new ProductionTaskProgress();
|
|
|
+ ProductionTaskProgress prodTaskProgress = productionTaskProgressService.getOne(q -> q
|
|
|
+ .eq(ProductionTaskProgress::getTaskId, productionOrderDetail.getId())
|
|
|
+ .eq(ProductionTaskProgress::getProcessesId, productionProcessesVo.getId())
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isEmpty(prodTaskProgress)) {
|
|
|
+ prodTaskProgress = new ProductionTaskProgress();
|
|
|
+ prodTaskProgress.setFinishQuantity(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
prodTaskProgress.setTaskId(productionOrderDetail.getId());
|
|
|
prodTaskProgress.setProcessesId(productionProcessesVo.getId());
|
|
|
- prodTaskProgress.setFinishQuantity(BigDecimal.ZERO);
|
|
|
|
|
|
|
|
|
prodTaskProgress.setBalanceQuantity(BigDecimal.ZERO);
|
|
|
if (ObjectUtil.equals(productionProcessesVo.getSourceProcessesId(), 1L)) {
|
|
|
- prodTaskProgress.setBalanceQuantity(productionOrderDetail.getQuantity());
|
|
|
+ BigDecimal balanceQuantity = productionOrderDetail.getQuantity().subtract(prodTaskProgress.getFinishQuantity());
|
|
|
+ if (balanceQuantity.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ balanceQuantity = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ prodTaskProgress.setBalanceQuantity(balanceQuantity);
|
|
|
}
|
|
|
|
|
|
productionTaskProgressList.add(prodTaskProgress);
|
|
|
}
|
|
|
}
|
|
|
- productionTaskProgressService.saveBatch(productionTaskProgressList);
|
|
|
+ productionTaskProgressService.saveOrUpdateBatch(productionTaskProgressList);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -480,18 +655,29 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
for (ContractProductBom bomDetail : contractProductBomList) {
|
|
|
BigDecimal multiply = bomDetail.getQuantity().multiply(productionOrderDetail.getQuantity());
|
|
|
|
|
|
- MaterialPreparation materialPreparation = new MaterialPreparation();
|
|
|
+ MaterialPreparation materialPreparation = materialPreparationService.getOne(q -> q
|
|
|
+ .eq(MaterialPreparation::getProductionOrderDetailId, productionOrderDetail.getId())
|
|
|
+ .eq(MaterialPreparation::getMaterialId, bomDetail.getMaterialId())
|
|
|
+ );
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(materialPreparation)) {
|
|
|
+ materialPreparation = new MaterialPreparation();
|
|
|
+ materialPreparation.setStatus(0);
|
|
|
+ } else {
|
|
|
+ if (materialPreparation.getQuantity().compareTo(multiply) != 0 && materialPreparation.getStatus() == 1) {
|
|
|
+ materialPreparation.setStatus(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
materialPreparation.setContractId(contractId);
|
|
|
materialPreparation.setContractDetailId(productionOrderDetail.getContractDetailId());
|
|
|
materialPreparation.setProductionOrderId(productionOrder.getId());
|
|
|
materialPreparation.setProductionOrderDetailId(productionOrderDetail.getId());
|
|
|
materialPreparation.setMaterialId(bomDetail.getMaterialId());
|
|
|
materialPreparation.setQuantity(multiply);
|
|
|
- materialPreparation.setStatus(0);
|
|
|
materialPreparation.setCompanyId(companyId);
|
|
|
materialPreparationList.add(materialPreparation);
|
|
|
}
|
|
|
- materialPreparationService.saveBatch(materialPreparationList);
|
|
|
+ materialPreparationService.saveOrUpdateBatch(materialPreparationList);
|
|
|
}
|
|
|
|
|
|
produceOrderDetailService.updateBatchById(productionOrderDetailList);
|
|
@@ -523,16 +709,21 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
msg.put("business_id", productionOrder.getId());
|
|
|
WebSocketPush.byUser(PushTypeEnum.MESSAGE, productionOrder.getCreateUser(), title, PushBusinessTypeEnum.PRODUCTION_ORDER_REJECT.getType(), msg.toString());
|
|
|
} else {
|
|
|
-
|
|
|
- createMaterialWaitPurchase(productionOrder);
|
|
|
+ if (produceOrderDetailService.count(q -> q.eq(ProductionOrderDetail::getProduceOrderId, dto.getId())) > 0) {
|
|
|
+
|
|
|
+ createMaterialWaitPurchase(productionOrder);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ updateMaterialWaitPurchase(productionOrder.getContractId());
|
|
|
+ }
|
|
|
|
|
|
|
|
|
createOrderDetails(productionOrder);
|
|
|
|
|
|
-
|
|
|
- if (ObjectUtil.isNotEmpty(productionOrder.getProduceTime())) {
|
|
|
- throw new ServiceException("该订单已投产,请勿重复投产!!");
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
createMaterialPreparation(productionOrder);
|
|
@@ -549,28 +740,47 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
|
|
|
private void createStockWait(ProductionOrder productionOrder) {
|
|
|
|
|
|
- StockWait stockWait = new StockWait();
|
|
|
+ StockWait stockWait = stockWaitService.getOne(q -> q
|
|
|
+ .eq(StockWait::getBusinessId, productionOrder.getId())
|
|
|
+ .eq(StockWait::getBusinessType, JournalType.PROD_OUT.getDetailType())
|
|
|
+ );
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(stockWait)) {
|
|
|
+ stockWait = new StockWait();
|
|
|
+ stockWait.setStatus(0);
|
|
|
+ } else {
|
|
|
+ stockWait.setStatus(1);
|
|
|
+ }
|
|
|
stockWait.setCompanyId(SecurityUtils.getCompanyId());
|
|
|
stockWait.setBusinessId(productionOrder.getId());
|
|
|
stockWait.setType(2);
|
|
|
- stockWait.setStatus(0);
|
|
|
+
|
|
|
stockWait.setBusinessType(JournalType.PROD_OUT.getDetailType());
|
|
|
stockWait.setContractId(productionOrder.getContractId());
|
|
|
stockWait.setBusinessCode(productionOrder.getCode());
|
|
|
- stockWaitService.save(stockWait);
|
|
|
+ stockWaitService.saveOrUpdate(stockWait);
|
|
|
|
|
|
List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
|
|
|
List<ContractProductBomVo> contractProductBomQuantitySum = contractProductBomService.getContractProductBomQuantitySum(productionOrder.getContractId());
|
|
|
for (ContractProductBomVo contractProductBomVo : contractProductBomQuantitySum) {
|
|
|
|
|
|
- StockWaitDetails stockWaitDetails = new StockWaitDetails();
|
|
|
- stockWaitDetails.setStockWaitId(stockWait.getId());
|
|
|
+ Long stockWaitId = stockWait.getId();
|
|
|
+ StockWaitDetails stockWaitDetails = stockWaitDetailsService.getOne(q -> q
|
|
|
+ .eq(StockWaitDetails::getStockWaitId, stockWaitId)
|
|
|
+ .eq(StockWaitDetails::getProductId, contractProductBomVo.getMaterialId())
|
|
|
+ );
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(stockWaitDetails)) {
|
|
|
+ stockWaitDetails = new StockWaitDetails();
|
|
|
+ stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+
|
|
|
+ stockWaitDetails.setStockWaitId(stockWaitId);
|
|
|
stockWaitDetails.setProductId(contractProductBomVo.getMaterialId());
|
|
|
stockWaitDetails.setQuantity(contractProductBomVo.getQuantity());
|
|
|
- stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
|
|
|
stockWaitDetailsList.add(stockWaitDetails);
|
|
|
}
|
|
|
- stockWaitDetailsService.saveBatch(stockWaitDetailsList);
|
|
|
+ stockWaitDetailsService.saveOrUpdateBatch(stockWaitDetailsList);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -589,9 +799,14 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
Assert.notEmpty(productionOrder, "查询不到生产订单信息");
|
|
|
ProductionOrderVo productionOrderVo = BeanUtil.copyProperties(productionOrder, ProductionOrderVo.class);
|
|
|
|
|
|
+
|
|
|
List<EhsdPurchaseProductVo> ehsdPurchaseProductVos = ehsdPurchaseProductMapper.getList(IWrapper.<EhsdPurchaseProduct>getWrapper()
|
|
|
.eq("epp", EhsdPurchaseProduct::getContractId, productionOrder.getContractId())
|
|
|
);
|
|
|
+
|
|
|
+ supplierInfoService.attributeAssign(ehsdPurchaseProductVos, EhsdPurchaseProductVo::getSellCorporationId, (item, supplier) -> {
|
|
|
+ item.setSellCorporationName(supplier.getName());
|
|
|
+ });
|
|
|
|
|
|
productInfoService.attributeAssign(ehsdPurchaseProductVos, EhsdPurchaseProductVo::getProductId, (detail, product) -> {
|
|
|
detail.setProductCode(product.getCustomCode());
|
|
@@ -603,6 +818,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
detail.setProductColor(product.getColor());
|
|
|
});
|
|
|
|
|
|
+
|
|
|
List<StockJournalDetailsVo> stockJournalDetailsVos = stockJournalDetailsMapper.getList(IWrapper.<StockJournalDetails>getWrapper()
|
|
|
.eq("sj", StockJournalDetails::getContractId, productionOrder.getContractId())
|
|
|
);
|
|
@@ -618,6 +834,18 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
detail.setProductColor(product.getColor());
|
|
|
});
|
|
|
|
|
|
+
|
|
|
+ List<Long> pIds = ehsdPurchaseProductVos.stream().map(item -> item.getPurchaseId()).collect(Collectors.toList());
|
|
|
+ if (ObjectUtil.isNotEmpty(pIds)) {
|
|
|
+ List<ArrivalDetailVo> arrivalDetailVos = arrivalDetailMapper.getList(IWrapper.<ArrivalDetail>getWrapper()
|
|
|
+ .in("ad.purchase_id", pIds)
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ productionOrderVo.setArrivalDetailList(arrivalDetailVos);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
productionOrderVo.setPurchaseProductList(ehsdPurchaseProductVos);
|
|
|
productionOrderVo.setStockJournalDetailsList(stockJournalDetailsVos);
|
|
|
|