|
@@ -155,7 +155,7 @@ public class WorkCalendarDateHandler {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取此段日期内,所有的历史数据,包含自定义的
|
|
|
+ * 获取此段日期内,所有的历史数据,包含自定义的,同一天存在自定义和非自定义的,将剔除非自定义的数据
|
|
|
*
|
|
|
* @param resultMap key-日期,value-此日对应的作息时间集合,包含未来自定义的
|
|
|
* @param existsCustom key-项目+日期+type+code,value-true存在自定义信息,false 不存在自定义信息
|
|
@@ -164,20 +164,21 @@ public class WorkCalendarDateHandler {
|
|
|
List<WorkCalendarDate> dates = this.selectWorkCalendarDateList(queryVO);
|
|
|
for (WorkCalendarDate calendarDate : dates) {
|
|
|
// 是否存在自定义,存在true就不在更新
|
|
|
- String existsKey = calendarDate.getCalendarId() + calendarDate.getProjectId() + calendarDate.getWorkDate() + calendarDate.getDictType() + (StringUtil.isBlank(calendarDate.getDictCode()) ? "" : calendarDate.getDictCode());
|
|
|
+ String existsKey = this.getCustomKey(calendarDate);
|
|
|
boolean exists = WorkCalendarConstant.CUSTOM_CALENDAR_DATE_YES.equals(calendarDate.getCustomFlag());
|
|
|
if (!BooleanUtil.isTrue(existsCustom.get(existsKey))) {
|
|
|
existsCustom.put(existsKey, exists);
|
|
|
}
|
|
|
// 将自定义的或历史的,按照日期,分组
|
|
|
if (resultMap != null) {
|
|
|
+ if (BooleanUtil.isTrue(existsCustom.get(existsKey))) {
|
|
|
+ resultMap.put(calendarDate.getWorkDate(), Lists.newArrayList(calendarDate));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (resultMap.containsKey(calendarDate.getWorkDate())) {
|
|
|
- List<WorkCalendarDate> list = resultMap.get(calendarDate.getWorkDate());
|
|
|
- list.add(calendarDate);
|
|
|
+ resultMap.get(calendarDate.getWorkDate()).add(calendarDate);
|
|
|
} else {
|
|
|
- List<WorkCalendarDate> list = new ArrayList<WorkCalendarDate>();
|
|
|
- list.add(calendarDate);
|
|
|
- resultMap.put(calendarDate.getWorkDate(), list);
|
|
|
+ resultMap.put(calendarDate.getWorkDate(), Lists.newArrayList(calendarDate));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -255,7 +256,7 @@ public class WorkCalendarDateHandler {
|
|
|
if (indexOf > 0) {
|
|
|
dictCode = dictCode.substring(0, indexOf - 1);
|
|
|
}
|
|
|
- String existsKey = rule.getCalendarId() + rule.getProjectId() + workDate + rule.getDictType() + (StringUtil.isBlank(dictCode) ? "" : dictCode);
|
|
|
+ String existsKey = this.getCustomKey(rule, workDate, dictCode);
|
|
|
// 优先判断当日是否存在同类型 同编码的自定义作息时间
|
|
|
if (existsCustom != null && BooleanUtil.isTrue(existsCustom.get(existsKey))) {
|
|
|
return;
|
|
@@ -660,4 +661,29 @@ public class WorkCalendarDateHandler {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 判断是否存在自动作息时间的依据key
|
|
|
+ *
|
|
|
+ * @param calendarDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getCustomKey(WorkCalendarDate calendarDate) {
|
|
|
+ String customKey = calendarDate.getCalendarId() + calendarDate.getProjectId() + calendarDate.getWorkDate() + calendarDate.getDictType() +
|
|
|
+ (StringUtil.isBlank(calendarDate.getDictCode()) ? "" : calendarDate.getDictCode());
|
|
|
+ return customKey;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否存在自动作息时间的依据key
|
|
|
+ *
|
|
|
+ * @param rule
|
|
|
+ * @param workDate
|
|
|
+ * @param dictCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getCustomKey(WorkCalendarRule rule, String workDate, String dictCode) {
|
|
|
+ String customKey = rule.getCalendarId() + rule.getProjectId() + workDate + rule.getDictType() + (StringUtil.isBlank(dictCode) ? "" : dictCode);
|
|
|
+ return customKey;
|
|
|
+ }
|
|
|
+
|
|
|
}
|