|
|
@@ -4,8 +4,11 @@ import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.date.DateField;
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.alibaba.csp.sentinel.util.StringUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.xunmei.common.core.utils.DateUtils;
|
|
|
import com.xunmei.common.core.web.domain.AjaxResult;
|
|
|
@@ -181,6 +184,70 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
|
|
|
public SysWorkTime selectSysWorkTimeById(String id) {
|
|
|
return sysWorkTimeMapper.selectById(id);
|
|
|
}
|
|
|
+ private boolean timesetIsEqual(SysWorkTime workTime, SysWorkTime dto) {
|
|
|
+ return workTime.getIsEnable().equals(dto.getIsEnable())
|
|
|
+ && StringUtils.equals(workTime.getOpenTime(), dto.getOpenTime()) && StringUtils.equals(workTime.getWorkTime(), dto.getWorkTime())
|
|
|
+ && StringUtils.equals(workTime.getNoonbreakStart(), dto.getNoonbreakStart()) && StringUtils.equals(workTime.getNoonbreakEnd(), dto.getNoonbreakEnd())
|
|
|
+ && StringUtils.equals(workTime.getWorkOffTime(), dto.getWorkOffTime()) && StringUtils.equals(workTime.getCloseTime(), dto.getCloseTime());
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today) {
|
|
|
+// Optional<SysWorkTimeSet> todaySet = workTimeList.stream().filter(t -> DateUtil.beginOfDay(t.getDate()).equals(today)).findFirst();
|
|
|
+// if (todaySet.isPresent()) {
|
|
|
+// List<Long> todayChanged = exists.stream().filter(e -> !timesetIsEqual(e, todaySet.get())).map(WorkTime::getOrgId).collect(Collectors.toList());
|
|
|
+// List<Long> existOrgIds = exists.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
|
|
|
+// List<Long> addOrgIds = orgIdList.stream().filter(o -> existOrgIds.indexOf(o) < 0).collect(Collectors.toList());
|
|
|
+// todayChanged.addAll(addOrgIds);
|
|
|
+// if (CollectionUtil.isNotEmpty(todayChanged)) {
|
|
|
+// WORKTIMELOG.info("以下机构今日作息变更,重新生成履职:" + JSON.toJSONString(todayChanged));
|
|
|
+// context.publishEvent(WorkChangeEvent.builder().orgIds(todayChanged).dateTime(DateTime.of(today)).build());
|
|
|
+// } else {
|
|
|
+// WORKTIMELOG.info("今日作息变更,今日作息未变化");
|
|
|
+// WORKTIMELOG.info("今日变化todayChanged:" + JSON.toJSONString(todayChanged));
|
|
|
+// WORKTIMELOG.info("今日变化existOrgIds:" + JSON.toJSONString(existOrgIds));
|
|
|
+// WORKTIMELOG.info("今日变化orgIdList:" + JSON.toJSONString(orgIdList));
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// WORKTIMELOG.info("今日作息变更,未找到今日作息配置数据" + DateUtil.format(today, "yyyy-MM-dd"));
|
|
|
+// WORKTIMELOG.info("配置数据:" + JSON.toJSONString(workTimeList));
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<SysWorkTime> findByYmd(List<Long> orgIds, Date ymd) {
|
|
|
+ return sysWorkTimeMapper.findByYmd(orgIds, DateUtil.format(ymd, "yyyy-MM-dd"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<SysWorkTime> findByOrgAndMonth(SysWorkTime sysWorkTime) {
|
|
|
+ //查询当月的作息时间
|
|
|
+ //从requestmonth中获取 年月
|
|
|
+ Date month = sysWorkTime.getMonth();
|
|
|
+ String monthStr = DateUtil.format(month, "yyyy-MM");
|
|
|
+ sysWorkTime.setMonthStr(monthStr);
|
|
|
+ List<SysWorkTime> workTimeOnAppVos = sysWorkTimeMapper.findByOrgAndMonth(sysWorkTime);
|
|
|
+ //通过月份获取当月第一天和最后一天
|
|
|
+ Date fistDate = DateUtil.beginOfMonth(month);
|
|
|
+ Date lastDate = DateUtil.endOfMonth(month);
|
|
|
+ final List<DateTime> dateTimeList = DateUtil.rangeToList(fistDate, lastDate, DateField.DAY_OF_MONTH);
|
|
|
+ //遍历dateTimeList
|
|
|
+ List<SysWorkTime> workTimeOnAppVoList = new ArrayList<>();
|
|
|
+ for (DateTime dateTime : dateTimeList) {
|
|
|
+ SysWorkTime workTimeOnAppVo = new SysWorkTime();
|
|
|
+ workTimeOnAppVoList.add(workTimeOnAppVo);
|
|
|
+ }
|
|
|
+ for (SysWorkTime vo : workTimeOnAppVos) {
|
|
|
+ for (DateTime dateTime : dateTimeList) {
|
|
|
+ if (DateUtil.isSameDay(dateTime, vo.getYmdDate())) {
|
|
|
+ //获取dateTime的下标
|
|
|
+ int index = dateTimeList.indexOf(dateTime);
|
|
|
+ //将workTimeOnAppVoList中index位置的对象替换成vo
|
|
|
+ workTimeOnAppVoList.set(index, vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return workTimeOnAppVoList;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public List<SysWorkTime> batchnew(Long orgId, List<SysWorkTime> workTimeDtoList) {
|