|
@@ -46,119 +46,117 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, ProductionOrder> implements ProduceOrderService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private ContractService contractService;
|
|
|
- @Autowired
|
|
|
- private ContractProductService contractProductService;
|
|
|
- @Autowired
|
|
|
- private ProduceOrderDetailService produceOrderDetailService;
|
|
|
- @Autowired
|
|
|
- private ISysDeptService sysDeptService;
|
|
|
- @Autowired
|
|
|
- private ProductInfoService productInfoService;
|
|
|
- @Autowired
|
|
|
- private WorkOrderService workOrderService;
|
|
|
-
|
|
|
- @Override
|
|
|
- public Page<ProductionOrderVo> getPage(ProduceOrderSelectDto dto) {
|
|
|
- IWrapper<ProductionOrder> wrapper = getWrapper();
|
|
|
- wrapper.orderByDesc("po", ProductionOrder::getId);
|
|
|
-
|
|
|
- //生产状态
|
|
|
- wrapper.eq(ProductionOrder::getProduceStatus, dto.getProduceStatus());
|
|
|
- //交期-时间范围过滤
|
|
|
- wrapper.ge("po", ProductionOrder::getDeliveryPeriod, dto.getStaDeliveryPeriod());
|
|
|
- wrapper.le("po", ProductionOrder::getDeliveryPeriod, dto.getEndDeliveryPeriod());
|
|
|
- //下单时间(创建时间)-时间范围过滤
|
|
|
- wrapper.ge("po", ProductionOrder::getCreateTime, dto.getBeginTime());
|
|
|
- wrapper.le("po", ProductionOrder::getCreateTime, dto.getEndTime());
|
|
|
- //关键字
|
|
|
- wrapper.keyword(dto.getKeyword(), new SqlField(ProductionOrder::getCode));
|
|
|
-
|
|
|
- Page<ProductionOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
- List<ProductionOrderVo> records = page.getRecords();
|
|
|
- if (ObjectUtil.isEmpty(records)) {
|
|
|
- return page;
|
|
|
- }
|
|
|
- //赋值订单明细信息
|
|
|
- List<Long> produceOrderIds = records.stream().map(ProductionOrder::getId).collect(Collectors.toList());
|
|
|
- List<ProductionOrderDetail> productionOrderDetailList = produceOrderDetailService.list(q ->
|
|
|
- q.in(ProductionOrderDetail::getProduceOrderId, produceOrderIds));
|
|
|
- List<ProductionOrderDetailVo> produceOrderDetailVos = BeanUtil.copyToList(productionOrderDetailList, ProductionOrderDetailVo.class);
|
|
|
-
|
|
|
- productInfoService.attributeAssign(produceOrderDetailVos, ProductionOrderDetail::getProductId, (item, product) -> {
|
|
|
- item.setProductCode(product.getCustomCode());
|
|
|
- item.setProductName(product.getName());
|
|
|
- item.setProductUnit(product.getUnit());
|
|
|
- item.setProductSpec(product.getSpec());
|
|
|
- item.setProductLength(product.getLength());
|
|
|
- item.setProductWidth(product.getWidth());
|
|
|
- item.setProductHeight(product.getHeight());
|
|
|
- });
|
|
|
-
|
|
|
- Map<Long, List<ProductionOrderDetailVo>> produceOrderDetailMap = produceOrderDetailVos.stream()
|
|
|
- .collect(Collectors.groupingBy(ProductionOrderDetail::getProduceOrderId));
|
|
|
- for (ProductionOrderVo record : records) {
|
|
|
- record.setProduceOrderDetailList(produceOrderDetailMap.get(record.getId()));
|
|
|
- }
|
|
|
-
|
|
|
- return page;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- @DSTransactional
|
|
|
- public void createOrder(ProductionOrderDto produceOrderDto) {
|
|
|
- Long contractId = produceOrderDto.getContractId();
|
|
|
- Assert.notEmpty(produceOrderDto.getContractId(), "合同id不能为空!");
|
|
|
-
|
|
|
- //将数据移到归属公司下
|
|
|
- SysDept produceCompany = sysDeptService.getById(produceOrderDto.getProduceCompanyId());
|
|
|
- Assert.notEmpty(produceCompany, "查询不到生产公司信息");
|
|
|
- String tenantId = produceCompany.getTenantId();
|
|
|
- produceOrderDto.setTenantId(tenantId);
|
|
|
-
|
|
|
- //获取合同信息
|
|
|
- Contract contract = contractService.getById(contractId);
|
|
|
- Assert.notEmpty(contract, "查询不到合同信息!");
|
|
|
- contractService.update(q -> q.eq(Contract::getId, contractId).set(Contract::getOrderDistributeStatus, 1));
|
|
|
-
|
|
|
- produceOrderDto.setCode(contract.getCode());
|
|
|
- produceOrderDto.setProduceStatus(0);
|
|
|
- this.save(produceOrderDto);
|
|
|
-
|
|
|
- //创建生产订单明细
|
|
|
- List<ProductionOrderDetail> productionOrderDetailList = new ArrayList<>();
|
|
|
- List<ContractProduct> contractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, contractId));
|
|
|
- for (ContractProduct contractProduct : contractProductList) {
|
|
|
- ProductionOrderDetail productionOrderDetail = new ProductionOrderDetail();
|
|
|
- productionOrderDetail.setProduceOrderId(produceOrderDto.getId());
|
|
|
- productionOrderDetail.setContractId(contractId);
|
|
|
- productionOrderDetail.setContractDetailId(contractProduct.getId());
|
|
|
- productionOrderDetail.setProductId(contractProduct.getProductId());
|
|
|
- productionOrderDetail.setQuantity(contractProduct.getQuantity());
|
|
|
- productionOrderDetail.setFinishQuantity(BigDecimal.ZERO);
|
|
|
- productionOrderDetail.setProduceStatus(0);
|
|
|
- productionOrderDetail.setTenantId(tenantId);
|
|
|
- productionOrderDetailList.add(productionOrderDetail);
|
|
|
- }
|
|
|
- produceOrderDetailService.saveBatch(productionOrderDetailList);
|
|
|
-
|
|
|
- //创建生产订单明细
|
|
|
- List<WorkOrder> workOrderList = new ArrayList<>();
|
|
|
- for (ContractProduct contractProduct : contractProductList) {
|
|
|
- //生成工单
|
|
|
- for (int i = 1; i <= contractProduct.getQuantity().intValue(); i++) {
|
|
|
- WorkOrder workOrder = new WorkOrder();
|
|
|
- workOrder.setCode(contract.getCode());
|
|
|
- workOrder.setProductId(contractProduct.getProductId());
|
|
|
- workOrder.setQuantity(BigDecimal.ONE);
|
|
|
- workOrder.setStatus(0);
|
|
|
- workOrder.setContractId(contractId);
|
|
|
- workOrder.setContractDetailsId(contractProduct.getId());
|
|
|
- workOrderList.add(workOrder);
|
|
|
- }
|
|
|
- }
|
|
|
- workOrderService.saveBatch(workOrderList);
|
|
|
- }
|
|
|
+ @Autowired
|
|
|
+ private ContractService contractService;
|
|
|
+ @Autowired
|
|
|
+ private ContractProductService contractProductService;
|
|
|
+ @Autowired
|
|
|
+ private ProduceOrderDetailService produceOrderDetailService;
|
|
|
+ @Autowired
|
|
|
+ private ISysDeptService sysDeptService;
|
|
|
+ @Autowired
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+ @Autowired
|
|
|
+ private WorkOrderService workOrderService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<ProductionOrderVo> getPage(ProduceOrderSelectDto dto) {
|
|
|
+ IWrapper<ProductionOrder> wrapper = getWrapper();
|
|
|
+ wrapper.orderByDesc("po", ProductionOrder::getId);
|
|
|
+
|
|
|
+ //生产状态
|
|
|
+ wrapper.eq(ProductionOrder::getProduceStatus, dto.getProduceStatus());
|
|
|
+ //交期-时间范围过滤
|
|
|
+ wrapper.ge("po", ProductionOrder::getDeliveryPeriod, dto.getStaDeliveryPeriod());
|
|
|
+ wrapper.le("po", ProductionOrder::getDeliveryPeriod, dto.getEndDeliveryPeriod());
|
|
|
+ //下单时间(创建时间)-时间范围过滤
|
|
|
+ wrapper.ge("po", ProductionOrder::getCreateTime, dto.getBeginTime());
|
|
|
+ wrapper.le("po", ProductionOrder::getCreateTime, dto.getEndTime());
|
|
|
+ //关键字
|
|
|
+ wrapper.keyword(dto.getKeyword(), new SqlField(ProductionOrder::getCode));
|
|
|
+
|
|
|
+ Page<ProductionOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<ProductionOrderVo> records = page.getRecords();
|
|
|
+ if (ObjectUtil.isEmpty(records)) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ //赋值订单明细信息
|
|
|
+ List<Long> produceOrderIds = records.stream().map(ProductionOrder::getId).collect(Collectors.toList());
|
|
|
+ List<ProductionOrderDetail> productionOrderDetailList = produceOrderDetailService.list(q -> q.in(ProductionOrderDetail::getProduceOrderId, produceOrderIds));
|
|
|
+ List<ProductionOrderDetailVo> produceOrderDetailVos = BeanUtil.copyToList(productionOrderDetailList, ProductionOrderDetailVo.class);
|
|
|
+
|
|
|
+ productInfoService.attributeAssign(produceOrderDetailVos, ProductionOrderDetail::getProductId, (item, product) -> {
|
|
|
+ item.setProductCode(product.getCustomCode());
|
|
|
+ item.setProductName(product.getName());
|
|
|
+ item.setProductUnit(product.getUnit());
|
|
|
+ item.setProductSpec(product.getSpec());
|
|
|
+ item.setProductLength(product.getLength());
|
|
|
+ item.setProductWidth(product.getWidth());
|
|
|
+ item.setProductHeight(product.getHeight());
|
|
|
+ });
|
|
|
+
|
|
|
+ Map<Long, List<ProductionOrderDetailVo>> produceOrderDetailMap = produceOrderDetailVos.stream().collect(Collectors.groupingBy(ProductionOrderDetail::getProduceOrderId));
|
|
|
+ for (ProductionOrderVo record : records) {
|
|
|
+ record.setProduceOrderDetailList(produceOrderDetailMap.get(record.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @DSTransactional
|
|
|
+ public void createOrder(ProductionOrderDto produceOrderDto) {
|
|
|
+ Long contractId = produceOrderDto.getContractId();
|
|
|
+ Assert.notEmpty(produceOrderDto.getContractId(), "合同id不能为空!");
|
|
|
+
|
|
|
+ //将数据移到归属公司下
|
|
|
+ SysDept produceCompany = sysDeptService.getById(produceOrderDto.getProduceCompanyId());
|
|
|
+ Assert.notEmpty(produceCompany, "查询不到生产公司信息");
|
|
|
+ String tenantId = produceCompany.getTenantId();
|
|
|
+ produceOrderDto.setTenantId(tenantId);
|
|
|
+
|
|
|
+ //获取合同信息
|
|
|
+ Contract contract = contractService.getById(contractId);
|
|
|
+ Assert.notEmpty(contract, "查询不到合同信息!");
|
|
|
+ contractService.update(q -> q.eq(Contract::getId, contractId).set(Contract::getOrderDistributeStatus, 1));
|
|
|
+
|
|
|
+ produceOrderDto.setCode(contract.getCode());
|
|
|
+ produceOrderDto.setProduceStatus(0);
|
|
|
+ this.save(produceOrderDto);
|
|
|
+
|
|
|
+ //创建生产订单明细
|
|
|
+ List<ProductionOrderDetail> productionOrderDetailList = new ArrayList<>();
|
|
|
+ List<ContractProduct> contractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, contractId));
|
|
|
+ for (ContractProduct contractProduct : contractProductList) {
|
|
|
+ ProductionOrderDetail productionOrderDetail = new ProductionOrderDetail();
|
|
|
+ productionOrderDetail.setProduceOrderId(produceOrderDto.getId());
|
|
|
+ productionOrderDetail.setContractId(contractId);
|
|
|
+ productionOrderDetail.setContractDetailId(contractProduct.getId());
|
|
|
+ productionOrderDetail.setProductId(contractProduct.getProductId());
|
|
|
+ productionOrderDetail.setQuantity(contractProduct.getQuantity());
|
|
|
+ productionOrderDetail.setFinishQuantity(BigDecimal.ZERO);
|
|
|
+ productionOrderDetail.setProduceStatus(0);
|
|
|
+ productionOrderDetail.setTenantId(tenantId);
|
|
|
+ productionOrderDetailList.add(productionOrderDetail);
|
|
|
+ }
|
|
|
+ produceOrderDetailService.saveBatch(productionOrderDetailList);
|
|
|
+
|
|
|
+ //创建生产订单明细
|
|
|
+ List<WorkOrder> workOrderList = new ArrayList<>();
|
|
|
+ for (ContractProduct contractProduct : contractProductList) {
|
|
|
+ //生成工单
|
|
|
+ for (int i = 1; i <= contractProduct.getQuantity().intValue(); i++) {
|
|
|
+ WorkOrder workOrder = new WorkOrder();
|
|
|
+ workOrder.setCode(contract.getCode() + "-" + i);
|
|
|
+ workOrder.setProductId(contractProduct.getProductId());
|
|
|
+ workOrder.setQuantity(BigDecimal.ONE);
|
|
|
+ workOrder.setStatus(0);
|
|
|
+ workOrder.setContractId(contractId);
|
|
|
+ workOrder.setContractDetailsId(contractProduct.getId());
|
|
|
+ workOrderList.add(workOrder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ workOrderService.saveBatch(workOrderList);
|
|
|
+ }
|
|
|
|
|
|
}
|