From 8c4ea440b65caff699181610591ff451c31539e4 Mon Sep 17 00:00:00 2001 From: Xiang Date: Fri, 8 May 2026 14:05:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:zlb=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xiang/common/enums/ScheduleEnums.java | 1 + .../common/mapper/ZlbUserInfoMapper.java | 3 + .../common/pojo/jntyzx/zlb/ZlbTokenInfo.java | 2 + .../common/pojo/jntyzx/zlb/ZlbUserInfo.java | 2 + .../jntyzx/zlb/schedule/ZlbSiteTask.java | 6 +- .../jntyzx/zlb/schedule/ZlbTaskConfig.java | 5 + .../zlb/schedule/ZlbUserConfigTask.java | 158 ++++++++++++++++++ .../zlb/service/ZlbTokenInfoService.java | 4 + .../zlb/service/ZlbTokenInfoServiceImpl.java | 9 + .../zlb/service/ZlbUserInfoService.java | 12 ++ .../zlb/service/ZlbUserInfoServiceImpl.java | 12 ++ 11 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbUserConfigTask.java diff --git a/src/main/java/com/xiang/common/enums/ScheduleEnums.java b/src/main/java/com/xiang/common/enums/ScheduleEnums.java index 45daa45..58a0dab 100644 --- a/src/main/java/com/xiang/common/enums/ScheduleEnums.java +++ b/src/main/java/com/xiang/common/enums/ScheduleEnums.java @@ -18,6 +18,7 @@ public enum ScheduleEnums { ZLB_SITE_QUERY_TASK(3, "zlb", "zlbSiteQueryTask"), ZLB_SITE_DAY_TASK(3, "zlb", "zlbSiteDayTask"), ZLB_ORDER_CREATE_TASK(3, "zlb", "zlbOrderCreateTask"), + ZLB_USER_CONFIG_TASK(3, "zlb", "zlbUserConfigTask"), ; diff --git a/src/main/java/com/xiang/common/mapper/ZlbUserInfoMapper.java b/src/main/java/com/xiang/common/mapper/ZlbUserInfoMapper.java index cc38bae..516b0e8 100644 --- a/src/main/java/com/xiang/common/mapper/ZlbUserInfoMapper.java +++ b/src/main/java/com/xiang/common/mapper/ZlbUserInfoMapper.java @@ -2,6 +2,7 @@ package com.xiang.common.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo; +import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @@ -9,6 +10,8 @@ import org.springframework.stereotype.Repository; @Mapper public interface ZlbUserInfoMapper extends BaseMapper { + @Delete("delete from zlb_user_info where 1=1") + int deleteAll(); } diff --git a/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbTokenInfo.java b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbTokenInfo.java index 99000df..0f844d3 100644 --- a/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbTokenInfo.java +++ b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbTokenInfo.java @@ -20,6 +20,8 @@ public class ZlbTokenInfo { @TableId(type = IdType.AUTO) private Integer id; + private Integer loginInfoId; + /** * 名称 */ diff --git a/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbUserInfo.java b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbUserInfo.java index 59b54c3..9e46d6c 100644 --- a/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbUserInfo.java +++ b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbUserInfo.java @@ -18,6 +18,8 @@ public class ZlbUserInfo { @TableId(type = IdType.AUTO) private Integer id; + private Integer loginInfoId; + /** * 名称 */ diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteTask.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteTask.java index 4a8ae9b..81d8248 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteTask.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteTask.java @@ -43,9 +43,9 @@ public class ZlbSiteTask extends BaseScheduleTaskTemplate { TaskResult taskResult = new TaskResult(); //获取当前时间的后一天 - Date date1 = DateUtils.addDate(new Date(), 0); - Date date2 = DateUtils.addDate(new Date(), 1); - Date date3 = DateUtils.addDate(new Date(), 2); + Date date1 = DateUtils.addDate(new Date(), 1); + Date date2 = DateUtils.addDate(new Date(), 2); + Date date3 = DateUtils.addDate(new Date(), 3); String day1 = DateUtils.format(date1, DateUtils.ENUM_FORMAT_YMD); String day2 = DateUtils.format(date2, DateUtils.ENUM_FORMAT_YMD); String day3 = DateUtils.format(date3, DateUtils.ENUM_FORMAT_YMD); diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java index 7f5d0d6..6ba76e2 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java @@ -47,5 +47,10 @@ public class ZlbTaskConfig { zlbOrderTask.run(); } + @Scheduled(cron = "30 30 16 * * ?") + public void zlbUserConfig() { + + } + } diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbUserConfigTask.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbUserConfigTask.java new file mode 100644 index 0000000..2658352 --- /dev/null +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbUserConfigTask.java @@ -0,0 +1,158 @@ +package com.xiang.service.module.jntyzx.zlb.schedule; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.common.collect.Lists; +import com.xiang.common.enums.ScheduleEnums; +import com.xiang.common.factory.JntyzxDingTalkFactory; +import com.xiang.common.factory.schedule.BaseScheduleTaskTemplate; +import com.xiang.common.pojo.jntyzx.zlb.ZlbSiteInfo; +import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo; +import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo; +import com.xiang.common.pojo.schedule.TaskResult; +import com.xiang.common.service.IScheduleOpeningConfigService; +import com.xiang.common.service.IScheduleRunLogService; +import com.xiang.common.utils.DateUtils; +import com.xiang.service.module.jntyzx.zlb.service.ZlbSiteInfoService; +import com.xiang.service.module.jntyzx.zlb.service.ZlbTokenInfoService; +import com.xiang.service.module.jntyzx.zlb.service.ZlbUserInfoService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Author: xiang + * @Date: 2026-05-08 12:03 + */ +@Component +@Slf4j +public class ZlbUserConfigTask extends BaseScheduleTaskTemplate { + + private final ZlbSiteInfoService zlbSiteInfoService; + private final ZlbUserInfoService zlbUserInfoService; + private final JntyzxDingTalkFactory jntyzxDingTalkFactory; + private final ZlbTokenInfoService zlbTokenInfoService; + + public ZlbUserConfigTask(IScheduleOpeningConfigService scheduleOpeningConfigService, + IScheduleRunLogService scheduleRunLogService, + ZlbSiteInfoService zlbSiteInfoService, + ZlbUserInfoService zlbUserInfoService, + ZlbTokenInfoService zlbTokenInfoService, + JntyzxDingTalkFactory jntyzxDingTalkFactory) { + super(scheduleOpeningConfigService, scheduleRunLogService); + this.zlbSiteInfoService = zlbSiteInfoService; + this.zlbUserInfoService = zlbUserInfoService; + this.jntyzxDingTalkFactory = jntyzxDingTalkFactory; + this.zlbTokenInfoService = zlbTokenInfoService; + } + + @Override + protected String getTaskName() { + return ScheduleEnums.ZLB_USER_CONFIG_TASK.getTaskName(); + } + + @Override + protected Integer getModule() { + return ScheduleEnums.ZLB_USER_CONFIG_TASK.getModeleCode(); + } + + @Override + protected String getModuleName() { + return ScheduleEnums.ZLB_USER_CONFIG_TASK.getModule(); + } + + @Override + protected TaskResult doExecute(Object validatedParams) throws Exception { + TaskResult taskResult = new TaskResult(); + LocalDate date = LocalDate.now().plusDays(1); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ZlbSiteInfo::getBelongDate, date); + List siteInfoList = zlbSiteInfoService.list(lambdaQueryWrapper); + if (CollectionUtils.isEmpty(siteInfoList)) { + log.info("日期:{}无场地信息", date); + jntyzxDingTalkFactory.sendMsg("日期:" + date + "无场地信息配置"); + taskResult.setSuccess(Boolean.FALSE); + taskResult.setSummary("日期:" + date + "无场地信息配置"); + return taskResult; + } + siteInfoList = filterSiteInfo(siteInfoList); + siteInfoList = sortSiteInfo(siteInfoList); + + + List users = zlbTokenInfoService.getAllUsers(); + if (CollectionUtils.isEmpty(users)) { + log.info("日期:{}无用户信息", date); + jntyzxDingTalkFactory.sendMsg("日期:" + date + "无用户信息"); + taskResult.setSuccess(Boolean.FALSE); + taskResult.setSummary("日期:" + date + "无用户信息"); + return taskResult; + } + zlbUserInfoService.delAll(); + List list = Lists.newArrayList(); + int i = 0; + for (ZlbTokenInfo user : users) { + ZlbSiteInfo zlbSiteInfo = siteInfoList.get(i); + ZlbUserInfo zlbUserInfo = new ZlbUserInfo(); + zlbUserInfo.setLoginInfoId(user.getLoginInfoId()); + zlbUserInfo.setName(user.getName()); + zlbUserInfo.setWeek(DateUtils.getWeekDay(zlbSiteInfo.getBelongDate())); + zlbUserInfo.setType("1"); + zlbUserInfo.setPlaceName(zlbSiteInfo.getPlaceName()); + zlbUserInfo.setSiteTimeName(zlbSiteInfo.getDayEffectiveTimes()); + zlbUserInfo.setIsBook(0); + list.add(zlbUserInfo); + i++; + if (i == siteInfoList.size()) { + i = 0; + } + } + if (CollectionUtils.isNotEmpty(list)) { + zlbUserInfoService.saveBatch(list); + StringBuilder stringBuilder = new StringBuilder(); + for (ZlbUserInfo user : list) { + stringBuilder.append(user.getName()).append("配置预约:").append(user.getPlaceName()).append("\n"); + } + jntyzxDingTalkFactory.sendMsg(stringBuilder.toString()); + taskResult.setSuccess(Boolean.TRUE); + taskResult.setSummary(stringBuilder.toString()); + } + return taskResult; + } + + private List filterSiteInfo(List siteInfoList) { + return siteInfoList.stream().filter(item -> Objects.equals(item.getDayEffectiveTimes(), "20:00")).toList(); + } + + private List sortSiteInfo(List siteInfoList) { + if (CollectionUtils.isEmpty(siteInfoList)) { + return Lists.newArrayList(); + } + return siteInfoList.stream().sorted(Comparator.comparing(this::sort)).collect(Collectors.toList()); + } + + private int sort(ZlbSiteInfo siteInfo) { + String placeName = siteInfo.getPlaceName(); + if (placeName.contains("十号")) { + return 0; + } + if (placeName.contains("九号")) { + return 1; + } + if (placeName.contains("二号")) { + return 2; + } + if (placeName.contains("八号")) { + return 3; + } + if (placeName.contains("七号")) { + return 4; + } + return 5; + } +} diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoService.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoService.java index e775f29..50ccc5d 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoService.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoService.java @@ -3,6 +3,8 @@ package com.xiang.service.module.jntyzx.zlb.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo; +import java.util.List; + /** * @author a123 * @description 针对表【zlb_token_info】的数据库操作Service @@ -11,4 +13,6 @@ import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo; public interface ZlbTokenInfoService extends IService { ZlbTokenInfo queryByName(String name); + + List getAllUsers(); } diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoServiceImpl.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoServiceImpl.java index 50134cd..6cf6826 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoServiceImpl.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbTokenInfoServiceImpl.java @@ -7,6 +7,8 @@ import com.xiang.common.mapper.ZlbTokenInfoMapper; import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author a123 * @description 针对表【zlb_token_info】的数据库操作Service实现 @@ -22,6 +24,13 @@ public class ZlbTokenInfoServiceImpl extends ServiceImpl getAllUsers() { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ZlbTokenInfo::getIsDel, 0); + return baseMapper.selectList(lambdaQueryWrapper); + } } diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoService.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoService.java index 9c118d7..fc2b192 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoService.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoService.java @@ -3,6 +3,18 @@ package com.xiang.service.module.jntyzx.zlb.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo; +import java.time.LocalDate; +import java.util.List; + public interface ZlbUserInfoService extends IService { + /** + * 查询日期内未预订的用户 + * @param date + * @return + */ + List getNoBookUsers(LocalDate date); + + int delAll(); + } diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoServiceImpl.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoServiceImpl.java index ba779c8..8420323 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoServiceImpl.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/service/ZlbUserInfoServiceImpl.java @@ -5,10 +5,22 @@ import com.xiang.common.mapper.ZlbUserInfoMapper; import com.xiang.common.pojo.jntyzx.zlb.ZlbUserInfo; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.util.List; + @Service public class ZlbUserInfoServiceImpl extends ServiceImpl implements ZlbUserInfoService { + @Override + public List getNoBookUsers(LocalDate date) { + return List.of(); + } + + @Override + public int delAll() { + return baseMapper.deleteAll(); + } }