Commit 067c7753 authored by 周亚武's avatar 周亚武

增加出差类型

parent a02c03d8
......@@ -78,13 +78,16 @@ public interface IDingPersonService extends IDingTalkService {
/**
* 根据系统电话查询指定时间的审批表单
* @param processCode 审批流的唯一码。
* @param processCode 审批流的唯一码(详见doc下 审批表单列表.txt)。
* 请假:PROC-2E5C0DFF-3615-4409-A614-A2011FED5D38
* 外出:PROC-56D3ADEE-45A4-47BC-931A-2A0DC067DE32
* 出差:PROC-578CBDDF-B768-496D-9918-44A3F1D9CAE7
* @param startTime 审批实例开始时间,Unix时间戳,单位毫秒
* @param endTime 审批实例结束时间,Unix时间戳,单位毫秒。
* @param nextToken 分页游标。如果是非首次调用,该参数传上次调用时返回的nextToken。
* @param maxResults 分页参数,每页大小,最多传20。
* @param phones 发起人电话列表 最大列表长度为10
* @param userIds 发起人id列表 最大列表长度为10
*/
Rest<ListProcessInstanceIdsResponse> getProcessInstanceIdByPhone(String processCode, long startTime, long endTime, long nextToken, long maxResults, String phones) throws Exception;
Rest<ListProcessInstanceIdsResponse> getProcessInstanceIdByUserIds(String processCode,long startTime,long endTime,long nextToken,long maxResults,String userIds) throws Exception;
}
......@@ -16,6 +16,10 @@ import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.*;
import com.dingtalk.api.response.*;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.common.code.AppealResultEnum;
import com.mortals.xhx.common.code.LeaveRulesEnum;
......@@ -191,12 +195,15 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
/**
* 根据系统电话查询指定时间的审批表单
* @param processCode 审批流的唯一码(详见doc下 审批表单列表.txt)。 请假:PROC-2E5C0DFF-3615-4409-A614-A2011FED5D38 外出:PROC-56D3ADEE-45A4-47BC-931A-2A0DC067DE32 出差 :PROC-578CBDDF-B768-496D-9918-44A3F1D9CAE7
* @param processCode 审批流的唯一码(详见doc下 审批表单列表.txt)。
* 请假:PROC-2E5C0DFF-3615-4409-A614-A2011FED5D38
* 外出:PROC-56D3ADEE-45A4-47BC-931A-2A0DC067DE32
* 出差:PROC-578CBDDF-B768-496D-9918-44A3F1D9CAE7
* @param startTime 审批实例开始时间,Unix时间戳,单位毫秒
* @param endTime 审批实例结束时间,Unix时间戳,单位毫秒。
* @param nextToken 分页游标。如果是非首次调用,该参数传上次调用时返回的nextToken。
* @param maxResults 分页参数,每页大小,最多传20。
* @param phones 发起人电话列表 最大列表长度为10
* @param userIds 发起人id列表 最大列表长度为10
*
* @return 返回示例 {
* "result" : {
......@@ -206,26 +213,7 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
* "success" : true
* }
*/
public Rest<ListProcessInstanceIdsResponse> getProcessInstanceIdByPhone(String processCode,long startTime,long endTime,long nextToken,long maxResults,String phones) throws Exception{
String userIds = "";
if(!phones.isEmpty()){
List<String> phonesList = Arrays.asList(phones);
for(String phone : phonesList){
Rest<String> mobileRest = getPersonByMobile(phone);
if(mobileRest.getCode() == Rest.SUCCESS){
userIds += mobileRest.getData()+",";
}
}
}
//去掉末尾的逗号
if(userIds.endsWith(",")){
userIds = userIds.substring(0,userIds.lastIndexOf(","));
}
public Rest<ListProcessInstanceIdsResponse> getProcessInstanceIdByUserIds(String processCode,long startTime,long endTime,long nextToken,long maxResults,String userIds) throws Exception{
if (!userIds.equals("")) {
com.aliyun.dingtalkworkflow_1_0.Client client = new com.aliyun.dingtalkworkflow_1_0.Client(setConfig());
com.aliyun.dingtalkworkflow_1_0.models.ListProcessInstanceIdsHeaders listProcessInstanceIdsHeaders = new com.aliyun.dingtalkworkflow_1_0.models.ListProcessInstanceIdsHeaders();
......@@ -252,9 +240,11 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
}
return Rest.fail("获取审批实例列表失败:"+com.aliyun.teautil.Common.empty(err.message));
}
}else {
return Rest.fail("userid为空");
}
return Rest.fail("根据手机号: "+phones+" 未查询到钉钉userid");
}
......@@ -352,7 +342,6 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
String leave_code = LeaveRulesEnum.事假.getLeave_code();
String leave_name = "事假";
if(result.getTitle().contains("请假")){
leave_code = LeaveRulesEnum.事假.getLeave_code();
leave_name = "事假";
if (result.getFormComponentValues().size() > 0) {
JSONArray jsonArray = JSONArray.parseArray(result.getFormComponentValues().get(0).getValue());
......@@ -478,7 +467,6 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
}
}
}else if(result.getTitle().contains("外出")){
leave_code = LeaveRulesEnum.事假.getLeave_code();
leave_name = "因公外出";
leaveRecordEntity.setLeaveType(17);
List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues> comList = result.getFormComponentValues();
......@@ -506,6 +494,48 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
}
}
}
}else if(result.getTitle().contains("出差")){
leave_name = "因公外出";
leaveRecordEntity.setLeaveType(17);
List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues> comList = result.getFormComponentValues();
if(!comList.isEmpty()){
for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues componentValues : comList){
switch (componentValues.name){
case "行程":
Gson gson = new Gson();
JsonArray jsonArray = gson.fromJson(componentValues.getValue(), JsonArray.class);
JsonObject jsonObject = jsonArray.get(0).getAsJsonObject(); // 获取第一个对象
JsonElement rowValueElement = jsonObject.get("rowValue"); // 获取rowValue字段的值
JsonArray rowValueArray = rowValueElement.getAsJsonArray(); // 获取数组
for (JsonElement element : rowValueArray) { // 遍历数组中的每个元素
JsonObject jsonObject1 = element.getAsJsonObject(); // 获取每个元素作为对象
String label = jsonObject1.get("label").getAsString(); // 获取label字段的值
String value = jsonObject1.get("value").getAsString();
if(label.contains("开始时间")){
Date startTime1 = dateFormat(value, "yyyy-MM-dd HH:mm", true);
leaveRecordEntity.setStartTime(startTime1);
}
if(label.contains("结束时间")){
Date endTime1 = dateFormat(value, "yyyy-MM-dd HH:mm", false);
leaveRecordEntity.setEndTime(endTime1);
}
}
break;
case "出差天数":
leaveRecordEntity.setDuration(Integer.parseInt(componentValues.getValue()) * 60 * 60 * 8); //天转换成秒 一天工作时间9小时
leaveRecordEntity.setSourceDingTime(Integer.parseInt(componentValues.getValue()) + "天");
break;
case "出差事由":
leaveRecordEntity.setReason(componentValues.getValue());
break;
case "图片":
leaveRecordEntity.setAttachmentPath(componentValues.getValue());
break;
}
}
}
}
......@@ -898,6 +928,23 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
dateString = dateString.replace("下午", "18:00");
}
}
//只有日期的字符串要处理加上时间 否则会转换出错
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
sdf.parse(dateString);
if(tag){
dateString += " 09:00";
}else {
dateString += " 18:00";
}
//该日期字符串只包含日期部分!
} catch (ParseException e) {
//该日期字符串不合法或者包含时间部分!不作处理
}
SimpleDateFormat dateFormat_ = new SimpleDateFormat(format);
Date t;
......@@ -909,5 +956,78 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
}
}
// public static void main(String[] args) {
// String result = "{\"attachedProcessInstanceIds\":[],\"bizAction\":\"NONE\",\"businessId\":\"202401161705000413779\",\"ccUserIds\":[\"2359336301844466\",\"2352352656711393\",\"254868153920685466\"],\"createTime\":\"2024-01-16T17:05Z\",\"finishTime\":\"2024-01-17T10:15Z\",\"formComponentValues\":[{\"bizAlias\":\"type\",\"componentType\":\"DDSelectField\",\"id\":\"DDSelectField-K2BJK0RV\",\"name\":\"外出类型\"},{\"bizAlias\":\"startTime\",\"componentType\":\"DDDateField\",\"id\":\"DDDateField-K2BJK0RW\",\"name\":\"开始时间\",\"value\":\"2024-01-17\"},{\"bizAlias\":\"finishTime\",\"componentType\":\"DDDateField\",\"id\":\"DDDateField-K2BJK0RX\",\"name\":\"结束时间\",\"value\":\"2024-01-17\"},{\"bizAlias\":\"duration\",\"componentType\":\"NumberField\",\"extValue\":\"{\\\"compressedValue\\\":\\\"1f8b08000000000000009550cb4ec33010fc973d1b94422222df2a2244257a81704088c3ca76a9851b475e1b5445f977d669a141ea05dfe6a1d9f10ca0d0a9e4309ab5d706e442803611ad7bb01441be0ea053c0687db7ea1adcb3e1b228c48cbcf72980ac27766330a66008e400d8f76e7f17fcaeb5bb9c7b535465b5288bfcc4416dfd4cabafeba3a61c123d1995f3e94f85b5cd4455b2c9747aa98227c60774368a228638f34df84ca1f14d80a54793bfbc414746c0a709c4274102ff1846015ba4dbdcecd7d13bec561ae4056ff6e5c347c3231e73af8a9f0659c807b97a8a7999b29eaefd63d5133b0f39f1cf9de5dad02c5f804b25dab6f8ce18c66f8db64c7edd010000\\\",\\\"extension\\\":\\\"{\\\\\\\"tag\\\\\\\":\\\\\\\"\\\\\\\"}\\\",\\\"unit\\\":\\\"DAY\\\",\\\"_from\\\":\\\"2024-01-17\\\",\\\"_overTimeApplyUserId\\\":\\\"01575932040926359398\\\",\\\"pushTag\\\":\\\"\\\",\\\"detailList\\\":[{\\\"classInfo\\\":{\\\"restSections\\\":[],\\\"hasClass\\\":false,\\\"sections\\\":[{\\\"endAcross\\\":0,\\\"startTime\\\":1705451400000,\\\"endTime\\\":1705483800000,\\\"startAcross\\\":0}]},\\\"workDate\\\":1705420800000,\\\"isRest\\\":false,\\\"workTimeMinutes\\\":480,\\\"approveInfo\\\":{\\\"fromAcross\\\":0,\\\"toAcross\\\":0,\\\"fromTime\\\":1705451400000,\\\"durationInDay\\\":1,\\\"durationInHour\\\":8,\\\"toTime\\\":1705483800000}}],\\\"durationInDay\\\":1,\\\"_to\\\":\\\"2024-01-17\\\",\\\"isModifiable\\\":true,\\\"durationInHour\\\":8}\",\"id\":\"NumberField-K2BJK0RY\",\"name\":\"时长\",\"value\":\"1\"},{\"componentType\":\"TextareaField\",\"id\":\"外出事由\",\"name\":\"外出事由\",\"value\":\"市局有事\"},{\"componentType\":\"DDPhotoField\",\"id\":\"图片\",\"name\":\"图片\"}],\"operationRecords\":[{\"date\":\"2024-01-16T17:05Z\",\"result\":\"NONE\",\"type\":\"START_PROCESS_INSTANCE\",\"userId\":\"01575932040926359398\"},{\"date\":\"2024-01-17T09:24Z\",\"result\":\"AGREE\",\"type\":\"EXECUTE_TASK_NORMAL\",\"userId\":\"0355254921955583\"},{\"date\":\"2024-01-17T10:15Z\",\"result\":\"AGREE\",\"type\":\"EXECUTE_TASK_NORMAL\",\"userId\":\"31102532391173290\"},{\"ccUserIds\":[\"2352352656711393\",\"2359336301844466\"],\"date\":\"2024-01-17T10:15Z\",\"remark\":\"\",\"result\":\"NONE\",\"type\":\"PROCESS_CC\",\"userId\":\"01575932040926359398\"},{\"ccUserIds\":[\"254868153920685466\"],\"date\":\"2024-01-17T10:15Z\",\"remark\":\"\",\"result\":\"NONE\",\"type\":\"PROCESS_CC\",\"userId\":\"01575932040926359398\"}],\"originatorDeptId\":\"895306500\",\"originatorDeptName\":\"2B税务大厅-劳务外包人员咨询组\",\"originatorUserId\":\"01575932040926359398\",\"result\":\"agree\",\"status\":\"COMPLETED\",\"tasks\":[{\"activityId\":\"1ebf_7ae5\",\"createTime\":\"2024-01-16T17:05Z\",\"finishTime\":\"2024-01-17T09:24Z\",\"mobileUrl\":\"aflow.dingtalk.com?procInsId=9HLoKgFLTNiz1KO08qc85A07481705395941&taskId=84557347599&businessId=202401161705000413779\",\"pcUrl\":\"aflow.dingtalk.com?procInsId=9HLoKgFLTNiz1KO08qc85A07481705395941&taskId=84557347599&businessId=202401161705000413779\",\"result\":\"AGREE\",\"status\":\"COMPLETED\",\"taskId\":84557347599,\"userId\":\"0355254921955583\"},{\"activityId\":\"075a_e01a\",\"createTime\":\"2024-01-17T09:24Z\",\"finishTime\":\"2024-01-17T10:15Z\",\"mobileUrl\":\"aflow.dingtalk.com?procInsId=9HLoKgFLTNiz1KO08qc85A07481705395941&taskId=84566067197&businessId=202401161705000413779\",\"pcUrl\":\"aflow.dingtalk.com?procInsId=9HLoKgFLTNiz1KO08qc85A07481705395941&taskId=84566067197&businessId=202401161705000413779\",\"result\":\"AGREE\",\"status\":\"COMPLETED\",\"taskId\":84566067197,\"userId\":\"31102532391173290\"}],\"title\":\"李玉洁提交的外出\"}";
// new DingPersonServiceImpl().test(result);
// }
//
//
// private void test(String resultString){
// GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult result = JSONObject.parseObject(resultString,GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult.class);
// if(result.getTitle().contains("外出")){
// List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues> comList = result.getFormComponentValues();
// if(!comList.isEmpty()){
// for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues componentValues : comList){
// switch (componentValues.name){
// case "开始时间":
// Date startTime1 = dateFormat(componentValues.getValue(), "yyyy-MM-dd HH:mm", true);
// log.info("开始时间:"+startTime1);
// break;
// case "结束时间":
// Date endTime1 = dateFormat(componentValues.getValue(), "yyyy-MM-dd HH:mm", false);
// log.info("结束时间:"+endTime1);
// break;
// case "时长":
// log.info("时长:"+Integer.parseInt(componentValues.getValue()) + "天");
// break;
// case "外出事由":
// log.info("外出事由:"+componentValues.getValue());
// break;
// case "图片":
// log.info("图片:"+componentValues.getValue());
// break;
// }
// }
// }
// }else if(result.getTitle().contains("出差")) {
// List<GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues> comList = result.getFormComponentValues();
// if (!comList.isEmpty()) {
// for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues componentValues : comList) {
// switch (componentValues.name) {
// case "行程":
// Gson gson = new Gson();
// JsonArray jsonArray = gson.fromJson(componentValues.getValue(), JsonArray.class);
// JsonObject jsonObject = jsonArray.get(0).getAsJsonObject(); // 获取第一个对象
// JsonElement rowValueElement = jsonObject.get("rowValue"); // 获取rowValue字段的值
// JsonArray rowValueArray = rowValueElement.getAsJsonArray(); // 获取数组
// for (JsonElement element : rowValueArray) { // 遍历数组中的每个元素
// JsonObject jsonObject1 = element.getAsJsonObject(); // 获取每个元素作为对象
// String label = jsonObject1.get("label").getAsString(); // 获取label字段的值
// String value = jsonObject1.get("value").getAsString();
// if (label.contains("开始时间")) {
// Date startTime1 = dateFormat(value, "yyyy-MM-dd HH:mm", true);
// log.info("开始时间:"+startTime1);
// }
// if (label.contains("结束时间")) {
// Date endTime1 = dateFormat(value, "yyyy-MM-dd HH:mm", false);
// log.info("结束时间:"+endTime1);
// }
// }
//
//
// break;
// case "出差天数":
// log.info("出差天数:"+Integer.parseInt(componentValues.getValue()) + "天");
// break;
// case "出差事由":
// log.info("出差事由:"+componentValues.getValue());
// break;
// case "图片":
// log.info("图片:"+componentValues.getValue());
// break;
// }
// }
// }
// }
// }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment