Ver Fonte

feat: schedule v1.2 兑付通知自动确认

shc há 7 meses atrás
pai
commit
4f2e40244a

+ 55 - 8
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/config/ScheduleConfiguration.java

@@ -6,10 +6,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysNotice;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUserRole;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageRedemptionNotice;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysNoticeService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserRoleService;
-import com.qunzhixinxi.hnqz.admin.service.SysUserService;
+import com.qunzhixinxi.hnqz.admin.service.WmPackageRedemptionNoticeService;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -20,6 +21,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.LinkedList;
 import java.util.List;
@@ -40,6 +42,7 @@ public class ScheduleConfiguration {
     private final SysDeptService deptService;
     private final SysUserRoleService userRoleService;
     private final SysNoticeService noticeService;
+    private final WmPackageRedemptionNoticeService packageRedemptionNoticeService;
 
 
     /**
@@ -112,11 +115,55 @@ public class ScheduleConfiguration {
 
 
     }
-    //
-    // @Async
-    // @Scheduled(cron = "0/4 * * * * *")
-    // public void checkEntExpiryDaily1() {
-    //     log.info("checkEntExpiryDaily1");
-    //
-    // }
+
+
+    /**
+     * 每天凌晨2点,自动确认执行包兑付通知
+     */
+    @Async
+    @Scheduled(cron = "0 0 2 * * *")
+    public void autoConfirmPackageRedemptionNotice() {
+
+        log.info("=================[autoConfirmPackageRedemptionNotice start ]=================");
+
+        try {
+            LocalDate lastDay = LocalDate.now().minusDays(1);
+            LocalDateTime startTime = LocalDateTime.of(lastDay.minusDays(30), LocalTime.MIN);
+            LocalDateTime endTime = LocalDateTime.of(lastDay, LocalTime.MAX);
+
+            // 查询所有审核通过的兑付通知
+            List<WmPackageRedemptionNotice> notices = packageRedemptionNoticeService.list(Wrappers.<WmPackageRedemptionNotice>lambdaQuery()
+                    .eq(WmPackageRedemptionNotice::getCheckState, WmPackageRedemptionNotice.CheckState.PASSED.getState())
+                    .between(WmPackageRedemptionNotice::getCreateTime, startTime, endTime)
+                    .isNull(WmPackageRedemptionNotice::getAccept)
+                    .orderByDesc(WmPackageRedemptionNotice::getCreateTime));
+
+            if (CollUtil.isEmpty(notices)){
+                return;
+            }
+
+            String autoConfirmMsg = "兑付通知超过30天未确认,系统默认确认通过";
+            List<WmPackageRedemptionNotice> collect = notices.stream().map(n -> {
+                WmPackageRedemptionNotice notice = new WmPackageRedemptionNotice();
+                notice.setNoticeId(n.getNoticeId());
+                notice.setNoticeState(WmPackageRedemptionNotice.NoticeState.CONFIRM.getState());
+                notice.setAccept(true);
+                notice.setAcceptTime(LocalDateTime.now());
+                notice.setAcceptRemarks(autoConfirmMsg);
+                notice.setUpdateBy("admin");
+                notice.setUpdateTime(LocalDateTime.now());
+                return notice;
+
+            }).collect(Collectors.toList());
+
+
+            packageRedemptionNoticeService.updateBatchById(collect);
+
+
+        } finally {
+            log.info("=================[autoConfirmPackageRedemptionNotice end  ]=================");
+        }
+
+
+    }
 }