Просмотр исходного кода

refactor(sandtask): 重构三定任务发送和消息推送逻辑

- 将任务发送逻辑与消息推送逻辑分离到不同的try-catch块中
- 注释掉原有的sendTask方法调用,保留构建三定任务的结构
- 添加消息推送的循环处理逻辑,支持对多个条目的消息发送
- 将已发送状态设置和计划结束时间更新移到endOperationTransaction方法中
- 在消息信息中添加业务数据ID设置,完善消息推送的数据结构
- 优化代码执行顺序,确保数据保存操作的正确时机
jtd 2 недель назад
Родитель
Сommit
64181f1082

+ 23 - 16
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/sdm/plugin/operate/SendTaskOpPlugin.java

@@ -85,17 +85,27 @@ public class SendTaskOpPlugin extends AbstractOperationServicePlugIn {
 
         try {
             DynamicObject[] dyos = e.getDataEntities();
+            // 构建三定任务
             for (DynamicObject dyo : dyos) {
                 DynamicObjectCollection entryDyoColl = dyo.getDynamicObjectCollection(SanDingConstant.NCKD_ENTRYENTITY);
-                sendTask(dyo, entryDyoColl);
-                // 设置 已发送
-                dyo.set(SanDingConstant.NCKD_ISSEND_KEY, EnableEnum.YES.getCode());
+                //sendTask(dyo, entryDyoColl);
             }
-            // 保存数据
-            SaveServiceHelper.save(dyos);
         } catch (Exception ex) {
             throw new KDBizException(ex, new ErrorCode("sendTaskError", ex.getMessage()));
         }
+
+        try {
+            DynamicObject[] dyos = e.getDataEntities();
+            // 推送消息
+            for (DynamicObject dyo : dyos) {
+                DynamicObjectCollection entryDyoColl = dyo.getDynamicObjectCollection(SanDingConstant.NCKD_ENTRYENTITY);
+                for (DynamicObject entryDyo : entryDyoColl) {
+                    //sendMessage(entryDyo);
+                }
+            }
+        } catch (Exception ex) {
+            throw new KDBizException(ex, new ErrorCode("sendMessageError", ex.getMessage()));
+        }
     }
 
     private static void sendTask(DynamicObject billDyo, DynamicObjectCollection entryDyoColl) throws Exception {
@@ -379,18 +389,14 @@ public class SendTaskOpPlugin extends AbstractOperationServicePlugIn {
     public void endOperationTransaction(EndOperationTransactionArgs e) {
         super.endOperationTransaction(e);
 
-        try {
-            DynamicObject[] dyos = e.getDataEntities();
-            for (DynamicObject dyo : dyos) {
-                DynamicObjectCollection entryDyoColl = dyo.getDynamicObjectCollection(SanDingConstant.NCKD_ENTRYENTITY);
-                for (DynamicObject entryDyo : entryDyoColl) {
-                    sendMessage(entryDyo);
-                }
-                updateLastSanDingPlanEndDate(dyo);
-            }
-        } catch (Exception ex) {
-            throw new KDBizException(ex, new ErrorCode("sendMessageError", ex.getMessage()));
+        DynamicObject[] dyos = e.getDataEntities();
+        for (DynamicObject dyo : dyos) {
+            // 设置为已发送
+            dyo.set(SanDingConstant.NCKD_ISSEND_KEY, true);
+            // 更新最近一笔三定计划的结束时间
+            updateLastSanDingPlanEndDate(dyo);
         }
+        SaveServiceHelper.save(dyos);
     }
 
     private void sendMessage(DynamicObject entryDyo) {
@@ -404,6 +410,7 @@ public class SendTaskOpPlugin extends AbstractOperationServicePlugIn {
         messageInfo.setType(MessageInfo.TYPE_MESSAGE);
         // 设置 实体编码
         messageInfo.setEntityNumber(SanDingConstant.NCKD_SANDINGTASK_ENTITY);
+        messageInfo.setBizDataId(SANDING_TASK_MAP.get(entryDyo.getLong(SanDingConstant.ID_KEY)));
         // 设置 标签
         messageInfo.setTag("三定管理");
         long managerBoId = entryDyo.getDynamicObject(SanDingConstant.NCKD_MANAGER_KEY).getLong(SanDingConstant.BOID_KEY);