|
@@ -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());
|
|
|
+ }
|
|
|
}
|
|
|
}
|