Pārlūkot izejas kodu

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

大数据与最优化研究所 6 mēneši atpakaļ
vecāks
revīzija
b98e6ca2c0

+ 2 - 0
src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassStudentService.java

@@ -57,4 +57,6 @@ public interface IBandingTaskClassStudentService extends MPJBaseService<BandingT
     Boolean insertStudent(ChangeClassDto dto);
 
     Boolean syncStudentData(StudentReportPlan studentReportPlan);
+
+    Boolean changeClassByWorkFlow(Long userId, Long classId);
 }

+ 35 - 0
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

@@ -458,4 +458,39 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
         return true;
     }
 
+    @Override
+    @Transactional
+    public Boolean changeClassByWorkFlow(Long userId, Long classId) {
+        User user = userService.getById(userId);
+        if(user == null){
+            return false;
+        }
+        BaseNewStudent newStudent = newStudentService.getOne(
+                new QueryWrapper<BaseNewStudent>().lambda()
+                        .eq(BaseNewStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseNewStudent::getCredentialNumber, user.getCredentialNumber())
+        );
+        BandingTaskClass taskClass = taskClassMapper.selectOne(
+                new QueryWrapper<BandingTaskClass>().lambda()
+                        .eq(BandingTaskClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BandingTaskClass::getBaseClassId, classId)
+        );
+        if(newStudent != null && taskClass != null){
+            this.remove(
+                    new QueryWrapper<BandingTaskClassStudent>().lambda()
+                            .eq(BandingTaskClassStudent::getNewStudentId, newStudent.getId())
+            );
+
+            this.save(new BandingTaskClassStudent(){{
+                setCreateDate(new Date());
+                setBandingTaskClassId(taskClass.getId());
+                setNewStudentId(newStudent.getId());
+                setStatus(1);
+                setDeleteMark(DeleteMark.NODELETE.getCode());
+                setEnabledMark(EnabledMark.ENABLED.getCode());
+            }});
+        }
+        return null;
+    }
+
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/liteflow/node/StudentChangeClassNode.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.liteflow.node;
 import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.xjrsoft.common.enums.WorkflowApproveType;
+import com.xjrsoft.module.banding.service.IBandingTaskClassStudentService;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.student.entity.StudentChangeClass;
@@ -46,6 +47,9 @@ public class StudentChangeClassNode extends NodeComponent {
     @Autowired
     private IStudentChangeRecordService changeRecordService;
 
+    @Autowired
+    private IBandingTaskClassStudentService taskClassStudentService;
+
     @Override
     public void process() throws Exception {
         // 获取表单中数据编号
@@ -93,6 +97,8 @@ public class StudentChangeClassNode extends NodeComponent {
                         studentSchoolRollService.updateStudentClass(changeClass.getAfterClassId(), baseClass.getMajorSetId(), changeClass.getStudentUserId());
 
                         changeRecordService.insertDataByChangeClass(formId);
+
+                        taskClassStudentService.changeClassByWorkFlow(changeClass.getStudentUserId(), changeClass.getAfterClassId());
                     });
                 }
             });

+ 6 - 0
src/main/java/com/xjrsoft/module/liteflow/node/TemporaryChangeClassNode.java

@@ -5,6 +5,7 @@ import cn.hutool.db.Entity;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.xjrsoft.common.enums.WorkflowApproveType;
 import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.module.banding.service.IBandingTaskClassStudentService;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
@@ -44,6 +45,9 @@ public class TemporaryChangeClassNode extends NodeComponent {
     @Autowired
     private IStudentChangeRecordService changeRecordService;
 
+    @Autowired
+    private IBandingTaskClassStudentService taskClassStudentService;
+
     @Override
     public void process() throws Exception {
         // 获取表单中数据编号
@@ -95,6 +99,8 @@ public class TemporaryChangeClassNode extends NodeComponent {
                         studentSchoolRollService.updateStudentClass(afterClassId, baseClass.getMajorSetId(), studentUserId);
 
                         changeRecordService.insertDataByTemporaryChangeClass(formId);
+
+                        taskClassStudentService.changeClassByWorkFlow(studentUserId, afterClassId);
                     });
                 }
             });

+ 1 - 1
src/main/java/com/xjrsoft/module/oa/utils/SendMessageUtil.java

@@ -116,7 +116,7 @@ public class SendMessageUtil {
                 WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
                 weChatSendMessageDto.setUserId(openId);
                 weChatSendMessageDto.setTemplateId("sHsmz7LRj7HLd7GSTS3r2jCLvK-4Wp19iGzEvYK8n_I");
-                weChatSendMessageDto.setMsgId(param.getTaskId());
+                weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextIdStr());
                 weChatSendMessageDto.setUrl(StrUtil.format("{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo", cpConfig.getDomainApp(), param.getTaskId(), param.getProcessId()));
                 weChatSendMessageDto.setContent(data);
                 weChatUtil.sendTemplateMessage(weChatSendMessageDto);

+ 12 - 3
src/main/resources/mapper/banding/BandingTaskMapper.xml

@@ -9,11 +9,20 @@
         INNER JOIN enrollment_plan a2 ON a1.enrollment_plan_id = a2.id
         WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
         AND a2.grade_id = t.grade_id AND a2.enroll_type = t.enroll_type
-        and a1.is_can_banding = 1
+        AND a1.is_can_banding = 1
         ) AS admissions_count,
-        (SELECT COUNT(*) FROM banding_task_class_student a1
+        IF(t.status = 1,
+        (
+        SELECT COUNT(*) FROM banding_task_class_student_sure a1
         INNER JOIN banding_task_class a2 ON a1.banding_task_class_id = a2.id
-        WHERE a1.delete_mark = 0 AND a2.delete_mark = 0 AND a2.banding_task_id = t.id) AS divided_count
+        WHERE a1.delete_mark = 0 AND a2.delete_mark = 0 AND a2.banding_task_id = t.id
+        ),
+        (
+        SELECT COUNT(*) FROM banding_task_class_student a1
+        INNER JOIN banding_task_class a2 ON a1.banding_task_class_id = a2.id
+        WHERE a1.delete_mark = 0 AND a2.delete_mark = 0 AND a2.banding_task_id = t.id
+        )
+        ) AS divided_count
         FROM banding_task t
         LEFT JOIN base_grade t1 ON (t1.id = t.grade_id)
         LEFT JOIN xjr_dictionary_detail t2 ON (t2.code = t.enroll_type)