Ver Fonte

课时统计初始版本

dzx há 1 ano atrás
pai
commit
527cc89a07

+ 63 - 5
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeStatisticsController.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.classtime.controller;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
@@ -12,9 +13,12 @@ import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.activity.dto.ChangeStatusDto;
 import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
 import com.xjrsoft.module.classtime.dto.ClassTimeStatisticsPageDto;
+import com.xjrsoft.module.classtime.dto.RefreshStatisticsDto;
 import com.xjrsoft.module.classtime.dto.UpdateClassTimeStatisticsDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
 import com.xjrsoft.module.classtime.service.IClassTimeStatisticsService;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsSetService;
 import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsPageVo;
 import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsVo;
 import io.swagger.annotations.Api;
@@ -30,7 +34,10 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.time.LocalDate;
+import java.util.Date;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
 
 /**
 * @title: 课时统计
@@ -44,7 +51,7 @@ import java.util.List;
 @AllArgsConstructor
 public class ClassTimeStatisticsController {
 
-
+    private final IClassTimeStatisticsSetService statisticsSetService;
     private final IClassTimeStatisticsService classTimeStatisticsService;
 
     @GetMapping(value = "/page")
@@ -79,9 +86,8 @@ public class ClassTimeStatisticsController {
     @ApiOperation(value = "新增课时统计")
     @SaCheckPermission("classtimestatistics:add")
     public RT<Boolean> add(@Valid @RequestBody AddClassTimeStatisticsDto dto){
-        ClassTimeStatistics classTimeStatistics = BeanUtil.toBean(dto, ClassTimeStatistics.class);
-        boolean isSuccess = classTimeStatisticsService.add(classTimeStatistics);
-    return RT.ok(isSuccess);
+        boolean isSuccess = classTimeStatisticsService.add(dto);
+        return RT.ok(isSuccess);
     }
 
     @PutMapping
@@ -91,7 +97,6 @@ public class ClassTimeStatisticsController {
 
         ClassTimeStatistics classTimeStatistics = BeanUtil.toBean(dto, ClassTimeStatistics.class);
         return RT.ok(classTimeStatisticsService.update(classTimeStatistics));
-
     }
 
     @DeleteMapping
@@ -115,4 +120,57 @@ public class ClassTimeStatisticsController {
         return RT.ok(true);
     }
 
+    @GetMapping(value = "/last-date")
+    @ApiOperation(value="查询最新统计的结束日期")
+    @SaCheckPermission("classtimestatisticsset:detail")
+    public RT<LocalDate> lastInfo(){
+        List<ClassTimeStatistics> list = classTimeStatisticsService.list(
+                new QueryWrapper<ClassTimeStatistics>().lambda().orderByDesc(ClassTimeStatistics::getEndDate)
+        );
+        if (list.isEmpty()) {
+            return RT.error("未查询到数据");
+        }
+        ClassTimeStatistics result = list.get(0);
+        return RT.ok(result.getEndDate());
+    }
+
+    @PostMapping("/refresh-statistics")
+    @ApiOperation(value = "刷新课时统计")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<Boolean> refreshStatistics(@Valid @RequestBody RefreshStatisticsDto dto){
+
+        ClassTimeStatistics classTimeStatistics = classTimeStatisticsService.getById(dto.getId());
+        classTimeStatistics.setStatus(0);
+        classTimeStatistics.setModifyDate(new Date());
+
+        //查询最新权重并保存到统计中
+        Integer category = 1;
+        List<ClassTimeStatisticsSet> list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setWeightSetJson(list.get(0).getJsonContent());
+        }
+
+        //查询最新费用并保存到统计中
+        category = 2;
+        list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setCostSetJson(list.get(0).getJsonContent());
+        }
+        Boolean aBoolean = classTimeStatisticsService.save(classTimeStatistics);
+
+        CompletableFuture.runAsync(() -> {
+            classTimeStatisticsService.refreshRecord(classTimeStatistics);
+        });
+
+        return RT.ok(aBoolean);
+    }
+
 }

+ 3 - 1
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeStatisticsSetController.java

@@ -105,7 +105,9 @@ public class ClassTimeStatisticsSetController {
     @SaCheckPermission("classtimestatisticsset:detail")
     public RT<ClassTimeStatisticsSetVo> lastInfo(@RequestParam Integer category){
         List<ClassTimeStatisticsSet> list = classTimeStatisticsSetService.list(
-                new QueryWrapper<ClassTimeStatisticsSet>().lambda().eq(ClassTimeStatisticsSet::getCategory, category)
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
         );
         if (list.isEmpty()) {
             return RT.ok();

+ 6 - 3
src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeStatisticsDto.java

@@ -2,9 +2,10 @@ package com.xjrsoft.module.classtime.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
-import java.util.Date;
+import java.time.LocalDate;
 
 
 
@@ -32,12 +33,14 @@ public class AddClassTimeStatisticsDto implements Serializable {
     /**
     * 开始日期
     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("开始日期")
-    private Date startDate;
+    private LocalDate startDate;
     /**
     * 结束日期
     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("结束日期")
-    private Date endDate;
+    private LocalDate endDate;
 
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/classtime/dto/RefreshStatisticsDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+
+/**
+* @title: 刷新课时
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class RefreshStatisticsDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("id")
+    private Long id;
+}

+ 16 - 4
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatistics.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.util.Date;
 
 
@@ -83,12 +84,12 @@ public class ClassTimeStatistics implements Serializable {
     * 开始日期
     */
     @ApiModelProperty("开始日期")
-    private Date startDate;
+    private LocalDate startDate;
     /**
     * 结束日期
     */
     @ApiModelProperty("结束日期")
-    private Date endDate;
+    private LocalDate endDate;
     /**
     * 总课时
     */
@@ -110,10 +111,21 @@ public class ClassTimeStatistics implements Serializable {
     @ApiModelProperty("总外聘教师超课时费")
     private Double beyondClassTimeAmount;
     /**
-    * 状态(0:已解锁 1:已锁定)
+    * 状态(0:数据统计中 1:统计完成 2:已解锁 3:已锁定)
     */
-    @ApiModelProperty("状态(0:已解锁 1:已锁定)")
+    @ApiModelProperty("状态(0:数据统计中 1:统计完成 2:已解锁 3:已锁定)")
     private Integer status;
 
+    /**
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String weightSetJson;
+    /**
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String costSetJson;
+
 
 }

+ 0 - 11
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatisticsRecord.java

@@ -164,16 +164,5 @@ public class ClassTimeStatisticsRecord implements Serializable {
     */
     @ApiModelProperty("调课")
     private Double classTime11;
-    /**
-    * 权重json
-    */
-    @ApiModelProperty("权重json")
-    private String weightSetJson;
-    /**
-    * 权重json
-    */
-    @ApiModelProperty("权重json")
-    private String costSetJson;
-
 
 }

+ 10 - 0
src/main/java/com/xjrsoft/module/classtime/service/IClassTimeStatisticsService.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.classtime.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
 
 import java.util.List;
@@ -36,4 +37,13 @@ public interface IClassTimeStatisticsService extends MPJBaseService<ClassTimeSta
     * @return
     */
     Boolean delete(List<Long> ids);
+
+    /**
+     * 新增课时统计
+     * @param dto
+     * @return
+     */
+    Boolean add(AddClassTimeStatisticsDto dto);
+
+    Boolean refreshRecord(ClassTimeStatistics statistics);
 }

+ 57 - 1
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsServiceImpl.java

@@ -1,17 +1,28 @@
 package com.xjrsoft.module.classtime.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsRecord;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
 import com.xjrsoft.module.classtime.mapper.ClassTimeStatisticsMapper;
 import com.xjrsoft.module.classtime.mapper.ClassTimeStatisticsRecordMapper;
 import com.xjrsoft.module.classtime.service.IClassTimeStatisticsService;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsSetService;
+import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
 
 /**
 * @title: 课时统计
@@ -26,7 +37,7 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
 
     private final ClassTimeStatisticsRecordMapper recordMapper;
 
-
+    private final IClassTimeStatisticsSetService statisticsSetService;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(ClassTimeStatistics classTimeStatistics) {
@@ -49,4 +60,49 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
 
         return true;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(AddClassTimeStatisticsDto dto) {
+        ClassTimeStatistics classTimeStatistics = BeanUtil.toBean(dto, ClassTimeStatistics.class);
+        classTimeStatistics.setStatus(0);
+        classTimeStatistics.setCreateDate(new Date());
+
+        //查询最新权重并保存到统计中
+        Integer category = 1;
+        List<ClassTimeStatisticsSet> list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setWeightSetJson(list.get(0).getJsonContent());
+        }
+
+        //查询最新费用并保存到统计中
+        category = 2;
+        list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setCostSetJson(list.get(0).getJsonContent());
+        }
+        this.save(classTimeStatistics);
+
+        CompletableFuture.runAsync(() -> {
+            refreshRecord(classTimeStatistics);
+        });
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean refreshRecord(ClassTimeStatistics statistics) {
+
+        return true;
+    }
+
 }

+ 9 - 6
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsVo.java

@@ -66,11 +66,14 @@ public class ClassTimeStatisticsVo {
     @ApiModelProperty("状态(0:已解锁 1:已锁定)")
     private Integer status;
 
-
     /**
-    * classTimeStatisticsRecord
-    */
-    @ApiModelProperty("classTimeStatisticsRecord子表")
-    private List<ClassTimeStatisticsRecordVo> classTimeStatisticsRecordList;
-
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String weightSetJson;
+    /**
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String costSetJson;
 }