소스 검색

1、新生重新分班调整
2、课时调整

dzx 1 년 전
부모
커밋
13126b2aa6

+ 19 - 8
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

@@ -2,9 +2,11 @@ package com.xjrsoft.module.banding.service.impl;
 
 import cn.dev33.satoken.secure.BCrypt;
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.enums.ArchivesStatusEnum;
 import com.xjrsoft.common.enums.DeleteMark;
@@ -55,7 +57,6 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
@@ -205,7 +206,7 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
 
                 /**
                  * 新增学生数据
-                 * 1、新增用户xjr_user
+                 * 1、新增用户xjr_user,需要先查询用户信息是否已经存在
                  * 2、新增用户与角色的关系xjr_user_role_relation
                  * 3、新增学生基本信息base_student
                  * 4、新增学籍信息表base_student_school_roll
@@ -213,12 +214,26 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
                  */
                 LocalDateTime now = LocalDateTime.now();
                 List<String> idNumbers = updateList.stream().map(BaseNewStudent::getCredentialNumber).collect(Collectors.toList());
-                List<User> students = userService.list(new QueryWrapper<User>().lambda().in(User::getCredentialNumber, idNumbers));
-                Map<String, Long> userSet = students.stream().collect(Collectors.toMap(User::getCredentialNumber, User::getId));
+                List<User> students = userService.list(
+                        new MPJLambdaWrapper<User>()
+                                .disableLogicDel()
+                                .in(User::getCredentialNumber, idNumbers)
+                                .orderByAsc(User::getCreateDate)
+                );
+                Map<String, Long> userSet = new HashMap<>();
+                Map<String, Integer> userDeleteMarkMap = new HashMap<>();
+                for (User student : students) {
+                    userSet.put(student.getCredentialNumber(), student.getId());
+                    userDeleteMarkMap.put(student.getCredentialNumber(), student.getDeleteMark());
+                }
                 Map<Long, Long> studentClassRelation = dataList.stream().collect(Collectors.toMap(BandingTaskClassStudent::getNewStudentId, BandingTaskClassStudent::getBandingTaskClassId));
                 for (BaseNewStudent student : updateList) {
                     if(userSet.containsKey(student.getCredentialNumber())){
                         schoolRollService.updateStudentClass(classMap.get(studentClassRelation.get(student.getId())), userSet.get(student.getCredentialNumber()));
+                        Integer deleteMark = userDeleteMarkMap.get(student.getCredentialNumber());
+                        if(deleteMark != null && deleteMark == 1){
+                            userService.recoveryStudentInfo(userSet.get(student.getCredentialNumber()));
+                        }
                         continue;
                     }
                     LocalDate birthDate = getBirthDate(student.getCredentialNumber());
@@ -294,10 +309,6 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
         return true;
     }
 
-    void createStudentData(Long badingTaskId,List<BandingTaskClassStudent> classStudents, List<BaseNewStudent> updateList){
-
-    }
-
     LocalDate getBirthDate(String idCardNumber){
         // 获取出生日期前6位,即yyyyMM
         String birthdayString = idCardNumber.substring(6, 14);

+ 3 - 2
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeCalendarController.java

@@ -10,6 +10,7 @@ import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.classtime.dto.AddClassTimeCalendarDto;
 import com.xjrsoft.module.classtime.dto.ClassTimeCalendarPageDto;
+import com.xjrsoft.module.classtime.dto.RefreshStatisticsDto;
 import com.xjrsoft.module.classtime.dto.UpdateClassTimeCalendarDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
 import com.xjrsoft.module.classtime.service.IClassTimeCalendarService;
@@ -100,8 +101,8 @@ public class ClassTimeCalendarController {
     @PostMapping(value = "/cancel")
     @ApiOperation(value="作废")
     @SaCheckPermission("classtimecalendar:detail")
-    public RT<Boolean> cancel(@Valid @RequestBody Long id) throws Exception {
-        Boolean cancel = classTimeCalendarService.cancel(id);
+    public RT<Boolean> cancel(@Valid @RequestBody RefreshStatisticsDto dto) throws Exception {
+        Boolean cancel = classTimeCalendarService.cancel(dto.getId());
         return RT.ok(cancel);
     }
 

+ 7 - 10
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeDeleteController.java

@@ -2,13 +2,11 @@ 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.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.activity.dto.ChangeStatusDto;
 import com.xjrsoft.module.classtime.dto.AddClassTimeDeleteDto;
 import com.xjrsoft.module.classtime.dto.ClassTimeDeletePageDto;
@@ -30,6 +28,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -52,12 +51,8 @@ public class ClassTimeDeleteController {
     @SaCheckPermission("classtimedelete:detail")
     public RT<PageOutput<ClassTimeDeletePageVo>> page(@Valid ClassTimeDeletePageDto dto){
 
-        LambdaQueryWrapper<ClassTimeDelete> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper
-                    .orderByDesc(ClassTimeDelete::getId)
-                .select(ClassTimeDelete.class,x -> VoToColumnUtil.fieldsToColumns(ClassTimeDeletePageVo.class).contains(x.getProperty()));
-        IPage<ClassTimeDelete> page = classTimeDeleteService.page(ConventPage.getPage(dto), queryWrapper);
-        PageOutput<ClassTimeDeletePageVo> pageOutput = ConventPage.getPageOutput(page, ClassTimeDeletePageVo.class);
+        Page<ClassTimeDeletePageVo> pages = classTimeDeleteService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<ClassTimeDeletePageVo> pageOutput = ConventPage.getPageOutput(pages, ClassTimeDeletePageVo.class);
         return RT.ok(pageOutput);
     }
 
@@ -78,8 +73,9 @@ public class ClassTimeDeleteController {
     @SaCheckPermission("classtimedelete:add")
     public RT<Boolean> add(@Valid @RequestBody AddClassTimeDeleteDto dto){
         ClassTimeDelete classTimeDelete = BeanUtil.toBean(dto, ClassTimeDelete.class);
+        classTimeDelete.setCreateDate(new Date());
         boolean isSuccess = classTimeDeleteService.save(classTimeDelete);
-    return RT.ok(isSuccess);
+        return RT.ok(isSuccess);
     }
 
     @PutMapping
@@ -88,6 +84,7 @@ public class ClassTimeDeleteController {
     public RT<Boolean> update(@Valid @RequestBody UpdateClassTimeDeleteDto dto){
 
         ClassTimeDelete classTimeDelete = BeanUtil.toBean(dto, ClassTimeDelete.class);
+        classTimeDelete.setModifyDate(new Date());
         return RT.ok(classTimeDeleteService.updateById(classTimeDelete));
 
     }

+ 9 - 0
src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeDeletePageDto.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.classtime.dto;
 
 import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -15,5 +16,13 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = false)
 public class ClassTimeDeletePageDto extends PageInput {
 
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("删除类型(xjr_dictionary_item[class_time_delete])")
+    private String type;
+
+    @ApiModelProperty("状态(0:生效 1:锁定 2:作废)")
+    private Integer status;
 
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeDeleteMapper.java

@@ -1,8 +1,12 @@
 package com.xjrsoft.module.classtime.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.classtime.dto.ClassTimeDeletePageDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
+import com.xjrsoft.module.classtime.vo.ClassTimeDeletePageVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @title: 课时删除
@@ -13,4 +17,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface ClassTimeDeleteMapper extends MPJBaseMapper<ClassTimeDelete> {
 
+    Page<ClassTimeDeletePageVo> getPage(Page<ClassTimeDeletePageVo> page, @Param("dto") ClassTimeDeletePageDto dto);
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/classtime/service/IClassTimeDeleteService.java

@@ -1,7 +1,11 @@
 package com.xjrsoft.module.classtime.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.classtime.dto.ClassTimeDeletePageDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
+import com.xjrsoft.module.classtime.vo.ClassTimeDeletePageVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @title: 课时删除
@@ -11,4 +15,6 @@ import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
 */
 
 public interface IClassTimeDeleteService extends MPJBaseService<ClassTimeDelete> {
+
+    Page<ClassTimeDeletePageVo> getPage(Page<ClassTimeDeletePageVo> page, ClassTimeDeletePageDto dto);
 }

+ 7 - 0
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeDeleteServiceImpl.java

@@ -1,9 +1,12 @@
 package com.xjrsoft.module.classtime.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.classtime.dto.ClassTimeDeletePageDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
 import com.xjrsoft.module.classtime.mapper.ClassTimeDeleteMapper;
 import com.xjrsoft.module.classtime.service.IClassTimeDeleteService;
+import com.xjrsoft.module.classtime.vo.ClassTimeDeletePageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -16,4 +19,8 @@ import org.springframework.stereotype.Service;
 @Service
 @AllArgsConstructor
 public class ClassTimeDeleteServiceImpl extends MPJBaseServiceImpl<ClassTimeDeleteMapper, ClassTimeDelete> implements IClassTimeDeleteService {
+    @Override
+    public Page<ClassTimeDeletePageVo> getPage(Page<ClassTimeDeletePageVo> page, ClassTimeDeletePageDto dto) {
+        return this.baseMapper.getPage(page, dto);
+    }
 }

+ 13 - 29
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeDeletePageVo.java

@@ -22,43 +22,24 @@ public class ClassTimeDeletePageVo {
     /**
     * 创建人
     */
-    @ApiModelProperty("创建人")
-    private Long createUserId;
+    @ApiModelProperty("操作人")
+    private String operationUserName;
     /**
     * 创建时间
     */
-    @ApiModelProperty("创建时间")
-    private Date createDate;
-    /**
-    * 修改人
-    */
-    @ApiModelProperty("修改人")
-    private Long modifyUserId;
-    /**
-    * 修改时间
-    */
-    @ApiModelProperty("修改时间")
-    private Date modifyDate;
-    /**
-    * 删除标记
-    */
-    @ApiModelProperty("删除标记")
-    private Integer deleteMark;
-    /**
-    * 有效标志
-    */
-    @ApiModelProperty("有效标志(0:作废 1:启用 2:锁定)")
-    private Integer enabledMark;
-    /**
-    * 删除类型(xjr_dictionary_item[class_time_delete])
-    */
+    @ApiModelProperty("操作时间")
+    private Date operationDate;
+
     @ApiModelProperty("删除类型(xjr_dictionary_item[class_time_delete])")
     private String type;
+
+    @ApiModelProperty("删除类型-中文")
+    private String typeCn;
     /**
     * 类别(1:权重 2:费用设置)
     */
-    @ApiModelProperty("类别(1:权重 2:费用设置)")
-    private Integer classId;
+    @ApiModelProperty("班级名称")
+    private String className;
     /**
     * 删除说明
     */
@@ -75,4 +56,7 @@ public class ClassTimeDeletePageVo {
     @ApiModelProperty("结束日期")
     private Date endDate;
 
+    @ApiModelProperty("状态(0:生效 1:锁定 2:作废)")
+    private Integer status;
+
 }

+ 1 - 0
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -261,6 +261,7 @@ public class DataUtil {
         return insertStudentOne(tableName, tableData, studentList, null);
     }
 
+
     public Map<String, String> insertStudentOne(String tableName, Map<String, String> tableData, List<HikvisionData> studentList, Long userId) throws InterruptedException {
         String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',replace(t4.name,'级',''),'-',t3.class_type,'-',t2.stduy_status) as orgIndexCode," +
                 " t1.user_name,t1.gender,DATE_FORMAT(t1.birth_date, '%Y-%m-%d') as birthday,t1.mobile,t1.email,t1.credential_type,t1.credential_number FROM xjr_user t1" +

+ 2 - 0
src/main/java/com/xjrsoft/module/organization/service/IUserService.java

@@ -83,4 +83,6 @@ public interface IUserService extends MPJBaseService<User> {
 
     Page<PersonPageVo> personPage(Page<PersonPageVo> page, PersonPageDto dto);
 
+    Boolean recoveryStudentInfo(Long userId);
+
 }

+ 55 - 0
src/main/java/com/xjrsoft/module/organization/service/impl/UserServiceImpl.java

@@ -5,9 +5,11 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 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.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -16,11 +18,15 @@ import com.fasterxml.jackson.core.type.TypeReference;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
+import com.xjrsoft.module.hikvision.entity.HikvisionData;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
+import com.xjrsoft.module.hikvision.util.DataUtil;
 import com.xjrsoft.module.organization.dto.AddUserDto;
 import com.xjrsoft.module.organization.dto.BindOpenidDto;
 import com.xjrsoft.module.organization.dto.PersonPageDto;
@@ -79,6 +85,7 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
 
     private final CommonPropertiesConfig propertiesConfig;
 
+    private HikvisionDataMapper hikvisionDataMapper;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean add(AddUserDto dto) {
@@ -371,4 +378,52 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
         return result;
     }
 
+    /**
+     * 恢复学生信息
+     * 1、新增 xjr_user_role_relation数据
+     * 2、恢复 xjr_user数据
+     * 3、恢复 base_student_school_roll数据
+     * 4、恢复 base_student数据
+     * 5、恢复 base_student_family数据
+     * 6、重新往海康推送数据
+     * @param userId
+     * @return
+     */
+    @Override
+    public Boolean recoveryStudentInfo(Long userId){
+        try {
+            String sql = "update xjr_user set delete_mark = 0 where id = " + userId;
+            SqlRunnerAdapter.db().update(sql);
+
+            long id = IdUtil.getSnowflakeNextId();
+            sql = "INSERT INTO xjr_user_role_relation (id, user_id, role_id) SELECT " + id
+                    + ", " + userId + ", 3 WHERE NOT EXISTS (SELECT * FROM xjr_user_role_relation WHERE role_id = 3 and user_id = " + userId + ")";
+            SqlRunnerAdapter.db().insert(sql);
+
+            sql = "update base_student_school_roll set delete_mark = 0 where user_id = " + userId;
+            SqlRunnerAdapter.db().update(sql);
+
+            sql = "update base_student_school_roll set delete_mark = 0 where user_id = " + userId;
+            SqlRunnerAdapter.db().update(sql);
+
+            sql = "update base_student set delete_mark = 0 where user_id = " + userId;
+            SqlRunnerAdapter.db().update(sql);
+
+            sql = "update base_student_family set delete_mark = 0 where user_id = " + userId;
+            SqlRunnerAdapter.db().update(sql);
+
+            DataUtil dataUtil = new DataUtil();
+            String tableName = "base_student";
+            List<HikvisionData> studentList = hikvisionDataMapper.selectList(
+                    new QueryWrapper<HikvisionData>().lambda().eq(HikvisionData::getTableName, tableName)
+            );
+            dataUtil.insertStudentOne(tableName, null, studentList, userId);
+
+            return true;
+        }catch (Exception e){
+            log.error(e.getMessage());
+            throw new MyException("恢复学生数据出错,请联系管理员");
+        }
+    }
+
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/student/service/impl/BaseNewStudentServiceImpl.java

@@ -282,6 +282,11 @@ public class BaseNewStudentServiceImpl extends MPJBaseServiceImpl<BaseNewStudent
         return this.baseMapper.getMajorStudentCount(bandingTaskId);
     }
 
+    /**
+     * 删除数据后,将学生从海康平台中删除
+     * @param dto
+     * @return
+     */
     @Override
     public Boolean deleteByUserIds(DeleteNewStudentDto dto) {
         List<BaseNewStudent> studentList = this.baseMapper.selectBatchIds(dto.getIds());

+ 24 - 0
src/main/resources/mapper/classtime/ClassTimeDeleteMapper.xml

@@ -0,0 +1,24 @@
+<?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.classtime.mapper.ClassTimeDeleteMapper">
+    <select id="getPage" parameterType="com.xjrsoft.module.classtime.dto.ClassTimeDeletePageDto" resultType="com.xjrsoft.module.classtime.vo.ClassTimeDeletePageVo">
+        SELECT t1.id, t2.name AS class_name,t3.name AS type_cn,t1.type,t4.name AS operation_user_name,t1.remark,
+        t1.start_date,t1.end_date,t1.status,IFNULL(t1.modify_date,t1.create_date) AS operation_time FROM class_time_delete t1
+        INNER JOIN base_class t2 ON t1.class_id = t2.id
+        LEFT JOIN xjr_dictionary_detail t3 ON t1.type = t3.code
+        LEFT JOIN xjr_user t4 ON IFNULL(t1.modify_user_id, t1.create_user_id) = t4.id
+        WHERE t1.delete_mark = 0
+        <if test="dto.className != null and dto.className != ''">
+            and t2.name like concat('%', #{dto.className},'%')
+        </if>
+        <if test="dto.type != null and dto.type != ''">
+            and t1.type = #{dto.type}
+        </if>
+        <if test="dto.status != null">
+            and t1.status = #{dto.status}
+        </if>
+    </select>
+
+</mapper>