Browse Source

工单/计划分页添加 是否可排程过滤 工单添加bom/工艺定制 暂存

yzc 1 year ago
parent
commit
0a4f1eafe8

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

@@ -14,4 +14,9 @@ import lombok.Setter;
 @Setter
 public class ProductionPlanSelectDto extends BaseSelectDto {
 
+    /**
+     * 1过滤待排程的数据
+     */
+    private Integer isRemaining;
+
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/dto/WorkOrderBomDto.java

@@ -21,4 +21,9 @@ public class WorkOrderBomDto extends WorkOrderBom {
      */
     List<WorkOrderBom> workOrderBomList;
 
+    /**
+     * BOM定制状态 1已定制 0暂存
+     */
+    private Integer bomStatus;
+
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/dto/WorkOrderProductionProcessesDto.java

@@ -22,4 +22,9 @@ public class WorkOrderProductionProcessesDto extends WorkOrderProductionProcesse
      */
     List<WorkOrderProductionProcessesVo> workOrderProductionProcessesList;
 
+    /**
+     * 工艺定制状态 1已定制 0暂存
+     */
+    private Integer technologyStatus;
+
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/dto/WorkOrderSelectDto.java

@@ -19,4 +19,9 @@ public class WorkOrderSelectDto extends BaseSelectDto {
      */
     private String source;
 
+    /**
+     * 1过滤待排程的数据
+     */
+    private Integer isRemaining;
+
 }

+ 10 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java

@@ -62,4 +62,14 @@ public class WorkOrder extends BasePo {
      */
     private String isCustomized;
 
+    /**
+     * BOM定制状态 1已定制 0暂存
+     */
+    private Integer bomStatus;
+
+    /**
+     * 工艺定制状态 1已定制 0暂存
+     */
+    private Integer technologyStatus;
+
 }

+ 24 - 21
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionPlanServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -61,6 +62,8 @@ public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper,
 
         wrapper.orderByAsc("pp", ProductionPlan::getCreateTime);
 
+        //过滤待排程(待创建任务的计划)
+        wrapper.gt(Objects.equals(dto.getIsRemaining(),1),"pp.remainingQuantity",0);
 
         Page<ProductionPlanVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<ProductionPlanVo> records = page.getRecords();
@@ -86,27 +89,27 @@ public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper,
                 }
             }
         }
-        //赋值待排程数量
-        for (ProductionPlanVo productionPlanVo : records) {
-            productionPlanVo.setRemainingQuantity(productionPlanVo.getQuantity());
-        }
-        List<Long> productionPlanIds = records.stream().map(ProductionPlan::getId).collect(Collectors.toList());
-        if (ObjectUtil.isNotEmpty(productionPlanIds)) {
-            List<ProductionTask> productionTaskList = productionTaskService.list(q -> q.in(ProductionTask::getProductionPlanId, productionPlanIds));
-            if (ObjectUtil.isNotEmpty(productionTaskList)) {
-                //根据生产计划id分组
-                Map<Long, List<ProductionTask>> productionTaskMap = productionTaskList.stream().collect(Collectors.groupingBy(ProductionTask::getProductionPlanId));
-                for (ProductionPlanVo productionPlanVo : records) {
-                    List<ProductionTask> productionTaskList1 = productionTaskMap.get(productionPlanVo.getId());
-                    BigDecimal count = BigDecimal.ZERO;
-                    if (ObjectUtil.isNotEmpty(productionTaskList1)) {
-                        count = productionTaskList1.stream().map(ProductionTask::getQuantity)
-                                .reduce(BigDecimal.ZERO, BigDecimal::add);
-                    }
-                    productionPlanVo.setRemainingQuantity(productionPlanVo.getQuantity().subtract(count));
-                }
-            }
-        }
+//        //赋值待排程数量
+//        for (ProductionPlanVo productionPlanVo : records) {
+//            productionPlanVo.setRemainingQuantity(productionPlanVo.getQuantity());
+//        }
+//        List<Long> productionPlanIds = records.stream().map(ProductionPlan::getId).collect(Collectors.toList());
+//        if (ObjectUtil.isNotEmpty(productionPlanIds)) {
+//            List<ProductionTask> productionTaskList = productionTaskService.list(q -> q.in(ProductionTask::getProductionPlanId, productionPlanIds));
+//            if (ObjectUtil.isNotEmpty(productionTaskList)) {
+//                //根据生产计划id分组
+//                Map<Long, List<ProductionTask>> productionTaskMap = productionTaskList.stream().collect(Collectors.groupingBy(ProductionTask::getProductionPlanId));
+//                for (ProductionPlanVo productionPlanVo : records) {
+//                    List<ProductionTask> productionTaskList1 = productionTaskMap.get(productionPlanVo.getId());
+//                    BigDecimal count = BigDecimal.ZERO;
+//                    if (ObjectUtil.isNotEmpty(productionTaskList1)) {
+//                        count = productionTaskList1.stream().map(ProductionTask::getQuantity)
+//                                .reduce(BigDecimal.ZERO, BigDecimal::add);
+//                    }
+//                    productionPlanVo.setRemainingQuantity(productionPlanVo.getQuantity().subtract(count));
+//                }
+//            }
+//        }
         return page;
     }
 

+ 11 - 1
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderBomServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.bom.po.BomDetail;
 import com.fjhx.mes.entity.bom.po.BomInfo;
@@ -16,10 +17,14 @@ import com.fjhx.mes.service.bom.BomDetailService;
 import com.fjhx.mes.service.bom.BomInfoService;
 import com.fjhx.mes.service.work.WorkOrderBomService;
 import com.fjhx.mes.service.work.WorkOrderService;
+import com.fjhx.sale.entity.contract.po.Contract;
+import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -77,7 +82,12 @@ public class WorkOrderBomServiceImpl extends ServiceImpl<WorkOrderBomMapper, Wor
     @DSTransactional
     @Override
     public void edit(WorkOrderBomDto workOrderBomDto) {
-//        this.updateById(workOrderBomDto);
+        workOrderService.update(q -> q
+                .eq(WorkOrder::getId, workOrderBomDto.getWorkOrderId())
+                .set(WorkOrder::getBomStatus, workOrderBomDto.getBomStatus())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
 
         List<WorkOrderBom> afterSaleDetailList = workOrderBomDto.getWorkOrderBomList();
         afterSaleDetailList.forEach(item -> item.setWorkOrderId(workOrderBomDto.getWorkOrderId()));

+ 9 - 1
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderProductionProcessesServiceImpl.java

@@ -19,10 +19,13 @@ import com.fjhx.mes.service.production.ProductionProcessesService;
 import com.fjhx.mes.service.technology.TechnologyService;
 import com.fjhx.mes.service.work.WorkOrderProductionProcessesService;
 import com.fjhx.mes.service.work.WorkOrderService;
+import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -87,7 +90,12 @@ public class WorkOrderProductionProcessesServiceImpl extends ServiceImpl<WorkOrd
     @DSTransactional
     @Override
     public void edit(WorkOrderProductionProcessesDto workOrderProductionProcessesDto) {
-//        this.updateById(workOrderProductionProcessesDto);
+        workOrderService.update(q -> q
+                .eq(WorkOrder::getId, workOrderProductionProcessesDto.getWorkOrderId())
+                .set(WorkOrder::getBomStatus, workOrderProductionProcessesDto.getTechnologyStatus())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
 
         List<WorkOrderProductionProcessesVo> workOrderProductionProcessesList = workOrderProductionProcessesDto.getWorkOrderProductionProcessesList();
 

+ 37 - 21
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java

@@ -41,6 +41,7 @@ import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -84,6 +85,21 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
                     .like("wo", WorkOrder::getQuantity, dto.getKeyword()));
         }
         wrapper.eq("wo",WorkOrder::getSource,dto.getSource());
+
+        //过滤待排程(待创建计划的工单)
+        if(Objects.equals(dto.getIsRemaining(),1)) {
+            wrapper.gt( "wo.remainingQuantity", 0);
+            //过滤非定制/定制但已经重新配置了bom和工艺的工单
+            wrapper.and(q->q
+                    .and(q1->q1
+                        .eq("wo",WorkOrder::getIsCustomized,1)
+                        .eq("wo",WorkOrder::getBomStatus,1)
+                        .eq("wo",WorkOrder::getTechnologyStatus,1)
+                    ).or()
+                    .eq("wo",WorkOrder::getIsCustomized,0)
+            );
+        }
+
         wrapper.orderByDesc("wo", WorkOrder::getId);
         Page<WorkOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<WorkOrderVo> records = page.getRecords();
@@ -95,27 +111,27 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
                 item.setProductName(productInfo.getName());
             });
         }
-        //赋值待排程数量
-        for (WorkOrderVo workOrder : records) {
-            workOrder.setRemainingQuantity(workOrder.getQuantity());
-        }
-        List<Long> workOrderIds = records.stream().map(WorkOrder::getId).collect(Collectors.toList());
-        if (ObjectUtil.isNotEmpty(workOrderIds)) {
-            List<ProductionPlan> productionPlanList = productionPlanService.list(q -> q.in(ProductionPlan::getWorkOrderId, workOrderIds));
-            if (ObjectUtil.isNotEmpty(productionPlanList)) {
-                //根据工单id分组
-                Map<Long, List<ProductionPlan>> productionPlanMap = productionPlanList.stream().collect(Collectors.groupingBy(ProductionPlan::getWorkOrderId));
-                for (WorkOrderVo workOrder : records) {
-                    List<ProductionPlan> productionPlanList1 = productionPlanMap.get(workOrder.getId());
-                    BigDecimal count = BigDecimal.ZERO;
-                    if (ObjectUtil.isNotEmpty(productionPlanList1)) {
-                        count = productionPlanList1.stream().map(ProductionPlan::getQuantity)
-                                .reduce(BigDecimal.ZERO, BigDecimal::add);
-                    }
-                    workOrder.setRemainingQuantity(workOrder.getQuantity().subtract(count));
-                }
-            }
-        }
+//        //赋值待排程数量
+//        for (WorkOrderVo workOrder : records) {
+//            workOrder.setRemainingQuantity(workOrder.getQuantity());
+//        }
+//        List<Long> workOrderIds = records.stream().map(WorkOrder::getId).collect(Collectors.toList());
+//        if (ObjectUtil.isNotEmpty(workOrderIds)) {
+//            List<ProductionPlan> productionPlanList = productionPlanService.list(q -> q.in(ProductionPlan::getWorkOrderId, workOrderIds));
+//            if (ObjectUtil.isNotEmpty(productionPlanList)) {
+//                //根据工单id分组
+//                Map<Long, List<ProductionPlan>> productionPlanMap = productionPlanList.stream().collect(Collectors.groupingBy(ProductionPlan::getWorkOrderId));
+//                for (WorkOrderVo workOrder : records) {
+//                    List<ProductionPlan> productionPlanList1 = productionPlanMap.get(workOrder.getId());
+//                    BigDecimal count = BigDecimal.ZERO;
+//                    if (ObjectUtil.isNotEmpty(productionPlanList1)) {
+//                        count = productionPlanList1.stream().map(ProductionPlan::getQuantity)
+//                                .reduce(BigDecimal.ZERO, BigDecimal::add);
+//                    }
+//                    workOrder.setRemainingQuantity(workOrder.getQuantity().subtract(count));
+//                }
+//            }
+//        }
         return page;
     }
 

+ 23 - 13
hx-mes/src/main/resources/mapper/production/ProductionPlanMapper.xml

@@ -2,19 +2,29 @@
 <!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.ProductionPlanMapper">
     <select id="getPage" resultType="com.fjhx.mes.entity.production.vo.ProductionPlanVo">
-        select
-            pp.id,
-            pp.code,
-            pp.work_order_id,
-            pp.start_date,
-            pp.stop_date,
-            pp.quantity,
-            pp.status,
-            pp.create_user,
-            pp.create_time,
-            pp.update_user,
-            pp.update_time
-        from production_plan pp
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    pp.id,
+                    pp.`code`,
+                    pp.work_order_id,
+                    pp.start_date,
+                    pp.stop_date,
+                    pp.quantity,
+                    pp.`status`,
+                    pp.create_user,
+                    pp.create_time,
+                    pp.update_user,
+                    pp.update_time,
+                    pp.quantity - ifnull( sum( pt.quantity ), 0 ) AS remainingQuantity
+                FROM
+                    production_plan pp
+                        LEFT JOIN production_task pt ON pt.production_plan_id = pp.id
+                GROUP BY
+                    pp.id
+            ) pp
             ${ew.customSqlSegment}
     </select>
 

+ 23 - 18
hx-mes/src/main/resources/mapper/work/WorkOrderMapper.xml

@@ -2,24 +2,29 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mes.mapper.work.WorkOrderMapper">
     <select id="getPage" resultType="com.fjhx.mes.entity.work.vo.WorkOrderVo">
-        SELECT
-            wo.id,
-            wo.`code`,
-            wo.source,
-            wo.product_id,
-            wo.quantity,
-            wo.remarks,
-            wo.`status`,
-            wo.create_user,
-            wo.create_time,
-            wo.update_user,
-            wo.update_time,
-            wo.is_customized,
-            sc.`code` AS contractCode,
-            sc.create_time AS contractCreateTime
-        FROM
-            work_order wo
-                LEFT JOIN bytesailing_jxst.sales_contract sc ON wo.source_id = sc.id
+        SELECT *
+        FROM (SELECT wo.id,
+                     wo.`code`,
+                     wo.source,
+                     wo.product_id,
+                     wo.quantity,
+                     wo.remarks,
+                     wo.`status`,
+                     wo.create_user,
+                     wo.create_time,
+                     wo.update_user,
+                     wo.update_time,
+                     wo.is_customized,
+                     sc.`code`                                 AS contractCode,
+                     sc.create_time                            AS contractCreateTime,
+                     wo.quantity - ifnull(sum(pp.quantity), 0) AS remainingQuantity,
+                     wo.bom_status,
+                     wo.technology_status
+              FROM work_order wo
+                       LEFT JOIN bytesailing_jxst.sales_contract sc ON wo.source_id = sc.id
+                       LEFT JOIN production_plan pp ON pp.work_order_id = wo.id
+              GROUP BY wo.id
+              ) wo
             ${ew.customSqlSegment}
     </select>