Browse Source

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 2 weeks ago
parent
commit
bcf162fd92

+ 15 - 0
src/main/java/com/xjrsoft/common/enums/CourseAdjustTypeEnum.java

@@ -1,5 +1,8 @@
 package com.xjrsoft.common.enums;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @author dzx
  * @date 2024/2/3
@@ -19,6 +22,14 @@ public enum CourseAdjustTypeEnum {
     final String code;
     final String value;
 
+    private static final Map<String, String> lookup = new HashMap<>();
+
+    static {
+        for (ArchivesStatusEnum s : ArchivesStatusEnum.values()) {
+            lookup.put(s.getCode(), s.getValue());
+        }
+    }
+
     public String getCode() {
         return this.code;
     }
@@ -31,4 +42,8 @@ public enum CourseAdjustTypeEnum {
         this.code = code;
         this.value = message;
     }
+
+    public static String fromCode(String code) {
+        return lookup.get(code);
+    }
 }

+ 40 - 29
src/main/java/com/xjrsoft/module/databoard/controller/DatadetailController.java

@@ -1,9 +1,6 @@
 package com.xjrsoft.module.databoard.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -18,7 +15,21 @@ import com.xjrsoft.module.base.entity.BaseSemester;
 import com.xjrsoft.module.base.mapper.BaseSemesterMapper;
 import com.xjrsoft.module.databoard.dto.StatisticsDetailDto;
 import com.xjrsoft.module.databoard.dto.TeacherChangeStatisticsDetailDto;
-import com.xjrsoft.module.databoard.vo.*;
+import com.xjrsoft.module.databoard.vo.CourseCountListVo;
+import com.xjrsoft.module.databoard.vo.CourseStatisticsDetailVo;
+import com.xjrsoft.module.databoard.vo.DistributionVo;
+import com.xjrsoft.module.databoard.vo.DurationVo;
+import com.xjrsoft.module.databoard.vo.HealthItemCountVo;
+import com.xjrsoft.module.databoard.vo.HealthStatisticsDetailVo;
+import com.xjrsoft.module.databoard.vo.ItemCountAmountVo;
+import com.xjrsoft.module.databoard.vo.ItemCountRatioVo;
+import com.xjrsoft.module.databoard.vo.ItemCountVo;
+import com.xjrsoft.module.databoard.vo.ItemDoubleVo;
+import com.xjrsoft.module.databoard.vo.ProcessStatisticsDetailVo;
+import com.xjrsoft.module.databoard.vo.StudnetStatisticsDetailVo;
+import com.xjrsoft.module.databoard.vo.SubscriptionStatisticsDetailVo;
+import com.xjrsoft.module.databoard.vo.TeacherChangeStatisticsDetailVo;
+import com.xjrsoft.module.databoard.vo.TeacherStatisticsDetailVo;
 import com.xjrsoft.module.oa.entity.WfSubscription;
 import com.xjrsoft.module.oa.service.IWfSubscriptionService;
 import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
@@ -30,21 +41,13 @@ import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
 import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
-import com.xjrsoft.module.workflow.constant.WorkflowConstant;
-import com.xjrsoft.module.workflow.entity.WorkflowExtra;
 import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
-import com.xjrsoft.module.workflow.entity.WorkflowSchema;
-import com.xjrsoft.module.workflow.service.IWorkflowExtraService;
-import com.xjrsoft.module.workflow.service.IWorkflowFormRelationService;
-import com.xjrsoft.module.workflow.utils.WorkFlowUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.camunda.bpm.engine.HistoryService;
 import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.history.HistoricProcessInstanceQuery;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -54,10 +57,20 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.*;
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.Period;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -71,8 +84,6 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class DatadetailController {
 
-    private final HistoryService historyService;
-    private final IWorkflowFormRelationService relationService;
     private final ITeacherbaseManagerService teacherService;
     private final IBaseStudentService studentService;
     private final IWfSubscriptionService subscriptionService;
@@ -789,10 +800,10 @@ public class DatadetailController {
             sql += " and schedule_date between '" + startDate + "' and '" + endDate + "'";
         }
         sql += " ) AS course_count FROM xjr_user t1" +
-                " INNER JOIN base_teacher t2 ON t1.id = t2.user_id" +
-                " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.user_id" +
-                " INNER JOIN xjr_department t4 ON t3.dept_id = t4.id" +
-                " WHERE t1.delete_mark = 0 AND t4.is_major = 1";
+            " INNER JOIN base_teacher t2 ON t1.id = t2.user_id" +
+            " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.user_id" +
+            " INNER JOIN xjr_department t4 ON t3.dept_id = t4.id" +
+            " WHERE t1.delete_mark = 0 AND t4.is_major = 1";
         sql += " ORDER BY course_count DESC LIMIT 5";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
         List<CourseCountListVo> courseCountList = new ArrayList<>();
@@ -803,11 +814,11 @@ public class DatadetailController {
         result.setCourseCountList(courseCountList);
 
         sql = "SELECT count(*) FROM course_table t1" +
-                " INNER JOIN base_teacher t2 ON FIND_IN_SET(t2.user_id, t1.teacher_id) > 0" +
-                " INNER JOIN xjr_user_dept_relation t3 ON t2.user_id = t3.user_id" +
-                " INNER JOIN xjr_department t4 ON t4.id = t3.dept_id" +
-                " WHERE t4.delete_mark = 0 AND t2.delete_mark = 0" +
-                " AND t4.is_major = 1";
+            " INNER JOIN base_teacher t2 ON FIND_IN_SET(t2.user_id, t1.teacher_id) > 0" +
+            " INNER JOIN xjr_user_dept_relation t3 ON t2.user_id = t3.user_id" +
+            " INNER JOIN xjr_department t4 ON t4.id = t3.dept_id" +
+            " WHERE t4.delete_mark = 0 AND t2.delete_mark = 0" +
+            " AND t4.is_major = 1";
         if(startDate != null){
             sql += " and t1.schedule_date between '" + startDate + "' and '" + endDate + "'";
         }
@@ -815,10 +826,10 @@ public class DatadetailController {
 
 
         sql = "SELECT name,(" +
-                " SELECT COUNT(*) FROM course_table t1" +
-                " INNER JOIN base_teacher t2 ON FIND_IN_SET(t2.user_id, t1.teacher_id) > 0" +
-                " INNER JOIN xjr_user_dept_relation t3 ON t2.user_id = t3.user_id" +
-                " WHERE t3.dept_id = xjr_department.id";
+            " SELECT COUNT(*) FROM course_table t1" +
+            " INNER JOIN base_teacher t2 ON FIND_IN_SET(t2.user_id, t1.teacher_id) > 0" +
+            " INNER JOIN xjr_user_dept_relation t3 ON t2.user_id = t3.user_id" +
+            " WHERE t3.dept_id = xjr_department.id";
         if(startDate != null){
             sql += " and t1.schedule_date between '" + startDate + "' and '" + endDate + "'";
         }

+ 72 - 0
src/main/java/com/xjrsoft/module/schedule/controller/TodayScheduleController.java

@@ -0,0 +1,72 @@
+package com.xjrsoft.module.schedule.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
+import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.LocalDateTimeUtil;
+import com.xjrsoft.module.schedule.dto.TodaySchedulePageDto;
+import com.xjrsoft.module.schedule.service.ITodayScheduleService;
+import com.xjrsoft.module.schedule.vo.TodayScheduleVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @title: 今日安排
+ * @Author dzx
+ * @Date: 2025327
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/todaySchedule" + "/todaySchedule")
+@Api(value = "/todaySchedule" + "/todaySchedule", tags = "今日安排查询代码")
+@AllArgsConstructor
+public class TodayScheduleController {
+
+
+    private final ITodayScheduleService todayScheduleService;
+
+    @GetMapping(value = "/list")
+    @ApiOperation(value = "今日安排查询")
+    @SaCheckPermission("schedule:detail")
+    @XjrLog(value = "今日安排查询", saveResponseData = true)
+    public RT<List<TodayScheduleVo>> receiveMsg(@Valid TodaySchedulePageDto dto){
+        if(dto.getUserId() == null){
+            dto.setUserId(StpUtil.getLoginIdAsLong());
+        }
+        List<TodayScheduleVo> list = todayScheduleService.getList(dto);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        Map<Long, LocalDateTime> startTimeMap = list.stream().collect(Collectors.toMap(TodayScheduleVo::getId, x -> LocalDateTime.parse(x.getStartTime(), formatter)));
+        Map<Long, LocalDateTime> endTimeMap = list.stream().collect(Collectors.toMap(TodayScheduleVo::getId, x -> LocalDateTime.parse(x.getEndTime(), formatter)));
+        for (TodayScheduleVo todayScheduleVo : list) {
+            String title = null;
+            LocalDateTime startDateTime = LocalDateTime.parse(todayScheduleVo.getStartTime(), formatter);
+            LocalDateTime endDateTime = LocalDateTime.parse(todayScheduleVo.getEndTime(), formatter);
+            for (Long id : startTimeMap.keySet()) {
+                if(!todayScheduleVo.getId().equals(id)){
+                    continue;
+                }
+                LocalDateTime startTime = startTimeMap.get(id);
+                LocalDateTime endTime = endTimeMap.get(id);
+                if(LocalDateTimeUtil.isDateTimeInRange(startDateTime, startTime, endTime) || LocalDateTimeUtil.isDateTimeInRange(endDateTime, startTime, endTime)){
+                    title = "冲突";
+                }
+            }
+            todayScheduleVo.setTitle(title);
+        }
+
+        return RT.ok(list);
+    }
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/schedule/dto/TodaySchedulePageDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.schedule.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * @title: 今日安排
+ * @Author dzx
+ * @Date: 2025327
+ * @Version 1.0
+ */
+@Data
+public class TodaySchedulePageDto{
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/schedule/entity/TodaySchedule.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.schedule.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @title: 简约系统对照表
+ * @Author dzx
+ * @Date: 2024-01-23
+ * @Version 1.0
+ */
+@Data
+@TableName("today_schedule")
+@ApiModel(value = "今日安排", description = "今日安排")
+public class TodaySchedule implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Long id;
+
+    @ApiModelProperty("开始时间")
+    private String startTime;
+
+    @ApiModelProperty("结束时间")
+    private String endTime;
+
+    @ApiModelProperty("调整类别")
+    private String adjustType;
+
+    @ApiModelProperty("类别")
+    private String title;
+
+    @ApiModelProperty("地点")
+    private String place;
+
+    @ApiModelProperty("名称")
+    private String scheduleName;
+
+    @ApiModelProperty("类别")
+    private String category;
+
+    @ApiModelProperty("用户id")
+    private String userId;
+
+}

+ 20 - 0
src/main/java/com/xjrsoft/module/schedule/mapper/TodayScheduleMapper.java

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.schedule.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.schedule.dto.TodaySchedulePageDto;
+import com.xjrsoft.module.schedule.entity.TodaySchedule;
+import com.xjrsoft.module.schedule.vo.TodayScheduleVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Author dzx
+ * @Date: 2025327
+ */
+@Mapper
+public interface TodayScheduleMapper extends MPJBaseMapper<TodaySchedule> {
+
+    List<TodayScheduleVo> getList(@Param("dto") TodaySchedulePageDto dto);
+}

+ 21 - 0
src/main/java/com/xjrsoft/module/schedule/service/ITodayScheduleService.java

@@ -0,0 +1,21 @@
+package com.xjrsoft.module.schedule.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.schedule.dto.TodaySchedulePageDto;
+import com.xjrsoft.module.schedule.entity.TodaySchedule;
+import com.xjrsoft.module.schedule.vo.TodayScheduleVo;
+
+import java.util.List;
+
+/**
+ * @title: 今日安排
+ * @Author dzx
+ * @Date: 2025327
+ * @Version 1.0
+ */
+
+public interface ITodayScheduleService extends MPJBaseService<TodaySchedule> {
+
+    List<TodayScheduleVo> getList(TodaySchedulePageDto dto);
+
+}

+ 50 - 0
src/main/java/com/xjrsoft/module/schedule/service/impl/TodayScheduleServiceImpl.java

@@ -0,0 +1,50 @@
+package com.xjrsoft.module.schedule.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.CourseAdjustTypeEnum;
+import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.module.courseTable.entity.CourseTable;
+import com.xjrsoft.module.courseTable.service.ICourseTableService;
+import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.schedule.dto.TodaySchedulePageDto;
+import com.xjrsoft.module.schedule.dto.WfCourseAdjustDto;
+import com.xjrsoft.module.schedule.entity.CourseTableBak;
+import com.xjrsoft.module.schedule.entity.TodaySchedule;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
+import com.xjrsoft.module.schedule.mapper.TodayScheduleMapper;
+import com.xjrsoft.module.schedule.mapper.WfCourseAdjustMapper;
+import com.xjrsoft.module.schedule.service.ICourseTableBakService;
+import com.xjrsoft.module.schedule.service.ITodayScheduleService;
+import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
+import com.xjrsoft.module.schedule.vo.TodayScheduleVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Author dzx
+ * @Date: 2025327
+ * @Version 1.0
+ */
+@Service
+@AllArgsConstructor
+public class TodayScheduleServiceImpl extends MPJBaseServiceImpl<TodayScheduleMapper, TodaySchedule> implements ITodayScheduleService {
+
+    @Override
+    public List<TodayScheduleVo> getList(TodaySchedulePageDto dto) {
+        return this.baseMapper.getList(dto);
+    }
+}

+ 42 - 0
src/main/java/com/xjrsoft/module/schedule/vo/TodayScheduleVo.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.schedule.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 周课表导出
+ */
+@Data
+public class TodayScheduleVo {
+
+    @TableField(fill = FieldFill.INSERT)
+    private Long id;
+
+    @ApiModelProperty("开始时间")
+    private String startTime;
+
+    @ApiModelProperty("结束时间")
+    private String endTime;
+
+    @ApiModelProperty("调整类别")
+    private String adjustType;
+
+    @ApiModelProperty("类别(冲突、调课、顶课)")
+    private String title;
+
+    @ApiModelProperty("地点")
+    private String place;
+
+    @ApiModelProperty("名称")
+    private String scheduleName;
+
+    @ApiModelProperty("类别")
+    private String category;
+
+    @ApiModelProperty("用户id")
+    private String userId;
+}

+ 9 - 0
src/main/resources/mapper/schedule/TodayScheduleMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.room.mapper.TodayScheduleMapper">
+    <select id="getList" parameterType="com.xjrsoft.module.schedule.dto.TodaySchedulePageDto" resultType="com.xjrsoft.module.schedule.vo.TodayScheduleVo">
+        SELECT * FROM today_schedule WHERE FIND_IN_SET(#{dto.userId}, user_id) ORDER BY t1.start_time
+    </select>
+</mapper>