新增假期发放根据离职日期入职日期折算功能、修改循环按期发放折算bug、修改一次性发放假期余额逻辑、优化查询班次逻辑

main
liuliang 8 months ago
parent ea9153f420
commit 1fe80a06fd

@ -46,9 +46,9 @@ public class AttendanceanalysisAction {
log.info("********AttendanceanalysisAction start********"); log.info("********AttendanceanalysisAction start********");
Map<String,Object> paramMap = ParamUtil.request2Map(request); Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap(); // Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-10-10"); // paramMap.put("startDate","2024-09-16");
// paramMap.put("endDate","2024-10-10"); // paramMap.put("endDate","2024-09-16");
// paramMap.put("userIds","22"); // paramMap.put("userIds","23");
String startDate = Util.null2String(paramMap.get("startDate")); String startDate = Util.null2String(paramMap.get("startDate"));
String startBeforeDate = DateUtil.beforeDay(startDate,2); String startBeforeDate = DateUtil.beforeDay(startDate,2);

@ -36,7 +36,8 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map
@Override @Override
public Map<String, Object> execute(CommandContext commandContext) { public Map<String, Object> execute(CommandContext commandContext) {
String resourceId = Util.null2String(params.get("resourceId")); String resourceId = Util.null2String(params.get("resourceId"));
String startDate = Util.null2String(params.get("startDate")); String startDate = Util.null2String(params.get("startDate")).equals("")?DateUtil.getCurrentDate():Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate")); String endDate = Util.null2String(params.get("endDate"));
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqfa"); String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqfa");
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();

@ -33,7 +33,7 @@ public class GetWorkHoursItemByPersonCmd extends AbstractCommonCommand<Map<Strin
@Override @Override
public Map<String, Object> execute(CommandContext commandContext) { public Map<String, Object> execute(CommandContext commandContext) {
String resourceId = Util.null2String(params.get("resourceId")); String resourceId = Util.null2String(params.get("resourceId"));
String startDate = Util.null2String(params.get("startDate")); String startDate = Util.null2String(params.get("startDate")).equals("")?DateUtil.getCurrentDate():Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate")); String endDate = Util.null2String(params.get("endDate"));
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_zhgs"); String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_zhgs");
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();

@ -89,9 +89,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
personnelGroups = PersongroupCommonUtil.getPersonnelGroupByPerson(personGroupData,pbdx,null); personnelGroups = PersongroupCommonUtil.getPersonnelGroupByPerson(personGroupData,pbdx,null);
}else { }else {
personnelGroups = personBelongGroup.get(pbdx) == null?Lists.newArrayList():personBelongGroup.get(pbdx); personnelGroups = personBelongGroup.get(pbdx) == null?Lists.newArrayList():personBelongGroup.get(pbdx);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(currentTime))<=0) && }
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(currentTime))>=0)).collect(Collectors.toList());
}
Map<String,List<Map<String,Object>>> personnelGroupsCollect = personnelGroups.stream().collect(Collectors.groupingBy(e->e.get("mainid").toString())); Map<String,List<Map<String,Object>>> personnelGroupsCollect = personnelGroups.stream().collect(Collectors.groupingBy(e->e.get("mainid").toString()));
Set<String> personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet()); Set<String> personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());

@ -35,7 +35,7 @@ public class PersonGroupServiceImpl extends Service implements PersonGroupServic
} }
Map<String, Object> data = Maps.newHashMap(); Map<String, Object> data = Maps.newHashMap();
String sql = "select * from (select t1.fieldid,t2.fieldname,t1.fieldlable,t1.ismand,t2.fielddbtype,t2.fieldhtmltype,t2.type, t1.dmlurl, t1.fieldorder, t1.isuse, t1.isModify,'1' as allowModify, t1.groupid, 1 as allowhide from cus_formfield t1, cus_formdict t2 where t1.fieldid=t2.id and t1.scope='HrmCustomFieldByInfoType' and (t1.scopeid='1' or t1.scopeid='-1' or t1.scopeid='3' ) " + String sql = "select * from (select t1.fieldid,t2.fieldname,t1.fieldlable,t1.ismand,t2.fielddbtype,t2.fieldhtmltype,t2.type, t1.dmlurl, t1.fieldorder, t1.isuse, t1.isModify,'1' as allowModify, t1.groupid, 1 as allowhide from cus_formfield t1, cus_formdict t2 where t1.fieldid=t2.id and t1.scope='HrmCustomFieldByInfoType' and t1.scopeid='1' " +
" UNION all " + " UNION all " +
" select fieldid, fieldname, fieldlabel ,ismand ,fielddbtype ,fieldhtmltype ,type , dmlurl,fieldorder ,isuse ,isModify ,allowModify, groupid, allowhide from hrm_formfield) hrmallfield where (groupid in (select id from hrm_fieldgroup where (grouptype = '1' or grouptype = '-1' or grouptype = '3')) or fieldname='subcompanyid1')"; " select fieldid, fieldname, fieldlabel ,ismand ,fielddbtype ,fieldhtmltype ,type , dmlurl,fieldorder ,isuse ,isModify ,allowModify, groupid, allowhide from hrm_formfield) hrmallfield where (groupid in (select id from hrm_fieldgroup where (grouptype = '1' or grouptype = '-1' or grouptype = '3')) or fieldname='subcompanyid1')";

@ -42,6 +42,7 @@ public class VocationCmd extends AbstractCommonCommand<Map<String,Object>> {
String qsrq = Util.null2String(vocation.get("qsrq")).toLowerCase(); String qsrq = Util.null2String(vocation.get("qsrq")).toLowerCase();
String yjzd = Util.null2String(vocation.get("yjzd")).toLowerCase(); String yjzd = Util.null2String(vocation.get("yjzd")).toLowerCase();
String ljcrglyfslwz = Util.null2String(vocation.get("ljcrglyfslwz")); String ljcrglyfslwz = Util.null2String(vocation.get("ljcrglyfslwz"));
String lsgldw = Util.null2String(vocation.get("lsgldw"));
String jzrqzd = Util.null2String(vocation.get("jzrqzd")); String jzrqzd = Util.null2String(vocation.get("jzrqzd"));
String qsrqValue = Util.null2String(userMap.get(qsrq)); String qsrqValue = Util.null2String(userMap.get(qsrq));
String yjzdValue = Util.null2String(userMap.get(yjzd)); String yjzdValue = Util.null2String(userMap.get(yjzd));
@ -84,6 +85,10 @@ public class VocationCmd extends AbstractCommonCommand<Map<String,Object>> {
vocation.put("qsrqValue",qsrqValue); vocation.put("qsrqValue",qsrqValue);
vocation.put("yjzdValue",yjzdValue); vocation.put("yjzdValue",yjzdValue);
vocation.put("ljcrglyfslwzValue",ljcrglyfslwzValue); vocation.put("ljcrglyfslwzValue",ljcrglyfslwzValue);
if (!"".equals(lsgldw) && !"".equals(ljcrglyfslwzValue) && "0".equals(lsgldw)){
//当累计单位为年时
vocation.put("ljcrglyfslwzValue",Math.round(Double.valueOf(ljcrglyfslwzValue)*12));
}
vocation.put("zyzValue",getUserIds(vocation)); vocation.put("zyzValue",getUserIds(vocation));
} }
log.debug("VocationCmd params: [{}]",params); log.debug("VocationCmd params: [{}]",params);

@ -261,9 +261,18 @@ public class ByIntervalPayMentWay implements HolidayGenerationWay{
} }
insertHoliDayParam.put("ktsc", restTime); insertHoliDayParam.put("ktsc", restTime);
//截止日期 //离职日期
String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); String jzrqzd = Util.null2String(data.get("leaveDate"));
VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); //入职日期
List<Map<String,Object>> userList = (List<Map<String,Object>>)data.get("userList");
Map<String,Object> userMap = userList.size()>0?userList.get(0):Maps.newHashMap();
String companystartdate = Util.null2String(userMap.get("companystartdate"));
if ("companystartdate".equals(Util.null2String(vocationList.get(0).get("qsrq")))){
companystartdate="";
}
VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate);
VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq);
return insertHoliDayParam; return insertHoliDayParam;

@ -179,9 +179,18 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{
} }
insertHoliDayParam.put("ktsc",restTime); insertHoliDayParam.put("ktsc",restTime);
//截止日期 //离职日期
String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); String jzrqzd = Util.null2String(data.get("leaveDate"));
VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); //入职日期
List<Map<String,Object>> userList = (List<Map<String,Object>>)data.get("userList");
Map<String,Object> userMap = userList.size()>0?userList.get(0):Maps.newHashMap();
String companystartdate = Util.null2String(userMap.get("companystartdate"));
if ("companystartdate".equals(Util.null2String(vocationList.get(0).get("qsrq")))){
companystartdate="";
}
VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate);
VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye",insertHoliDayParam,dataList,edyxq); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye",insertHoliDayParam,dataList,edyxq);
return insertHoliDayParam; return insertHoliDayParam;
@ -254,7 +263,7 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{
if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(qsrq)) >=0){ if (DateUtil.getTime(divideTime).compareTo(DateUtil.getTime(qsrq)) >=0){
if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){ if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){
int months = releaseDateMonths-qsrqMonths+1; int months = DateUtil.getTime(DateUtil.beforeMonth(divideTime,1)).getMonthValue();
restTime = getRestTime(months,beginYearmap); restTime = getRestTime(months,beginYearmap);
}else { }else {
int months = releaseDateMonths-divideTimeMonths+1; int months = releaseDateMonths-divideTimeMonths+1;
@ -266,7 +275,7 @@ public class BySchedulePaymentWay implements HolidayGenerationWay{
} }
}else { }else {
if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){ if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(divideTime)) <0){
int months = releaseDateMonths-qsrqMonths+1; int months = DateUtil.getTime(DateUtil.beforeMonth(divideTime,1)).getMonthValue();
restTime = getRestTime(months,beginYearmap); restTime = getRestTime(months,beginYearmap);
}else { }else {
int months = releaseDateMonths-divideTimeMonths+1; int months = releaseDateMonths-divideTimeMonths+1;

@ -40,15 +40,20 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
String fgrq= Util.null2String(vocationList.get(0).get("fgrq")); String fgrq= Util.null2String(vocationList.get(0).get("fgrq"));
//额度依据 //额度依据
String edyj= Util.null2String(vocationList.get(0).get("edyj")); String edyj= Util.null2String(vocationList.get(0).get("edyj"));
data.put("isOneTime","1"); // data.put("isOneTime","1");
if ("".equals(qsrq)){ if ("".equals(qsrq)){
return Maps.newHashMap(); return Maps.newHashMap();
} }
qsrq = VocationCommonUtil.getAfterAdjustTime(qsrq,dzqsrq,fgrq); qsrq = VocationCommonUtil.getAfterAdjustTime(qsrq,dzqsrq,fgrq);
for (Map<String, Object> vocationMap : vocationList) { // for (Map<String, Object> vocationMap : vocationList) {
vocationMap.put("qsrqValue", qsrq); // vocationMap.put("qsrqValue", qsrq);
// }
if (DateUtil.getTime(releaseDate).compareTo(DateUtil.getTime(qsrq)) < 0){
//releaseDate=qsrq;
return Maps.newHashMap();
} }
//额度有效期间单位 //额度有效期间单位
String edyxq = Util.null2String(vocationList.get(0).get("edyxq")); String edyxq = Util.null2String(vocationList.get(0).get("edyxq"));
@ -62,17 +67,14 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
SinglePaymentInFullWay singlePaymentInFullWay = new SinglePaymentInFullWay(); SinglePaymentInFullWay singlePaymentInFullWay = new SinglePaymentInFullWay();
if ("0".equals(edyj) || "2".equals(edyj) || "4".equals(edyj)){ if ("0".equals(edyj) || "2".equals(edyj) || "4".equals(edyj)){
Map<String, Object> maxMap = vocationList.stream().max(Comparator.comparing(e->Double.valueOf(e.get("jgsc1").toString()).intValue())).get(); Map<String, Object> maxMap = vocationList.stream().max(Comparator.comparing(e->Double.valueOf(e.get("jgsc1").toString()).intValue())).get();
Map<String, Object> minMap = vocationList.stream().min(Comparator.comparing(e->Double.valueOf(e.get("jgsc0").toString()).intValue())).get();
int maxjgsc1 = Double.valueOf(maxMap.get("jgsc1").toString()).intValue(); int maxjgsc1 = Double.valueOf(maxMap.get("jgsc1").toString()).intValue();
insertHoliDayParam = getInsertHoliDayParam(vocationList.get(0), userId, qsrq, releaseDate,maxjgsc1); int minjgsc0 = Double.valueOf(minMap.get("jgsc0").toString()).intValue();
dataList = VocationCommonUtil.ifexist("uf_jcl_kq_jqye", insertHoliDayParam); //
//已存在数据且不覆盖
if (dataList.size()>0 && !"1".equals(cover)) {
return insertHoliDayParam;
}
if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())){ if (edyxq.equals(StartingUnitEnum.NATURAL_YEAR.getKey())){
//自然年 //自然年
for (int i=0;i<=maxjgsc1;i++){ for (int i=minjgsc0;i<=maxjgsc1;i++){
String executeTime = DateUtil.nextYear(qsrq,i,DateUtil.yyyyMMdd); String executeTime = DateUtil.nextYear(qsrq,i,DateUtil.yyyyMMdd);
data.put("releaseDate",executeTime); data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data); Map<String,Object> map = singlePaymentInFullWay.compute(data);
@ -81,7 +83,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
} }
}else if (edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){ }else if (edyxq.equals(StartingUnitEnum.STARTING_YEAR.getKey())){
//起算年 //起算年
for (int i=0;i<=maxjgsc1;i++){ for (int i=minjgsc0;i<=maxjgsc1;i++){
String executeTime = DateUtil.nextYear(qsrq,i,DateUtil.yyyyMMdd); String executeTime = DateUtil.nextYear(qsrq,i,DateUtil.yyyyMMdd);
data.put("releaseDate",executeTime); data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data); Map<String,Object> map = singlePaymentInFullWay.compute(data);
@ -91,7 +93,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
}else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey())){ }else if (edyxq.equals(StartingUnitEnum.NATURAL_MONTH.getKey())){
//自然月 //自然月
for (int i=0;i<=maxjgsc1;i++){ for (int i=minjgsc0;i<=maxjgsc1;i++){
String executeTime = DateUtil.nextMonth(qsrq,i,DateUtil.yyyyMMdd); String executeTime = DateUtil.nextMonth(qsrq,i,DateUtil.yyyyMMdd);
data.put("releaseDate",executeTime); data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data); Map<String,Object> map = singlePaymentInFullWay.compute(data);
@ -102,7 +104,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
}else if (edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){ }else if (edyxq.equals(StartingUnitEnum.STARTING_MONTH.getKey())){
//起算月 //起算月
for (int i=0;i<=maxjgsc1;i++){ for (int i=minjgsc0;i<=maxjgsc1;i++){
String executeTime = DateUtil.nextMonth(qsrq,i,DateUtil.yyyyMMdd); String executeTime = DateUtil.nextMonth(qsrq,i,DateUtil.yyyyMMdd);
data.put("releaseDate",executeTime); data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data); Map<String,Object> map = singlePaymentInFullWay.compute(data);
@ -113,7 +115,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
}else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){ }else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){
//自然周 //自然周
for (int i=0;i<=maxjgsc1;i++){ for (int i=minjgsc0;i<=maxjgsc1;i++){
String executeTime = DateUtil.AfterDay(qsrq,i*7); String executeTime = DateUtil.AfterDay(qsrq,i*7);
data.put("releaseDate",executeTime); data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data); Map<String,Object> map = singlePaymentInFullWay.compute(data);
@ -124,8 +126,8 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
}else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){ }else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
//起算周 //起算周
for (int i=0;i<=maxjgsc1;i++){ for (int i=minjgsc0;i<=maxjgsc1;i++){
String executeTime = DateUtil.AfterDay(qsrq,i*7); String executeTime = DateUtil.AfterDay(qsrq, i*7);
data.put("releaseDate",executeTime); data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data); Map<String,Object> map = singlePaymentInFullWay.compute(data);
double ktsc = map.get("ktsc") == null?0:Double.valueOf(map.get("ktsc").toString()); double ktsc = map.get("ktsc") == null?0:Double.valueOf(map.get("ktsc").toString());
@ -134,7 +136,7 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
}else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){ }else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
//自然天 //自然天
for (int i=0;i<=maxjgsc1;i++){ for (int i=minjgsc0;i<=maxjgsc1;i++){
String executeTime = DateUtil.AfterDay(qsrq,i); String executeTime = DateUtil.AfterDay(qsrq,i);
data.put("releaseDate",executeTime); data.put("releaseDate",executeTime);
Map<String,Object> map = singlePaymentInFullWay.compute(data); Map<String,Object> map = singlePaymentInFullWay.compute(data);
@ -155,9 +157,9 @@ public class OneTimePayMentWay implements HolidayGenerationWay{
insertHoliDayParam.put("ktsc", restTime); insertHoliDayParam.put("ktsc", restTime);
//截止日期 //截止日期
String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); // String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue"));
VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); // VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd);
VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); // VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq);
return insertHoliDayParam; return insertHoliDayParam;
} }

@ -41,7 +41,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
//起算日期 //起算日期
String qsrq = Util.null2String(vocationList.get(0).get("qsrqValue")); String qsrq = Util.null2String(vocationList.get(0).get("qsrqValue"));
//截止日期 //截止日期
String jzrqzd = Util.null2String(vocationList.get(0).get("jzrqzdValue")); String jzrqzd = Util.null2String(data.get("leaveDate"));
//额度有效期间 //额度有效期间
String edyxqsz = Util.null2String(vocationList.get(0).get("edyxqsz")); String edyxqsz = Util.null2String(vocationList.get(0).get("edyxqsz"));
//额度有效期间单位 //额度有效期间单位
@ -177,8 +177,8 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allMonths, yjzd,userId); Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allMonths, yjzd,userId);
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0; restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
} else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){ } else if (edyxq.equals(StartingUnitEnum.NATURAL_WEEK.getKey())){
//自然周 //自然周
betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1; betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq);
if (DateUtil.getTime(sxrq).compareTo(DateUtil.getTime(qsrq)) <=0){ if (DateUtil.getTime(sxrq).compareTo(DateUtil.getTime(qsrq)) <=0){
betweenDays = 0; betweenDays = 0;
} }
@ -188,7 +188,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
} else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){ } else if (edyxq.equals(StartingUnitEnum.STARTING_WEEK.getKey())){
//起算周 //起算周
betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1; betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq);
if (betweenDays <=7){ if (betweenDays <=7){
betweenDays=0; betweenDays=0;
} }
@ -198,7 +198,7 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
} else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){ } else if (edyxq.equals(StartingUnitEnum.NATURAL_DAY.getKey())){
//自然天 //自然天
betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq)+1; betweenDays = DateUtil.getBetWeenDays(qsrq,sxrq);
allWorkDays = Double.valueOf(ljcrglyfslwz).intValue()*30+betweenDays; allWorkDays = Double.valueOf(ljcrglyfslwz).intValue()*30+betweenDays;
Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allWorkDays, yjzd,userId); Map<String, Object> vocationMap = VocationCommonUtil.getVocationMap(vocationList, allWorkDays, yjzd,userId);
restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0; restTime = vocationMap.size()>0?Double.valueOf(vocationMap.get("edktsc").toString()):0;
@ -206,7 +206,17 @@ public class SinglePaymentInFullWay implements HolidayGenerationWay {
insertHoliDayParam.put("ktsc", restTime); insertHoliDayParam.put("ktsc", restTime);
if (!"1".equals(isOneTime)){ if (!"1".equals(isOneTime)){
VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd); //离职日期
//入职日期
List<Map<String,Object>> userList = (List<Map<String,Object>>)data.get("userList");
Map<String,Object> userMap = userList.size()>0?userList.get(0):Maps.newHashMap();
String companystartdate = Util.null2String(userMap.get("companystartdate"));
if ("companystartdate".equals(Util.null2String(vocationList.get(0).get("qsrq")))){
companystartdate="";
}
VocationCommonUtil.computeRestTimeByjzrqzd(insertHoliDayParam,jzrqzd,companystartdate);
VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq); VocationCommonUtil.updateHolidayBalance("uf_jcl_kq_jqye", insertHoliDayParam,dataList,edyxq);
} }
return insertHoliDayParam; return insertHoliDayParam;

@ -6,6 +6,8 @@ import com.engine.jucailinkq.attendance.vacation.cmd.HandleOverdueVocationCmd;
import com.engine.jucailinkq.attendance.vacation.cmd.VocationCmd; import com.engine.jucailinkq.attendance.vacation.cmd.VocationCmd;
import com.engine.jucailinkq.attendance.vacation.service.VocationService; import com.engine.jucailinkq.attendance.vacation.service.VocationService;
import com.engine.jucailinkq.common.cmd.GetPersonDateBySuitOrganzation; import com.engine.jucailinkq.common.cmd.GetPersonDateBySuitOrganzation;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools; import com.engine.jucailinkq.common.util.DbTools;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
@ -33,11 +35,16 @@ public class VocationServiceImpl extends Service implements VocationService {
String sql = "select a.id userid,a.*,b.* from hrmresource a left join cus_fielddata b on a.id=b.id where a.id in ("; String sql = "select a.id userid,a.*,b.* from hrmresource a left join cus_fielddata b on a.id=b.id where a.id in (";
String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where type_n = 5 or type_n = 7";
//获取离职日期
List<Map<String,Object>> departEmployeeList = DbTools.getSqlToList(queryDepartEmployeeSql);
Map<String,Object> departEmployeeMap = CommonUtil.getDepartEmployeeMap(departEmployeeList);
List<String> userIds = Lists.newArrayList(); List<String> userIds = Lists.newArrayList();
for (Map.Entry<String, Object> entry : result.entrySet()){ for (Map.Entry<String, Object> entry : result.entrySet()){
userIds.add(entry.getKey()); userIds.add(entry.getKey());
} }
List<List<String>> userPartions = Lists.partition(userIds,50); List<List<String>> userPartions = Lists.partition(userIds,100);
List<Map<String,Object>> dataList = Lists.newArrayList(); List<Map<String,Object>> dataList = Lists.newArrayList();
for (List<String> list : userPartions){ for (List<String> list : userPartions){
String querySql = sql + String.join(",",list) +")"; String querySql = sql + String.join(",",list) +")";
@ -53,7 +60,7 @@ public class VocationServiceImpl extends Service implements VocationService {
String userId = entry.getKey(); String userId = entry.getKey();
Map<String,String> vocationMap = (Map<String, String>)entry.getValue(); Map<String,String> vocationMap = (Map<String, String>)entry.getValue();
Map<String,Object> paramMap = Maps.newHashMap(); Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate",""); paramMap.put("startDate", DateUtil.getCurrentDate());
paramMap.put("endDate",""); paramMap.put("endDate","");
paramMap.put("resourceId",userId); paramMap.put("resourceId",userId);
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
@ -73,6 +80,7 @@ public class VocationServiceImpl extends Service implements VocationService {
vocationParam.put("userList",userIdMap.get(userId)); vocationParam.put("userList",userIdMap.get(userId));
vocationParam.put("releaseDate",params.get("releaseDate")); vocationParam.put("releaseDate",params.get("releaseDate"));
vocationParam.put("cover",params.get("cover")); vocationParam.put("cover",params.get("cover"));
vocationParam.put("leaveDate",departEmployeeMap.get(userId));
commandExecutor.execute(new VocationCmd(vocationParam)); commandExecutor.execute(new VocationCmd(vocationParam));
} }
} }

@ -640,15 +640,22 @@ public class VocationCommonUtil {
* @param insertHoliDayParam * @param insertHoliDayParam
* @param jzrqzd * @param jzrqzd
*/ */
public static void computeRestTimeByjzrqzd(Map<String, Object> insertHoliDayParam,String jzrqzd){ public static void computeRestTimeByjzrqzd(Map<String, Object> insertHoliDayParam,String jzrqzd,String companystartdate){
String sxrq = Util.null2String(insertHoliDayParam.get("sxrq")); String sxrq = Util.null2String(insertHoliDayParam.get("sxrq"));
String jzrq = Util.null2String(insertHoliDayParam.get("jzrq")); String jzrq = Util.null2String(insertHoliDayParam.get("jzrq"));
int alldays = DateUtil.getBetWeenDays(sxrq,jzrq)+1;
double ktsc = Double.valueOf(Util.null2String(insertHoliDayParam.get("ktsc"))); double ktsc = Double.valueOf(Util.null2String(insertHoliDayParam.get("ktsc")));
String startDate = sxrq;
String endtDate = jzrq;
if (!"".equals(companystartdate) && DateUtil.getTime(companystartdate).compareTo(DateUtil.getTime(sxrq)) >=0 &&
DateUtil.getTime(companystartdate).compareTo(DateUtil.getTime(jzrq)) <=0){
startDate = companystartdate;
}
if (!"".equals(jzrqzd) && DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(sxrq)) >=0 && if (!"".equals(jzrqzd) && DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(sxrq)) >=0 &&
DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(jzrq)) <=0){ DateUtil.getTime(jzrqzd).compareTo(DateUtil.getTime(jzrq)) <=0){
int alldays = DateUtil.getBetWeenDays(sxrq,jzrq); endtDate=jzrqzd;
int days = DateUtil.getBetWeenDays(sxrq,jzrqzd);
insertHoliDayParam.put("ktsc",Utils.divide(days*ktsc,alldays));
} }
int days = DateUtil.getBetWeenDays(startDate,endtDate)+1;
insertHoliDayParam.put("ktsc",Utils.divide(days*ktsc,alldays));
} }
} }

@ -104,7 +104,7 @@ public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand<Map<St
subCompanySet.put(jb,dataid); subCompanySet.put(jb,dataid);
} }
} }
sql = "select id,departmentid,subcompanyid1,seclevel from hrmresource where 1=1"; sql = "select id,departmentid,subcompanyid1,seclevel from hrmresource where status <> '5' and status <> '4' and status <> '7' ";
if (departMentIds.size() > 0){ if (departMentIds.size() > 0){
sql = sql+ " and departmentid in ("+String.join(",",departMentIds)+")"; sql = sql+ " and departmentid in ("+String.join(",",departMentIds)+")";
} }
@ -254,11 +254,11 @@ public class GetPersonDateBySuitOrganzation extends AbstractCommonCommand<Map<St
}else if ("1".equals(list_type) && !"".equals(filters)){ }else if ("1".equals(list_type) && !"".equals(filters)){
//条件清单 //条件清单
sql = "select id,seclevel from hrmresource where 1=1 "; sql = "select id,seclevel from hrmresource where status <> '5' and status <> '4' and status <> '7' ";
filters = filters.replace("","and"); filters = filters.replace("","and");
filters = filters.replace("","or"); filters = filters.replace("","or");
if (filters.contains("field")){ if (filters.contains("field")){
sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and "+filters; sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and a.status <> '5' and a.status <> '4' and a.status <> '7' and "+filters;
}else { }else {
sql = sql+ " and "+filters; sql = sql+ " and "+filters;
} }

@ -151,8 +151,10 @@ public class CommonUtil {
personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date); personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date);
}else { }else {
List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId); List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) && if (date != null && !date.equals("")){
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList()); personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList());
}
personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet()); personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
} }
@ -252,9 +254,10 @@ public class CommonUtil {
personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date); personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date);
}else { }else {
List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId); List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) && if (date != null && !date.equals("")){
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList()); personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList());
}
personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet()); personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
} }

@ -69,11 +69,11 @@ public class DateUtil {
public static String beforeDay(String time,long day){ public static String beforeDay(String time,long day){
LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMdd).atStartOfDay(); LocalDateTime localDateTime = DateUtil.getTime(time);
return localDateTime.minusDays(day).format(yyyyMMdd); return localDateTime.minusDays(day).format(yyyyMMdd);
} }
public static String AfterDay(String time,long day){ public static String AfterDay(String time,long day){
LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMdd).atStartOfDay(); LocalDateTime localDateTime = DateUtil.getTime(time);
return localDateTime.plusDays(day).format(yyyyMMdd); return localDateTime.plusDays(day).format(yyyyMMdd);
} }

Loading…
Cancel
Save