Explorar el Código

生产排程添加工序过滤页面

yzc hace 1 año
padre
commit
e0d1d3ae9e

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

@@ -39,6 +39,14 @@ public class ProduceOrderDetailController {
     }
 
     /**
+     * 生产任务分页
+     */
+    @PostMapping("/schedulingTaskPage")
+    public Page<ProductionOrderDetailVo> schedulingTaskPage(@RequestBody ProduceOrderDetailSelectDto dto) {
+        return produceOrderDetailService.getPage(dto);
+    }
+
+    /**
      * 生产任务详情
      */
     @PostMapping("/detail")

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProductionSchedulingController.java

@@ -1,5 +1,6 @@
 package com.fjhx.mes.controller.production;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingDto;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
@@ -30,6 +31,11 @@ public class ProductionSchedulingController {
     @Autowired
     private ProductionSchedulingService productionSchedulingService;
 
+    @PostMapping("/page")
+    public Page<ProductionSchedulingVo> getPage(@RequestBody ProductionSchedulingSelectDto dto) {
+        return productionSchedulingService.getPage(dto);
+    }
+
     /**
      * 生产排程列表
      */

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProductionSchedulingSelectDto.java

@@ -19,5 +19,10 @@ public class ProductionSchedulingSelectDto extends BaseSelectDto {
      */
     private Long companyId;
 
+    /**
+     * 工序id
+     */
+    private Long processesId;
+
 
 }

+ 41 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionSchedulingVo.java

@@ -4,6 +4,8 @@ import com.fjhx.mes.entity.production.po.ProductionScheduling;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 生产排程列表查询返回值实体
  *
@@ -28,4 +30,43 @@ public class ProductionSchedulingVo extends ProductionScheduling {
      */
     private String schedulingDateStr;
 
+    //=======================
+    private Long taskId;
+    private BigDecimal taskQuantity;
+    private Long orderId;
+    private String orderCode;
+    /**
+     * 产品id
+     */
+    private Long productId;
+    /**
+     * 产品编号
+     */
+    private String productCode;
+    /**
+     * 产品名称
+     */
+    private String productName;
+    /**
+     * 产品长
+     */
+    private BigDecimal productLength;
+    /**
+     * 产品宽
+     */
+    private BigDecimal productWidth;
+    /**
+     * 产品高
+     */
+    private BigDecimal productHeight;
+    /**
+     * 产品颜色
+     */
+    private String productColor;
+
+    /**
+     * 总排程数量
+     */
+    private BigDecimal sumQuantity;
+
 }

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionSchedulingMapper.java

@@ -1,6 +1,7 @@
 package com.fjhx.mes.mapper.production;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
 import com.fjhx.mes.entity.production.vo.ProductionSchedulingVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -19,6 +20,11 @@ import java.util.List;
 public interface ProductionSchedulingMapper extends BaseMapper<ProductionScheduling> {
 
     /**
+     * 分页
+     */
+    Page<ProductionSchedulingVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductionScheduling> wrapper);
+
+    /**
      * 排程合并数量
      */
     List<ProductionSchedulingVo> listSumQuantity(@Param("ew") IWrapper<ProductionScheduling> wrapper);

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

@@ -27,6 +27,11 @@ public interface ProduceOrderDetailService extends BaseService<ProductionOrderDe
     Page<ProductionOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto);
 
     /**
+     * 生成任务分页 生产排程用
+     */
+    Page<ProductionOrderDetailVo> schedulingTaskPage(ProduceOrderDetailSelectDto dto);
+
+    /**
      * 生产任务详情
      */
     ProductionOrderDetailVo detail(ProductionTaskDetailDto dto);

+ 3 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/ProductionSchedulingService.java

@@ -1,5 +1,6 @@
 package com.fjhx.mes.service.production;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingDto;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
@@ -19,6 +20,8 @@ import java.util.Map;
  */
 public interface ProductionSchedulingService extends BaseService<ProductionScheduling> {
 
+    Page<ProductionSchedulingVo> getPage(ProductionSchedulingSelectDto dto);
+
     Map<String, List<ProductionSchedulingVo>> listMap(ProductionSchedulingSelectDto dto);
 
     /**

+ 14 - 3
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderDetailServiceImpl.java

@@ -70,9 +70,6 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
     public Page<ProductionOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto) {
         IWrapper<ProductionOrderDetail> wrapper = getWrapper();
 
-        //只显示投产的数据
-        wrapper.isNotNull("po.produce_time");
-
         //生产状态
         wrapper.eq("pod", ProductionOrderDetail::getProduceStatus, dto.getProduceStatus());
         //交期-时间范围过滤
@@ -112,6 +109,20 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
             wrapper.eq("c.contract_type", dto.getContractType());
         }
 
+        return commPage(dto, wrapper);
+    }
+
+    @Override
+    public Page<ProductionOrderDetailVo> schedulingTaskPage(ProduceOrderDetailSelectDto dto) {
+        IWrapper<ProductionOrderDetail> wrapper = getWrapper();
+
+        return commPage(dto, wrapper);
+    }
+
+    private Page<ProductionOrderDetailVo> commPage(ProduceOrderDetailSelectDto dto, IWrapper<ProductionOrderDetail> wrapper) {
+        //只显示投产的数据
+        wrapper.isNotNull("po.produce_time");
+
         Page<ProductionOrderDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<ProductionOrderDetailVo> records = page.getRecords();
         if (ObjectUtil.isEmpty(records)) {

+ 41 - 1
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionSchedulingServiceImpl.java

@@ -1,15 +1,20 @@
 package com.fjhx.mes.service.production.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 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.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingDto;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingSelectDto;
+import com.fjhx.mes.entity.production.po.ProductionOrder;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
 import com.fjhx.mes.entity.production.vo.ProductionSchedulingVo;
 import com.fjhx.mes.mapper.production.ProductionSchedulingMapper;
 import com.fjhx.mes.service.production.ProductionSchedulingService;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -21,12 +26,47 @@ import java.util.stream.Collectors;
  * 生产排程 服务实现类
  * </p>
  *
- * @author
  * @since 2024-02-03
  */
 @Service
 public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSchedulingMapper, ProductionScheduling> implements ProductionSchedulingService {
 
+    private final ProductInfoService productInfoService;
+
+    @Autowired
+    public ProductionSchedulingServiceImpl(ProductInfoService productInfoService) {
+        this.productInfoService = productInfoService;
+    }
+
+    @Override
+    public Page<ProductionSchedulingVo> getPage(ProductionSchedulingSelectDto dto) {
+        IWrapper<ProductionScheduling> wrapper = getWrapper();
+        //只显示投产的数据
+        wrapper.isNotNull("po.produce_time");
+        //工序id过滤
+        wrapper.eq(ProductionScheduling::getProcessesId, dto.getProcessesId());
+
+        //权限过滤:生产排程-1
+        wrapper.in("po", ProductionOrder::getCompanyId, SecurityUtils.getCompanyIds());
+        wrapper.eq("po", ProductionOrder::getCompanyId, dto.getCompanyId());
+
+        Page<ProductionSchedulingVo> page = baseMapper.getPage(dto.getPage(), wrapper);
+        List<ProductionSchedulingVo> records = page.getRecords();
+        if (ObjectUtil.isEmpty(records)) {
+            return page;
+        }
+        //赋值产品信息
+        productInfoService.attributeAssign(records, ProductionSchedulingVo::getProductId, (item, productInfo) -> {
+            item.setProductName(productInfo.getName());
+            item.setProductCode(productInfo.getCustomCode());
+            item.setProductLength(productInfo.getLength());
+            item.setProductWidth(productInfo.getWidth());
+            item.setProductHeight(productInfo.getHeight());
+            item.setProductColor(productInfo.getColor());
+        });
+        return page;
+    }
+
     @Override
     public Map<String, List<ProductionSchedulingVo>> listMap(ProductionSchedulingSelectDto dto) {
         IWrapper<ProductionScheduling> wrapper = getWrapper();

+ 22 - 0
hx-mes/src/main/resources/mapper/production/ProductionSchedulingMapper.xml

@@ -2,6 +2,28 @@
 <!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.ProductionSchedulingMapper">
 
+    <select id="getPage" resultType="com.fjhx.mes.entity.production.vo.ProductionSchedulingVo">
+        SELECT ps.id,
+               ps.quantity,
+               ps.scheduling_date,
+               ps.processes_id,
+               pod.id                                     AS taskId,
+               pod.quantity                               AS taskQuantity,
+               pod.product_id,
+               po.id                                      AS orderId,
+               po.`code`                                  AS orderCode,
+               pp.`name`                                  AS processesName,
+               (select SUM(quantity)
+                from production_scheduling ps1
+                where ps1.task_id = ps.task_id
+                  and ps1.processes_id = ps.processes_id) AS sumQuantity
+        FROM production_scheduling ps
+                 LEFT JOIN production_order_detail pod ON ps.task_id = pod.id
+                 LEFT JOIN production_order po ON pod.produce_order_id = po.id
+                 LEFT JOIN production_processes pp ON ps.processes_id = pp.id
+            ${ew.customSqlSegment}
+    </select>
+
     <select id="listSumQuantity" resultType="com.fjhx.mes.entity.production.vo.ProductionSchedulingVo">
         SELECT ps.scheduling_date,
                DATE_FORMAT(ps.scheduling_date, '%Y-%m-%d') AS schedulingDateStr,