yzc 1 年間 前
コミット
1b88b1a8c8

+ 10 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProductionTaskDetailController.java

@@ -106,4 +106,14 @@ public class ProductionTaskDetailController {
     void revokeTask(@RequestBody ProductionTaskDetailDto dto){
         productionTaskDetailService.revokeTask(dto);
     }
+
+    /**
+     * 生产进度
+     *
+     * @return
+     */
+    @PostMapping("/taskProgressPage")
+    Page<ProductionTaskDetailVo> taskProgress(@RequestBody ProductionTaskDetailSelectDto dto){
+        return productionTaskDetailService.taskProgressPage(dto);
+    }
 }

+ 56 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProductionTaskDetailSelectDto.java

@@ -1,9 +1,12 @@
 package com.fjhx.mes.entity.production.dto;
 
+import com.fjhx.mes.entity.production.po.ProductionTaskDetail;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * 生产任务明细列表查询入参实体
  *
@@ -14,4 +17,57 @@ import lombok.Setter;
 @Setter
 public class ProductionTaskDetailSelectDto extends BaseSelectDto {
 
+    //高级检索
+    /**
+     * 销售合同号
+     */
+    private String contractCode;
+    /**
+     * 工单号
+     */
+    private String workOrderCode;
+    /**
+     * 生产计划号
+     */
+    private String productionPlanCode;
+    /**
+     * 生产任务号
+     */
+    private String productionTaskCode;
+    /**
+     * 产品编号
+     */
+    private String productCode;
+    /**
+     * 产品名称
+     */
+    private String productName;
+    /**
+     * 产品sn
+     */
+    private String productSn;
+    /**
+     * 任务完成期限
+     */
+    private Date dueDate;
+    /**
+     * 当前工序名称
+     */
+    private String productionProcessesName;
+    /**
+     * 当前工序负责人
+     */
+    private String personLiableName;
+    /**
+     * 任务完成状态
+     */
+    private Integer getFinishStatus;
+    /**
+     * 任务完成时间
+     */
+    private String getFinishTime;
+
+
+
+
 }

+ 37 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionTaskDetailVo.java

@@ -4,6 +4,8 @@ import com.fjhx.mes.entity.production.po.ProductionTaskDetail;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * 生产任务明细列表查询返回值实体
  *
@@ -52,4 +54,39 @@ public class ProductionTaskDetailVo extends ProductionTaskDetail {
      * 前一道工序名称
      */
     private String previousProcessesName;
+
+    /**
+     * 负责人名称
+     */
+    private String personLiableName;
+
+    //-------------------生产进度--------------------------
+    /**
+     * 销售合同号
+     */
+    private String contractCode;
+    /**
+     * 工单号
+     */
+    private String workOrderCode;
+    /**
+     * 生产计划号
+     */
+    private String productionPlanCode;
+    /**
+     * 生产任务号
+     */
+    private String productionTaskCode;
+    /**
+     * 产品编号
+     */
+    private String productCode;
+    /**
+     * 任务完成期限
+     */
+    private Date dueDate;
+    /**
+     * 当前工序名称
+     */
+    private String productionProcessesNames;
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionTaskDetailMapper.java

@@ -30,4 +30,9 @@ public interface ProductionTaskDetailMapper extends BaseMapper<ProductionTaskDet
 
     ProductionTaskDetailVo snInfo(@Param("sn") String sn);
 
+    /**
+     * 生产进度
+     */
+    Page<ProductionTaskDetailVo> taskProgressPage(@Param("page") Page<Object> page,@Param("ew") IWrapper<ProductionTaskDetail> wrapper);
+
 }

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

@@ -64,4 +64,9 @@ public interface ProductionTaskDetailService extends BaseService<ProductionTaskD
      * 退回任务(任务回到任务列表可供别人接取)
      */
     void revokeTask(ProductionTaskDetailDto dto);
+
+    /**
+     * 生产进度
+     */
+    Page<ProductionTaskDetailVo> taskProgressPage(ProductionTaskDetailSelectDto dto);
 }

+ 40 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionTaskDetailServiceImpl.java

@@ -30,6 +30,7 @@ import com.fjhx.wms.service.stock.StockWaitService;
 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;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -385,4 +386,43 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
         this.updateById(productionTaskDetail);
     }
 
+    /**
+     * 生产进度
+     */
+    @Override
+    public Page<ProductionTaskDetailVo> taskProgressPage(ProductionTaskDetailSelectDto dto){
+        IWrapper<ProductionTaskDetail> wrapper = IWrapper.getWrapper();
+        wrapper.keyword(dto.getKeyword(),
+                new SqlField("t1.contractCode"),
+                new SqlField("t1.workOrderCode"),
+                new SqlField("t1.productionPlanCode"),
+                new SqlField("t1.productionTaskCode"),
+                new SqlField("t1.productCode"),
+                new SqlField("t1.productName"),
+                new SqlField("t1",ProductionTaskDetail::getProductSn),
+                new SqlField("t1.due_date"),
+                new SqlField("t1.productionProcessesName"),
+                new SqlField("t1.personLiableName"),
+                new SqlField("t1",ProductionTaskDetail::getFinishTime)
+        );
+        //高级检索
+        wrapper.like("t1.contractCode",dto.getContractCode());
+        wrapper.like("t1.workOrderCode",dto.getWorkOrderCode());
+        wrapper.like("t1.productionPlanCode",dto.getProductionTaskCode());
+        wrapper.like("t1.productionTaskCode",dto.getProductionTaskCode());
+        wrapper.like("t1.productCode",dto.getProductCode());
+        wrapper.like("t1.productName",dto.getProductName());
+        wrapper.like("t1",ProductionTaskDetail::getProductSn,dto.getProductSn());
+        wrapper.like("t1.due_date",dto.getDueDate());
+        wrapper.like("t1.productionProcessesName",dto.getProductionProcessesName());
+        wrapper.like("t1.personLiableName",dto.getPersonLiableName());
+        wrapper.eq("t1",ProductionTaskDetail::getFinishStatus,dto.getGetFinishStatus());
+        wrapper.like("t1",ProductionTaskDetail::getFinishTime,dto.getGetFinishTime());
+
+        wrapper.orderByDesc("t1",ProductionTaskDetail::getId);
+
+        Page<ProductionTaskDetailVo> page = baseMapper.taskProgressPage(dto.getPage(),wrapper);
+        return page;
+    }
+
 }

+ 48 - 0
hx-mes/src/main/resources/mapper/production/ProductionTaskDetailMapper.xml

@@ -48,5 +48,53 @@
         WHERE
             ptd.product_sn = #{sn}
     </select>
+    <select id="taskProgressPage" resultType="com.fjhx.mes.entity.production.vo.ProductionTaskDetailVo">
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    ptd.id,
+                    sc.`code` AS contractCode,
+                    wo.`code` AS workOrderCode,
+                    pp.`code` AS productionPlanCode,
+                    pt.`code` AS productionTaskCode,
+                    pi.`code` AS productCode,
+                    pi.`name` AS productName,
+                    ptd.product_sn,
+                    pt.due_date,
+                    CASE
+                        wo.is_customized
+                        WHEN 0 THEN
+                            (
+                                SELECT
+                                    GROUP_CONCAT( ppr.`name` SEPARATOR '->' )
+                                FROM
+                                    technology tec
+                                        LEFT JOIN production_processes ppr ON FIND_IN_SET( ppr.id, tec.process_route )
+                                        LEFT JOIN applicable_products apr ON apr.technology_id = tec.id
+                                WHERE
+                                    apr.product_id = wo.product_id
+                            ) ELSE ( SELECT GROUP_CONCAT( wopp.`name` SEPARATOR '->' ) FROM work_order_production_processes wopp WHERE wopp.work_order_id = wo.id )
+                        END AS productionProcessesNames,
+                    CASE
+                        wo.is_customized
+                        WHEN 0 THEN
+                            ( SELECT ppr.`name` FROM production_processes ppr WHERE ppr.id = ptd.production_processes_id ) ELSE ( SELECT wopp.`name` FROM work_order_production_processes wopp WHERE wopp.id = ptd.production_processes_id )
+                        END AS productionProcessesName,
+                    su.nick_name AS personLiableName,
+                    ptd.finish_status,
+                    ptd.finish_time
+                FROM
+                    production_task_detail ptd
+                        LEFT JOIN production_task pt ON ptd.production_task_id = pt.id
+                        LEFT JOIN production_plan pp ON pt.production_plan_id = pp.id
+                        LEFT JOIN work_order wo ON pp.work_order_id = wo.id
+                        LEFT JOIN bytesailing_jxst.sales_contract sc ON wo.source_id = sc.id
+                        LEFT JOIN bytesailing_item.product_info pi ON wo.product_id = pi.id
+                        LEFT JOIN bytesailing_base.sys_user su ON ptd.person_liable_id = su.user_id
+            ) t1
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>