Browse Source

定时新增日报

wangbo 6 months ago
parent
commit
d7baa251f5

+ 7 - 1
bs-common/pom.xml

@@ -61,7 +61,13 @@
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
         </dependency>
-<!--        <dependency>-->
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>master-data-entity</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+        <!--        <dependency>-->
 <!--            <groupId>commons-io</groupId>-->
 <!--            <artifactId>commons-io</artifactId>-->
 <!--            <version>2.11.0</version>-->

+ 13 - 0
bs-common/src/main/java/com/rongwei/safecommon/dao/TimeSheetDao.java

@@ -0,0 +1,13 @@
+package com.rongwei.safecommon.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.TimeSheetDo;
+import com.rongwei.bsentity.domain.UserDo;
+import org.apache.ibatis.annotations.Mapper;
+
+
+public interface TimeSheetDao extends BaseMapper<TimeSheetDo>{
+
+
+
+}

+ 10 - 0
bs-common/src/main/java/com/rongwei/safecommon/dao/UserDao.java

@@ -0,0 +1,10 @@
+package com.rongwei.safecommon.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.UserDo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface UserDao extends BaseMapper<UserDo> {
+
+}

+ 9 - 0
bs-common/src/main/java/com/rongwei/safecommon/service/AutoMaticGenerationService.java

@@ -0,0 +1,9 @@
+package com.rongwei.safecommon.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface AutoMaticGenerationService extends IService {
+
+//    void DailyReportGeneration();
+
+}

+ 8 - 0
bs-common/src/main/java/com/rongwei/safecommon/service/TimedTaskService.java

@@ -0,0 +1,8 @@
+package com.rongwei.safecommon.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.TimeSheetDo;
+
+public interface TimedTaskService extends IService<TimeSheetDo> {
+    void ByUserGenerateWeekly();
+}

+ 17 - 0
bs-common/src/main/java/com/rongwei/safecommon/service/UserService.java

@@ -0,0 +1,17 @@
+package com.rongwei.safecommon.service;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.domain.UserDo;
+import com.rongwei.safecommon.dao.UserDao;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+public interface UserService extends IService<UserDo> {
+
+
+    List<UserDo> getAllUsers();
+}

+ 11 - 0
bs-common/src/main/java/com/rongwei/safecommon/service/impl/AutoMaticGenerationServiceImpl.java

@@ -0,0 +1,11 @@
+package com.rongwei.safecommon.service.impl;
+
+import com.rongwei.safecommon.service.AutoMaticGenerationService;
+
+public class AutoMaticGenerationServiceImpl  {
+
+
+
+
+
+}

+ 117 - 0
bs-common/src/main/java/com/rongwei/safecommon/service/impl/TimedTaskServiceImpl.java

@@ -0,0 +1,117 @@
+package com.rongwei.safecommon.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.domain.TimeSheetDo;
+import com.rongwei.bsentity.domain.UserDo;
+import com.rongwei.safecommon.dao.TimeSheetDao;
+import com.rongwei.safecommon.service.TimedTaskService;
+import com.rongwei.safecommon.service.UserService;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.bouncycastle.util.Times;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+@Slf4j
+public class TimedTaskServiceImpl extends ServiceImpl<TimeSheetDao,TimeSheetDo> implements  TimedTaskService {
+    @Autowired UserService userService;
+    @Autowired TimedTaskService timedTaskService;
+
+    @Override
+    public void ByUserGenerateWeekly() {
+        List<UserDo> users = userService.getAllUsers();
+        Date currentDate = new Date();
+        //获取当前日期
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(currentDate);
+        // 获取周一日期
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+        Date startOfWeek = calendar.getTime();
+        // 获取当前年份
+        int currentYear = calendar.get(Calendar.YEAR);
+        // 获取当前周的周次
+        int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
+
+        for (UserDo user : users) {
+            // 判断是否跨年度(即当前日期所在的周是否包含上一年和下一年)
+            for (int i = 0; i < 7; i++) {
+                // 计算该天的日期
+                calendar.setTime(startOfWeek);
+                calendar.add(Calendar.DATE, i);  // 增加天数,遍历一周的每一天
+                Date currentDay = calendar.getTime();
+
+                // 获取该日期的年份
+                int yearOfDay = calendar.get(Calendar.YEAR);
+
+                if (yearOfDay != currentYear) {
+                    handleCrossYear(user, calendar, yearOfDay, currentYear);
+                } else {
+                    // 当前日期属于当前年份,直接生成周报数据
+                    generateReport(user, calendar, currentWeek);
+                }
+            }
+        }
+
+
+
+
+    }
+
+
+    private TimeSheetDo createTimeSheetDo(UserDo user, Calendar calendar , int currentWeek) {
+        TimeSheetDo timeSheetDo = new TimeSheetDo();
+        timeSheetDo.setInformantid(user.getId());
+        timeSheetDo.setInformant(user.getName());
+        timeSheetDo.setTyear(String.valueOf(calendar.get(Calendar.YEAR)));  // 当前年份
+//        timeSheetDo.setTsweek(String.valueOf(calendar.get(Calendar.WEEK_OF_YEAR)));  // 当前周次
+        timeSheetDo.setTsweek(String.valueOf(currentWeek));  // 当前周次
+        timeSheetDo.setTsdate(calendar.getTime());  // 当前日期
+        timeSheetDo.setTstatus("待提交");
+        timeSheetDo.setId(UUID.randomUUID().toString());  // uuid
+        timeSheetDo.setDeleted("0");
+        return timeSheetDo;
+    }
+
+    // 处理跨年度的情况
+    private void handleCrossYear(UserDo user, Calendar calendar, int yearOfDay, int currentYear) {
+        if (yearOfDay < currentYear) {
+            // 当前日期属于上一年的最后一周(12月30、31日等)
+            generateReportForYear(user, calendar, "previous year");
+        } else {
+            // 当前日期属于下一年的第一周(如2025年1月1号)
+            generateReportForYear(user, calendar, "next year");
+        }
+    }
+
+    // 生成报告
+    private void generateReport(UserDo user, Calendar calendar,int currentWeek) {
+        TimeSheetDo timeSheetDo = createTimeSheetDo(user, calendar,currentWeek);
+        timedTaskService.save(timeSheetDo);  // 保存数据
+    }
+
+    // 生成上一年或下一年的报告
+    private void generateReportForYear(UserDo user, Calendar calendar, String yearContext) {
+        TimeSheetDo timeSheetDo = createTimeSheetDo(user, calendar,-1);
+        timeSheetDo.setTyear(yearContext);  // 设置年份上下文
+        timedTaskService.save(timeSheetDo);  // 保存数据
+    }
+}
+
+//    private void generateReportForCurrentYear(UserDo user, Calendar calendar) {
+//        // 生成当前年份的数据
+//        TimeSheetDo timeSheetDo = new TimeSheetDo();
+//        timeSheetDo.setInformantid(user.getId());
+//        timeSheetDo.setInformant(user.getName());
+//        timeSheetDo.setTyear(String.valueOf(calendar.get(Calendar.YEAR))); //当前年份
+//        timeSheetDo.setTsweek(String.valueOf(calendar.get(Calendar.WEEK_OF_YEAR)));
+//        timeSheetDo.setTsdate((Date) calendar.getTime());
+//        timeSheetDo.setTstatus("待提交");
+//        timeSheetDo.setId(UUID.randomUUID().toString());//uuid
+//        timedTaskService.save(timeSheetDo);  // 保存数据
+//    }

+ 24 - 0
bs-common/src/main/java/com/rongwei/safecommon/service/impl/UserServiceImpl.java

@@ -0,0 +1,24 @@
+package com.rongwei.safecommon.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.domain.UserDo;
+import com.rongwei.safecommon.dao.UserDao;
+import com.rongwei.safecommon.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@Slf4j
+public class UserServiceImpl extends ServiceImpl<UserDao, UserDo> implements UserService {
+
+    @Override
+    public List<UserDo> getAllUsers() {
+        QueryWrapper<UserDo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("deleted", "0");  // 设置查询条件
+        return this.list(queryWrapper);
+    }
+}

+ 52 - 0
master-data/master-data-entity/src/main/java/com/rongwei/bsentity/domain/TimeSheetDo.java

@@ -0,0 +1,52 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+@TableName("icoa_timesheet_audit_day")
+public class TimeSheetDo extends BaseDo {
+    @TableId("ID")
+    private String id;
+
+    @TableField("TENANTID")
+    private String tenantid;
+
+    @TableField("ROPTION")
+    private String roption;
+
+    //周次
+    @TableField("TSWEEK")
+    private String tsweek;
+
+    //日期
+    @TableField("TSDATE")
+    private Date tsdate;
+
+    //填报人
+    @TableField("INFORMANT")
+    private String informant;
+
+    //填报人ID
+    @TableField("INFORMANTID")
+    private String informantid;
+
+    //年份
+    @TableField("TYEAR")
+    private String tyear;
+
+    //年份
+    @TableField("TSTATUS")
+    private String tstatus;
+
+//    @TableField("DELETED")
+//    private String deleted;
+}

+ 19 - 0
master-data/master-data-entity/src/main/java/com/rongwei/bsentity/domain/UserDo.java

@@ -0,0 +1,19 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@TableName("sys_user")
+public class UserDo {
+    @TableField("ID")
+    private String id;
+
+    @TableField("NAME")
+    private String name;
+
+
+}

+ 1 - 1
master-data/master-data-server/src/main/java/com/rongwei/MasterDataServerApplication.java

@@ -12,7 +12,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @SpringBootApplication
 @EnableDiscoveryClient
 @EnableFeignClients
-@MapperScan({"com.rongwei.*.*.dao", "com.rongwei.*.*.*.dao"})
+@MapperScan({"com.rongwei.*.*.dao", "com.rongwei.safecommon.dao", "com.rongwei.*.*.*.dao"})
 @EnableScheduling
 public class MasterDataServerApplication {
 

+ 36 - 0
master-data/master-data-server/src/main/java/com/rongwei/bsserver/controller/TimedTaskController.java

@@ -0,0 +1,36 @@
+package com.rongwei.bsserver.controller;
+
+import com.rongwei.bsentity.domain.UserDo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.safecommon.service.AutoMaticGenerationService;
+import com.rongwei.safecommon.service.TimedTaskService;
+import com.rongwei.safecommon.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+//@RequestMapping("/testSheet")
+@Slf4j
+public class TimedTaskController {
+@Autowired
+    TimedTaskService timedTaskService;
+
+    @Scheduled(cron = "0 0 0 * * MON")
+//@RequestMapping("/generateWeeklyReport")
+    public R Generation() {
+        try {
+            timedTaskService.ByUserGenerateWeekly();
+            return R.ok();
+        } catch (Exception e) {
+            // 捕获并处理异常,返回错误响应
+            log.error("Weekly report generation failed", e);
+            return R.error();
+        }
+    }
+
+}