Browse Source

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

dzx 1 year ago
parent
commit
6ab1256cc6
27 changed files with 619 additions and 136 deletions
  1. 42 0
      src/main/java/com/xjrsoft/common/enums/MaterialCategoryEnum.java
  2. 1 2
      src/main/java/com/xjrsoft/module/material/controller/MaterialTaskController.java
  3. 10 10
      src/main/java/com/xjrsoft/module/material/controller/MaterialTypeController.java
  4. 24 10
      src/main/java/com/xjrsoft/module/material/dto/AddMaterialTaskDto.java
  5. 15 6
      src/main/java/com/xjrsoft/module/material/dto/AddMaterialTypeDto.java
  6. 15 2
      src/main/java/com/xjrsoft/module/material/dto/MaterialTypePageDto.java
  7. 5 0
      src/main/java/com/xjrsoft/module/material/entity/MaterialTask.java
  8. 16 0
      src/main/java/com/xjrsoft/module/material/entity/MaterialType.java
  9. 3 2
      src/main/java/com/xjrsoft/module/material/service/IMaterialTaskService.java
  10. 8 0
      src/main/java/com/xjrsoft/module/material/service/IMaterialTypeService.java
  11. 32 10
      src/main/java/com/xjrsoft/module/material/service/impl/MaterialTaskServiceImpl.java
  12. 146 0
      src/main/java/com/xjrsoft/module/material/service/impl/MaterialTypeServiceImpl.java
  13. 43 28
      src/main/java/com/xjrsoft/module/material/vo/MaterialTypePageVo.java
  14. 43 4
      src/main/java/com/xjrsoft/module/material/vo/MaterialTypeVo.java
  15. 10 50
      src/main/java/com/xjrsoft/module/student/controller/ConsumptionController.java
  16. 3 0
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentMapper.java
  17. 8 3
      src/main/java/com/xjrsoft/module/student/service/IStudentManagerService.java
  18. 10 3
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentSchoolRollServiceImpl.java
  19. 29 4
      src/main/java/com/xjrsoft/module/student/service/impl/StudentManagerServiceImpl.java
  20. 12 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentInfoDetailVo.java
  21. 92 0
      src/main/java/com/xjrsoft/module/student/vo/StudentPersonalInfoVo.java
  22. 5 0
      src/main/java/com/xjrsoft/module/workflow/controller/WorkflowExecuteController.java
  23. 2 0
      src/main/java/com/xjrsoft/module/workflow/service/IWorkflowExecuteService.java
  24. 11 0
      src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java
  25. 23 0
      src/main/resources/mapper/student/BaseStudentMapper.xml
  26. 3 0
      src/main/resources/mapper/student/BaseStudentSchoolRollMapper.xml
  27. 8 2
      src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java

+ 42 - 0
src/main/java/com/xjrsoft/common/enums/MaterialCategoryEnum.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @author dzx
+ * @date 2023/12/1
+ * 学籍状态
+ */
+public enum MaterialCategoryEnum {
+
+    /**
+     * 在读
+     * */
+    MT0001("MT0001", "附件"),
+    /**
+     * 休学
+     * */
+    MT0002("MT0002", "表单");
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    public static String getValue(String code) {
+        for (MaterialCategoryEnum item : values()) {
+            if (item.getCode().equals(code)) {
+                return  item.getValue();
+            }
+        }
+        return null;
+    }
+
+    MaterialCategoryEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 1 - 2
src/main/java/com/xjrsoft/module/material/controller/MaterialTaskController.java

@@ -166,8 +166,7 @@ public class MaterialTaskController {
     @ApiOperation(value = "新增材料提交任务")
     @SaCheckPermission("materialtask:add")
     public RT<Long> add(@Valid @RequestBody AddMaterialTaskDto dto) {
-        MaterialTask materialTask = BeanUtil.toBean(dto, MaterialTask.class);
-        return RT.ok(materialTaskService.add(materialTask));
+        return RT.ok(materialTaskService.add(dto));
     }
 
     @PutMapping

+ 10 - 10
src/main/java/com/xjrsoft/module/material/controller/MaterialTypeController.java

@@ -8,14 +8,18 @@ import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.enums.MaterialCategoryEnum;
 import com.xjrsoft.common.model.result.R;
 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.app.dto.UpdateEnableMarkDto;
+import com.xjrsoft.module.form.entity.FormTemplate;
+import com.xjrsoft.module.form.service.IFormTemplateService;
 import com.xjrsoft.module.material.dto.AddMaterialTypeAssignDto;
 import com.xjrsoft.module.material.dto.AddMaterialTypeDto;
 import com.xjrsoft.module.material.dto.MaterialTypeAssignPageDto;
@@ -30,6 +34,8 @@ import com.xjrsoft.module.material.vo.MaterialTypePageVo;
 import com.xjrsoft.module.material.vo.MaterialTypeVo;
 import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.system.entity.File;
+import com.xjrsoft.module.system.service.IFileService;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -72,13 +78,7 @@ public class MaterialTypeController {
     @ApiOperation(value="材料提交任务类型列表(分页)")
     @SaCheckPermission("materialtype:detail")
     public RT<PageOutput<MaterialTypePageVo>> page(@Valid MaterialTypePageDto dto){
-
-        LambdaQueryWrapper<MaterialType> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper
-                    .orderByDesc(MaterialType::getId)
-                .select(MaterialType.class,x -> VoToColumnUtil.fieldsToColumns(MaterialTypePageVo.class).contains(x.getProperty()));
-        IPage<MaterialType> page = materialTypeService.page(ConventPage.getPage(dto), queryWrapper);
-        PageOutput<MaterialTypePageVo> pageOutput = ConventPage.getPageOutput(page, MaterialTypePageVo.class);
+        PageOutput<MaterialTypePageVo> pageOutput = materialTypeService.getPage(dto);
         return RT.ok(pageOutput);
     }
 
@@ -101,11 +101,11 @@ public class MaterialTypeController {
     @ApiOperation(value="根据id查询材料提交任务类型信息")
     @SaCheckPermission("materialtype:detail")
     public RT<MaterialTypeVo> info(@RequestParam Long id){
-        MaterialType materialType = materialTypeService.getByIdDeep(id);
-        if (materialType == null) {
+        MaterialTypeVo materialTypeVo = materialTypeService.getInfoById(id);
+        if (materialTypeVo == null) {
            return RT.error("找不到此数据!");
         }
-        return RT.ok(BeanUtil.toBean(materialType, MaterialTypeVo.class));
+        return RT.ok(materialTypeVo);
     }
 
 

+ 24 - 10
src/main/java/com/xjrsoft/module/material/dto/AddMaterialTaskDto.java

@@ -21,21 +21,21 @@ public class AddMaterialTaskDto implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 任务名称
+     */
+    @ApiModelProperty("任务名称")
+    private String name;
     /**
     * 材料提交任务类型(material_type)
     */
     @ApiModelProperty("材料提交任务类型(material_type)")
     private Long materialTypeId;
     /**
-    * 任务名称
-    */
-    @ApiModelProperty("任务名称")
-    private String name;
-    /**
-    * 状态 1=未开始 2=进行中 3=结束
-    */
-    @ApiModelProperty("状态 1=未开始 2=进行中 3=结束")
-    private Integer status;
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
     /**
     * 要求完成日期
     */
@@ -67,12 +67,26 @@ public class AddMaterialTaskDto implements Serializable {
     */
     @ApiModelProperty("延迟提交")
     private Integer timeDelay;
-
+    /**
+     * 状态 1=未开始 2=进行中 3=结束
+     */
+    @ApiModelProperty("状态 1=未开始 2=进行中 3=结束")
+    private Integer status;
     /**
     * materialTaskAssign
     */
 //    @ApiModelProperty("materialTaskAssign子表")
 //    private List<AddMaterialTaskAssignDto> materialTaskAssignList;
+    /**
+     * 用户列表
+     */
+    @ApiModelProperty("用户列表")
+    private List<MaterialAssignUserDto> userList;
+    /**
+     * 发送消息状态 0=未不发 1=已发送
+     */
+    @ApiModelProperty("发送消息状态 0=未不发 1=已发送")
+    private Integer sendMessageStatus;
     /**
     * materialTaskAppendix
     */

+ 15 - 6
src/main/java/com/xjrsoft/module/material/dto/AddMaterialTypeDto.java

@@ -1,10 +1,11 @@
 package com.xjrsoft.module.material.dto;
 
+import com.xjrsoft.module.system.entity.File;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-
+import java.util.List;
 
 
 /**
@@ -23,11 +24,19 @@ public class AddMaterialTypeDto implements Serializable {
     */
     @ApiModelProperty("任务名称")
     private String name;
-
     /**
-     * 有效标志
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
      */
-    @ApiModelProperty("有效标志")
-    private Integer enabledMark;
-
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private Long folderId;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private Long formReleaseId;
 }

+ 15 - 2
src/main/java/com/xjrsoft/module/material/dto/MaterialTypePageDto.java

@@ -1,6 +1,9 @@
 package com.xjrsoft.module.material.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
 import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -14,6 +17,16 @@ import lombok.EqualsAndHashCode;
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class MaterialTypePageDto extends PageInput {
-
-
+    /**
+     * 任务名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("任务名称")
+    @ApiModelProperty("任务名称")
+    private String name;
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/material/entity/MaterialTask.java

@@ -78,6 +78,11 @@ public class MaterialTask implements Serializable {
     */
     @ApiModelProperty("材料提交任务类型(material_type)")
     private Long materialTypeId;
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
     /**
     * 任务名称
     */

+ 16 - 0
src/main/java/com/xjrsoft/module/material/entity/MaterialType.java

@@ -77,6 +77,22 @@ public class MaterialType implements Serializable {
     @ApiModelProperty("任务名称")
     private String name;
 
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
+
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private Long folderId;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private Long formReleaseId;
     /**
     * materialTypeAssign
     */

+ 3 - 2
src/main/java/com/xjrsoft/module/material/service/IMaterialTaskService.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.material.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.material.dto.AddMaterialTaskDto;
 import com.xjrsoft.module.material.dto.MaterialTaskAssignAppendixDto;
 import com.xjrsoft.module.material.entity.MaterialTask;
 
@@ -17,10 +18,10 @@ public interface IMaterialTaskService extends MPJBaseService<MaterialTask> {
     /**
     * 新增
     *
-    * @param materialTask
+    * @param dto
     * @return
     */
-    Long add(MaterialTask materialTask);
+    Long add(AddMaterialTaskDto dto);
 
     /**
     * 更新

+ 8 - 0
src/main/java/com/xjrsoft/module/material/service/IMaterialTypeService.java

@@ -1,7 +1,11 @@
 package com.xjrsoft.module.material.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.module.material.dto.MaterialTypePageDto;
 import com.xjrsoft.module.material.entity.MaterialType;
+import com.xjrsoft.module.material.vo.MaterialTypePageVo;
+import com.xjrsoft.module.material.vo.MaterialTypeVo;
 
 import java.util.List;
 
@@ -36,4 +40,8 @@ public interface IMaterialTypeService extends MPJBaseService<MaterialType> {
     * @return
     */
     Boolean delete(List<Long> ids);
+
+    PageOutput<MaterialTypePageVo> getPage(MaterialTypePageDto dto);
+
+    MaterialTypeVo getInfoById(Long id);
 }

+ 32 - 10
src/main/java/com/xjrsoft/module/material/service/impl/MaterialTaskServiceImpl.java

@@ -1,8 +1,11 @@
 package com.xjrsoft.module.material.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.xjrsoft.module.material.dto.AddMaterialTaskAppendixDto;
+import com.xjrsoft.module.material.dto.AddMaterialTaskDto;
+import com.xjrsoft.module.material.dto.MaterialAssignUserDto;
 import com.xjrsoft.module.material.dto.MaterialTaskAssignAppendixDto;
 import com.xjrsoft.module.material.entity.MaterialTask;
 import com.xjrsoft.module.material.entity.MaterialTaskAppendix;
@@ -36,19 +39,38 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Long add(MaterialTask materialTask) {
-        materialTaskMaterialTaskMapper.insert(materialTask);
-        if (materialTask.getMaterialTaskAssignList() != null && materialTask.getMaterialTaskAssignList().size() > 0) {
-            for (MaterialTaskAssign materialTaskAssign : materialTask.getMaterialTaskAssignList()) {
-                materialTaskAssign.setMaterialTaskId(materialTask.getId());
-                materialTaskMaterialTaskAssignMapper.insert(materialTaskAssign);
-            }
+    public Long add(AddMaterialTaskDto dto) {
+        MaterialTask materialTask = BeanUtil.toBean(dto, MaterialTask.class);
+        materialTask.setStatus(2);
+        if(dto.getUserList() == null && !dto.getUserList().isEmpty()){
+            materialTask.setSubmitedPerson(dto.getUserList().size());
         }
-        for (MaterialTaskAppendix materialTaskAppendix : materialTask.getMaterialTaskAppendixList()) {
-            materialTaskAppendix.setMaterialTaskId(materialTask.getId());
-            materialTaskMaterialTaskAppendixMapper.insert(materialTaskAppendix);
+        materialTaskMaterialTaskMapper.insert(materialTask);
+
+        for (MaterialAssignUserDto materialAssignUserDto : dto.getUserList()){
+            materialTaskMaterialTaskAssignMapper.insert(new MaterialTaskAssign(){{
+                setMaterialTaskId(materialTask.getId());
+                setUserId(materialAssignUserDto.getUserId());
+                setUserType(materialAssignUserDto.getUserType());
+                setUserNumber(materialAssignUserDto.getUserNumber());
+                setStatus(1);
+                setExecutiveStatus(1);
+                setSendMessage(dto.getSendMessageStatus());
+            }});
         }
 
+//        materialTaskMaterialTaskMapper.insert(materialTask);
+//        if (materialTask.getMaterialTaskAssignList() != null && materialTask.getMaterialTaskAssignList().size() > 0) {
+//            for (MaterialTaskAssign materialTaskAssign : materialTask.getMaterialTaskAssignList()) {
+//                materialTaskAssign.setMaterialTaskId(materialTask.getId());
+//                materialTaskMaterialTaskAssignMapper.insert(materialTaskAssign);
+//            }
+//        }
+//        for (MaterialTaskAppendix materialTaskAppendix : materialTask.getMaterialTaskAppendixList()) {
+//            materialTaskAppendix.setMaterialTaskId(materialTask.getId());
+//            materialTaskMaterialTaskAppendixMapper.insert(materialTaskAppendix);
+//        }
+
         return materialTask.getId();
     }
 

+ 146 - 0
src/main/java/com/xjrsoft/module/material/service/impl/MaterialTypeServiceImpl.java

@@ -1,12 +1,28 @@
 package com.xjrsoft.module.material.service.impl;
 
+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.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.MaterialCategoryEnum;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.form.entity.FormRelease;
+import com.xjrsoft.module.form.entity.FormTemplate;
+import com.xjrsoft.module.form.service.IFormTemplateService;
+import com.xjrsoft.module.material.dto.MaterialTypePageDto;
 import com.xjrsoft.module.material.entity.MaterialType;
 import com.xjrsoft.module.material.entity.MaterialTypeAssign;
 import com.xjrsoft.module.material.mapper.MaterialTypeAssignMapper;
 import com.xjrsoft.module.material.mapper.MaterialTypeMapper;
 import com.xjrsoft.module.material.service.IMaterialTypeService;
+import com.xjrsoft.module.material.vo.MaterialTypePageVo;
+import com.xjrsoft.module.material.vo.MaterialTypeVo;
+import com.xjrsoft.module.system.entity.File;
+import com.xjrsoft.module.system.service.IFileService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -26,7 +42,9 @@ public class MaterialTypeServiceImpl extends MPJBaseServiceImpl<MaterialTypeMapp
 
     private final MaterialTypeAssignMapper materialTypeMaterialTypeAssignMapper;
 
+    private final IFileService fileService;
 
+    private final IFormTemplateService formTemplateService;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(MaterialType materialType) {
@@ -83,4 +101,132 @@ public class MaterialTypeServiceImpl extends MPJBaseServiceImpl<MaterialTypeMapp
 
         return true;
     }
+
+    @Override
+    public PageOutput<MaterialTypePageVo> getPage(MaterialTypePageDto dto) {
+        LambdaQueryWrapper<MaterialType> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .orderByDesc(MaterialType::getId)
+                .select(MaterialType.class,x -> VoToColumnUtil.fieldsToColumns(MaterialTypePageVo.class).contains(x.getProperty()))
+                .like(dto.getName() != null && !dto.getName().equals(""), MaterialType::getName, dto.getName())
+                .eq(dto.getMaterialCategory() != null && !dto.getMaterialCategory().equals(""), MaterialType::getMaterialCategory, dto.getMaterialCategory());
+        IPage<MaterialType> page = this.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<MaterialTypePageVo> pageOutput = ConventPage.getPageOutput(page, MaterialTypePageVo.class);
+
+        for (MaterialTypePageVo materialTypePageVo : pageOutput.getList()){
+            String materialCategoryStr = materialTypePageVo.getMaterialCategory();
+            String[] materialCategoryStrArr = materialCategoryStr.split(",");
+
+            for (String category : materialCategoryStrArr) {
+                if (category != null) {
+                    String categoryValue = MaterialCategoryEnum.getValue(category);
+                    if (categoryValue != null) {
+                        if (materialTypePageVo.getMaterialCategoryCn() != null && materialTypePageVo.getMaterialCategoryCn().length() > 0) {
+                            materialTypePageVo.setMaterialCategoryCn(materialTypePageVo.getMaterialCategoryCn() + "," + categoryValue);
+                        } else {
+                            materialTypePageVo.setMaterialCategoryCn(categoryValue);
+                        }
+                        handleFileAndTemplate(materialTypePageVo, category);
+                    }
+                }
+            }
+        }
+        return pageOutput;
+    }
+
+    @Override
+    public MaterialTypeVo getInfoById(Long id) {
+        LambdaQueryWrapper<MaterialType> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .orderByDesc(MaterialType::getId)
+                .select(MaterialType.class,x -> VoToColumnUtil.fieldsToColumns(MaterialTypeVo.class).contains(x.getProperty()))
+                .eq(MaterialType::getId, id);
+        MaterialType materialType = this.getOne(queryWrapper);
+
+        MaterialTypeVo materialTypeVo = BeanUtil.toBean(materialType, MaterialTypeVo.class);
+
+        String materialCategoryStr = materialTypeVo.getMaterialCategory();
+        String[] materialCategoryStrArr = materialCategoryStr.split(",");
+
+        for (String category : materialCategoryStrArr) {
+            if (category != null) {
+                String categoryValue = MaterialCategoryEnum.getValue(category);
+                if (categoryValue != null) {
+                    if (materialTypeVo.getMaterialCategoryCn() != null && materialTypeVo.getMaterialCategoryCn().length() > 0) {
+                        materialTypeVo.setMaterialCategoryCn(materialTypeVo.getMaterialCategoryCn() + "," + categoryValue);
+                    } else {
+                        materialTypeVo.setMaterialCategoryCn(categoryValue);
+                    }
+
+                    if (MaterialCategoryEnum.MT0001.getCode().equals(category) && materialTypeVo.getFolderId() != null) {
+                        List<File> files = getFileListByFolderId(materialTypeVo.getFolderId());
+                        if (!files.isEmpty()) {
+                            materialTypeVo.setFiles(files);
+                            materialTypeVo.setFolderIdCn(files.get(0).getFileName());
+                            if (materialTypeVo.getTemplatePreview() != null && materialTypeVo.getTemplatePreview().length() > 0) {
+                                materialTypeVo.setTemplatePreview(materialTypeVo.getTemplatePreview() + "," + files.get(0).getFileName());
+                            } else {
+                                materialTypeVo.setTemplatePreview(files.get(0).getFileName());
+                            }
+                        }
+                    } else if (MaterialCategoryEnum.MT0002.getCode().equals(category) && materialTypeVo.getFormReleaseId() != null) {
+                        FormTemplate formTemplate = getFormTemplateById(materialTypeVo.getFormReleaseId());
+                        if (formTemplate != null) {
+                            String templateName = formTemplate.getName();
+                            materialTypeVo.setFormReleaseIdCn(templateName);
+                            if (materialTypeVo.getTemplatePreview() != null && materialTypeVo.getTemplatePreview().length() > 0) {
+                                materialTypeVo.setTemplatePreview(materialTypeVo.getTemplatePreview() + "," + templateName);
+                            } else {
+                                materialTypeVo.setTemplatePreview(templateName);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        return materialTypeVo;
+    }
+
+    private void handleFileAndTemplate(MaterialTypePageVo materialTypePageVo, String category) {
+        if (MaterialCategoryEnum.MT0001.getCode().equals(category) && materialTypePageVo.getFolderId() != null) {
+            List<File> files = getFileListByFolderId(materialTypePageVo.getFolderId());
+            if (!files.isEmpty()) {
+                materialTypePageVo.setFiles(files);
+                materialTypePageVo.setFolderIdCn(files.get(0).getFileName());
+                if (materialTypePageVo.getTemplatePreview() != null && materialTypePageVo.getTemplatePreview().length() > 0) {
+                    materialTypePageVo.setTemplatePreview(materialTypePageVo.getTemplatePreview() + "," + files.get(0).getFileName());
+                } else {
+                    materialTypePageVo.setTemplatePreview(files.get(0).getFileName());
+                }
+            }
+        } else if (MaterialCategoryEnum.MT0002.getCode().equals(category) && materialTypePageVo.getFormReleaseId() != null) {
+            FormTemplate formTemplate = getFormTemplateById(materialTypePageVo.getFormReleaseId());
+            if (formTemplate != null) {
+                String templateName = formTemplate.getName();
+                materialTypePageVo.setFormReleaseIdCn(templateName);
+                if (materialTypePageVo.getTemplatePreview() != null && materialTypePageVo.getTemplatePreview().length() > 0) {
+                    materialTypePageVo.setTemplatePreview(materialTypePageVo.getTemplatePreview() + "," + templateName);
+                } else {
+                    materialTypePageVo.setTemplatePreview(templateName);
+                }
+            }
+        }
+    }
+
+    private List<File> getFileListByFolderId(Long folderId) {
+        return fileService.list(Wrappers.<File>query().lambda().eq(File::getFolderId, folderId));
+    }
+
+    private FormTemplate getFormTemplateById(Long formReleaseId) {
+        MPJLambdaWrapper<FormTemplate> formTemplateLambdaQueryWrapper = new MPJLambdaWrapper<>();
+        formTemplateLambdaQueryWrapper
+                .disableSubLogicDel()
+                .disableLogicDel()
+                .orderByDesc(FormTemplate::getSortCode)
+                .select(FormTemplate.class, x -> VoToColumnUtil.fieldsToColumns(FormTemplate.class).contains(x.getProperty()))
+                .leftJoin(FormRelease.class, FormRelease::getFormId, FormTemplate::getId)
+                .eq(FormRelease::getId, formReleaseId);
+        return formTemplateService.getOne(formTemplateLambdaQueryWrapper);
+    }
 }

+ 43 - 28
src/main/java/com/xjrsoft/module/material/vo/MaterialTypePageVo.java

@@ -2,10 +2,12 @@ package com.xjrsoft.module.material.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.module.system.entity.File;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
 * @title: 材料提交任务类型分页列表出参
@@ -24,34 +26,6 @@ public class MaterialTypePageVo {
     @ApiModelProperty("主键编号")
     private String id;
     /**
-    * 创建人
-    */
-    @ContentStyle(dataFormat = 49)
-    @ExcelProperty("创建人")
-    @ApiModelProperty("创建人")
-    private Long createUserId;
-    /**
-    * 创建时间
-    */
-    @ContentStyle(dataFormat = 49)
-    @ExcelProperty("创建时间")
-    @ApiModelProperty("创建时间")
-    private LocalDateTime createDate;
-    /**
-    * 修改人
-    */
-    @ContentStyle(dataFormat = 49)
-    @ExcelProperty("修改人")
-    @ApiModelProperty("修改人")
-    private Long modifyUserId;
-    /**
-    * 修改时间
-    */
-    @ContentStyle(dataFormat = 49)
-    @ExcelProperty("修改时间")
-    @ApiModelProperty("修改时间")
-    private LocalDateTime modifyDate;
-    /**
     * 删除标记
     */
     @ContentStyle(dataFormat = 49)
@@ -72,5 +46,46 @@ public class MaterialTypePageVo {
     @ExcelProperty("任务名称")
     @ApiModelProperty("任务名称")
     private String name;
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategoryCn;
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private Long folderId;
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private String folderIdCn;
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private List<File> files;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private Long formReleaseId;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private String formReleaseIdCn;
+
+    /**
+     * 模板预览
+     */
+    @ApiModelProperty("模板预览")
+    private String templatePreview;
 
 }

+ 43 - 4
src/main/java/com/xjrsoft/module/material/vo/MaterialTypeVo.java

@@ -1,5 +1,8 @@
 package com.xjrsoft.module.material.vo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.module.system.entity.File;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -24,12 +27,48 @@ public class MaterialTypeVo {
     */
     @ApiModelProperty("任务名称")
     private String name;
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
 
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategoryCn;
 
     /**
-    * materialTypeAssign
-    */
-    @ApiModelProperty("materialTypeAssign子表")
-    private List<MaterialTypeAssignVo> materialTypeAssignList;
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private Long folderId;
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private String folderIdCn;
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private List<File> files;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private Long formReleaseId;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private String formReleaseIdCn;
+
+    /**
+     * 模板预览
+     */
+    @ApiModelProperty("模板预览")
+    private String templatePreview;
 
 }

+ 10 - 50
src/main/java/com/xjrsoft/module/student/controller/ConsumptionController.java

@@ -1,25 +1,16 @@
 package com.xjrsoft.module.student.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import cn.dev33.satoken.stp.StpUtil;
 import com.xjrsoft.common.model.result.RT;
-import com.xjrsoft.common.page.ConventPage;
-import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.module.student.dto.BaseStudentInfoPageDto;
-import com.xjrsoft.module.student.dto.UpdateBaseStudentInfoDto;
-import com.xjrsoft.module.student.service.impl.IBaseStudentSchoolRollService;
-import com.xjrsoft.module.student.vo.BaseStudentInfoDetailVo;
-import com.xjrsoft.module.student.vo.BaseStudentInfoPageDataVo;
-import com.xjrsoft.module.student.vo.BaseStudentInfoPageVo;
+import com.xjrsoft.module.student.service.IStudentManagerService;
+import com.xjrsoft.module.student.vo.StudentPersonalInfoVo;
 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.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
@@ -35,44 +26,13 @@ import javax.validation.Valid;
 @Api(value = "/student"  + "/consumption",tags = "学生消费管理")
 @AllArgsConstructor
 public class ConsumptionController {
-
-
-    private final IBaseStudentSchoolRollService baseStudentSchoolRollService;
-
-    @GetMapping(value = "/mobile-page")
-    @ApiOperation(value="学生列表(分页)")
-    @SaCheckPermission("basestudentpost:detail")
-    public RT<PageOutput<BaseStudentInfoPageVo>> mobilePage(@Valid BaseStudentInfoPageDto dto){
-        Page<BaseStudentInfoPageVo> mobilePage = baseStudentSchoolRollService.getMobilePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
-        PageOutput<BaseStudentInfoPageVo> pageOutput = ConventPage.getPageOutput(mobilePage, BaseStudentInfoPageVo.class);
-        return RT.ok(pageOutput);
-    }
-
-    @GetMapping(value = "/mobile-page-statistics")
-    @ApiOperation(value="学生列表人数统计")
-    @SaCheckPermission("basestudentpost:detail")
-    public RT<BaseStudentInfoPageDataVo> mobilePageStatistics(@Valid BaseStudentInfoPageDto dto){
-        BaseStudentInfoPageDataVo result = baseStudentSchoolRollService.getMobilePageStatistics(dto);
-        return RT.ok(result);
-    }
-
-
-    @PutMapping
-    @ApiOperation(value = "修改学生信息")
-    @SaCheckPermission("basestudentpost:edit")
-    public RT<Boolean> update(@Valid @RequestBody UpdateBaseStudentInfoDto dto){
-        return RT.ok(baseStudentSchoolRollService.updateInfo(dto));
-    }
-
-    @GetMapping(value = "/info")
-    @ApiOperation(value="根据id查询详情信息")
-    @SaCheckPermission("room:detail")
-    public RT<BaseStudentInfoDetailVo> info(@RequestParam Long id){
-        BaseStudentInfoDetailVo detailVo = baseStudentSchoolRollService.getInfoById(id);
-        if (detailVo == null) {
-            return RT.error("找不到此数据!");
-        }
-        return RT.ok(BeanUtil.toBean(detailVo, BaseStudentInfoDetailVo.class));
+    private final IStudentManagerService studentManagerService;
+    @GetMapping(value = "/personal-info")
+    @ApiOperation(value="学生个人信息")
+    @SaCheckPermission("consumption:detail")
+    public RT<StudentPersonalInfoVo> personalInfo(@Valid BaseStudentInfoPageDto dto){
+        StudentPersonalInfoVo info = studentManagerService.getPersonalInfo(StpUtil.getLoginIdAsLong());
+        return RT.ok(info);
     }
 
 

+ 3 - 0
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentMapper.java

@@ -7,6 +7,7 @@ import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
 import com.xjrsoft.module.student.vo.StudentInfoVo;
+import com.xjrsoft.module.student.vo.StudentPersonalInfoVo;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -27,4 +28,6 @@ public interface BaseStudentMapper extends MPJBaseMapper<BaseStudent> {
     StudentInfoVo getStudentInfo(Long userId);
 
     List<StudentJianyuekbVo> getJianyueStudentList();
+
+    StudentPersonalInfoVo getPersonalInfo(Long userId);
 }

+ 8 - 3
src/main/java/com/xjrsoft/module/student/service/IStudentManagerService.java

@@ -1,11 +1,9 @@
 package com.xjrsoft.module.student.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseService;
-import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
 import com.xjrsoft.module.student.entity.BaseStudentUser;
 import com.xjrsoft.module.student.vo.BaseStudentClassVo;
-import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
+import com.xjrsoft.module.student.vo.StudentPersonalInfoVo;
 
 import java.util.List;
 
@@ -42,4 +40,11 @@ public interface IStudentManagerService extends MPJBaseService<BaseStudentUser>
      * @return
      */
     BaseStudentClassVo getStudentClass(Long userId);
+
+    /**
+     * 个人财务画像,获取学生个人信息
+     * @param userId
+     * @return
+     */
+    StudentPersonalInfoVo getPersonalInfo(Long userId);
 }

+ 10 - 3
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentSchoolRollServiceImpl.java

@@ -79,13 +79,20 @@ public class BaseStudentSchoolRollServiceImpl extends MPJBaseServiceImpl<BaseStu
 
     @Override
     public BaseStudentInfoPageDataVo getMobilePageStatistics(BaseStudentInfoPageDto dto) {
+        List<String> roleList = StpUtil.getRoleList();
+
         long teacherId = StpUtil.getLoginIdAsLong();
         List<BaseClass> classList = baseClassMapper.selectList(
                 new QueryWrapper<BaseClass>().lambda().eq(BaseClass::getTeacherId, teacherId)
         );
-
-        if (classList != null && !classList.isEmpty()) {
-            dto.setTeacherId(teacherId);
+        if(roleList.size() == 1 && roleList.contains("CLASSTE")){
+            if(classList != null && !classList.isEmpty()){
+                dto.setTeacherId(teacherId);
+            }
+        }else{
+            if(classList != null && !classList.isEmpty() &&  dto.getClassId() == null){
+                dto.setClassId(classList.get(0).getId());
+            }
         }
 
         List<BaseStudentInfoCategoryVo> genderCount = baseStudentSchoolRollMapper.getGenderCount(dto);

+ 29 - 4
src/main/java/com/xjrsoft/module/student/service/impl/StudentManagerServiceImpl.java

@@ -2,17 +2,16 @@ package com.xjrsoft.module.student.service.impl;
 
 import cn.dev33.satoken.secure.BCrypt;
 import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import cn.hutool.core.util.StrUtil;
+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.enums.RoleEnum;
-import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
-import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.BaseStudentContact;
 import com.xjrsoft.module.student.entity.BaseStudentFamily;
@@ -29,7 +28,7 @@ import com.xjrsoft.module.student.mapper.BaseStudentSubsidizeMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentUserMapper;
 import com.xjrsoft.module.student.service.IStudentManagerService;
 import com.xjrsoft.module.student.vo.BaseStudentClassVo;
-import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
+import com.xjrsoft.module.student.vo.StudentPersonalInfoVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -305,4 +304,30 @@ public class StudentManagerServiceImpl extends MPJBaseServiceImpl<BaseStudentUse
 
         return BeanUtil.toBean(baseClass, BaseStudentClassVo.class);
     }
+
+    /**
+     * 个人财务画像,获取学生个人信息
+     * @param userId
+     * @return
+     */
+    @Override
+    public StudentPersonalInfoVo getPersonalInfo(Long userId) {
+        StudentPersonalInfoVo info = studentbaseManagerBaseStudentMapper.getPersonalInfo(userId);
+        List<BaseStudentFamilyMember> members = studentbaseManagerBaseStudentFamilyMemberMapper.selectList(
+            new QueryWrapper<BaseStudentFamilyMember>().lambda()
+            .eq(BaseStudentFamilyMember::getUserId, userId)
+            .eq(BaseStudentFamilyMember::getIsGuardian, 1)
+        );
+        String guardianPhone = "";
+        for (int i = 0; i < members.size(); i ++){
+            if(i > 0){
+                guardianPhone += ",";
+            }
+            guardianPhone += members.get(i).getMobile();
+        }
+        if(StrUtil.isNotEmpty(guardianPhone)){
+            info.setGuardianPhone(guardianPhone);
+        }
+        return info;
+    }
 }

+ 12 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentInfoDetailVo.java

@@ -96,4 +96,16 @@ public class BaseStudentInfoDetailVo {
     private String nation;
 
     private String majorSetName;
+
+    /**
+     * 性别
+     */
+    @ApiModelProperty("性别")
+    private String gender;
+
+    /**
+     * 性别中文
+     */
+    @ApiModelProperty("性别中文")
+    private String genderCn;
 }

+ 92 - 0
src/main/java/com/xjrsoft/module/student/vo/StudentPersonalInfoVo.java

@@ -0,0 +1,92 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 班级专业方向表表单出参
+* @Author szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+public class StudentPersonalInfoVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long userId;
+    /**
+    * 学生姓名
+    */
+    @ApiModelProperty("学生姓名")
+    private String name;
+    /**
+    * 性别中文
+    */
+    @ApiModelProperty("性别中文")
+    private String genderCn;
+    /**
+    * 班级名称
+    */
+    @ApiModelProperty("班级名称")
+    private String className;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+    /**
+    * 出生日期
+    */
+    @ApiModelProperty("出生日期")
+    private Date birthDate;
+    /**
+    * 本人手机号
+    */
+    @ApiModelProperty("本人手机号")
+    private String mobile;
+
+    @ApiModelProperty("学籍状态中文")
+    private String archivesStatusCn;
+
+    @ApiModelProperty("学习形式中文")
+    private String rollModalityCn;
+
+    @ApiModelProperty("学号")
+    private String studentId;
+
+    @ApiModelProperty("专业方向名称")
+    private String majorSetName;
+
+    @ApiModelProperty("就读方式")
+    private String stduyStatusCn;
+
+
+    @ApiModelProperty("班主任名称")
+    private String teacherName;
+
+
+    @ApiModelProperty("班主任电话")
+    private String teacherPhone;
+
+
+    @ApiModelProperty("床位编号")
+    private String bedNumber;
+
+    @ApiModelProperty("寝室名称")
+    private String roomName;
+
+    @ApiModelProperty("楼栋名称")
+    private String buildName;
+
+    @ApiModelProperty("是否低保户(1:是 0:否)")
+    private Integer isIndemnify;
+
+    @ApiModelProperty("监护人电话")
+    private String guardianPhone;
+
+}

+ 5 - 0
src/main/java/com/xjrsoft/module/workflow/controller/WorkflowExecuteController.java

@@ -133,6 +133,11 @@ public class WorkflowExecuteController {
         return R.ok(workflowExecuteService.newApprove(dto));
     }
 
+    @GetMapping("/check-audited")
+    @ApiOperation(value = "检查是否已经审核")
+    public R checkAudited(@RequestParam String taskId) {
+        return R.ok(workflowExecuteService.checkAudited(taskId));
+    }
 
     @GetMapping("/approve/multi-info")
     @ApiOperation(value = "批量审批获取流程信息")

+ 2 - 0
src/main/java/com/xjrsoft/module/workflow/service/IWorkflowExecuteService.java

@@ -114,6 +114,8 @@ public interface IWorkflowExecuteService {
      */
     List<LaunchAndApproveVo> newApprove(ApproveDto dto);
 
+    Boolean checkAudited(String taskId);
+
 
     List<ApproveMultiVo> approveMulti(ApproveMultiDto dto);
 

+ 11 - 0
src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java

@@ -2034,6 +2034,17 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
         return result;
     }
 
+    @Override
+    public Boolean checkAudited(String taskId) {
+        //根据taskid  获取任务信息
+        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+
+        if (task == null) {
+            return false;
+        }
+        return true;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public List<ApproveMultiVo> approveMulti(ApproveMultiDto dto) {

+ 23 - 0
src/main/resources/mapper/student/BaseStudentMapper.xml

@@ -21,4 +21,27 @@
         AND t1.student_id IS NOT NULL AND t1.student_id != ''
         AND t3.archives_status = 'FB2901';
     </select>
+
+    <!--个人财务画像,查询学生个人信息-->
+    <select id="getPersonalInfo" resultType="com.xjrsoft.module.student.vo.StudentPersonalInfoVo">
+        SELECT t1.user_id,t2.name,t5.name AS gender_cn,t4.name AS class_name,t2.credential_number,t2.birth_date,t2.mobile,
+        t6.name AS archives_status_cn,t7.name AS roll_modality_cn,t1.student_id,t8.name AS major_set_name,
+        t9.name AS stduy_status_cn,t10.name AS teacher_name,t10.mobile AS teacher_phone,t11.bed_number,t12.room_name,
+        t13.name AS build_name,t14.is_indemnify FROM base_student t1
+        INNER JOIN xjr_user t2 ON t1.user_id = t2.id
+        INNER JOIN base_student_school_roll t3 ON t2.id = t3.user_id
+        LEFT JOIN base_class t4 ON t4.id = t3.class_id
+        LEFT JOIN xjr_dictionary_detail t5 ON t2.gender = t5.code AND t5.item_id = 2023000000000000004
+        LEFT JOIN xjr_dictionary_detail t6 ON t3.archives_status = t6.code AND t6.item_id = 2023000000000000029
+        LEFT JOIN xjr_dictionary_detail t7 ON t3.roll_modality = t7.code AND t7.item_id = 1762024751192084482
+        LEFT JOIN base_major_set t8 ON t3.major_set_id  = t8.id
+        LEFT JOIN xjr_dictionary_detail t9 ON t3.stduy_status = t9.code AND t9.item_id = 2023000000000000030
+        LEFT JOIN xjr_user t10 ON t4.teacher_id = t10.id
+        LEFT JOIN room_bed t11 ON t1.user_id = t11.student_user_id
+        LEFT JOIN room t12 ON t11.room_id = t12.id
+        LEFT JOIN base_office_build t13 ON t12.office_build_id = t13.id
+        LEFT JOIN base_student_subsidize t14 ON t1.user_id = t14.user_id
+        WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
+        AND t2.id = #{id}
+    </select>
 </mapper>

+ 3 - 0
src/main/resources/mapper/student/BaseStudentSchoolRollMapper.xml

@@ -46,6 +46,8 @@
         SELECT t2.id,
                t2.name                                                                                                       AS student_name,
                t2.mobile                                                                                                       AS phone,
+               t2.gender,
+               t11.name                                                                                                        AS genderCn,
                t1.student_id,
                t5.name                                                                                                       AS teacher_name,
                t5.mobile                                                                                                     AS teacher_phone,
@@ -76,6 +78,7 @@
                  LEFT JOIN xjr_dictionary_detail t8 ON t8.code = t3.archives_status AND t8.item_id = 2023000000000000029
                  LEFT JOIN xjr_dictionary_detail t9 ON t9.code = t3.roll_modality AND t9.item_id = 1762024751192084482
                  LEFT JOIN base_major_set t10 ON t3.major_set_id = t10.id
+                 LEFT JOIN xjr_dictionary_detail t11 ON t11.code = t2.gender
         WHERE t2.id = #{id}
     </select>
     <update id="updateInfoByUserId" parameterType="com.xjrsoft.module.student.dto.UpdateBaseStudentInfoDto">

+ 8 - 2
src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java

@@ -34,8 +34,14 @@ public class StrTest {
     }
     @Test
     public void list2StrTest() {
-        List<String> list = new ArrayList();
-        String joined = String.join(",", list);
+//        List<String> list = new ArrayList();
+//        String joined = String.join(",", list);
+
+        String t = "kjk,klj,lkk,lkjd";
+        String[] ta = new String[2];
+//        ta = t.split(",");
+        System.err.println(ta[0]);
+
 
     }