|
@@ -1933,9 +1933,17 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
//全部的
|
|
|
List<TimeType> timeTypes = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_dingding", 1));
|
|
|
List<Integer> companyIds = timeTypes.stream().map(TimeType::getCompanyId).collect(Collectors.toList());
|
|
|
- List<CompanyDingding> dingdingList = companyDingdingMapper.selectList(new QueryWrapper<CompanyDingding>().in("company_id", companyIds));
|
|
|
- for (CompanyDingding dingding : dingdingList) {
|
|
|
- syncOneCompLeave(dingding, userId, startDate, endDate);
|
|
|
+ if (companyIds.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().in("id", companyIds).ge("expiration_date", LocalDateTime.now()));
|
|
|
+ if (companyList.size() > 0) {
|
|
|
+ //缩小公司范围,只同步有效期内的公司
|
|
|
+ companyIds = companyList.stream().map(Company::getId).collect(Collectors.toList());
|
|
|
+ List<CompanyDingding> dingdingList = companyDingdingMapper.selectList(new QueryWrapper<CompanyDingding>().in("company_id", companyIds));
|
|
|
+ for (CompanyDingding dingding : dingdingList) {
|
|
|
+ syncOneCompLeave(dingding, userId, startDate, endDate);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1961,6 +1969,7 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //仅适用于钉钉企业内部应用
|
|
|
private void sycUserOneDayWorkData(CompanyDingding dingding, String userId, String workDate, boolean showLog, boolean onlySyncAttendance) {
|
|
|
List<User> userList = null;
|
|
|
if (StringUtils.isEmpty(userId)) {
|
|
@@ -2172,44 +2181,44 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
OapiAttendanceGetleavetimebynamesResponse rsp = null;
|
|
|
try {
|
|
|
rsp = client.execute(req, accessToken);
|
|
|
- System.out.println(rsp.getBody());
|
|
|
-// JSONArray array = JSONObject.parseObject(rsp.getBody()).getJSONObject("result").getJSONArray("columns");
|
|
|
-// for (int i=0;i<array.size(); i++) {
|
|
|
-// JSONObject item = array.getJSONObject(i);
|
|
|
-// String leaveTypeName = item.getJSONObject("columnvo").getString("name");
|
|
|
-// int typeIndex = 0;
|
|
|
-// for (int index=0;index < Constant.LEAVE_TYPES.length; index++) {
|
|
|
-// if (Constant.LEAVE_TYPES[index].equals(leaveTypeName)) {
|
|
|
-// typeIndex = index;
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// //获取请假的数据
|
|
|
-// JSONArray valArray = item.getJSONArray("columnvals");
|
|
|
-// for (int j=0;j<valArray.size(); j++) {
|
|
|
-// Float val = valArray.getJSONObject(j).getFloat("value");
|
|
|
-// String date = valArray.getJSONObject(j).getString("date");
|
|
|
-// LocalDate localDate = LocalDateTime.parse(date, dtf).toLocalDate();
|
|
|
-// if (val != null && val > 0.0) {
|
|
|
-// //存在请假时长
|
|
|
-// LeaveSheet sheet = new LeaveSheet();
|
|
|
-// sheet.setCompanyId(dingding.getCompanyId());
|
|
|
-// sheet.setOwnerId(u.getId());
|
|
|
-// sheet.setOwnerName(u.getName());
|
|
|
-// sheet.setLeaveType(typeIndex);
|
|
|
-// sheet.setTimeHours(val);
|
|
|
-// sheet.setStartDate(localDate);
|
|
|
-// sheet.setEndDate(localDate);
|
|
|
-// if (val >= timeType.getAllday()) {
|
|
|
-// sheet.setTimeType(0);
|
|
|
-// sheet.setTimeDays(1.0f);
|
|
|
-// } else {
|
|
|
-// sheet.setTimeType(1);//按小时
|
|
|
-// }
|
|
|
-// sheetList.add(sheet);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
+// System.out.println(rsp.getBody());
|
|
|
+ JSONArray array = JSONObject.parseObject(rsp.getBody()).getJSONObject("result").getJSONArray("columns");
|
|
|
+ for (int i=0;i<array.size(); i++) {
|
|
|
+ JSONObject item = array.getJSONObject(i);
|
|
|
+ String leaveTypeName = item.getJSONObject("columnvo").getString("name");
|
|
|
+ int typeIndex = 0;
|
|
|
+ for (int index=0;index < Constant.LEAVE_TYPES.length; index++) {
|
|
|
+ if (Constant.LEAVE_TYPES[index].equals(leaveTypeName)) {
|
|
|
+ typeIndex = index;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取请假的数据
|
|
|
+ JSONArray valArray = item.getJSONArray("columnvals");
|
|
|
+ for (int j=0;j<valArray.size(); j++) {
|
|
|
+ Float val = valArray.getJSONObject(j).getFloat("value");
|
|
|
+ String date = valArray.getJSONObject(j).getString("date");
|
|
|
+ LocalDate localDate = LocalDateTime.parse(date, dtf).toLocalDate();
|
|
|
+ if (val != null && val > 0.0) {
|
|
|
+ //存在请假时长
|
|
|
+ LeaveSheet sheet = new LeaveSheet();
|
|
|
+ sheet.setCompanyId(dingding.getCompanyId());
|
|
|
+ sheet.setOwnerId(u.getId());
|
|
|
+ sheet.setOwnerName(u.getName());
|
|
|
+ sheet.setLeaveType(typeIndex);
|
|
|
+ sheet.setTimeHours(val);
|
|
|
+ sheet.setStartDate(localDate);
|
|
|
+ sheet.setEndDate(localDate);
|
|
|
+ if (val >= timeType.getAllday()) {
|
|
|
+ sheet.setTimeType(0);
|
|
|
+ sheet.setTimeDays(1.0f);
|
|
|
+ } else {
|
|
|
+ sheet.setTimeType(1);//按小时
|
|
|
+ }
|
|
|
+ sheetList.add(sheet);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} catch (ApiException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|