diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasksinfo/AssignTasksInfoController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasksinfo/AssignTasksInfoController.java index c04d0ad..1f62078 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasksinfo/AssignTasksInfoController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasksinfo/AssignTasksInfoController.java @@ -186,7 +186,9 @@ public class AssignTasksInfoController { triggerTime.atZone(ZoneId.systemDefault()) // 绑定时区 .toInstant() // 转为Instant(含时区的时间戳) ); - quartzRemindService.registerRemindJob(id, triggerDate); + //quartzRemindService.registerRemindJob(id, triggerDate); + + unitIntegralService.resetUnitIntegralTotal(); } catch (Exception e) { throw new RuntimeException("任务创建失败"); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ResetYearUnitIntegralJob.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ResetYearUnitIntegralJob.java new file mode 100644 index 0000000..740c8eb --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ResetYearUnitIntegralJob.java @@ -0,0 +1,31 @@ +package com.zteits.urbanops.module.garden.job.task; + +import com.zteits.urbanops.framework.quartz.core.handler.JobHandler; +import com.zteits.urbanops.module.garden.service.unitintegraltotal.UnitIntegralService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +/** + * @Classname ResetYearPointJob + * @Description 年底积分清零 + * @Date 2026/3/11 17:04 + * @Created by wangqian + */ +@Component +@Slf4j +public class ResetYearUnitIntegralJob implements JobHandler { + + @Resource + private UnitIntegralService unitIntegralService; + + @Override + public String execute(String param) throws Exception { + log.info("【年底积分清零】开始执行" + LocalDateTime.now()); + unitIntegralService.resetUnitIntegralTotal(); + log.info("【年底积分清零】开始结束" + LocalDateTime.now()); + return "Successfully"; + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralService.java index 25b2286..3f28a3b 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralService.java @@ -65,5 +65,10 @@ public interface UnitIntegralService { + /** + * 批量删除单位积分累计 + * + */ + void resetUnitIntegralTotal(); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralServiceImpl.java index bdb302f..0107090 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/unitintegraltotal/UnitIntegralServiceImpl.java @@ -10,14 +10,17 @@ import com.zteits.urbanops.module.garden.controller.admin.unitintegralsub.vo.Uni import com.zteits.urbanops.module.garden.controller.admin.unitintegraltotal.vo.UnitIntegralRespVO; import com.zteits.urbanops.module.garden.controller.admin.unitintegraltotal.vo.UnitIntegralSaveReqVO; import com.zteits.urbanops.module.garden.dal.dataobject.unitintegraladd.UnitIntegralAddDO; +import com.zteits.urbanops.module.garden.dal.dataobject.unitintegralsub.UnitIntegralSubDO; import com.zteits.urbanops.module.garden.dal.dataobject.unitintegraltotal.UnitIntegralTotalDO; import com.zteits.urbanops.module.garden.dal.mysql.unitintegraladd.UnitIntegralAddMapper; +import com.zteits.urbanops.module.garden.dal.mysql.unitintegralsub.UnitIntegralSubMapper; import com.zteits.urbanops.module.garden.dal.mysql.unitintegraltotal.UnitIntegralTotalMapper; import com.zteits.urbanops.module.garden.dal.redis.IntegralLockCoreRedisDAO; import com.zteits.urbanops.module.garden.service.unitintegraladd.UnitIntegralAddService; import com.zteits.urbanops.module.garden.service.unitintegralsub.UnitIntegralSubService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.redisson.api.RLock; @@ -30,6 +33,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; @@ -60,8 +64,8 @@ public class UnitIntegralServiceImpl implements UnitIntegralService{ private RedissonClient redissonClient; @Resource private IntegralLockCoreRedisDAO integralLockCoreRedisDAO; - - + @Resource + private UnitIntegralSubMapper unitIntegralSubMapper; // 锁前缀(区分加/减积分锁) private static final String LOCK_PREFIX_INTEGRAL = "integral:"; @@ -257,6 +261,76 @@ public class UnitIntegralServiceImpl implements UnitIntegralService{ } ); } + + @Override + @Transactional + public void resetUnitIntegralTotal() { + // 1. 记录方法执行开始 + log.info("【单位积分重置】开始执行单位积分数据重置操作"); + try { + // ========== 处理单位积分总额表 ========== + log.info("【单位积分重置】开始处理单位积分总额表数据"); + List unitIntegralTotaList = unitIntegralTotalMapper.selectList(UnitIntegralTotalDO::getDeleted, 0); + if (CollectionUtils.isEmpty(unitIntegralTotaList)) { + log.info("【单位积分重置】单位积分总额表无未重置数据,无需处理"); + } else { + log.info("【单位积分重置】单位积分总额表重置完成,共重置{}条数据", unitIntegralTotaList.size()); + for (UnitIntegralTotalDO unitIntegralTotalDO : unitIntegralTotaList) { + String statDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy")); + if (statDate.equals(unitIntegralTotalDO.getStatDate())){ + unitIntegralTotalDO.setTotalIntegral(0); + unitIntegralTotalDO.setTotalAdd(0); + unitIntegralTotalDO.setTotalSub(0); + unitIntegralTotalMapper.updateById(unitIntegralTotalDO); + } else { + unitIntegralTotalMapper.deleteById(unitIntegralTotalDO.getId()); + } + } +// List idList = unitIntegralTotaList.stream() +// .map(UnitIntegralTotalDO::getId) +// .collect(Collectors.toList()); +// int deleteCount = unitIntegralTotalMapper.deleteByIds(idList); +// log.info("【单位积分重置】单位积分总额表删除完成,共删除{}条数据,删除的ID列表:{}", deleteCount, idList); + } + + // ========== 处理单位积分增加表 ========== + log.info("【单位积分重置】开始处理单位积分增加表数据"); + List unitIntegralAddList = unitIntegralAddMapper.selectList(UnitIntegralAddDO::getDeleted, 0); + if (CollectionUtils.isEmpty(unitIntegralAddList)) { + log.info("【单位积分重置】单位积分增加表无未重置数据,无需处理"); + } else { + List addIdList = unitIntegralAddList.stream() + .map(UnitIntegralAddDO::getId) + .collect(Collectors.toList()); + int addDeleteCount = unitIntegralAddMapper.deleteByIds(addIdList); + log.info("【单位积分重置】单位积分增加表重置完成,共重置{}条数据,重置的ID列表:{}", addDeleteCount, addIdList); + } + + // ========== 处理单位积分扣减表 ========== + log.info("【单位积分重置】开始处理单位积分扣减表数据"); + List unitIntegralSubList = unitIntegralSubMapper.selectList(UnitIntegralSubDO::getDeleted, 0); + if (CollectionUtils.isEmpty(unitIntegralSubList)) { + log.info("【单位积分重置】单位积分扣减表无未重置数据,无需处理"); + } else { + List subIdList = unitIntegralSubList.stream() + .map(UnitIntegralSubDO::getId) + .collect(Collectors.toList()); + int subDeleteCount = unitIntegralSubMapper.deleteByIds(subIdList); + // 修复原日志中“重置增加单位积分总额”的文案错误,改为“单位积分扣减表” + log.info("【单位积分重置】单位积分扣减表重置完成,共删除{}条数据,重置的ID列表:{}", subDeleteCount, subIdList); + } + + // 2. 记录方法执行成功 + log.info("【单位积分重置】单位积分数据重置操作执行完成,所有表处理完毕"); + + } catch (Exception e) { + // 3. 记录异常日志(包含堆栈信息) + log.error("【单位积分重置】执行单位积分数据重置操作失败", e); + // 抛出异常触发事务回滚,保证数据一致性 + throw new RuntimeException("重置单位积分数据失败", e); + } + } + /** * 扣减积分核心执行方法(带事务,内部调用) */ @@ -317,4 +391,6 @@ public class UnitIntegralServiceImpl implements UnitIntegralService{ return SpringUtil.getBean(getClass()); } + + }