|
@@ -6,7 +6,11 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.common.utils.Assert;
|
|
|
+import com.fjhx.item.entity.product.po.ProductBomDetail;
|
|
|
+import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.fjhx.item.service.product.ProductBomDetailService;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.mes.entity.material.po.MaterialPreparation;
|
|
|
import com.fjhx.mes.entity.production.dto.ProduceOrderSelectDto;
|
|
|
import com.fjhx.mes.entity.production.dto.ProductionOrderDto;
|
|
|
import com.fjhx.mes.entity.production.po.ProductionOrder;
|
|
@@ -15,6 +19,7 @@ import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
|
|
|
import com.fjhx.mes.entity.production.vo.ProductionOrderVo;
|
|
|
import com.fjhx.mes.entity.work.po.WorkOrder;
|
|
|
import com.fjhx.mes.mapper.production.ProduceOrderMapper;
|
|
|
+import com.fjhx.mes.service.material.MaterialPreparationService;
|
|
|
import com.fjhx.mes.service.production.ProduceOrderDetailService;
|
|
|
import com.fjhx.mes.service.production.ProduceOrderService;
|
|
|
import com.fjhx.mes.service.work.WorkOrderService;
|
|
@@ -58,6 +63,10 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
private ProductInfoService productInfoService;
|
|
|
@Autowired
|
|
|
private WorkOrderService workOrderService;
|
|
|
+ @Autowired
|
|
|
+ private ProductBomDetailService productBomDetailService;
|
|
|
+ @Autowired
|
|
|
+ private MaterialPreparationService materialPreparationService;
|
|
|
|
|
|
@Override
|
|
|
public Page<ProductionOrderVo> getPage(ProduceOrderSelectDto dto) {
|
|
@@ -127,6 +136,12 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
//创建生产订单明细
|
|
|
List<ProductionOrderDetail> productionOrderDetailList = new ArrayList<>();
|
|
|
List<ContractProduct> contractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, contractId));
|
|
|
+
|
|
|
+ //获取产品id
|
|
|
+ List<Long> productIds = contractProductList.stream().map(ContractProduct::getProductId).collect(Collectors.toList());
|
|
|
+ Map<Long, ProductInfo> productInfoMap = productInfoService.mapKEntity(ProductInfo::getId, q -> q.in(ProductInfo::getId, productIds));
|
|
|
+ Map<Long, List<ProductBomDetail>> productBomDetailMap = productBomDetailService.mapKGroup(ProductBomDetail::getProductId, q -> q.in(ProductBomDetail::getProductId, productIds));
|
|
|
+
|
|
|
for (ContractProduct contractProduct : contractProductList) {
|
|
|
ProductionOrderDetail productionOrderDetail = new ProductionOrderDetail();
|
|
|
productionOrderDetail.setProduceOrderId(produceOrderDto.getId());
|
|
@@ -138,6 +153,35 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
|
|
|
productionOrderDetail.setProduceStatus(0);
|
|
|
productionOrderDetail.setTenantId(tenantId);
|
|
|
productionOrderDetailList.add(productionOrderDetail);
|
|
|
+
|
|
|
+ //创建备料
|
|
|
+ Long productId = contractProduct.getProductId();
|
|
|
+ ProductInfo productInfo = productInfoMap.get(productId);
|
|
|
+ Assert.notEmpty(productInfo, "查询不到产品信息");
|
|
|
+
|
|
|
+// //创建原材料
|
|
|
+// ProductBomDetail productBomDetail = new ProductBomDetail();
|
|
|
+// productBomDetail.setProductId(productInfo.getId());
|
|
|
+// productBomDetail.setMaterialId(productInfo.getRawMaterialId());
|
|
|
+// productBomDetail.setQuantity(BigDecimal.ONE);
|
|
|
+ List<ProductBomDetail> productBomDetailList = productBomDetailMap.get(productId);
|
|
|
+// productBomDetailList.add(productBomDetail);
|
|
|
+
|
|
|
+ List<MaterialPreparation> materialPreparationList = new ArrayList<>();
|
|
|
+ for (ProductBomDetail bomDetail : productBomDetailList) {
|
|
|
+ BigDecimal multiply = bomDetail.getQuantity().multiply(contractProduct.getQuantity());
|
|
|
+
|
|
|
+ MaterialPreparation materialPreparation = new MaterialPreparation();
|
|
|
+ materialPreparation.setContractId(contractId);
|
|
|
+ materialPreparation.setContractDetailId(contractProduct.getId());
|
|
|
+ materialPreparation.setProductionOrderId(produceOrderDto.getId());
|
|
|
+ materialPreparation.setProductionOrderDetailId(productionOrderDetail.getId());
|
|
|
+ materialPreparation.setMaterialId(bomDetail.getMaterialId());
|
|
|
+ materialPreparation.setQuantity(multiply);
|
|
|
+ materialPreparation.setStatus(0);
|
|
|
+ materialPreparationList.add(materialPreparation);
|
|
|
+ }
|
|
|
+ materialPreparationService.saveBatch(materialPreparationList);
|
|
|
}
|
|
|
produceOrderDetailService.saveBatch(productionOrderDetailList);
|
|
|
|