Sfoglia il codice sorgente

费控出差下推HR出差

wanghaiwu 1 settimana fa
parent
commit
a778974f00

+ 201 - 0
code/jyyy/nckd-jimin-jyyy-bd/src/main/java/nckd/jimin/jyyy/bd/mservice/SaveTravleLogServiceImpl.java

@@ -0,0 +1,201 @@
+package nckd.jimin.jyyy.bd.mservice;
+
+import kd.bos.SessionIdUtils;
+import kd.bos.context.RequestContext;
+import kd.bos.context.RequestContextThreadBinder;
+import kd.bos.dataentity.OperateOption;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.db.tx.TX;
+import kd.bos.db.tx.TXHandle;
+import kd.bos.entity.operate.OperateOptionConst;
+import kd.bos.entity.operate.result.OperationResult;
+import kd.bos.lang.Lang;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.operation.DeleteServiceHelper;
+import kd.bos.servicehelper.operation.OperationServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.bos.trace.util.TraceIdUtil;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SaveTravleLogServiceImpl {
+    private static final Log logger = LogFactory.getLog(SaveTravleLogServiceImpl.class);
+
+    /**
+     * 保存日志
+     * @param logInfo
+     * @return
+     */
+    public Map<String, Object> saveTravelLogData(DynamicObject logInfo){
+        Map<String, Object> result = new HashMap();
+        boolean success = true;
+        String message = "";
+        TXHandle h = TX.requiresNew();
+        Throwable localThrowable4 = null;
+        try
+        {
+            try
+            {
+                SaveServiceHelper.save(new DynamicObject[]{logInfo});
+            }
+            catch (Throwable e)
+            {
+                h.markRollback();
+                success = false;
+                message = "代他人出差申请日志保存失败," + e.getMessage();
+                logger.error("代他人出差申请日志保存失败", e);
+                throw e;
+            }
+        }
+        catch (Throwable localThrowable2)
+        {
+            localThrowable4 = localThrowable2;throw localThrowable2;
+        }
+        finally
+        {
+            if (h != null) {
+                if (localThrowable4 != null) {
+                    try
+                    {
+                        h.close();
+                    }
+                    catch (Throwable localThrowable3)
+                    {
+                        localThrowable4.addSuppressed(localThrowable3);
+                    }
+                } else {
+                    h.close();
+                }
+            }
+        }
+        result.put("message", message);
+        result.put("success", Boolean.valueOf(success));
+        return result;
+    }
+
+
+    /**
+     * 生成HR代他人申请出差
+     * @param tripInfo
+     * @return
+     */
+    public Map<String, Object> saveHRTripData(DynamicObject tripInfo, String opKey, String operationKey){
+        Map<String, Object> result = new HashMap();
+        boolean success = true;
+        String message = "";
+        TXHandle h = TX.requiresNew();
+        Throwable localThrowable4 = null;
+
+        try{
+            if("submiteffect".equals(opKey)){
+                OperateOption option = OperateOption.create();
+                option.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");//不验证权限
+                option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); // 不执行警告级别校验器
+
+                String currentUserId = RequestContext.get().getUserId();
+                String creatorId = tripInfo.getDynamicObject("creator").getString("id");
+
+                //撤销变更时,因为没有走流程,所欲需要重置当前用户。
+                if(!currentUserId.equals(creatorId)) {
+                    String tenantId = RequestContext.get().getTenantId();
+                    // 直接从环境中获取数据中心id
+                    String accountId = RequestContext.get().getAccountId();
+
+                    Lang lang = Lang.defaultLang();
+                    String traceId = TraceIdUtil.createTraceIdString();
+                    RequestContext rc = RequestContext.create(true);
+                    rc.setUserAgent("Guard_DB");
+                    rc.setClient("Guard_DB");
+                    rc.setTraceId(traceId);
+                    rc.setTenantId(tenantId);
+                    rc.setAccountId(accountId);
+                    rc.setUserId(creatorId);
+                    rc.setLang(lang);
+                    rc.setGlobalSessionId(SessionIdUtils.newSessionId());
+                    RequestContextThreadBinder.bind(rc);
+                }
+
+                OperationResult submiteffect = OperationServiceHelper.executeOperate("submiteffect", "wtam_busitripbill", new DynamicObject[]{tripInfo}, option);
+
+                if (!submiteffect.isSuccess()) {
+                    tripInfo.set("billstatus","A");
+                    SaveServiceHelper.save(new DynamicObject[]{tripInfo});
+
+                    message = "生成对他人申请失败:{}" + submiteffect;
+                    logger.error("生成对他人申请失败:{}" + submiteffect);
+                }
+            }
+        } catch (Throwable e){
+            h.markRollback();
+            success = false;
+            message = "代他人出差申请日志保存失败," + e.getMessage();
+            logger.error("代他人出差申请日志保存失败", e);
+            throw e;
+        } finally {
+            if (h != null) {
+                if (localThrowable4 != null) {
+                    try{
+                        h.close();
+                    }
+                    catch (Throwable localThrowable3){
+                        localThrowable4.addSuppressed(localThrowable3);
+                    }
+                } else {
+                    h.close();
+                }
+            }
+        }
+
+        result.put("message", message);
+        result.put("success", Boolean.valueOf(success));
+        return result;
+    }
+
+    /**
+     * 生成HR代他人申请出差
+     * @param ids
+     * @return
+     */
+    public Map<String, Object> deleteHRTripData(ArrayList<Long> ids){
+        Map<String, Object> result = new HashMap();
+        boolean success = true;
+        String message = "";
+        TXHandle h = TX.requiresNew();
+        Throwable localThrowable4 = null;
+
+        try{
+            QFilter qFilter = new QFilter("nckd_tripreqbillid", QCP.in, ids);
+            // 调用作废操作
+            int deleteResult = DeleteServiceHelper.delete("wtam_busitripbill", new QFilter[]{qFilter});
+        } catch (Throwable e){
+            h.markRollback();
+            success = false;
+            message = "删除代他人出差申请日志失败," + e.getMessage();
+            logger.error("删除代他人出差申请日志失败", e);
+
+//            throw e;
+        } finally {
+            if (h != null) {
+                if (localThrowable4 != null) {
+                    try{
+                        h.close();
+                    }
+                    catch (Throwable localThrowable3){
+                        localThrowable4.addSuppressed(localThrowable3);
+                    }
+                } else {
+                    h.close();
+                }
+            }
+        }
+
+        result.put("message", message);
+        result.put("success", Boolean.valueOf(success));
+        return result;
+    }
+}

+ 36 - 0
code/jyyy/nckd-jimin-jyyy-bd/src/main/java/nckd/jimin/jyyy/bd/servicehelper/ServiceFactory.java

@@ -0,0 +1,36 @@
+package nckd.jimin.jyyy.bd.servicehelper;
+
+import kd.bos.dataentity.TypesContainer;
+import kd.bos.dataentity.resource.ResManager;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ServiceFactory {
+    private static Map<String, String> serviceMap = new HashMap();
+
+    public ServiceFactory() {
+
+    }
+
+    public static <T> T getService(Class<T> clazz) {
+        return (T) getService(clazz.getSimpleName());
+    }
+
+    public static void putService(String serviceName, String serviceImpl) {
+        serviceMap.put(serviceName, serviceImpl);
+    }
+
+    public static Object getService(String serviceName) {
+        String className = (String)serviceMap.get(serviceName);
+        if (className == null) {
+            throw new RuntimeException(String.format(ResManager.loadKDString("%s对应的服务实现未找到", "ServiceFactory_0", "jkjt-tmc-servicehelper", new Object[0]), serviceName));
+        } else {
+            return TypesContainer.getOrRegisterSingletonInstance(className);
+        }
+    }
+
+    static {
+        serviceMap.put("SaveTravleLogService", "nckd.jimin.jyyy.bd.mservice.SaveTravleLogServiceImpl");
+    }
+}

+ 94 - 69
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/operate/BusinessTravelOpPlugin.java

@@ -18,6 +18,7 @@ import kd.bos.orm.ORM;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.DispatchServiceHelper;
 import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
 import kd.bos.servicehelper.operation.DeleteServiceHelper;
 import kd.bos.servicehelper.operation.OperationServiceHelper;
@@ -57,30 +58,44 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
         String operationKey = args.getOperationKey();
         DynamicObject[] regBillObjs = args.getDataEntities();
         logger.info("开始执行操作:{},实体:{}",operationKey, regBillObjs);
+
         switch (operationKey) {
             case "audit":
+                for (DynamicObject regBillObj : regBillObjs) {
+                    regBillObj.set("nckd_createhr", 1);
+
+                    String currentUserId = RequestContext.get().getUserId();
+                    String creatorId = regBillObj.getDynamicObject("creator").getString("id");
+
+                    if(!creatorId.equals(currentUserId)) {
+                        regBillObj.set("nckd_lastauditor", currentUserId);
+                    }
+                }
+                SaveServiceHelper.save(regBillObjs);
+                this.createDynamicObject(regBillObjs, operationKey);
+                logger.info("生成为他人申请出差结果操作结束");
+                break;
             case "triprevoke":
-            case "createotappaly":
-                // 审核, 数据同步写入到考勤-出差单据数据中 :开始、结束时间,默认出差申请中的全天申请
-//                OperationResult pushzhwl = OperationServiceHelper.executeOperate("createotappaly", "er_tripreqbill", regBillObjs, OperateOption.create());
                 for (DynamicObject regBillObj : regBillObjs) {
                     regBillObj.set("nckd_createhr", 1);
                 }
                 SaveServiceHelper.save(regBillObjs);
-                this.createDynamicObject(regBillObjs,args.getOperationKey());
+                this.createDynamicObject(regBillObjs, operationKey);
                 logger.info("生成为他人申请出差结果操作结束");
                 break;
-            case "invalidbtn":
             case "tripchange":
+                for (DynamicObject regBillObj : regBillObjs) {
+                    regBillObj.set("nckd_createhr", 0);
+                }
+                SaveServiceHelper.save(regBillObjs);
+                this.deleteDynamicObject(regBillObjs, operationKey);
+                logger.info("删除为他人申请出差结果操作结束");
             case "unaudit":
-            case "deleteotappaly":
-                // 废弃
-//                OperationResult pushzhwl2 = OperationServiceHelper.executeOperate("deleteotappaly", "er_tripreqbill", regBillObjs, OperateOption.create());
                 for (DynamicObject regBillObj : regBillObjs) {
                     regBillObj.set("nckd_createhr", 0);
                 }
                 SaveServiceHelper.save(regBillObjs);
-                this.deleteDynamicObject(regBillObjs,args.getOperationKey());
+                this.deleteDynamicObject(regBillObjs, operationKey);
                 logger.info("删除为他人申请出差结果操作结束");
                 break;
             default:
@@ -89,35 +104,21 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
 
     }
 
-    private void changeDynamicObject(DynamicObject[] regBillObjs) {
-        ArrayList<Long> longs = new ArrayList<>();
-
-        for (DynamicObject regBillObj : regBillObjs) {
-            longs.add(regBillObj.getLong("id"));
-        }
-        QFilter qFilter = new QFilter("nckd_tripreqbillid", QCP.in, longs)
-                .and("billstatus", QCP.equals, "C");
-
-        DynamicObject[] load = BusinessDataServiceHelper.load("wtam_busitripbill", "id", qFilter.toArray());
-
-        // 执行废弃操作
-        for (DynamicObject dynamicObject : load) {
-            dynamicObject.set("billstatus", "E");
-        }
-        // 废弃
-        SaveServiceHelper.save(load);
-        // 调用作废操作
-//        DeleteServiceHelper.delete("wtam_busitripbill", new QFilter[]{qFilter});
-    }
-
+    /**
+     * 删除为下推的为他人申请出差
+     * @param regBillObjs
+     * @param key
+     */
     private void deleteDynamicObject(DynamicObject[] regBillObjs,String key) {
         ArrayList<Long> longs = new ArrayList<>();
         ArrayList<String> billList = new ArrayList<>();
         logger.info("开始执行删除为他人申请出差操作");
+
         for (DynamicObject regBillObj : regBillObjs) {
             longs.add(regBillObj.getLong("id"));
             billList.add(regBillObj.getString("billno"));
         }
+
         DynamicObject travelLog = BusinessDataServiceHelper.newDynamicObject("nckd_travel_log");
         travelLog.set("nckd_er_tripreqbill",key);
         travelLog.set("name","出差申请单");
@@ -125,21 +126,31 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
         travelLog.set("status","A");
         travelLog.set("enable",1);
         travelLog.set("nckd_billno",String.join(",", billList));
-        SaveServiceHelper.save(new DynamicObject[]{travelLog});
 
-        QFilter qFilter = new QFilter("nckd_tripreqbillid", QCP.in, longs);
-        // 调用作废操作
-        OperateOption auditOption = OperateOption.create();
-        auditOption.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");//不验证权限
-        auditOption.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); // 不执行警告级别校验器
-        DeleteServiceHelper.delete("wtam_busitripbill", new QFilter[]{qFilter});
+        try {
+            String path = "nckd.jimin.jyyy.bd.servicehelper";
+            //保存日志
+            Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveTravelLogData", travelLog);
+
+            if(result != null){
 
+            }
+            //删除为他人申请出差
+            result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","deleteHRTripData", longs);
+        } catch(Exception e1){
+            logger.info(e1.getMessage());
+        }
     }
 
-    // 创建对他人申请单
-    public void createDynamicObject(DynamicObject[] regBillObjs,String key) {
+    /**
+     * 创建为他人申请出差
+     * @param regBillObjs
+     * @param operationKey
+     */
+    public void createDynamicObject(DynamicObject[] regBillObjs, String operationKey) {
         ORM orm = ORM.create();
         logger.info("开始执行创建为他人申请出差操作");
+
         for (DynamicObject regBillObj : regBillObjs) {
             // 获取行程信息
             DynamicObjectCollection tripentry = regBillObj.getDynamicObjectCollection("tripentry");
@@ -147,12 +158,12 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
             for (DynamicObject dynamicObject : tripentry) {
                 // 日志信息
                 DynamicObject travelLog = BusinessDataServiceHelper.newDynamicObject("nckd_travel_log");
-                travelLog.set("nckd_er_tripreqbill",key);
+                travelLog.set("nckd_er_tripreqbill", operationKey);
                 travelLog.set("name","出差申请单");
                 travelLog.set("number","er_tripreqbill");
                 travelLog.set("status","A");
                 travelLog.set("enable",1);
-                travelLog.set("nckd_billno",regBillObj.getString("billno"));
+                travelLog.set("nckd_billno", regBillObj.getString("billno"));
 
                 List<String> nameList = new ArrayList<>();
                 List<String> numberList = new ArrayList<>();
@@ -217,20 +228,31 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
                                                 (existing, replacement) -> existing // 保留前面的值
                                         ));
 
-                        initDate(regBillObj,dynamicObject,wtpAttendpeople,map2,travelLog,travelerno,map3);
+                        initDate(regBillObj, dynamicObject, wtpAttendpeople, map2, travelLog, travelerno, map3, operationKey);
                     }
 
                 }
                 if(wtpAttendpeople.length == 0 || wtpAttfilebases.length == 0){
                     travelLog.set("nckd_travelsno",String.join(",", numberList));
                     travelLog.set("nckd_returnparameter","未找到对应考勤人员及档案");
-                    SaveServiceHelper.save(new DynamicObject[]{travelLog});
+
+                    try {
+                        String path = "nckd.jimin.jyyy.bd.servicehelper";
+                        Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveTravelLogData", travelLog);
+
+                        if(result != null){
+
+                        }
+                    } catch(Exception e1){
+                        logger.info(e1.getMessage());
+                    }
                 }
             }
         }
     }
 
-    private void initDate(DynamicObject dynamicObject, DynamicObject tripentry, DynamicObject[] travelers, Map<Long, DynamicObject> map, DynamicObject log, List<String> travelerno,Map<Long, DynamicObject> map3){
+    private void initDate(DynamicObject dynamicObject, DynamicObject tripentry, DynamicObject[] travelers
+            , Map<Long, DynamicObject> map, DynamicObject log, List<String> travelerno,Map<Long, DynamicObject> map3, String operationKey){
         // 出差申请单id
         long id = dynamicObject.getLong("id");
         List<String> travelerList = new ArrayList<>();
@@ -238,8 +260,7 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
         StringBuilder errstr = new StringBuilder();
 
 
-        DynamicObject bosUser = BusinessDataServiceHelper.loadSingle(RequestContext.get().getUserId(), "bos_user");
-//        DynamicObject bosUser = BusinessDataServiceHelper.loadSingle(2189228575587044352L, "bos_user");
+        DynamicObject bosUser = dynamicObject.getDynamicObject("nckd_lastauditor");
 
         Date startdate = tripentry.getDate("startdate");
         Date enddate = tripentry.getDate("enddate");
@@ -273,9 +294,9 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
 
             wtamBusitripbill.set("creator", bosUser);
 
-            wtamBusitripbill.set("nckd_tripreqbillid",id);
+            wtamBusitripbill.set("nckd_tripreqbillid", id);
             // 考勤人员
-            wtamBusitripbill.set("personid",traveler);
+            wtamBusitripbill.set("personid", traveler);
             // 考勤管理组织
             wtamBusitripbill.set("org",wtpAttfilebase.get("org"));
             // 考勤档案
@@ -339,34 +360,29 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
             dynamicObject1.set("startmethod","3"); // 出差方式(开始) 默认全天
             dynamicObject1.set("endmethod","3"); // 出差方式(结束) 默认全天
             dynamicObject1.set("enclosuremode","A"); // 附件信息 下拉列表
-//            OperationResult submiteffect = OperationServiceHelper.executeOperate("submiteffect", "wtam_busitripbill", new DynamicObject[]{wtamBusitripbill}, OperateOption.create());
-//            if (!submiteffect.isSuccess()) {
-//                logger.error("生成对他人申请失败:{}" + submiteffect);
-//                throw new KDBizException("生成对他人申请失败:{}" + submiteffect.getMessage());
-//            }
-
-//            SaveServiceHelper.save(new DynamicObject[]{wtamBusitripbill});
-            OperateOption auditOption = OperateOption.create();
-            auditOption.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");//不验证权限
-            auditOption.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); // 不执行警告级别校验器
-            OperationResult submiteffect;
+
             try {
-                submiteffect = OperationServiceHelper.executeOperate("submiteffect", "wtam_busitripbill", new DynamicObject[]{wtamBusitripbill}, OperateOption.create());
 
-                if (!submiteffect.isSuccess()) {
-                    wtamBusitripbill.set("billstatus","A");
-                    SaveServiceHelper.save(new DynamicObject[]{wtamBusitripbill});
-                    logger.error("生成对他人申请失败:{}" + submiteffect);
+                String path = "nckd.jimin.jyyy.bd.servicehelper";
+                boolean isWorkFlow = Boolean.parseBoolean(operateOption.getVariableValue("WF", Boolean.FALSE.toString()));
+                if(!isWorkFlow){
+                    operationKey = "triprevoke";
+                }
+
+                Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveHRTripData", wtamBusitripbill, "submiteffect", operationKey);
+
+                if(result != null){
+
                 }
-            } catch(Exception e){
-                String msg = e.getMessage();
-            } finally {
-                String msg = "";
+            } catch(Exception e1){
+                logger.info(e1.getMessage());
             }
+
         }
         if(errstr.length() > 0){
             errstr.append("未找到对应考勤人员档案");
         }
+
         log.set("nckd_travelsalready",String.join(",", travelerList));
         log.set("nckd_travelsno",String.join(",", travelerno)+String.join(",", travelerListNo));
         String str = "";
@@ -375,7 +391,16 @@ public class BusinessTravelOpPlugin extends AbstractOperationServicePlugIn {
         }
         str = str + errstr.toString();
         log.set("nckd_returnparameter",str);
-        SaveServiceHelper.save(new DynamicObject[]{log});
 
+        try {
+            String path = "nckd.jimin.jyyy.bd.servicehelper";
+            Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveTravelLogData", log);
+
+            if(result != null){
+
+            }
+        } catch(Exception e1){
+            logger.info(e1.getMessage());
+        }
     }
 }

+ 56 - 68
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/operate/DailyVehicleBillCusOpPlugin.java

@@ -18,6 +18,7 @@ import kd.bos.orm.ORM;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.DispatchServiceHelper;
 import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
 import kd.bos.servicehelper.operation.DeleteServiceHelper;
 import kd.bos.servicehelper.operation.OperationServiceHelper;
@@ -58,30 +59,28 @@ public class DailyVehicleBillCusOpPlugin extends AbstractOperationServicePlugIn
         String operationKey = args.getOperationKey();
         DynamicObject[] regBillObjs = args.getDataEntities();
         logger.info("开始执行操作:{},实体:{}",operationKey, regBillObjs);
+
         switch (operationKey) {
             case "audit":
-            case "triprevoke":
-            case "createotappaly":
-                // 审核, 数据同步写入到考勤-出差单据数据中 :开始、结束时间,默认出差申请中的全天申请
-//                OperationResult pushzhwl = OperationServiceHelper.executeOperate("createotappaly", "er_tripreqbill", regBillObjs, OperateOption.create());
                 for (DynamicObject regBillObj : regBillObjs) {
                     regBillObj.set("nckd_createhr", 1);
+                    String currentUserId = RequestContext.get().getUserId();
+                    String creatorId = regBillObj.getDynamicObject("creator").getString("id");
+
+                    if(!creatorId.equals(currentUserId)) {
+                        regBillObj.set("nckd_lastauditor", currentUserId);
+                    }
                 }
                 SaveServiceHelper.save(regBillObjs);
-                this.createDynamicObject(regBillObjs,args.getOperationKey());
+                this.createDynamicObject(regBillObjs, operationKey);
                 logger.info("生成为他人申请出差结果操作结束");
                 break;
-            case "invalidbtn":
-            case "tripchange":
             case "unaudit":
-            case "deleteotappaly":
-                // 废弃
-//                OperationResult pushzhwl2 = OperationServiceHelper.executeOperate("deleteotappaly", "er_tripreqbill", regBillObjs, OperateOption.create());
                 for (DynamicObject regBillObj : regBillObjs) {
                     regBillObj.set("nckd_createhr", 0);
                 }
                 SaveServiceHelper.save(regBillObjs);
-                this.deleteDynamicObject(regBillObjs,args.getOperationKey());
+                this.deleteDynamicObject(regBillObjs, operationKey);
                 logger.info("删除为他人申请出差结果操作结束");
                 break;
             default:
@@ -90,27 +89,6 @@ public class DailyVehicleBillCusOpPlugin extends AbstractOperationServicePlugIn
 
     }
 
-    private void changeDynamicObject(DynamicObject[] regBillObjs) {
-        ArrayList<Long> longs = new ArrayList<>();
-
-        for (DynamicObject regBillObj : regBillObjs) {
-            longs.add(regBillObj.getLong("id"));
-        }
-        QFilter qFilter = new QFilter("nckd_tripreqbillid", QCP.in, longs)
-                .and("billstatus", QCP.equals, "C");
-
-        DynamicObject[] load = BusinessDataServiceHelper.load("wtam_busitripbill", "id", qFilter.toArray());
-
-        // 执行废弃操作
-        for (DynamicObject dynamicObject : load) {
-            dynamicObject.set("billstatus", "E");
-        }
-        // 废弃
-        SaveServiceHelper.save(load);
-        // 调用作废操作
-//        DeleteServiceHelper.delete("wtam_busitripbill", new QFilter[]{qFilter});
-    }
-
     private void deleteDynamicObject(DynamicObject[] regBillObjs,String key) {
         ArrayList<Long> longs = new ArrayList<>();
         ArrayList<String> billList = new ArrayList<>();
@@ -126,25 +104,30 @@ public class DailyVehicleBillCusOpPlugin extends AbstractOperationServicePlugIn
         travelLog.set("status","A");
         travelLog.set("enable",1);
         travelLog.set("nckd_billno",String.join(",", billList));
-        SaveServiceHelper.save(new DynamicObject[]{travelLog});
 
-        QFilter qFilter = new QFilter("nckd_tripreqbillid", QCP.in, longs);
-        // 调用作废操作
-        OperateOption auditOption = OperateOption.create();
-        auditOption.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");//不验证权限
-        auditOption.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); // 不执行警告级别校验器
-        DeleteServiceHelper.delete("wtam_busitripbill", new QFilter[]{qFilter});
+        try {
+            String path = "nckd.jimin.jyyy.bd.servicehelper";
+            //保存日志
+            Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveTravelLogData", travelLog);
+
+            if(result != null){
 
+            }
+            //删除为他人申请出差
+            result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","deleteHRTripData", longs);
+        } catch(Exception e1){
+            logger.info(e1.getMessage());
+        }
     }
 
     // 创建对他人申请单
-    public void createDynamicObject(DynamicObject[] regBillObjs,String key) {
+    public void createDynamicObject(DynamicObject[] regBillObjs, String operationKey) {
         ORM orm = ORM.create();
         logger.info("开始执行创建为他人申请出差操作");
         for (DynamicObject regBillObj : regBillObjs) {
             // 日志信息
             DynamicObject travelLog = BusinessDataServiceHelper.newDynamicObject("nckd_travel_log");
-            travelLog.set("nckd_er_tripreqbill", key);
+            travelLog.set("nckd_er_tripreqbill", operationKey);
             travelLog.set("name", "外办单");
             travelLog.set("number", "er_dailyvehiclebill");
             travelLog.set("status", "A");
@@ -216,29 +199,37 @@ public class DailyVehicleBillCusOpPlugin extends AbstractOperationServicePlugIn
                                             (existing, replacement) -> existing // 保留前面的值
                                     ));
 
-                    initDate(regBillObj, wtpAttendpeople, map2, travelLog, travelerno, map3);
+                    initDate(regBillObj, wtpAttendpeople, map2, travelLog, travelerno, map3, operationKey);
                 }
 
             }
             if(wtpAttendpeople.length == 0 || wtpAttfilebases.length == 0){
                 travelLog.set("nckd_travelsno",String.join(",", numberList));
                 travelLog.set("nckd_returnparameter","未找到对应考勤人员及档案");
-                SaveServiceHelper.save(new DynamicObject[]{travelLog});
+
+                try {
+                    String path = "nckd.jimin.jyyy.bd.servicehelper";
+                    Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveTravelLogData", travelLog);
+
+                    if(result != null){
+
+                    }
+                } catch(Exception e1){
+                    logger.info(e1.getMessage());
+                }
             }
         }
     }
 
     private void initDate(DynamicObject dynamicObject, DynamicObject[] travelers, Map<Long, DynamicObject> map
-            , DynamicObject log, List<String> travelerno,Map<Long, DynamicObject> map3){
+            , DynamicObject log, List<String> travelerno,Map<Long, DynamicObject> map3, String operationKey){
         // 出差申请单id
         long id = dynamicObject.getLong("id");
         List<String> travelerList = new ArrayList<>();
         List<String> travelerListNo = new ArrayList<>();
         StringBuilder errstr = new StringBuilder();
 
-
-        DynamicObject bosUser = BusinessDataServiceHelper.loadSingle(RequestContext.get().getUserId(), "bos_user");
-//        DynamicObject bosUser = BusinessDataServiceHelper.loadSingle(2189228575587044352L, "bos_user");
+        DynamicObject bosUser = dynamicObject.getDynamicObject("nckd_lastauditor");
 
         Date startdate = dynamicObject.getDate("startdate");
         Date enddate = dynamicObject.getDate("enddate");
@@ -338,29 +329,17 @@ public class DailyVehicleBillCusOpPlugin extends AbstractOperationServicePlugIn
             dynamicObject1.set("startmethod","3"); // 出差方式(开始) 默认全天
             dynamicObject1.set("endmethod","3"); // 出差方式(结束) 默认全天
             dynamicObject1.set("enclosuremode","A"); // 附件信息 下拉列表
-//            OperationResult submiteffect = OperationServiceHelper.executeOperate("submiteffect", "wtam_busitripbill", new DynamicObject[]{wtamBusitripbill}, OperateOption.create());
-//            if (!submiteffect.isSuccess()) {
-//                logger.error("生成对他人申请失败:{}" + submiteffect);
-//                throw new KDBizException("生成对他人申请失败:{}" + submiteffect.getMessage());
-//            }
-
-//            SaveServiceHelper.save(new DynamicObject[]{wtamBusitripbill});
-            OperateOption auditOption = OperateOption.create();
-            auditOption.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");//不验证权限
-            auditOption.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); // 不执行警告级别校验器
-            OperationResult submiteffect;
+
             try {
-                submiteffect = OperationServiceHelper.executeOperate("submiteffect", "wtam_busitripbill", new DynamicObject[]{wtamBusitripbill}, OperateOption.create());
 
-                if (!submiteffect.isSuccess()) {
-                    wtamBusitripbill.set("billstatus","A");
-                    SaveServiceHelper.save(new DynamicObject[]{wtamBusitripbill});
-                    logger.error("生成对他人申请失败:{}" + submiteffect);
+                String path = "nckd.jimin.jyyy.bd.servicehelper";
+                Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveHRTripData", wtamBusitripbill, "submiteffect", operationKey);
+
+                if(result != null){
+
                 }
-            } catch(Exception e){
-                String msg = e.getMessage();
-            } finally {
-                String msg = "";
+            } catch(Exception e1){
+                logger.info(e1.getMessage());
             }
         }
         if(errstr.length() > 0){
@@ -374,7 +353,16 @@ public class DailyVehicleBillCusOpPlugin extends AbstractOperationServicePlugIn
         }
         str = str + errstr.toString();
         log.set("nckd_returnparameter",str);
-        SaveServiceHelper.save(new DynamicObject[]{log});
 
+        try {
+            String path = "nckd.jimin.jyyy.bd.servicehelper";
+            Map<String, Object> result = DispatchServiceHelper.invokeService(path,"bd","SaveTravleLogService","saveTravelLogData", log);
+
+            if(result != null){
+
+            }
+        } catch(Exception e1){
+            logger.info(e1.getMessage());
+        }
     }
 }