|
@@ -115,7 +115,10 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
//查询接口body添加参数
|
|
|
//field_filter_list:要查询字段(花名册字段信息参考:https://open.dingtalk.com/document/orgapp/roster-custom-field-business-code)
|
|
|
//agentid:企业内部应用AgentId
|
|
|
- map.put("field_filter_list","sys00-name,sys01-positionLevel,2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c,sys00-confirmJoinTime,sys02-joinWorkingTime,sys05-contractRenewCount");
|
|
|
+ map.put("field_filter_list","sys00-name,sys00-confirmJoinTime,sys01-positionLevel," +
|
|
|
+ "sys01-employeeType,sys02-joinWorkingTime,sys05-contractRenewCount," +
|
|
|
+ "sys05-nowContractStartTime,2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c"
|
|
|
+ );
|
|
|
map.put("agentid",agentId);
|
|
|
|
|
|
List<String> result = new ArrayList<>();
|
|
@@ -153,15 +156,15 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
if (Objects.nonNull(fieldValueList.get(0).get("value"))){
|
|
|
String value = fieldValueList.get(0).get("value").toString();
|
|
|
switch (fieldCode){
|
|
|
- case "sys02-joinWorkingTime": joinWorkingTime = value;break;
|
|
|
+ case "sys00-name": name = value;break;
|
|
|
case "sys00-confirmJoinTime": confirmJoinTime = value;break;
|
|
|
case "sys01-positionLevel": positionLevel = value;break;
|
|
|
- case "2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c": oldPositionLevel = value;break;
|
|
|
- case "sys00-name": name = value;break;
|
|
|
- case "sys05-contractRenewCount": contractRenewCount = Integer.valueOf(value);break;
|
|
|
case "sys01-employeeType": employeeType = value;break;
|
|
|
- case "sys05-nowContractStartTime": contractStartTime = value;break;
|
|
|
case "sys01-promotionTime": promotionTime = value;break;
|
|
|
+ case "sys02-joinWorkingTime": joinWorkingTime = value;break;
|
|
|
+ case "sys05-contractRenewCount": contractRenewCount = Integer.valueOf(value);break;
|
|
|
+ case "sys05-nowContractStartTime": contractStartTime = value;break;
|
|
|
+ case "2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c": oldPositionLevel = value;break;
|
|
|
default:break;
|
|
|
}
|
|
|
}
|
|
@@ -189,7 +192,7 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
//假期有效开始日期为当年1月1日
|
|
|
DateTime beginDate = DateUtil.beginOfYear(new Date());
|
|
|
//假期有效截至日期为当年12月31日
|
|
|
- DateTime endDate = DateUtil.endOfYear(new Date());
|
|
|
+ DateTime endDate = DateUtil.beginOfDay(DateUtil.endOfYear(new Date()));
|
|
|
//当年天数
|
|
|
int yearDays = DateUtil.dayOfYear(endDate);
|
|
|
|
|
@@ -219,8 +222,12 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
|
|
|
int year = DateUtil.year(new Date());
|
|
|
|
|
|
- if (employeeType.equals("退休返聘")){
|
|
|
- yearLeave = 5.0;
|
|
|
+ //退休返聘年假基数5天
|
|
|
+ if (employeeType.equals("5")){
|
|
|
+ double yearLeaveBaseNum = 5.0;
|
|
|
+ long day1 = DateUtil.betweenDay(beginDate, endDate, true);
|
|
|
+ yearLeave = (day1 * yearLeaveBaseNum) / yearDays;
|
|
|
+ log.info("day1:{},yearLeave:{}", day1, yearLeave);
|
|
|
}else {
|
|
|
int positionLevelBaseNum = getAnnualLeaveBaseNum(positionLevel,workAge,contractRenewCount);
|
|
|
int oldPositionLevelBaseNum = getAnnualLeaveBaseNum(oldPositionLevel,workAge,contractRenewCount);
|
|
@@ -298,18 +305,18 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
}
|
|
|
yearLeave = (double) (day1 * oldYearLeaveBaseNum + day2 * yearLeaveBaseNum) / yearDays;
|
|
|
*/
|
|
|
+ }
|
|
|
|
|
|
- double yearLeaveDecimalPart = yearLeave - (int) yearLeave;
|
|
|
+ double yearLeaveDecimalPart = yearLeave - (int) yearLeave;
|
|
|
|
|
|
- result.add("姓名:"+name+",职级:"+positionLevel+",工龄:"+workAge+"年,合同续签数"+contractRenewCount+",年假数:" + yearLeave + "天"+",截止日期:"+endDate);
|
|
|
+ result.add("姓名:"+name+",职级:"+positionLevel+",工龄:"+workAge+"年,合同续签数"+contractRenewCount+",年假数:" + yearLeave + "天"+",截止日期:"+endDate);
|
|
|
|
|
|
- if (yearLeaveDecimalPart < 0.25){
|
|
|
- yearLeave = (int) yearLeave;
|
|
|
- }else if (yearLeaveDecimalPart < 0.75){
|
|
|
- yearLeave = (int) yearLeave + 0.5;
|
|
|
- }else if (yearLeaveDecimalPart < 1){
|
|
|
- yearLeave = (int) yearLeave + 1;
|
|
|
- }
|
|
|
+ if (yearLeaveDecimalPart < 0.25){
|
|
|
+ yearLeave = (int) yearLeave;
|
|
|
+ }else if (yearLeaveDecimalPart < 0.75){
|
|
|
+ yearLeave = (int) yearLeave + 0.5;
|
|
|
+ }else if (yearLeaveDecimalPart < 1){
|
|
|
+ yearLeave = (int) yearLeave + 1;
|
|
|
}
|
|
|
|
|
|
//查询出用户消费年假记录 当返回leaveRecords中calType为null或不返回该字段则为请假消耗 将计算出的年假数减去请假消耗的数量
|
|
@@ -349,15 +356,14 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
}
|
|
|
}*/
|
|
|
|
|
|
+ //实际年假数(包含预支假)
|
|
|
+
|
|
|
//年假余额
|
|
|
BigDecimal annualLeaveNum = new BigDecimal(0.00);
|
|
|
-
|
|
|
//查询员工年假余额
|
|
|
long currentTime2 = System.currentTimeMillis();
|
|
|
-
|
|
|
List<Map> leaveQuotasList = new ArrayList<>();
|
|
|
getLeaveNum(LEAVE_CODE,userId,0,50,leaveQuotasList);
|
|
|
-
|
|
|
if (Objects.nonNull(leaveQuotasList)){
|
|
|
for (Map leaveQuotas : leaveQuotasList) {
|
|
|
if ((long) leaveQuotas.get("start_time") <= currentTime2 && currentTime2 <= (long) leaveQuotas.get("end_time")){
|
|
@@ -370,7 +376,6 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
LambdaQueryWrapper<AdvancedLeave> advancedLeaveLambdaQueryWrapper = new LambdaQueryWrapper<>();;
|
|
|
advancedLeaveLambdaQueryWrapper.eq(AdvancedLeave::getUserId,userId)
|
|
|
.eq(AdvancedLeave::getYear,year)
|
|
@@ -393,10 +398,9 @@ public class KYYTServiceImpl implements KYYTService {
|
|
|
advancedLeave.setCity("yt");
|
|
|
advancedLeaveMapper.insert(advancedLeave);
|
|
|
}
|
|
|
-
|
|
|
- //实际年假数
|
|
|
double realYearLeave = (yearLeave + advanceLeave) < 0 ? 0 : (yearLeave + advanceLeave);
|
|
|
|
|
|
+
|
|
|
//更新假期余额接口的body
|
|
|
Map<String,Object> updateBody = new HashMap<>();
|
|
|
Map<String,Object> leave_quotas = new HashMap<>();
|