فهرست منبع

复读流程所需接口

dzx 8 ماه پیش
والد
کامیت
fcf0b00f87

+ 54 - 0
src/main/java/com/xjrsoft/module/base/controller/BaseGradeController.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.base.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.base.dto.BaseGradePageDto;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.base.service.IBaseGradeService;
+import com.xjrsoft.module.base.vo.BaseGradeVo;
+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.util.List;
+
+/**
+ * @title: 年级管理
+ * @Author dzx
+ * @Date: 2025年3月31日
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/baseGrade")
+@Api(value = "/baseGrade", tags = "年级管理")
+@AllArgsConstructor
+public class BaseGradeController {
+    private final IBaseGradeService gradeService;
+
+    @GetMapping(value = "/list")
+    @ApiOperation(value = "年级列表")
+    @SaCheckPermission("basegrade:detail")
+    @XjrLog(value = "年级列表")
+    public RT<List<BaseGradeVo>> noTokenList(@Valid BaseGradePageDto dto) {
+        List<BaseGrade> list = gradeService.list(
+                new QueryWrapper<BaseGrade>().lambda()
+                        .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseGrade::getEnabledMark, EnabledMark.ENABLED.getCode())
+                        .eq(BaseGrade::getStatus, dto.getStatus())
+                        .like(StrUtil.isNotEmpty(dto.getName()), BaseGrade::getName, dto.getName())
+                        .like(StrUtil.isNotEmpty(dto.getTitle()), BaseGrade::getTitle, dto.getTitle())
+        );
+
+        return RT.ok(BeanUtil.copyToList(list, BaseGradeVo.class));
+    }
+}

+ 53 - 0
src/main/java/com/xjrsoft/module/base/controller/BaseMajorSetController.java

@@ -0,0 +1,53 @@
+package com.xjrsoft.module.base.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.base.dto.BaseMajorSetPageDto;
+import com.xjrsoft.module.base.entity.BaseMajorSet;
+import com.xjrsoft.module.base.service.IBaseMajorSetService;
+import com.xjrsoft.module.base.vo.BaseMajorSetVo;
+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.util.List;
+
+/**
+ * @title: 年级管理
+ * @Author dzx
+ * @Date: 2025年3月31日
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/baseMajorSet")
+@Api(value = "/baseMajorSet", tags = "专业管理")
+@AllArgsConstructor
+public class BaseMajorSetController {
+    private final IBaseMajorSetService majorSetService;
+
+    @GetMapping(value = "/list")
+    @ApiOperation(value = "专业列表")
+    @SaCheckPermission("basemajorset:detail")
+    @XjrLog(value = "专业列表")
+    public RT<List<BaseMajorSetVo>> noTokenList(@Valid BaseMajorSetPageDto dto) {
+        List<BaseMajorSet> list = majorSetService.list(
+                new QueryWrapper<BaseMajorSet>().lambda()
+                        .eq(BaseMajorSet::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseMajorSet::getEnabledMark, EnabledMark.ENABLED.getCode())
+                        .like(StrUtil.isNotEmpty(dto.getName()), BaseMajorSet::getName, dto.getName())
+                        .like(StrUtil.isNotEmpty(dto.getCode()), BaseMajorSet::getCode, dto.getCode())
+        );
+
+        return RT.ok(BeanUtil.copyToList(list, BaseMajorSetVo.class));
+    }
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/base/dto/BaseGradePageDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.base.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author dzx
+ * @date 2025年3月31日
+ */
+@Data
+public class BaseGradePageDto extends PageInput {
+
+    @ApiModelProperty("年级名称")
+    private String name;
+
+    @ApiModelProperty("年份")
+    private String title;
+
+    @ApiModelProperty("在读状态(1:在读 0:毕业)")
+    private Integer status = 1;
+
+
+}

+ 21 - 0
src/main/java/com/xjrsoft/module/base/dto/BaseMajorSetPageDto.java

@@ -0,0 +1,21 @@
+package com.xjrsoft.module.base.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author dzx
+ * @date 2025年3月31日
+ */
+@Data
+public class BaseMajorSetPageDto extends PageInput {
+
+    @ApiModelProperty("专业方向名称")
+    private String name;
+
+    @ApiModelProperty("专业方向代码")
+    private String code;
+
+
+}

+ 50 - 0
src/main/java/com/xjrsoft/module/base/vo/BaseGradeVo.java

@@ -0,0 +1,50 @@
+package com.xjrsoft.module.base.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * @title: 年级
+ * @Author dzx
+ * @Date: 2025年3月31日
+ * @Version 1.0
+ */
+@Data
+public class BaseGradeVo {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+
+    @ApiModelProperty("年级名称")
+    private String name;
+
+    @ApiModelProperty("年份")
+    private String title;
+
+    @ApiModelProperty("在读状态(1:在读 0:毕业)")
+    private Integer status;
+
+}

+ 50 - 0
src/main/java/com/xjrsoft/module/base/vo/BaseMajorSetVo.java

@@ -0,0 +1,50 @@
+package com.xjrsoft.module.base.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * @title: 年级
+ * @Author dzx
+ * @Date: 2025年3月31日
+ * @Version 1.0
+ */
+@Data
+public class BaseMajorSetVo {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+
+    @ApiModelProperty("年级名称")
+    private String name;
+
+    @ApiModelProperty("年份")
+    private String title;
+
+    @ApiModelProperty("在读状态(1:在读 0:毕业)")
+    private Integer status;
+
+}

+ 70 - 0
src/main/java/com/xjrsoft/module/liteflow/node/WfStudentRepeatStudyNode.java

@@ -0,0 +1,70 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+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.workflow.entity.WorkflowRecord;
+import com.xjrsoft.module.workflow.mapper.WorkflowRecordMapper;
+import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.apache.commons.lang.StringUtils;
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.support.TransactionSynchronization;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * 学生复读流程规则
+ */
+@Component("wf_student_repeat_study_node")
+public class WfStudentRepeatStudyNode extends NodeComponent {
+
+    @Autowired
+    private WorkflowRecordMapper workflowRecordMapper;
+
+    @Autowired
+    private IWorkflowExecuteService workflowExecuteService;
+
+
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params, "id");
+        Long formId = Convert.toLong(value);
+        Object processInstanceId = params.get("processInstanceId");
+        if (processInstanceId == null) {
+            return;
+        }
+        String processInstanceIdStr = Convert.toStr(processInstanceId);
+        if (formId != null && StringUtils.isNotEmpty(processInstanceIdStr)) {
+            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
+                @Override
+                public void afterCommit() {
+                    CompletableFuture.runAsync(() -> {
+                        Optional<HistoricProcessInstance> historicProcessInstanceOptional = workflowExecuteService.getHistoricProcessInstance(processInstanceId.toString());
+
+                        if (historicProcessInstanceOptional.isEmpty()) {
+                            return;
+                        }
+                        HistoricProcessInstance historicProcessInstance = historicProcessInstanceOptional.get();
+                        if (historicProcessInstance.getState().equals(HistoricProcessInstance.STATE_COMPLETED)) {
+                            String tableName = "wf_student_repeat_study";
+                            Entity where = Entity.create(tableName);
+                            where.set("id", formId);
+                            Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
+                        }
+                    });
+                }
+            });
+        }
+    }
+}

+ 2 - 0
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -733,6 +733,8 @@ public class DataUtil {
             entity.set("jianyue_id", asJsonObject.get("id").getAsString());
             entity.set("key_info", keyInfo);
             entity.set("course_receive_msg_id", courseReceiveMsgId);
+            entity.set("start_time", asJsonObject.get("startTime").getAsString());
+            entity.set("end_time", asJsonObject.get("endTime").getAsString());
             entityList.add(entity);
         }
         if (!entityList.isEmpty()) {

+ 4 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentSompleInfoVo.java

@@ -67,4 +67,8 @@ public class BaseStudentSompleInfoVo {
     @ContentStyle(dataFormat = 49)
     @ApiModelProperty("教师名称")
     private String classroomName;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("学籍状态")
+    private String archivesStatus;
 }

+ 4 - 0
src/main/resources/application-dev.yml

@@ -116,6 +116,10 @@ xjrsoft:
       - /system/findUserByCode
       - /system/imgcaptcha-answer
       - /student/basestudentinfo/studentinfoByKeyWord
+      - /workflow/execute/new-launch
+      - /system/dictionary-detail
+      - /workflow/execute/start-process-info
+      - /baseGrade/list
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
     host:  #邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>

+ 2 - 1
src/main/resources/mapper/organization/UserMapper.xml

@@ -28,7 +28,8 @@
         SELECT t1.id, t1.name as student_name, t1.enabled_mark, t1.credential_number, t4.name AS class_name,t1.mobile,
         (SELECT name FROM base_student_family_member WHERE delete_mark = 0 AND user_id = t1.id ORDER BY create_date ASC LIMIT 0,1) as parent_name,
         (SELECT mobile FROM base_student_family_member WHERE delete_mark = 0 AND user_id = t1.id ORDER BY create_date ASC LIMIT 0,1) as parent_mobile,
-        t1.gender,t4.id as class_id, t4.teacher_id,t6.name as teacher_name,t6.user_name as teacher_user_name,t6.mobile as teacher_mobile,t5.name as classroom_name
+        t1.gender,t4.id as class_id, t4.teacher_id,t6.name as teacher_name,t6.user_name as teacher_user_name,t6.mobile as teacher_mobile,t5.name as classroom_name,
+        t3.archives_status
         FROM xjr_user t1
         INNER JOIN base_student t2 ON t1.id = t2.user_id
         INNER JOIN base_student_school_roll t3 ON t1.id = t3.user_id