Ver Fonte

1、分班班级调整
2、学生异动视图调整

dzx há 9 meses atrás
pai
commit
d4bc0209cd

+ 8 - 1
src/main/java/com/xjrsoft/module/banding/controller/BandingTaskClassController.java

@@ -7,6 +7,7 @@ import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.banding.dto.AddBandingTaskClassDto;
@@ -158,10 +159,16 @@ public class BandingTaskClassController {
     @XjrLog(value = "删除新生分班")
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
         if(!ids.isEmpty()){
-            classStudentService.remove(
+
+
+            List<BandingTaskClassStudent> list = classStudentService.list(
                     new QueryWrapper<BandingTaskClassStudent>().lambda()
                             .in(BandingTaskClassStudent::getBandingTaskClassId, ids)
+                            .eq(BandingTaskClassStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
             );
+            if(!list.isEmpty()){
+                return RT.error("该班级下已分配学生,无法删除");
+            }
         }
 
         return RT.ok(bandingTaskClassService.delete(ids));

+ 3 - 0
src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassService.java

@@ -8,6 +8,7 @@ import com.xjrsoft.module.banding.entity.BandingTaskClass;
 import com.xjrsoft.module.banding.vo.BandingTaskClassPageVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
+import com.xjrsoft.module.base.entity.BaseClass;
 
 import java.util.List;
 import java.util.Map;
@@ -59,4 +60,6 @@ public interface IBandingTaskClassService extends MPJBaseService<BandingTaskClas
 
     Boolean saveClass(List<UpdateBandingClassDto> dtoList);
 
+
+    Boolean updateByBaseClass(BaseClass baseClass);
 }

+ 112 - 11
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java

@@ -1,11 +1,13 @@
 package com.xjrsoft.module.banding.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.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.enums.YesOrNoEnum;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
@@ -36,6 +38,7 @@ import com.xjrsoft.module.system.entity.DictionaryItem;
 import com.xjrsoft.module.system.mapper.DictionarydetailMapper;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import lombok.AllArgsConstructor;
+import org.camunda.bpm.engine.TaskService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -211,14 +214,25 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
     public Boolean saveClass(List<UpdateBandingClassDto> dtoList) {
         List<BandingTaskClass> insList = new ArrayList<>();//新增班级
         List<BandingTaskClass> updList = new ArrayList<>();//修改班级
-        List<BandingTaskClass> updNullList = new ArrayList<>();
-        List<String> errorList = new ArrayList<>();
+        List<BandingTaskClass> updNullList = new ArrayList<>();//修改班级
+        List<String> errorList = new ArrayList<>();//修改班级
 
-        classMapper.selectList(
+        BandingTask task = bandingTaskMapper.selectById(dtoList.get(0).getBandingTaskId());
+        List<BaseClass> classList = classMapper.selectList(
                 new QueryWrapper<BaseClass>().lambda()
                         .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseClass::getGradeId, task.getGradeId())
         );
 
+        Map<String, BaseClass> classMap = classList.stream().collect(Collectors.toMap(BaseClass::getName, x -> x));
+        List<BaseClass> updateClassList = new ArrayList<>();//修改班级
+        List<BaseClass> insertClassList = new ArrayList<>();//修改班级
+
+        List<BaseMajorSet> majorSetList = majorSetService.list(
+                new QueryWrapper<BaseMajorSet>().lambda()
+                        .eq(BaseMajorSet::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        Map<Long, Long> majorDeptMap = majorSetList.stream().collect(Collectors.toMap(BaseMajorSet::getId, BaseMajorSet::getDepartmentId));
 
         for (UpdateBandingClassDto dto : dtoList) {
             if(dto.getSortCode() != null){
@@ -233,17 +247,37 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
                 }
             }
 
-            BandingTaskClass bandingTask = BeanUtil.toBean(dto, BandingTaskClass.class);
-            if(bandingTask.getId() != null){
-                bandingTask.setModifyDate(new Date());
-                if(bandingTask.getSortCode() == null){
-                    updNullList.add(bandingTask);
+            BandingTaskClass taskClass = BeanUtil.toBean(dto, BandingTaskClass.class);
+            if(taskClass.getId() != null){
+                taskClass.setModifyDate(new Date());
+                if(taskClass.getSortCode() == null){
+                    updNullList.add(taskClass);
                 }else{
-                    updList.add(bandingTask);
+                    updList.add(taskClass);
                 }
             }else{
-                bandingTask.setCreateDate(new Date());
-                insList.add(bandingTask);
+                taskClass.setCreateDate(new Date());
+                insList.add(taskClass);
+            }
+            if(classMap.containsKey(taskClass.getName())){
+                BaseClass baseClass = classMap.get(taskClass.getName());
+                baseClass.setClassType(taskClass.getClassType());
+                baseClass.setTeacherId(taskClass.getTeacherId());
+                baseClass.setMajorSetId(taskClass.getMajorSetId());
+                baseClass.setClassroomId(taskClass.getClassroomId());
+                baseClass.setIsOrderClass(taskClass.getIsOrderClass());
+                baseClass.setOrgId(majorDeptMap.get(taskClass.getMajorSetId()));
+                updateClassList.add(baseClass);
+            }else{
+                BaseClass baseClass = new BaseClass();
+                baseClass.setClassType(taskClass.getClassType());
+                baseClass.setTeacherId(taskClass.getTeacherId());
+                baseClass.setMajorSetId(taskClass.getMajorSetId());
+                baseClass.setClassroomId(taskClass.getClassroomId());
+                baseClass.setIsOrderClass(taskClass.getIsOrderClass());
+                baseClass.setOrgId(majorDeptMap.get(taskClass.getMajorSetId()));
+                baseClass.setGradeId(task.getGradeId());
+                insertClassList.add(baseClass);
             }
         }
         if(!errorList.isEmpty()){
@@ -254,7 +288,74 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
             this.updateNull(updNullList);
         }
 
+        if(!insertClassList.isEmpty()){
+            for (BaseClass baseClass : insertClassList) {
+                classMapper.insert(baseClass);
+            }
+        }
+        if(!updateClassList.isEmpty()){
+            for (BaseClass baseClass : updateClassList) {
+                classMapper.updateById(baseClass);
+            }
+        }
+
         this.saveBatch(insList);
         return this.updateBatchById(updList);
     }
+
+    /**
+     * 班级管理中,修改信息时同步修改新生分班中的班级信息
+     * @param baseClass
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateByBaseClass(BaseClass baseClass) {
+        List<BandingTask> bandingTasks = bandingTaskMapper.selectList(
+                new QueryWrapper<BandingTask>().lambda()
+                        .eq(BandingTask::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BandingTask::getGradeId, baseClass.getGradeId())
+                        .orderByDesc(BandingTask::getId)
+                        .eq(BandingTask::getStatus, 0)
+        );
+        if(bandingTasks.isEmpty()){
+            return true;
+        }
+        BandingTaskClass one = this.getOne(
+                new MPJLambdaWrapper<BandingTaskClass>()
+                        .select(BandingTask::getId)
+                        .select(BandingTask.class, x -> VoToColumnUtil.fieldsToColumns(BandingTask.class).contains(x.getProperty()))
+                        .innerJoin(BandingTask.class, BandingTask::getId, BandingTaskClass::getBandingTaskId)
+                        .eq(BandingTaskClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BandingTaskClass::getName, baseClass.getName())
+                        .eq(BandingTask::getGradeId, baseClass.getGradeId())
+                        .eq(BandingTask::getStatus, 1)
+        );
+        if(one == null){
+            BandingTask task = bandingTasks.get(0);
+            one = new BandingTaskClass();
+            one.setBandingTaskId(task.getId());
+            one.setIsOrderClass(baseClass.getIsOrderClass());
+            one.setClassType(baseClass.getClassType());
+            one.setTeacherId(baseClass.getTeacherId());
+            one.setMajorSetId(baseClass.getMajorSetId());
+            one.setClassroomId(baseClass.getClassroomId());
+            one.setDeleteMark(DeleteMark.NODELETE.getCode());
+            one.setCreateDate(new Date());
+            one.setEnabledMark(EnabledMark.ENABLED.getCode());
+            one.setName(baseClass.getName());
+            one.setCreateUserId(StpUtil.getLoginIdAsLong());
+            this.save(one);
+        }else{
+            one.setIsOrderClass(baseClass.getIsOrderClass());
+            one.setClassType(baseClass.getClassType());
+            one.setTeacherId(baseClass.getTeacherId());
+            one.setMajorSetId(baseClass.getMajorSetId());
+            one.setClassroomId(baseClass.getClassroomId());
+            one.setModifyDate(new Date());
+            one.setModifyUserId(StpUtil.getLoginIdAsLong());
+            this.updateById(one);
+        }
+        return true;
+    }
 }

+ 7 - 0
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassServiceImpl.java

@@ -15,6 +15,7 @@ import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.vo.ClassStatisticsVo;
+import com.xjrsoft.module.banding.service.IBandingTaskClassService;
 import com.xjrsoft.module.base.dto.AddBaseClassPageDto;
 import com.xjrsoft.module.base.dto.BaseClassPageDto;
 import com.xjrsoft.module.base.dto.UpdateBaseClassPageDto;
@@ -58,6 +59,8 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
 
     private final RedisUtil redisUtil;
 
+    private final IBandingTaskClassService bandingTaskClassService;
+
     /**
      * 获取家长关联的学生 id 是家长的ID
      * @param id
@@ -174,6 +177,8 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
         boolean isSuccess = this.save(baseClass);
 
         if(isSuccess){
+            bandingTaskClassService.updateByBaseClass(baseClass);
+
             BaseClassMajorSet majorSet = new BaseClassMajorSet();
             majorSet.setClassId(baseClass.getId());
             majorSet.setMajorSetId(dto.getMajorSetId());
@@ -227,6 +232,8 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
         baseClass.setModifyUserId(StpUtil.getLoginIdAsLong());
         boolean update = this.updateById(baseClass);
         if(update){
+            bandingTaskClassService.updateByBaseClass(baseClass);
+
             BaseClassMajorSet majorSet = majorSetService.getOne(
                     new QueryWrapper<BaseClassMajorSet>().lambda()
                             .eq(BaseClassMajorSet::getClassId, baseClass.getId())

+ 2 - 2
src/main/resources/sqlScript/学生异动视图.sql

@@ -11,7 +11,7 @@ IF(t1.change_type = 'student_type',t1.after_data,NULL) AS newresourcecode,
 IF(t1.change_type = 'stduy_status',t1.after_data,NULL) AS newquartercode,
 t14.code AS newdeptcode,NULL AS newenteryear, NULL AS newleaveyear,NULL AS newratetypecode,
 IF(t1.change_type = 'archives_status',t1.after_data,NULL) AS newstate,
-t16.name AS operator,DATE_FORMAT(t1.create_date, '%Y-%m-%d') AS opertordate,t1.id AS pkfeeobjchange,t2.credential_number AS Personalid,t2.name AS Feeobjname,
+t16.name AS operator,t1.create_date AS opertordate,t1.id AS pkfeeobjchange,t2.credential_number AS Personalid,t2.name AS Feeobjname,
 t17.student_id AS Studentcode,NULL AS biztype,NULL AS delflag,NULL AS updateflag
 FROM student_change_record t1
 INNER JOIN xjr_user t2 ON t1.user_id = t2.id
@@ -51,7 +51,7 @@ CREATE TABLE `test_cse_feeobj_change1`(
          `newratetypecode`  VARCHAR(30) DEFAULT NULL,
          `newstate`  VARCHAR(10) DEFAULT NULL,
          `operator`  VARCHAR(20) DEFAULT NULL,
-         `opertordate`  CHAR(10) DEFAULT NULL,
+         `opertordate`  CHAR(30) DEFAULT NULL,
          `pkfeeobjchange`  VARCHAR(40) DEFAULT NULL,
          `Personalid`  VARCHAR(20) DEFAULT NULL,
          `Feeobjname`  VARCHAR(60) DEFAULT NULL,