Pārlūkot izejas kodu

生产任务添加明细接口

yzc 1 gadu atpakaļ
vecāks
revīzija
7eb3e5bb3f

+ 9 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProduceOrderDetailController.java

@@ -2,6 +2,7 @@ package com.fjhx.mes.controller.production;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.dto.ProduceOrderDetailSelectDto;
+import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
 import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
 import com.fjhx.mes.service.production.ProduceOrderDetailService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,4 +35,12 @@ public class ProduceOrderDetailController {
         return produceOrderDetailService.getPage(dto);
     }
 
+    /**
+     * 生产任务详情
+     */
+    @PostMapping("/detail")
+    public ProductionOrderDetailVo detail(@RequestBody ProductionTaskDetailDto dto) {
+        return produceOrderDetailService.detail(dto);
+    }
+
 }

+ 24 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionOrderDetailVo.java

@@ -1,6 +1,7 @@
 package com.fjhx.mes.entity.production.vo;
 
 import com.fjhx.mes.entity.production.po.ProductionOrderDetail;
+import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -83,4 +84,27 @@ public class ProductionOrderDetailVo extends ProductionOrderDetail {
 	 */
 	private String rawMaterialCode;
 
+	/**
+	 * 原材料长
+	 */
+	private BigDecimal rawMaterialLength;
+	/**
+	 * 原材料宽
+	 */
+	private BigDecimal rawMaterialWidth;
+	/**
+	 * 原材料高
+	 */
+	private BigDecimal rawMaterialHeight;
+
+	/**
+	 * 生产进度列表
+	 */
+	private List<ProductionTaskProgressVo> productionTaskProgressList;
+
+	/**
+	 * BOM列表
+	 */
+	private List<ContractProductBomVo> contractProductBomList;
+
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionTaskProgressVo.java

@@ -14,4 +14,9 @@ import lombok.Setter;
 @Setter
 public class ProductionTaskProgressVo extends ProductionTaskProgress {
 
+    /**
+     * 工序名称
+     */
+    private String progressName;
+
 }

+ 12 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionTaskProgressMapper.java

@@ -2,6 +2,12 @@ package com.fjhx.mes.mapper.production;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fjhx.mes.entity.production.po.ProductionTaskProgress;
+import com.fjhx.mes.entity.production.vo.ProductionTaskProgressVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
@@ -12,6 +18,12 @@ import com.fjhx.mes.entity.production.po.ProductionTaskProgress;
  * @author
  * @since 2024-01-15
  */
+@Mapper
 public interface ProductionTaskProgressMapper extends BaseMapper<ProductionTaskProgress> {
 
+    /**
+     * 获取生产进度列表
+     */
+    List<ProductionTaskProgressVo> getList(@Param("ew") IWrapper<ProductionTaskProgress> wrapper);
+
 }

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/ProduceOrderDetailService.java

@@ -2,6 +2,7 @@ package com.fjhx.mes.service.production;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.dto.ProduceOrderDetailSelectDto;
+import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
 import com.fjhx.mes.entity.production.po.ProductionOrderDetail;
 import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
 import com.ruoyi.common.core.service.BaseService;
@@ -21,4 +22,9 @@ public interface ProduceOrderDetailService extends BaseService<ProductionOrderDe
 	 * 生产任务分页
 	 */
 	Page<ProductionOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto);
+
+	/**
+	 * 生产任务详情
+	 */
+	ProductionOrderDetailVo detail(ProductionTaskDetailDto dto);
 }

+ 112 - 23
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderDetailServiceImpl.java

@@ -1,26 +1,37 @@
 package com.fjhx.mes.service.production.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 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.ProductInfo;
 import com.fjhx.item.service.product.ProductBomDetailService;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.production.dto.ProduceOrderDetailSelectDto;
+import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
 import com.fjhx.mes.entity.production.po.ProductionOrder;
 import com.fjhx.mes.entity.production.po.ProductionOrderDetail;
+import com.fjhx.mes.entity.production.po.ProductionTaskProgress;
 import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
-import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
+import com.fjhx.mes.entity.production.vo.ProductionTaskProgressVo;
 import com.fjhx.mes.mapper.production.ProduceOrderDetailMapper;
 import com.fjhx.mes.mapper.production.ProductionProcessesMapper;
+import com.fjhx.mes.mapper.production.ProductionTaskProgressMapper;
 import com.fjhx.mes.service.production.ProduceOrderDetailService;
+import com.fjhx.sale.entity.contract.po.ContractProductBom;
+import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
+import com.fjhx.sale.service.contract.ContractProductBomService;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -42,6 +53,10 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
     private ProductionProcessesMapper productionProcessesMapper;
     @Autowired
     private ProductBomDetailService productBomDetailService;
+    @Autowired
+    private ProductionTaskProgressMapper productionTaskProgressMapper;
+    @Autowired
+    private ContractProductBomService contractProductBomService;
 
     @Override
     public Page<ProductionOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto) {
@@ -75,23 +90,43 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
             return page;
         }
 
+        List<Long> cdIds = records.stream().map(ProductionOrderDetail::getContractDetailId).collect(Collectors.toList());
+
+
         //获取产品信息
         List<Long> pIds = records.stream().map(ProductionOrderDetail::getProductId).collect(Collectors.toList());
         List<ProductInfo> productInfoList = productInfoService.list(q -> q.in(ProductInfo::getId, pIds));
         Map<Long, ProductInfo> productMap = productInfoList.stream().collect(Collectors.toMap(ProductInfo::getId, Function.identity()));
         //获取原材料信息
-        Map<Long, ProductInfo> rawMaterialMap = new HashMap<>();
-        if (ObjectUtil.isNotEmpty(productInfoList)) {
-            List<Long> rmIds = productInfoList.stream().map(ProductInfo::getRawMaterialId).collect(Collectors.toList());
-            rawMaterialMap = productInfoService.mapKEntity(ProductInfo::getId, q -> q.in(ProductInfo::getId, rmIds));
-        }
-
-        //赋值工序列表
-        Map<Long, List<ProductionProcessesVo>> processesMap = new HashMap<>();
-        if (ObjectUtil.isNotEmpty(pIds)) {
-            List<ProductionProcessesVo> processes = productionProcessesMapper.getProcessesByProductId(IWrapper.getWrapper().in("pi.id", pIds));
-            processesMap = processes.stream().collect(Collectors.groupingBy(ProductionProcessesVo::getProductId));
-        }
+        List<ContractProductBom> rawMaterialBom = contractProductBomService.list(q -> q
+                .in(ContractProductBom::getContractProductId, cdIds)
+                .eq(ContractProductBom::getType, 1)
+        );
+        List<ContractProductBomVo> contractProductBomVoList = BeanUtil.copyToList(rawMaterialBom, ContractProductBomVo.class);
+        productInfoService.attributeAssign(contractProductBomVoList, ContractProductBomVo::getMaterialId, (item, rawMaterial) -> {
+            item.setProductCode(rawMaterial.getCustomCode());
+            item.setProductName(rawMaterial.getName());
+            item.setProductLength(rawMaterial.getLength());
+            item.setProductWidth(rawMaterial.getWidth());
+            item.setProductHeight(rawMaterial.getHeight());
+        });
+        Map<Long, ContractProductBomVo> rawMaterialMap = contractProductBomVoList.stream().collect(Collectors.toMap(ContractProductBomVo::getContractProductId, Function.identity()));
+
+
+//        //赋值工序列表
+//        Map<Long, List<ProductionProcessesVo>> processesMap = new HashMap<>();
+//        if (ObjectUtil.isNotEmpty(pIds)) {
+//            List<ProductionProcessesVo> processes = productionProcessesMapper.getProcessesByProductId(IWrapper.getWrapper().in("pi.id", pIds));
+//            processesMap = processes.stream().collect(Collectors.groupingBy(ProductionProcessesVo::getProductId));
+//        }
+
+        //获取生产进度列表
+        List<Long> tIds = records.stream().map(ProductionOrderDetail::getId).collect(Collectors.toList());
+        List<ProductionTaskProgressVo> productionTaskProgressList = productionTaskProgressMapper.getList(IWrapper.<ProductionTaskProgress>getWrapper()
+                .in("ptp.task_id", tIds)
+        );
+        Map<Long, List<ProductionTaskProgressVo>> productionTaskProgressMap = productionTaskProgressList
+                .stream().collect(Collectors.groupingBy(ProductionTaskProgress::getTaskId));
 
 
         for (ProductionOrderDetailVo record : records) {
@@ -105,13 +140,13 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
                 record.setProductLength(product.getLength());
                 record.setProductWidth(product.getWidth());
                 record.setProductHeight(product.getHeight());
+            }
 
-                //赋值原材料信息
-                ProductInfo rawMaterial = rawMaterialMap.get(product.getRawMaterialId());
-                if (ObjectUtil.isNotEmpty(rawMaterial)) {
-                    record.setRawMaterialCode(rawMaterial.getCustomCode());
-                    record.setRawMaterialName(rawMaterial.getName());
-                }
+            //赋值原材料信息
+            ContractProductBomVo rawMaterial = rawMaterialMap.get(record.getContractDetailId());
+            if (ObjectUtil.isNotEmpty(rawMaterial)) {
+                record.setRawMaterialCode(rawMaterial.getProductCode());
+                record.setRawMaterialName(rawMaterial.getProductName());
             }
 
             //赋值生产用时
@@ -123,12 +158,66 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
                 record.setUsageTime(usageTime / 1000 / 60 / 60);
             }
 
-            //赋值工序列表
-            List<ProductionProcessesVo> productionProcessesVo = processesMap.get(record.getProductId());
-            record.setProductionProcessesList(productionProcessesVo);
+//            //赋值工序列表
+//            List<ProductionProcessesVo> productionProcessesVo = processesMap.get(record.getProductId());
+//            record.setProductionProcessesList(productionProcessesVo);
+
+            //赋值生产进度列表
+            record.setProductionTaskProgressList(productionTaskProgressMap.get(record.getId()));
         }
 
         return page;
     }
 
+    @Override
+    public ProductionOrderDetailVo detail(ProductionTaskDetailDto dto) {
+        ProductionOrderDetailVo detail = BeanUtil.copyProperties(getById(dto.getId()), ProductionOrderDetailVo.class);
+        Assert.notEmpty(detail, "查询不到任务明细信息!");
+        //赋值产品信息
+        ProductInfo product = productInfoService.getById(detail.getProductId());
+        if (ObjectUtil.isNotEmpty(product)) {
+            detail.setProductCode(product.getCustomCode());
+            detail.setProductName(product.getName());
+            detail.setProductUnit(product.getUnit());
+            detail.setProductSpec(product.getSpec());
+            detail.setProductLength(product.getLength());
+            detail.setProductWidth(product.getWidth());
+            detail.setProductHeight(product.getHeight());
+        }
+        //赋值原材料信息
+        ContractProductBom rawMaterialBom = contractProductBomService.getOne(q -> q
+                .eq(ContractProductBom::getContractProductId, detail.getContractDetailId())
+                .eq(ContractProductBom::getType, 1)
+        );
+        if (ObjectUtil.isNotEmpty(rawMaterialBom)) {
+            ProductInfo rawMaterial = productInfoService.getById(rawMaterialBom.getMaterialId());
+            if (ObjectUtil.isNotEmpty(rawMaterial)) {
+                detail.setRawMaterialCode(rawMaterial.getCustomCode());
+                detail.setRawMaterialName(rawMaterial.getName());
+                detail.setRawMaterialLength(rawMaterial.getLength());
+                detail.setRawMaterialWidth(rawMaterial.getWidth());
+                detail.setRawMaterialHeight(rawMaterial.getHeight());
+            }
+        }
+        //赋值BOM信息
+        List<ContractProductBom> bomList = contractProductBomService.list(q -> q
+                .eq(ContractProductBom::getContractProductId, detail.getContractDetailId())
+                .ne(ContractProductBom::getType, 1)
+        );
+        List<ContractProductBomVo> bomVoList = BeanUtil.copyToList(bomList, ContractProductBomVo.class);
+        productInfoService.attributeAssign(bomVoList, ContractProductBomVo::getMaterialId, (item, product1) -> {
+            item.setProductCode(product1.getCustomCode());
+            item.setProductName(product1.getName());
+        });
+        detail.setContractProductBomList(bomVoList);
+
+        //赋值生产进度列表
+        List<ProductionTaskProgressVo> productionTaskProgressList = productionTaskProgressMapper.getList(IWrapper.<ProductionTaskProgress>getWrapper()
+                .eq("ptp.task_id", detail.getId())
+        );
+        detail.setProductionTaskProgressList(productionTaskProgressList);
+
+        return detail;
+    }
+
 }

+ 11 - 0
hx-mes/src/main/resources/mapper/production/ProductionTaskProgressMapper.xml

@@ -1,4 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mes.mapper.production.ProductionTaskProgressMapper">
+
+    <select id="getList" resultType="com.fjhx.mes.entity.production.vo.ProductionTaskProgressVo">
+        SELECT ptp.id,
+               ptp.task_id,
+               ptp.processes_id,
+               pp.`name` AS progressName,
+               ptp.finish_quantity
+        FROM production_task_progress ptp
+                 LEFT JOIN production_processes pp ON ptp.processes_id = pp.id
+            ${ew.customSqlSegment}
+    </select>
 </mapper>