소스 검색

refactor(wtc): 优化打卡记录同步逻辑并调整相关常量配置

- 移除旧的打卡记录同步方法调用及其异常捕获逻辑
- 更新SyncPunchCardHelper中的数据处理方式,采用新的操作服务执行机制
- 新增获取批次号对应动态对象数组的方法
- 在SyncPunchCardTask中增加任务调度逻辑,确保打卡数据同步任务能被正确触发
- 在WtcConstant中新增打卡记录、任务和作业相关的服务助手常量
Tyx 2 일 전
부모
커밋
df61781270

+ 1 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/coordination/SinSurEmpChgCoordBatchEditPluginEx.java

@@ -98,7 +98,7 @@ public class SinSurEmpChgCoordBatchEditPluginEx extends AbstractFormPlugin imple
         super.afterDoOperation(afterDoOperationEventArgs);
         AbstractOperate op = (AbstractOperate)afterDoOperationEventArgs.getSource();
         String operateKey = op.getOperateKey();
-        if (afterDoOperationEventArgs.getOperationResult().isSuccess() && (HRStringUtils.equals(operateKey, "save") || HRStringUtils.equals(operateKey, "confirmeffect"))) {
+        if ((HRStringUtils.equals(operateKey, "save") || HRStringUtils.equals(operateKey, "confirmeffect"))) {
             doSaveSubEntry();
         }
         else if(HRStringUtils.equals(operateKey, "batchsetting")){

+ 32 - 1
code/wtc/nckd-jxccl-wtc/src/main/java/nckd/jxccl/wtc/task/SyncPunchCardTask.java

@@ -4,14 +4,23 @@ import com.alibaba.fastjson.JSON;
 import com.hikvision.artemis.sdk.ArtemisHttpUtil;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import kd.bos.context.RequestContext;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.resource.ResManager;
 import kd.bos.entity.param.CustomParam;
 import kd.bos.exception.KDException;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import kd.bos.orm.query.QFilter;
+import kd.bos.schedule.api.JobInfo;
 import kd.bos.schedule.executor.AbstractTask;
+import kd.bos.schedule.executor.JobClient;
+import kd.bos.schedule.server.ScheduleService;
 import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
 import kd.sdk.plugin.Plugin;
 import nckd.jxccl.wtc.utils.SyncPunchCardHelper;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import nckd.jxccl.wtc.wtabm.web.common.constant.WtcConstant;
 
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
@@ -29,7 +38,7 @@ public class SyncPunchCardTask extends AbstractTask implements Plugin {
             put("https://", getCamsApi);
         }
     };
-
+    private static final Log LOGGER = LogFactory.getLog(SyncPunchCardTask.class);
     public void initConfig() {
         CustomParam customParam = new CustomParam();
         customParam.getSearchKeySet().add("PUNCH_CARD_HOST");
@@ -56,6 +65,28 @@ public class SyncPunchCardTask extends AbstractTask implements Plugin {
             getAllCards(startTime, endTime);
         } catch (Exception e) {
             throw new RuntimeException(e);
+        } finally {
+            doSyncJob();
+        }
+    }
+
+    public void doSyncJob() {
+        DynamicObject dynamicJob = WtcConstant.JOB_HELPER.loadOne("id", new QFilter("number", "=", "wtis_syncPunchCardData_SKDJ_S"));
+        if (dynamicJob != null) {
+            JobInfo jobInfo = ScheduleService.getInstance().getObjectFactory().getJobDao().get(String.valueOf(dynamicJob.getPkValue()));
+            if (jobInfo.isEnable()) {
+                DynamicObject task = WtcConstant.TASK_HELPER.queryOriginalOne("id", new QFilter[]{new QFilter("job.id", "=", dynamicJob.getPkValue()), new QFilter("status", "=", "SCHEDULED")});
+                if (task == null) {
+                    try {
+                        JobClient.dispatch(jobInfo);
+                        if (LOGGER.isDebugEnabled()) {
+                            LOGGER.debug("原始卡同步任务启动成功!");
+                        }
+                    } catch (Exception var6) {
+                        LOGGER.warn("原始卡同步任务启动失败!", var6);
+                    }
+                }
+            }
         }
     }
 

+ 10 - 12
code/wtc/nckd-jxccl-wtc/src/main/java/nckd/jxccl/wtc/utils/SyncPunchCardHelper.java

@@ -3,6 +3,7 @@ package nckd.jxccl.wtc.utils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.kingdee.util.StringUtils;
+import kd.bos.dataentity.OperateOption;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.utils.ObjectUtils;
 import kd.bos.exception.ErrorCode;
@@ -10,10 +11,9 @@ import kd.bos.exception.KDBizException;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.QueryServiceHelper;
+import kd.bos.servicehelper.operation.OperationServiceHelper;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
-import kd.wtc.wtis.business.punchcarddata.PunchCardDataHelper;
-import kd.wtc.wtis.business.punchcarddata.PunchCardDataService;
-import kd.wtc.wtis.webapi.punchcard.PunchCardSyncSupport;
+import nckd.jxccl.wtc.wtabm.web.common.constant.WtcConstant;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -46,13 +46,7 @@ public class SyncPunchCardHelper {
             return;
         }
         PUNCH_CARD_HELPER.save((DynamicObject[])actualSaveList.toArray(new DynamicObject[0]));
-        try {
-            PunchCardSyncSupport.execute(() -> {
-                syncCardRecord(actualArr,batchNumber);
-            });
-        } catch (Exception e) {
-        }
-
+        //syncCardRecord(actualArr,batchNumber);
     }
 
     /**
@@ -114,8 +108,8 @@ public class SyncPunchCardHelper {
     private static void syncCardRecord(JSONArray resultArr, String batchNumber) {
         try {
             long l1 = System.currentTimeMillis();
-            DynamicObject[] date = PunchCardDataHelper.getDataByBatchNumber(batchNumber);
-            PunchCardDataService.dealWithData(date);
+            DynamicObject[] date = getDataByBatchNumber(batchNumber);
+            OperationServiceHelper.executeOperate("autosysn", "wtis_punchcarddata", date, OperateOption.create());
             long l2 = System.currentTimeMillis();
         } catch (Exception e) {
             throw new KDBizException(e, new ErrorCode("", e.getMessage()), new Object[0]);
@@ -124,6 +118,10 @@ public class SyncPunchCardHelper {
         }
     }
 
+    public static DynamicObject[] getDataByBatchNumber(String batchNumber) {
+        return WtcConstant.PUNCHCARDDATA_HELPER.loadDynamicObjectArray(new QFilter[]{new QFilter("batchnumber", "=", batchNumber)});
+    }
+
 
     /**
      * 根据考勤卡号和海康威视返回ID判断是否存在记录

+ 5 - 0
code/wtc/nckd-jxccl-wtc/src/main/java/nckd/jxccl/wtc/wtabm/web/common/constant/WtcConstant.java

@@ -44,4 +44,9 @@ public class WtcConstant {
 
     /* 考勤项目-旷工天数编码*/
     public static final String ABSENT_NUMBER = "EX_1140_S";
+
+    /* 打卡记录 */
+    public static final HRBaseServiceHelper PUNCHCARDDATA_HELPER = new HRBaseServiceHelper("wtis_punchcarddata");
+    public static final HRBaseServiceHelper JOB_HELPER = new HRBaseServiceHelper("sch_job");
+    public static final HRBaseServiceHelper TASK_HELPER = new HRBaseServiceHelper("sch_task");
 }