소스 검색

消息通知优化

yzc 1 년 전
부모
커밋
0822921e58

+ 19 - 5
hx-jxst/src/main/java/com/fjhx/jxst/flow/SalesContractFlow.java

@@ -19,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Component
 public class SalesContractFlow extends FlowDelegate {
@@ -60,11 +62,23 @@ public class SalesContractFlow extends FlowDelegate {
             workOrderService.add(workOrder);
         }
 
-        //推送消息给生产计划下发的负责人
-        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
-        List<Long> userIds = userService.getUserIdsByRoleKey("admin");
-        DynamicDataSourceContextHolder.poll();
-        WebSocketPush.byUsers(PushTypeEnum.MESSAGE, userIds, "您有新的工单待下发!", PushBusinessTypeEnum.NEW_WORK_ORDER.getType());
+        long customizedCount = salesContractDetailsList.stream().filter(item -> Objects.equals(item.getIsCustomized(), 0)).count();
+        long noCustomizedCount = salesContractDetailsList.stream().filter(item -> Objects.equals(item.getIsCustomized(), 1)).count();
+
+        //定制工单给配置工单BOM工艺的人发消息
+        if(customizedCount>0){
+            //推送消息给工单配置的负责人
+            DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+            List<Long> userIds = userService.getUserIdsByRoleKey("admin");
+            DynamicDataSourceContextHolder.poll();
+            WebSocketPush.byUsers(PushTypeEnum.MESSAGE, userIds, "您有新的定制工单待配置!", PushBusinessTypeEnum.NEW_WORK_ORDER.getType());
+        }
+
+        //未定制工单直接发消息
+        if(noCustomizedCount>0) {
+            //推送消息给生产计划下发的负责人
+            workOrderService.sendPlanInfo();
+        }
     }
 
 }

+ 10 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/WorkOrderService.java

@@ -55,4 +55,14 @@ public interface WorkOrderService extends BaseService<WorkOrder> {
     Page<WorkOrderVo> getPageByJxst(WorkOrderSelectDto dto);
 
     List<WorkOrderProductionProcesses> getProductionProcessesList(WorkOrder workOrder);
+
+    /**
+     * 检查定制工单BOM 工艺配置状态 如果配置完成则发送消息
+     */
+    void checkCustomizedInfo(Long workOrderId);
+
+    /**
+     * 给下发生产计划的人发消息
+     */
+    void sendPlanInfo();
 }

+ 2 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderBomServiceImpl.java

@@ -93,6 +93,8 @@ public class WorkOrderBomServiceImpl extends ServiceImpl<WorkOrderBomMapper, Wor
         afterSaleDetailList.forEach(item -> item.setWorkOrderId(workOrderBomDto.getWorkOrderId()));
         this.editLinked(afterSaleDetailList, WorkOrderBom::getWorkOrderId, workOrderBomDto.getWorkOrderId());
 
+        //检查定制工单是否配置BOM、工艺 配置完成发消息
+        workOrderService.checkCustomizedInfo(workOrderBomDto.getWorkOrderId());
     }
 
 }

+ 3 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderProductionProcessesServiceImpl.java

@@ -119,6 +119,9 @@ public class WorkOrderProductionProcessesServiceImpl extends ServiceImpl<WorkOrd
         }
         List<WorkOrderProductionProcesses> workOrderProductionProcessesList1 = BeanUtil.copyToList(workOrderProductionProcessesList, WorkOrderProductionProcesses.class);
         this.editLinked(workOrderProductionProcessesList1, WorkOrderProductionProcesses::getWorkOrderId, workOrderProductionProcessesDto.getWorkOrderId());
+
+        //检查定制工单是否配置BOM、工艺 配置完成发消息
+        workOrderService.checkCustomizedInfo(workOrderProductionProcessesDto.getWorkOrderId());
     }
 
 }

+ 32 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java

@@ -3,9 +3,12 @@ package com.fjhx.mes.service.work.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.PushBusinessTypeEnum;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.bom.po.BomDetail;
@@ -31,12 +34,15 @@ import com.fjhx.mes.service.work.WorkOrderService;
 import com.fjhx.mes.utils.code.CodeEnum;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.service.contract.ContractProductService;
+import com.fjhx.socket.core.PushTypeEnum;
+import com.fjhx.socket.core.WebSocketPush;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockFrozen;
 import com.fjhx.wms.service.stock.StockFrozenService;
 import com.fjhx.wms.service.stock.StockService;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -83,6 +89,8 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     private ProductionProcessesService productionProcessesService;
     @Autowired
     private WorkOrderProductionProcessesService workOrderProductionProcessesService;
+    @Autowired
+    private ISysUserService userService;
 
     @Override
     public Page<WorkOrderVo> getPage(WorkOrderSelectDto dto) {
@@ -311,4 +319,28 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         }
     }
 
+
+    /**
+     * 检查定制工单BOM 工艺配置状态 如果配置完成则发送消息
+     */
+    @Override
+    public void checkCustomizedInfo(Long workOrderId){
+        WorkOrder workOrder1 = this.getById(workOrderId);
+        if(Objects.equals(workOrder1.getBomStatus(),1)&&Objects.equals(workOrder1.getTechnologyStatus(),1)){
+            //推送消息给生产计划下发的负责人
+            sendPlanInfo();
+        }
+    }
+
+    /**
+     * 给下发生产计划的人发消息
+     */
+    @Override
+    public void sendPlanInfo(){
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<Long> userIds = userService.getUserIdsByRoleKey("admin");
+        DynamicDataSourceContextHolder.poll();
+        WebSocketPush.byUsers(PushTypeEnum.MESSAGE, userIds, "您有新的工单待下发!", PushBusinessTypeEnum.NEW_WORK_ORDER.getType());
+    }
+
 }