Просмотр исходного кода

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

dzx 1 год назад
Родитель
Сommit
c85a4c39a8
24 измененных файлов с 605 добавлено и 104 удалено
  1. 2 4
      src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultIndexPageDto.java
  2. 22 4
      src/main/java/com/xjrsoft/module/personnel/controller/BasePersonnelLabourCapitalController.java
  3. 22 0
      src/main/java/com/xjrsoft/module/personnel/dto/BasePersonnelLabourCapitalMonthPageDto.java
  4. 22 0
      src/main/java/com/xjrsoft/module/personnel/dto/BasePersonnelLabourCapitalYearPageDto.java
  5. 15 7
      src/main/java/com/xjrsoft/module/personnel/mapper/BasePersonnelLabourCapitalMapper.java
  6. 10 0
      src/main/java/com/xjrsoft/module/personnel/service/IBasePersonnelLabourCapitalService.java
  7. 43 0
      src/main/java/com/xjrsoft/module/personnel/service/impl/BasePersonnelLabourCapitalServiceImpl.java
  8. 58 0
      src/main/java/com/xjrsoft/module/personnel/vo/BasePersonnelLabourCapitalMonthPageVo.java
  9. 57 0
      src/main/java/com/xjrsoft/module/personnel/vo/BasePersonnelLabourCapitalYearPageVo.java
  10. 6 21
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentGraduateController.java
  11. 6 6
      src/main/java/com/xjrsoft/module/student/dto/BaseStudentGraduatePageDto.java
  12. 6 0
      src/main/java/com/xjrsoft/module/student/dto/QuantitativeAssessmentExcelDto.java
  13. 1 1
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentAssessmentInspectionMapper.java
  14. 4 1
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentGraduateMapper.java
  15. 8 0
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentGraduateService.java
  16. 60 16
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentAssessmentInspectionServiceImpl.java
  17. 49 1
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentGraduateServiceImpl.java
  18. 0 4
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentGraduatePageVo.java
  19. 37 10
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentGraduateVo.java
  20. 25 18
      src/main/java/com/xjrsoft/module/student/vo/QuantitativeAssessmentSubTableExcelVo.java
  21. 64 0
      src/main/resources/mapper/personnel/BasePersonnelLabourCapitalMapper.xml
  22. 44 1
      src/main/resources/mapper/student/BaseStudentAssessmentInspectionMapper.xml
  23. 30 10
      src/main/resources/mapper/student/BaseStudentGraduateMapper.xml
  24. 14 0
      src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java

+ 2 - 4
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultIndexPageDto.java

@@ -5,8 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.time.LocalDateTime;
-
 
 /**
 * @title: 评价结果分页查询入参
@@ -45,12 +43,12 @@ public class EvaluateResultIndexPageDto extends PageInput {
      * 开始时间
      */
     @ApiModelProperty("开始时间")
-    private LocalDateTime startTime;
+    private String startTime;
 
     /**
      * 结束时间
      */
     @ApiModelProperty("结束时间")
-    private LocalDateTime endTime;
+    private String endTime;
 
 }

+ 22 - 4
src/main/java/com/xjrsoft/module/personnel/controller/BasePersonnelLabourCapitalController.java

@@ -6,20 +6,20 @@ 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.extension.plugins.pagination.Page;
 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.personnel.dto.AddBasePersonnelLabourCapitalDto;
-import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalPageDto;
-import com.xjrsoft.module.personnel.dto.ImportBasePersonnelLabourCapitalDto;
-import com.xjrsoft.module.personnel.dto.UpdateBasePersonnelLabourCapitalDto;
+import com.xjrsoft.module.personnel.dto.*;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapital;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalData;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalTitle;
 import com.xjrsoft.module.personnel.service.IBasePersonnelLabourCapitalService;
 import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalPageVo;
 import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalVo;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalMonthPageVo;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalYearPageVo;
 import com.xjrsoft.module.weekly.dto.WeeklyDutySchedulePageDto;
 import com.xjrsoft.module.weekly.vo.WeeklyDutyScheduleListVo;
 import com.yomahub.liteflow.util.JsonUtil;
@@ -75,6 +75,24 @@ public class BasePersonnelLabourCapitalController {
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/monthpage")
+    @ApiOperation(value="手机端月工资条发放列表(分页)")
+    @SaCheckPermission("basepersonnellabourcapital:detail")
+    public RT<PageOutput<BasePersonnelLabourCapitalMonthPageVo>> monthPage(@Valid BasePersonnelLabourCapitalMonthPageDto dto){
+        Page<BasePersonnelLabourCapitalMonthPageVo> page = basePersonnelLabourCapitalService.getMonthPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<BasePersonnelLabourCapitalMonthPageVo> pageOutput = ConventPage.getPageOutput(page, BasePersonnelLabourCapitalMonthPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/yearpage")
+    @ApiOperation(value="手机端年工资条发放列表(分页)")
+    @SaCheckPermission("basepersonnellabourcapital:detail")
+    public RT<PageOutput<BasePersonnelLabourCapitalYearPageVo>> yearPage(@Valid BasePersonnelLabourCapitalYearPageDto dto){
+        Page<BasePersonnelLabourCapitalYearPageVo> page = basePersonnelLabourCapitalService.getYearPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<BasePersonnelLabourCapitalYearPageVo> pageOutput = ConventPage.getPageOutput(page, BasePersonnelLabourCapitalYearPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
     @GetMapping(value = "/info")
     @ApiOperation(value="根据id查询工资发放信息")
     @SaCheckPermission("basepersonnellabourcapital:detail")

+ 22 - 0
src/main/java/com/xjrsoft/module/personnel/dto/BasePersonnelLabourCapitalMonthPageDto.java

@@ -0,0 +1,22 @@
+package com.xjrsoft.module.personnel.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @title: 月工资条分页查询入参
+ * @Author brealinxx
+ * @Date: 2024-01-25
+ * @Version 1.0
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BasePersonnelLabourCapitalMonthPageDto extends PageInput {
+    @ApiModelProperty("年份")
+    public int year;
+
+    @ApiModelProperty("月份")
+    public int month;
+}

+ 22 - 0
src/main/java/com/xjrsoft/module/personnel/dto/BasePersonnelLabourCapitalYearPageDto.java

@@ -0,0 +1,22 @@
+package com.xjrsoft.module.personnel.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @title: 年工资条分页查询入参
+ * @Author brealinxx
+ * @Date: 2024-01-25
+ * @Version 1.0
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BasePersonnelLabourCapitalYearPageDto extends PageInput {
+    @ApiModelProperty("年份")
+    public int year;
+
+    @ApiModelProperty("发放项目")
+    public String project;
+}

+ 15 - 7
src/main/java/com/xjrsoft/module/personnel/mapper/BasePersonnelLabourCapitalMapper.java

@@ -1,16 +1,24 @@
 package com.xjrsoft.module.personnel.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalMonthPageDto;
+import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalYearPageDto;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapital;
+import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalData;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalMonthPageVo;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalYearPageVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
-* @title: 工资发放
-* @Author dzx
-* @Date: 2023-11-08
-* @Version 1.0
-*/
+ * @title: 月工资条数据
+ * @Author brealinxx
+ * @Date: 2024-01-25
+ * @Version 1.0
+ */
 @Mapper
-public interface BasePersonnelLabourCapitalMapper extends MPJBaseMapper<BasePersonnelLabourCapital> {
-
+public interface BasePersonnelLabourCapitalMapper extends MPJBaseMapper<BasePersonnelLabourCapital>{
+    Page<BasePersonnelLabourCapitalMonthPageVo> getMonthPage(Page<BasePersonnelLabourCapitalMonthPageDto> page, BasePersonnelLabourCapitalMonthPageDto dto);
+    Page<BasePersonnelLabourCapitalYearPageVo> getYearPage(Page<BasePersonnelLabourCapitalYearPageDto> page, BasePersonnelLabourCapitalYearPageDto dto);
 }
+

+ 10 - 0
src/main/java/com/xjrsoft/module/personnel/service/IBasePersonnelLabourCapitalService.java

@@ -1,7 +1,14 @@
 package com.xjrsoft.module.personnel.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalMonthPageDto;
+import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalYearPageDto;
+import com.xjrsoft.module.personnel.dto.LaborManagementPageDto;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapital;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalMonthPageVo;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalYearPageVo;
+import com.xjrsoft.module.personnel.vo.LaborManagementPageVo;
 
 import java.util.List;
 
@@ -36,4 +43,7 @@ public interface IBasePersonnelLabourCapitalService extends MPJBaseService<BaseP
     * @return
     */
     Boolean delete(List<Long> ids);
+
+    Page<BasePersonnelLabourCapitalMonthPageVo> getMonthPage(Page<BasePersonnelLabourCapitalMonthPageDto> page, BasePersonnelLabourCapitalMonthPageDto dto);
+    Page<BasePersonnelLabourCapitalYearPageVo> getYearPage(Page<BasePersonnelLabourCapitalYearPageDto> page, BasePersonnelLabourCapitalYearPageDto dto);
 }

+ 43 - 0
src/main/java/com/xjrsoft/module/personnel/service/impl/BasePersonnelLabourCapitalServiceImpl.java

@@ -1,7 +1,12 @@
 package com.xjrsoft.module.personnel.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalMonthPageDto;
+import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalYearPageDto;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapital;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalData;
 import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalTitle;
@@ -9,11 +14,15 @@ import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalDataMapper;
 import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalMapper;
 import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalTitleMapper;
 import com.xjrsoft.module.personnel.service.IBasePersonnelLabourCapitalService;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalMonthPageVo;
+import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalYearPageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -31,6 +40,40 @@ public class BasePersonnelLabourCapitalServiceImpl extends MPJBaseServiceImpl<Ba
     private final BasePersonnelLabourCapitalDataMapper basePersonnelLabourCapitalBasePersonnelLabourCapitalDataMapper;
     private final BasePersonnelLabourCapitalTitleMapper basePersonnelLabourCapitalBasePersonnelLabourCapitalTitleMapper;
 
+    @Override
+    public Page<BasePersonnelLabourCapitalMonthPageVo> getMonthPage(Page<BasePersonnelLabourCapitalMonthPageDto> page, BasePersonnelLabourCapitalMonthPageDto dto) {
+        Page<BasePersonnelLabourCapitalMonthPageVo> resultPage = basePersonnelLabourCapitalBasePersonnelLabourCapitalMapper.getMonthPage(page, dto);
+
+        for (BasePersonnelLabourCapitalMonthPageVo record : resultPage.getRecords()) {
+            JSONObject extendJsonObj = JSON.parseObject(record.getPendingJson());
+            Map<String, Object> newDict = new HashMap<>();
+
+            for (String key : extendJsonObj.keySet()) {
+                String bpName = getBpName(key);
+                if (bpName != null) {
+                    newDict.put(bpName, extendJsonObj.getString(key));
+                }
+            }
+
+            record.setDict(newDict);
+        }
+
+        return resultPage;
+    }
+
+    @Override
+    public Page<BasePersonnelLabourCapitalYearPageVo> getYearPage(Page<BasePersonnelLabourCapitalYearPageDto> page, BasePersonnelLabourCapitalYearPageDto dto) {
+        return basePersonnelLabourCapitalBasePersonnelLabourCapitalMapper.getYearPage(page, dto);
+    }
+
+    private String getBpName(String columnNumber) {
+        List<BasePersonnelLabourCapitalTitle> bpTitles = basePersonnelLabourCapitalBasePersonnelLabourCapitalTitleMapper.selectList(Wrappers.<BasePersonnelLabourCapitalTitle>lambdaQuery().eq(BasePersonnelLabourCapitalTitle::getColumnNumber, columnNumber));
+        if (bpTitles != null && !bpTitles.isEmpty()) {
+            return bpTitles.get(0).getName();
+        } else {
+            return null;
+        }
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)

+ 58 - 0
src/main/java/com/xjrsoft/module/personnel/vo/BasePersonnelLabourCapitalMonthPageVo.java

@@ -0,0 +1,58 @@
+package com.xjrsoft.module.personnel.vo;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.qiniu.util.Json;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @title: 月工资条分页列表出参
+ * @Author brealinxx
+ * @Date: 2024-01-25
+ * @Version 1.0
+ */
+@Data
+public class BasePersonnelLabourCapitalMonthPageVo {
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键")
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("姓名")
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("部门")
+    @ApiModelProperty("部门")
+    private String dept;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("总计")
+    @ApiModelProperty("总计")
+    private float amount;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("待处理json")
+    @ApiModelProperty("待处理json")
+    private String pendingJson;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("月工资明细")
+    @ApiModelProperty("月工资明细")
+    private Map<String, Object> dict;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("月份")
+    @ApiModelProperty("月份")
+    private int month;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("年份")
+    @ApiModelProperty("年份")
+    private int year;
+}

+ 57 - 0
src/main/java/com/xjrsoft/module/personnel/vo/BasePersonnelLabourCapitalYearPageVo.java

@@ -0,0 +1,57 @@
+package com.xjrsoft.module.personnel.vo;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.qiniu.util.Json;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @title: 年工资条分页列表出参
+ * @Author brealinxx
+ * @Date: 2024-01-25
+ * @Version 1.0
+ */
+@Data
+public class BasePersonnelLabourCapitalYearPageVo {
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键")
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("姓名")
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("项目名称")
+    @ApiModelProperty("项目名称")
+    private String project;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("部门")
+    @ApiModelProperty("部门")
+    private String dept;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("月份")
+    @ApiModelProperty("月份")
+    private int month;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("金额")
+    @ApiModelProperty("金额")
+    private float amount;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("月金额")
+    @ApiModelProperty("月金额")
+    private float monthAmount;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("年金额")
+    @ApiModelProperty("年金额")
+    private float yearAmount;
+}

+ 6 - 21
src/main/java/com/xjrsoft/module/student/controller/BaseStudentGraduateController.java

@@ -19,14 +19,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-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 org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
@@ -64,20 +57,19 @@ public class BaseStudentGraduateController {
     @ApiOperation(value="根据id查询学生毕业管理信息")
     @SaCheckPermission("basestudentgraduate:detail")
     public RT<BaseStudentGraduateVo> info(@RequestParam Long id){
-        BaseStudentGraduate baseStudentGraduate = baseStudentGraduateService.getById(id);
-        if (baseStudentGraduate == null) {
+        BaseStudentGraduateVo baseStudentGraduateVo = baseStudentGraduateService.getInfoById(id);
+        if (baseStudentGraduateVo == null) {
            return RT.error("找不到此数据!");
         }
-        return RT.ok(BeanUtil.toBean(baseStudentGraduate, BaseStudentGraduateVo.class));
+        return RT.ok(baseStudentGraduateVo);
     }
 
 
     @PostMapping
-    @ApiOperation(value = "新增学生毕业管理")
+    @ApiOperation(value = "毕业登记")
     @SaCheckPermission("basestudentgraduate:add")
     public RT<Boolean> add(@Valid @RequestBody AddBaseStudentGraduateDto dto){
-        BaseStudentGraduate baseStudentGraduate = BeanUtil.toBean(dto, BaseStudentGraduate.class);
-        boolean isSuccess = baseStudentGraduateService.save(baseStudentGraduate);
+        boolean isSuccess = baseStudentGraduateService.addOne(dto);
         return RT.ok(isSuccess);
     }
 
@@ -91,13 +83,6 @@ public class BaseStudentGraduateController {
 
     }
 
-    @DeleteMapping
-    @ApiOperation(value = "删除学生毕业管理")
-    @SaCheckPermission("basestudentgraduate:delete")
-    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
-        return RT.ok(baseStudentGraduateService.removeBatchByIds(ids));
-
-    }
     @PostMapping("/import")
     @ApiOperation(value = "导入")
     public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {

+ 6 - 6
src/main/java/com/xjrsoft/module/student/dto/BaseStudentGraduatePageDto.java

@@ -4,12 +4,6 @@ import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalTime;
-import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import java.util.Date;
 
 
 /**
@@ -36,4 +30,10 @@ public class BaseStudentGraduatePageDto extends PageInput {
 
     @ApiModelProperty("证书编号")
     public String certificateNumber;
+
+    @ApiModelProperty("年级id")
+    public Long gradeId;
+
+    @ApiModelProperty("班级id")
+    public Long classId;
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/student/dto/QuantitativeAssessmentExcelDto.java

@@ -22,4 +22,10 @@ public class QuantitativeAssessmentExcelDto implements Serializable {
     */
     @ApiModelProperty("年月(2023-12)")
     private String yearAndMonth;
+
+    /**
+     * 子表的类型
+     */
+    @ApiModelProperty("子表的类型")
+    private Long baseStudentAssessmentCategoryId;
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentAssessmentInspectionMapper.java

@@ -48,5 +48,5 @@ public interface BaseStudentAssessmentInspectionMapper extends MPJBaseMapper<Bas
      */
     BaseStudentAssessmentInspectionMobileVo getMobileInfo(Long id);
 
-    List<StudentIndividualBehaviorExcelVo> getStudentIndividualBehaviorExcelVoList(@Param("dto") QuantitativeAssessmentExcelDto dto);
+    List<QuantitativeAssessmentSubTableExcelVo> getQuantitativeAssessmentSubTableExcelVoList(@Param("dto") QuantitativeAssessmentExcelDto dto);
 }

+ 4 - 1
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentGraduateMapper.java

@@ -1,12 +1,13 @@
 package com.xjrsoft.module.student.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.student.dto.BaseStudentGraduatePageDto;
 import com.xjrsoft.module.student.entity.BaseStudentGraduate;
 import com.xjrsoft.module.student.vo.BaseStudentGraduatePageVo;
+import com.xjrsoft.module.student.vo.BaseStudentGraduateVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @title: 学生毕业管理
@@ -24,4 +25,6 @@ public interface BaseStudentGraduateMapper extends MPJBaseMapper<BaseStudentGrad
      * @return
      */
     Page<BaseStudentGraduatePageVo> getPage(Page<BaseStudentGraduatePageDto> page, BaseStudentGraduatePageDto dto);
+
+    BaseStudentGraduateVo getInfoById(@Param("id") Long id);
 }

+ 8 - 0
src/main/java/com/xjrsoft/module/student/service/IBaseStudentGraduateService.java

@@ -2,9 +2,11 @@ package com.xjrsoft.module.student.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.dto.AddBaseStudentGraduateDto;
 import com.xjrsoft.module.student.dto.BaseStudentGraduatePageDto;
 import com.xjrsoft.module.student.entity.BaseStudentGraduate;
 import com.xjrsoft.module.student.vo.BaseStudentGraduatePageVo;
+import com.xjrsoft.module.student.vo.BaseStudentGraduateVo;
 
 /**
 * @title: 学生毕业管理
@@ -22,4 +24,10 @@ public interface IBaseStudentGraduateService extends MPJBaseService<BaseStudentG
      * @return
      */
     Page<BaseStudentGraduatePageVo> getPage(Page<BaseStudentGraduatePageDto> page, BaseStudentGraduatePageDto dto);
+
+    BaseStudentGraduateVo getInfoById(Long id);
+
+    Boolean addOne(AddBaseStudentGraduateDto dto);
+
+
 }

+ 60 - 16
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentAssessmentInspectionServiceImpl.java

@@ -2,7 +2,10 @@ package com.xjrsoft.module.student.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -10,15 +13,17 @@ import com.github.yulichang.toolkit.MPJWrappers;
 import com.xjrsoft.common.enums.ScoreTypeEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.common.utils.excel.ExcelMergeUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
-import com.xjrsoft.module.evaluate.vo.ResultViewingExcelVo;
 import com.xjrsoft.module.student.dto.BaseStudentAssessmentInspectionMobilePageDto;
 import com.xjrsoft.module.student.dto.BaseStudentAssessmentInspectionPageDto;
 import com.xjrsoft.module.student.dto.QuantitativeAssessmentExcelDto;
+import com.xjrsoft.module.student.entity.BaseStudentAssessmentCategory;
 import com.xjrsoft.module.student.entity.BaseStudentAssessmentClassRelation;
 import com.xjrsoft.module.student.entity.BaseStudentAssessmentInspection;
 import com.xjrsoft.module.student.entity.BaseStudentAssessmentStudentRelation;
+import com.xjrsoft.module.student.mapper.BaseStudentAssessmentCategoryMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentAssessmentClassRelationMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentAssessmentInspectionMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentAssessmentStudentRelationMapper;
@@ -32,8 +37,8 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
 import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +53,8 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
 
     private final BaseStudentAssessmentInspectionMapper assessmentInspectionMapper;
 
+    private final BaseStudentAssessmentCategoryMapper baseStudentAssessmentCategoryMapper;
+
     private final BaseStudentAssessmentStudentRelationMapper assessmentStudentRelationMapper;
 
     private final BaseStudentAssessmentClassRelationMapper assessmentClassRelationMapper;
@@ -154,26 +161,63 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
 
     @Override
     public ResponseEntity<byte[]> getQuantitativeAssessmentExcelByte(QuantitativeAssessmentExcelDto dto) {
+        //导出的文件名,字节流
         String fileName = "StudentAssessmentInspection" + ExcelTypeEnum.XLSX.getValue();
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        //TODO 学生个人行为原始数据
-        //求所有的个人行为集合
-        List<StudentIndividualBehaviorExcelVo> studentIndividualBehaviorExcelVoList = assessmentInspectionMapper.getStudentIndividualBehaviorExcelVoList(dto);
-        Map<Long, List<StudentIndividualBehaviorExcelVo>> studentIndividualBehaviorExcelVoListMap =  studentIndividualBehaviorExcelVoList.stream()
-                .collect(Collectors.groupingBy(StudentIndividualBehaviorExcelVo::getStudentUserId));
 
-        //未合并
-        EasyExcel.write(bot, ResultViewingExcelVo.class)
-                .automaticMergeHead(false)
-                .excelType(ExcelTypeEnum.XLSX)
-                .sheet("学生个人行为")
-                .doWrite(studentIndividualBehaviorExcelVoList);
+        //获取需要导出的子表
+        List<Long> baseStudentAssessmentCategoryIdList = new ArrayList<>();
+        baseStudentAssessmentCategoryIdList.add(1727155216239882240L);
+        baseStudentAssessmentCategoryIdList.add(1727154864019009536L);
+
+        LambdaQueryWrapper<BaseStudentAssessmentCategory> baseStudentAssessmentCategoryLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        baseStudentAssessmentCategoryLambdaQueryWrapper
+                .in(BaseStudentAssessmentCategory::getId, baseStudentAssessmentCategoryIdList);
+        List<BaseStudentAssessmentCategory> baseStudentAssessmentCategorieList = baseStudentAssessmentCategoryMapper.selectList(baseStudentAssessmentCategoryLambdaQueryWrapper);
+
+        //导出子表
+        if(baseStudentAssessmentCategorieList.size() > 0){
+            //需要合并的列
+            int[] mergeColumeIndex = {0, 1, 2, 3, 4};
+            ExcelMergeUtil excelFillCellMergeStrategy = new ExcelMergeUtil(1, mergeColumeIndex);
+
+            //开始处理写入
+            try (ExcelWriter excelWriter = EasyExcel.write(bot, QuantitativeAssessmentSubTableExcelVo.class).registerWriteHandler(excelFillCellMergeStrategy).build()) {
+                int no = 0;
+                for (BaseStudentAssessmentCategory bsac : baseStudentAssessmentCategorieList) {
+                    dto.setBaseStudentAssessmentCategoryId(bsac.getId());
+                    //sheet名
+                    String sheetName = bsac.getName();
 
-        //TODO 班级常规管理原始数据
+                    WriteSheet writeSheet = EasyExcel.writerSheet(no++, sheetName ).build();
 
-        //TODO 获奖原始数据
+                    //求所有的个人行为集合
+                    List<QuantitativeAssessmentSubTableExcelVo> quantitativeAssessmentSubTableExcelVoList = assessmentInspectionMapper.getQuantitativeAssessmentSubTableExcelVoList(dto);
 
-        //TODO 班级量化考核统计表总
+                    excelWriter.write(quantitativeAssessmentSubTableExcelVoList, writeSheet);
+                }
+                //TODO 班级量化考核统计表总
+
+            }
+            /*for (BaseStudentAssessmentCategory bsac : baseStudentAssessmentCategorieList) {
+                dto.setBaseStudentAssessmentCategoryId(bsac.getId());
+                //sheet名
+                String sheetName = bsac.getName();
+
+                //求所有的个人行为集合
+                List<QuantitativeAssessmentSubTableExcelVo> quantitativeAssessmentSubTableExcelVoList = assessmentInspectionMapper.getQuantitativeAssessmentSubTableExcelVoList(dto);
+
+                //需要合并的列
+                int[] mergeColumeIndex = {0, 1, 2, 3, 4};
+
+                //写字节流
+                ExcelMergeUtil excelFillCellMergeStrategy = new ExcelMergeUtil(1, mergeColumeIndex);
+                EasyExcel.write(bot, QuantitativeAssessmentSubTableExcelVo.class)
+                        .registerWriteHandler(excelFillCellMergeStrategy)
+                        .sheet(sheetName)
+                        .doWrite(quantitativeAssessmentSubTableExcelVoList);
+            }*/
+        }
 
         return RT.fileStream(bot.toByteArray(), fileName);
     }

+ 49 - 1
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentGraduateServiceImpl.java

@@ -1,17 +1,29 @@
 package com.xjrsoft.module.student.service.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.ArchivesStatusEnum;
+import com.xjrsoft.module.student.dto.AddBaseStudentGraduateDto;
 import com.xjrsoft.module.student.dto.BaseStudentGraduatePageDto;
 import com.xjrsoft.module.student.entity.BaseStudentGraduate;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.mapper.BaseStudentGraduateMapper;
+import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
 import com.xjrsoft.module.student.service.IBaseStudentGraduateService;
 import com.xjrsoft.module.student.vo.BaseStudentGraduatePageVo;
+import com.xjrsoft.module.student.vo.BaseStudentGraduateVo;
 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;
+
+import java.util.Date;
 
 /**
 * @title: 学生毕业管理
@@ -24,13 +36,49 @@ import org.springframework.stereotype.Service;
 public class BaseStudentGraduateServiceImpl extends MPJBaseServiceImpl<BaseStudentGraduateMapper, BaseStudentGraduate> implements IBaseStudentGraduateService {
     private final BaseStudentGraduateMapper baseStudentGraduateMapper;
 
+    private final BaseStudentSchoolRollMapper baseStudentSchoolRollMapper;
+
     private final IFileService fileService;
     @Override
     public Page<BaseStudentGraduatePageVo> getPage(Page<BaseStudentGraduatePageDto> page, BaseStudentGraduatePageDto dto) {
         Page<BaseStudentGraduatePageVo> voPage = baseStudentGraduateMapper.getPage(page, dto);
         for (BaseStudentGraduatePageVo record : voPage.getRecords()) {
-            record.setFileInfos(fileService.list(Wrappers.<File>query().lambda().eq(File::getFolderId,record.getFolderId())));
+            if(record.getFolderId() != null){
+                record.setFileInfos(fileService.list(Wrappers.<File>query().lambda().eq(File::getFolderId,record.getFolderId())));
+            }
         }
         return voPage;
     }
+
+    @Override
+    public BaseStudentGraduateVo getInfoById(Long id) {
+        BaseStudentGraduateVo baseStudentGraduateVo = baseStudentGraduateMapper.getInfoById(id);
+        if(baseStudentGraduateVo != null && baseStudentGraduateVo.getFolderId() != null){
+            baseStudentGraduateVo.setFileInfos(fileService.list(Wrappers.<File>query().lambda().eq(File::getFolderId,baseStudentGraduateVo.getFolderId())));
+        }
+        return baseStudentGraduateVo;
+    }
+
+    @Override
+    @Transactional
+    public Boolean addOne(AddBaseStudentGraduateDto dto) {
+        BaseStudentGraduate baseStudentGraduate = BeanUtil.toBean(dto, BaseStudentGraduate.class);
+        baseStudentGraduate.setCreateUserId(StpUtil.getLoginIdAsLong());
+        baseStudentGraduate.setCreateDate(new Date());
+        QueryWrapper<BaseStudentGraduate> queryWrapperSortcode = new QueryWrapper<>();
+        queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        BaseStudentGraduate t = this.getOne(queryWrapperSortcode);
+        baseStudentGraduate.setSortCode(t.getSortCode() + 1);
+        //修改学籍状态
+        LambdaQueryWrapper<BaseStudentSchoolRoll> baseStudentSchoolRollLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        baseStudentSchoolRollLambdaQueryWrapper
+                .eq(BaseStudentSchoolRoll::getUserId, dto.getUserId());
+         baseStudentSchoolRollMapper.update(new BaseStudentSchoolRoll(){{
+            setArchivesStatus(ArchivesStatusEnum.FB2907.getCode());
+        }}, baseStudentSchoolRollLambdaQueryWrapper);
+
+        //保存毕业信息
+        this.save(baseStudentGraduate);
+        return true;
+    }
 }

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

@@ -81,7 +81,6 @@ public class BaseStudentGraduatePageVo {
     @ExcelProperty("发证日期")
     @ApiModelProperty("发证日期")
     private Date certificateDate;
-
     /**
      * 班级名称
      */
@@ -89,7 +88,6 @@ public class BaseStudentGraduatePageVo {
     @ExcelProperty("班级名称")
     @ApiModelProperty("班级名称")
     private String className;
-
     /**
      * 年级名称
      */
@@ -97,8 +95,6 @@ public class BaseStudentGraduatePageVo {
     @ExcelProperty("年级名称")
     @ApiModelProperty("年级名称")
     private String gradeName;
-
-
     /**
      * 附件id
      */

+ 37 - 10
src/main/java/com/xjrsoft/module/student/vo/BaseStudentGraduateVo.java

@@ -1,13 +1,13 @@
 package com.xjrsoft.module.student.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.LocalTime;
-import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import java.util.List;
 import java.util.Date;
+import java.util.List;
 
 /**
 * @title: 学生毕业管理表单出参
@@ -24,15 +24,38 @@ public class BaseStudentGraduateVo {
     @ApiModelProperty("主键编号")
     private Long id;
     /**
-    * 序号
-    */
-    @ApiModelProperty("序号")
-    private Integer sortCode;
-    /**
     * 学生(xjr_user)
     */
     @ApiModelProperty("学生(xjr_user)")
     private Long userId;
+    /**
+     * 学籍号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("学籍号")
+    @ApiModelProperty("学籍号")
+    private String studentId;
+    /**
+     * 学生姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("学生姓名")
+    @ApiModelProperty("学生姓名")
+    private String name;
+    /**
+     * 专业
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("专业")
+    @ApiModelProperty("专业")
+    private String majorName;
+    /**
+     * 修改时间
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("就读方式")
+    @ApiModelProperty("就读方式")
+    private String stduyStatusCn;
     /**
     * 证书编号
     */
@@ -59,6 +82,10 @@ public class BaseStudentGraduateVo {
     @ApiModelProperty("证书发放状态(0:未发放 1:已发放)")
     private Integer status;
 
-
+    /**
+     * 公文附件列表
+     */
+    @ApiModelProperty("公文附件列表")
+    private List<File> fileInfos;
 
 }

+ 25 - 18
src/main/java/com/xjrsoft/module/student/vo/StudentIndividualBehaviorExcelVo.java → src/main/java/com/xjrsoft/module/student/vo/QuantitativeAssessmentSubTableExcelVo.java

@@ -26,7 +26,7 @@ import java.time.LocalDateTime;
 // 例如: 第2-3行,2-3列进行合并
 //@OnceAbsoluteMerge(firstRowIndex = 1, lastRowIndex = 2, firstColumnIndex = 1, lastColumnIndex = 2)
 @Data
-public class StudentIndividualBehaviorExcelVo {
+public class QuantitativeAssessmentSubTableExcelVo {
 
     /**
     * 班主任user_id
@@ -36,11 +36,18 @@ public class StudentIndividualBehaviorExcelVo {
     @ExcelIgnore
     @ApiModelProperty("班主任user_id")
     private Long headTeacherUserId;
+    /**
+     * 班主任OA
+     */
+    @ExcelProperty(index = 0, value = "班主任OA")
+    @ColumnWidth(10)
+    @ApiModelProperty("班主任OA")
+    private String headTeacherUserName;
     /**
      * 班主任姓名
      */
-    @ExcelProperty(index = 0, value = "班主任姓名")
-    @ColumnWidth(30)
+    @ExcelProperty(index = 1, value = "班主任姓名")
+    @ColumnWidth(10)
     @ApiModelProperty("班主任姓名")
     private String headTeacherName;
     /**
@@ -52,8 +59,8 @@ public class StudentIndividualBehaviorExcelVo {
     /**
      * 班级名
      */
-    @ExcelProperty(index = 1, value = "班级名")
-    @ColumnWidth(30)
+    @ExcelProperty(index = 2, value = "班级名")
+    @ColumnWidth(10)
     @ApiModelProperty("班级名")
     private String className;
     /**
@@ -65,21 +72,21 @@ public class StudentIndividualBehaviorExcelVo {
     /**
      * 学号
      */
-    @ExcelProperty(index = 2, value = "学号")
-    @ColumnWidth(30)
+    @ExcelProperty(index = 3, value = "学号")
+    @ColumnWidth(20)
     @ApiModelProperty("学号")
     private String studentId;
     /**
      * 学生名
      */
-    @ExcelProperty(index = 3, value = "学生名")
-    @ColumnWidth(30)
+    @ExcelProperty(index = 4, value = "学生名")
+    @ColumnWidth(10)
     @ApiModelProperty("学生名")
     private String studentName;
     /**
      * 学生基础分数
      */
-    @ExcelProperty(index = 4, value = "学生基础分数")
+    @ExcelProperty(index = 5, value = "学生基础分数")
     @ColumnWidth(10)
     @ApiModelProperty("学生基础分数")
     private Integer baseScore;
@@ -92,30 +99,30 @@ public class StudentIndividualBehaviorExcelVo {
     /**
      * 考核项目
      */
-    @ExcelProperty(index = 5, value = "考核项目")
-    @ColumnWidth(60)
+    @ExcelProperty(index = 6, value = "考核项目")
+    @ColumnWidth(30)
     @ApiModelProperty("考核项目")
     private String baseStudentAssessmentProjectIdCN;
     /**
      * 考核项目
      */
     @DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
-    @ExcelProperty(index = 6, value = "考核时间")
-    @ColumnWidth(60)
+    @ExcelProperty(index = 7, value = "考核时间")
+    @ColumnWidth(30)
     @ApiModelProperty("考核时间")
     private LocalDateTime assessmentDate;
     /**
      * 项目分数
      */
-    @ExcelProperty(index = 7, value = "项目分数")
-    @ColumnWidth(10)
+    @ExcelProperty(index = 8, value = "项目分数")
+    @ColumnWidth(6)
     @ApiModelProperty("项目分数")
     private Integer projectScore;
     /**
      * 最终得分
      */
-    @ExcelProperty(index = 8, value = "最终得分")
-    @ColumnWidth(10)
+    @ExcelProperty(index = 9, value = "最终得分")
+    @ColumnWidth(6)
     @ApiModelProperty("最终得分")
     private Integer finalScore;
 }

+ 64 - 0
src/main/resources/mapper/personnel/BasePersonnelLabourCapitalMapper.xml

@@ -0,0 +1,64 @@
+<?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.personnel.mapper.BasePersonnelLabourCapitalMapper">
+    <select id="getMonthPage" parameterType="com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalMonthPageDto" resultType="com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalMonthPageVo">
+        SELECT
+            t.id,
+            YEAR(t.date_of_issue),
+            MONTH(t.date_of_issue),
+            t1.name,
+            d.name as dept,
+            t1.amount_to as amount,
+            t1.extend_json as pendingJson
+        FROM
+            base_personnel_labour_capital t
+                LEFT JOIN base_personnel_labour_capital_data t1 ON t1.labour_capital_id = t.id
+                LEFT JOIN xjr_user u ON t1.job_number = u.user_name
+                LEFT JOIN wf_teacher_depart w ON u.id = w.create_user_id
+                LEFT JOIN xjr_department d ON w.dept_name = d.id
+        WHERE t.delete_mark = 0
+        <if test="dto.year != null and dto.month != null">
+            and YEAR(t.date_of_issue) = #{dto.year}
+            and MONTH(t.date_of_issue) = #{dto.month}
+        </if>
+    </select>
+
+    <select id="getYearPage" parameterType="com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalYearPageDto" resultType="com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalYearPageVo">
+        <if test="dto.year != null and dto.project != null">
+        SELECT
+            t.id,
+            t.name,
+            t1.name as project,
+            d.name as dept,
+            month(t1.date_of_issue) as month,
+            t.amount_to as amount,
+            SUM(t.amount_to) OVER (PARTITION BY t.create_user_id, MONTH(t1.date_of_issue)) as monthAmount,
+            (SELECT SUM(amount_to) FROM base_personnel_labour_capital_data WHERE name = t.name) as yearAmount
+        from base_personnel_labour_capital_data t
+                 LEFT JOIN base_personnel_labour_capital t1 ON t.labour_capital_id = t1.id
+                 LEFT JOIN xjr_user u ON t.job_number = u.user_name
+                 LEFT JOIN wf_teacher_depart w ON u.id = w.create_user_id
+                 LEFT JOIN xjr_department d ON w.dept_name = d.id
+                 LEFT JOIN base_personnel_labour_capital_title bp ON bp.labour_capital_id = t.id
+        WHERE
+            t.delete_mark = 0
+        and YEAR(t1.date_of_issue) = #{dto.year}
+        and t1.name = #{dto.project}
+        </if>
+    </select>
+</mapper>
+        <!--    SELECT-->
+        <!--    t.id, t1.name, YEAR(DATE(t.date_of_issue)) as issue_year, d.name as dept, t1.amount_to,-->
+        <!--    (SELECT JSON_OBJECTAGG(bp.name, JSON_UNQUOTE(JSON_EXTRACT(t1.extend_json, CONCAT('$."', bp.column_number, '"'))))-->
+        <!--    FROM base_personnel_labour_capital_title bp-->
+        <!--    WHERE bp.labour_capital_id = t.id) as dict-->
+
+        <!--    FROM base_personnel_labour_capital t-->
+        <!--    LEFT JOIN base_personnel_labour_capital_data t1 ON t1.labour_capital_id = t.id-->
+        <!--    LEFT JOIN xjr_user u ON t1.job_number = u.user_name-->
+        <!--    LEFT JOIN wf_teacher_depart w ON u.id = w.create_user_id-->
+        <!--    LEFT JOIN xjr_department d ON w.dept_name = d.id-->
+        <!--    WHERE t.delete_mark = 0-->
+        <!--    AND MONTH(DATE(t.date_of_issue)) = '1';-->

+ 44 - 1
src/main/resources/mapper/student/BaseStudentAssessmentInspectionMapper.xml

@@ -103,7 +103,7 @@
         where t.id=#{id};
     </select>
 
-    <select id="getStudentIndividualBehaviorExcelVoList" parameterType="com.xjrsoft.module.student.dto.QuantitativeAssessmentExcelDto" resultType="com.xjrsoft.module.student.vo.StudentIndividualBehaviorExcelVo">
+    <select id="getStudentIndividualBehaviorExcelVoList" parameterType="com.xjrsoft.module.student.dto.QuantitativeAssessmentExcelDto" resultType="com.xjrsoft.module.student.vo.QuantitativeAssessmentSubTableExcelVo">
         with total_score as (
         select
         t.user_id as studentUserId,
@@ -118,6 +118,7 @@
         )
         select
         t4.id as headTeacherUserId,
+        t4.user_name as headTeacherUserName,
         t4.name as headTeacherName,
         t.class_id as classId,
         t.class_name as className,
@@ -141,5 +142,47 @@
         <if test="dto.yearAndMonth != null and dto.yearAndMonth != ''">
             and date_format(t1.assessment_date, '%Y-%m') = #{dto.yearAndMonth}
         </if>
+        order by t.class_id, t.user_id
+    </select>
+
+    <select id="getQuantitativeAssessmentSubTableExcelVoList" parameterType="com.xjrsoft.module.student.dto.QuantitativeAssessmentExcelDto" resultType="com.xjrsoft.module.student.vo.QuantitativeAssessmentSubTableExcelVo">
+        with total_score as (select t.user_id                                                     as studentUserId,
+        sum(if(t1.score_type = 'score_add', t1.score, -1 * t1.score)) as finalScore
+        from base_student_assessment_student_relation t
+        left join base_student_assessment_inspection t1
+        on t1.id = t.base_student_assessment_inspection_id
+        where t1.delete_mark = 0
+        and t1.base_student_assessment_category_id = #{dto.baseStudentAssessmentCategoryId}
+        <if test="dto.yearAndMonth != null and dto.yearAndMonth != ''">
+            and date_format(t1.assessment_date, '%Y-%m') = #{dto.yearAndMonth}
+        </if>
+        group by t.user_id)
+        select t4.id                                                    as headTeacherUserId,
+        t4.user_name                                             as headTeacherUserName,
+        t4.name                                                  as headTeacherName,
+        t.class_id                                               as classId,
+        t.class_name                                             as className,
+        t.user_id                                                as studentUserId,
+        t.student_id                                             as studentId,
+        t.name                                                   as studentName,
+        t5.base_score                                            as baseScore,
+        t2.id                                                    as baseStudentAssessmentProjectId,
+        t2.name                                                  as baseStudentAssessmentProjectIdCN,
+        t1.assessment_date                                       as assessmentDate,
+        if(t1.score_type = 'score_add', t1.score, -1 * t1.score) as projectScore,
+        t5.base_score + t6.finalScore                            as finalScore
+        from base_student_assessment_student_relation t
+        left join base_student_assessment_inspection t1 on t1.id = t.base_student_assessment_inspection_id
+        left join base_student_assessment_project t2 on t2.id = t1.base_student_assessment_project_id
+        left join base_class t3 on t3.id = t.class_id
+        left join xjr_user t4 on t4.id = t3.teacher_id
+        left join base_student_assessment_base_score t5 on t5.base_semester_id = t1.base_semester_id
+        left join total_score t6 on t6.studentUserId = t.user_id
+        where t1.delete_mark = 0
+        and t1.base_student_assessment_category_id = #{dto.baseStudentAssessmentCategoryId}
+        <if test="dto.yearAndMonth != null and dto.yearAndMonth != ''">
+            and date_format(t1.assessment_date, '%Y-%m') = #{dto.yearAndMonth}
+        </if>
+        order by t.class_id, t.user_id
     </select>
 </mapper>

+ 30 - 10
src/main/resources/mapper/student/BaseStudentGraduateMapper.xml

@@ -5,7 +5,7 @@
 <mapper namespace="com.xjrsoft.module.student.mapper.BaseStudentGraduateMapper">
     <select id="getPage" parameterType="com.xjrsoft.module.student.dto.BaseStudentGraduatePageDto" resultType="com.xjrsoft.module.student.vo.BaseStudentGraduatePageVo">
         SELECT t5.id,t1.user_id,t1.student_id,t2.name,t4.name AS major_name,t6.name AS stduy_status_cn,
-        IFNULL(t5.status,0) AS STATUS,t5.certificate_number,t5.certificate_date,t7.name AS class_name,t8.name AS grade_name,t5.folder_id FROM base_student t1
+        IFNULL(t5.status,0) AS status,t5.certificate_number,t5.certificate_date,t7.name AS class_name,t8.name AS grade_name,t5.folder_id FROM base_student t1
         LEFT JOIN xjr_user t2 ON t1.user_id = t2.id
         LEFT JOIN base_student_school_roll t3 ON t1.user_id = t3.user_id
         LEFT JOIN base_major_set t4 ON t3.major_set_id = t4.id
@@ -15,20 +15,40 @@
         LEFT JOIN base_grade t8 ON t8.id = t3.grade_id
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
         AND t3.delete_mark = 0
-        <if test="dto.archivesStatus != null and dto.archivesStatus != ''">
-            and t3.archives_status = #{dto.archivesStatus}
+        <if test="dto.gradeId != null and dto.gradeId > 0">
+            and t3.grade_id = #{dto.gradeId}
+        </if>
+        <if test="dto.classId != null and dto.classId > 0">
+            and t3.class_id = #{dto.classId}
         </if>
         <if test="dto.archivesStatus != null and dto.archivesStatus != ''">
             and t3.archives_status = #{dto.archivesStatus}
         </if>
+        <if test="dto.name != null and dto.name != ''">
+            and t2.name like concat('%',#{dto.name}, '%')
+        </if>
+        <if test="dto.studentId != null and dto.studentId > 0">
+            and t1.student_id = #{dto.studentId}
+        </if>
+        <if test="dto.status != null">
+            and t5.status = #{dto.status}
+        </if>
+        <if test="dto.certificateNumber != null and dto.certificateNumber != ''">
+            and t5.certificate_number = #{dto.certificateNumber}
+        </if>
     </select>
-    <!--姓名和性别,测试阶段采用姓名第一个字拼接user_id的方式脱敏-->
-    <select id="getJianyueStudentList" resultType="com.xjrsoft.module.schedule.vo.StudentJianyuekbVo">
-        SELECT t1.id AS registerNo, CONCAT(SUBSTRING(t2.name,1,1),t2.id) AS realName,t3.grade_id AS gradeSerialNo,CONCAT(SUBSTRING(t2.name,1,1),t2.id) AS alias,t2.gender,t2.id AS extendId FROM base_student t1
-        INNER JOIN xjr_user t2 ON t1.user_id = t2.id
-        INNER JOIN base_student_school_roll t3 ON t1.user_id = t3.user_id
+    <select id="getInfoById" resultType="com.xjrsoft.module.student.vo.BaseStudentGraduateVo">
+        SELECT t5.id,t1.user_id,t1.student_id,t2.name,t4.name AS major_name,t6.name AS stduy_status_cn,
+        IFNULL(t5.status,0) AS status,t5.certificate_number,t5.certificate_date,t7.name AS class_name,t8.name AS grade_name,t5.folder_id FROM base_student t1
+        LEFT JOIN xjr_user t2 ON t1.user_id = t2.id
+        LEFT JOIN base_student_school_roll t3 ON t1.user_id = t3.user_id
+        LEFT JOIN base_major_set t4 ON t3.major_set_id = t4.id
+        LEFT JOIN base_student_graduate t5 ON t1.user_id = t5.user_id
+        LEFT JOIN xjr_dictionary_detail t6 ON t3.stduy_status = t6.code AND t6.item_id = 2023000000000000030
+        LEFT JOIN base_class t7 ON t7.id = t3.class_id
+        LEFT JOIN base_grade t8 ON t8.id = t3.grade_id
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
-        AND t1.student_id IS NOT NULL AND t1.student_id != ''
-        AND t3.archives_status = 'FB2901';
+        AND t3.delete_mark = 0
+        AND t1.user_id = #{id}
     </select>
 </mapper>

+ 14 - 0
src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java

@@ -1,10 +1,15 @@
 package com.xjrsoft.xjrsoftboot;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.db.Db;
+import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.utils.DatasourceUtil;
 import lombok.Data;
 import org.junit.jupiter.api.Test;
 
+import javax.sql.DataSource;
+import java.sql.SQLException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.DayOfWeek;
@@ -188,4 +193,13 @@ public class StrTest {
         str = str.replace("“", "").replace("”", "").replace("\"", "").replace("\n", "").replace("\r", "").replace("\t", "");
         System.out.println(str);
     }
+
+    @Test
+    public void sortCodeTest() throws SQLException {
+        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+        Db use = Db.use(datasource);
+        String sql = "SELECT max(sort_code) FROM evaluate_template";
+        int sortCodeMax = use.queryNumber(sql, Integer.class).intValue();
+        System.err.println(sortCodeMax);
+    }
 }