Procházet zdrojové kódy

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

dzx před 1 rokem
rodič
revize
0d62628f8c

+ 90 - 0
src/main/java/com/xjrsoft/module/ledger/controller/LedgerExportController.java

@@ -0,0 +1,90 @@
+package com.xjrsoft.module.ledger.controller;
+
+import com.alibaba.excel.util.ListUtils;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.module.ledger.dto.LedgerExportDataDto;
+import com.xjrsoft.module.ledger.entity.LedgerConfigRelease;
+import com.xjrsoft.module.ledger.service.ILedgerConfigReleaseService;
+import com.xjrsoft.module.ledger.service.ILedgerConfigService;
+import com.xjrsoft.module.system.service.IMenuService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 台账导出
+* @Author szs
+* @Date: 2024-03-20
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/ledger" + "/ledgerConfig")
+@Api(value = "/ledger"  + "/ledgerConfig",tags = "台账导出")
+@AllArgsConstructor
+public class LedgerExportController {
+
+    private ILedgerConfigReleaseService ledgerConfigReleaseService;
+
+    @PostMapping("/export-query")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid @RequestBody LedgerExportDataDto dto) {
+        LedgerConfigRelease release = ledgerConfigReleaseService.getById(dto.getConfigIntoId());
+        if(release == null){
+            throw new MyException("导出数据失败");
+        }
+
+        JsonParser parser = new JsonParser();
+        JsonObject jsonObject = parser.parse(release.getConfigJson()).getAsJsonObject();
+
+        JsonArray columnConfigs = jsonObject.get("columnConfigs").getAsJsonArray();
+        //构建excel头
+        buildExcelHeader(columnConfigs);
+
+        for (JsonElement element : columnConfigs) {
+
+//            System.out.println(element.getAsJsonObject().get("key").getAsString());
+
+
+
+        }
+
+
+//        List<WfSubscriptionExcelVo> customerList = wfSubscriptionService.getList(dto);
+//        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+//        EasyExcel.write(bot, WfSubscriptionExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+//        return RT.fileStream(bot.toByteArray(), "WfSubscription" + ExcelTypeEnum.XLSX.getValue());
+
+
+
+//        // 写法1
+//        String fileName = TestFileUtil.getPath() + "noModelWrite" + System.currentTimeMillis() + ".xlsx";
+//        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
+//        EasyExcel.write(fileName).head(head()).sheet("模板").doWrite(dataList());
+        return null;
+    }
+
+    private List<List<String>> buildExcelHeader(JsonArray columnConfigs){
+        List<List<String>> list = ListUtils.newArrayList();
+        for (JsonElement element : columnConfigs) {
+            String key = element.getAsJsonObject().get("label").getAsString();
+            List<String> head = ListUtils.newArrayList();
+            head.add(key);
+            list.add(head);
+        }
+        return list;
+    }
+
+}

+ 23 - 0
src/main/java/com/xjrsoft/module/ledger/dto/LedgerExportDataDto.java

@@ -0,0 +1,23 @@
+package com.xjrsoft.module.ledger.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Map;
+
+
+/**
+* @title: 台账导出入参
+* @Author szs
+* @Date: 2024-03-20
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class LedgerExportDataDto{
+    private Long configIntoId;
+
+    private Map<String, String> queryParam;
+}

+ 4 - 3
src/main/java/com/xjrsoft/module/student/controller/StudentManagerController.java

@@ -82,9 +82,10 @@ public class StudentManagerController {
                         .leftJoin("base_grade a on a.id = t2.grade_id")
                         .leftJoin("base_major_set b on b.id = t2.major_set_id")
                         .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
-                        .select("c.`mobile` as guardianPhone")
-                        .select("c.`name` as guardianName")
-                        .leftJoin("base_student_family_member c on c.user_id = t2.user_id"));
+//                        .select("c.`mobile` as guardianPhone")
+//                        .select("c.`name` as guardianName")
+//                        .leftJoin("base_student_family_member c on c.user_id = t2.user_id")
+                        );
         for (BaseStudentUserPageVo record : page.getRecords()) {
             record.setGenderCn(GenderDictionaryEnum.getValue(record.getGender()));
         }

+ 45 - 43
src/main/java/com/xjrsoft/module/student/service/impl/PbVXsxxsfytbServiceImpl.java

@@ -5,6 +5,7 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseSemester;
 import com.xjrsoft.module.student.dto.PbVXsxxsfytbExcelDto;
 import com.xjrsoft.module.student.dto.PbVXsxxsfytbPageDto;
@@ -60,46 +61,45 @@ public class PbVXsxxsfytbServiceImpl extends MPJBaseServiceImpl<PbVXsxxsfytbMapp
                 ;
         List<PbVXsxxsfytbPersonal> pbVXsxxsfytbPersonalList = this.selectJoinList(PbVXsxxsfytbPersonal.class, pbVXsxxsfytbMPJLambdaWrapper);
 
-        BigDecimal totalConsumption = new BigDecimal("0");
-
-        Map<String, List<PbVXsxxsfytbPersonal>> PbVXsxxsfytbPersonalBySemesterMap = pbVXsxxsfytbPersonalList.stream()
-                .collect(Collectors.groupingBy(PbVXsxxsfytbPersonal::getBaseSemester));
-
-        List<PbVXsxxsfytbPersonalMap> pbVXsxxsfytbPersonalMapList = new ArrayList<>();
-        for (Map.Entry<String, List<PbVXsxxsfytbPersonal>> entry : PbVXsxxsfytbPersonalBySemesterMap.entrySet()) {
-            String baseSemester = entry.getKey();
-            List<PbVXsxxsfytbPersonal> pbVXsxxsfytbPersonals = entry.getValue();
-
-            Map<String, PbVXsxxsfytbPersonal> pbVXsxxsfytbPersonalByItemMap = new HashMap<>();
-            for (PbVXsxxsfytbPersonal pbVXsxxsfytbPersonal : pbVXsxxsfytbPersonals){
-                //统计总的消费金额
-                totalConsumption = totalConsumption.add(pbVXsxxsfytbPersonal.getFactrecarmny());
-                totalConsumption = totalConsumption.add(pbVXsxxsfytbPersonal.getArrearagemny());
-
-                //将相同缴费项目合并
-                if (pbVXsxxsfytbPersonalByItemMap.containsKey(pbVXsxxsfytbPersonal.getFeeitemcode())){
-                    PbVXsxxsfytbPersonal p = pbVXsxxsfytbPersonalByItemMap.get(pbVXsxxsfytbPersonal.getFeeitemcode());
-                    p.setFactar(p.getFactar().add(pbVXsxxsfytbPersonal.getFactar()));
-                    p.setFactrecarmny(p.getFactrecarmny().add(pbVXsxxsfytbPersonal.getFactrecarmny()));
-                    p.setAdjustmny(p.getAdjustmny().add(pbVXsxxsfytbPersonal.getAdjustmny()));
-                    p.setArrearagemny(p.getArrearagemny().add(pbVXsxxsfytbPersonal.getArrearagemny()));
-                }else {
-                    pbVXsxxsfytbPersonalByItemMap.put(pbVXsxxsfytbPersonal.getFeeitemcode(), pbVXsxxsfytbPersonal);
-                }
-            }
-
-            PbVXsxxsfytbPersonalMap pbVXsxxsfytbPersonalMap = new PbVXsxxsfytbPersonalMap();
-            pbVXsxxsfytbPersonalMap.setBaseSemester(baseSemester);
-            pbVXsxxsfytbPersonalMap.setBaseSemesterCn(pbVXsxxsfytbPersonals.get(0).getBaseSemesterCn());
-            pbVXsxxsfytbPersonalMap.setPbVXsxxsfytbPersonalList(pbVXsxxsfytbPersonals);
-            pbVXsxxsfytbPersonalMapList.add(pbVXsxxsfytbPersonalMap);
-        }
-
-        PersonalPortraitFeeInformationVo p = new PersonalPortraitFeeInformationVo();
-        p.setTotalConsumption(totalConsumption);
-        p.setPbVXsxxsfytbPersonalMapList(pbVXsxxsfytbPersonalMapList);
-
-        return p;
+        // 统计总消费金额
+        BigDecimal totalConsumption = pbVXsxxsfytbPersonalList.stream()
+                .map(p -> p.getFactrecarmny().add(p.getArrearagemny()))
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        // 按学期分组并处理数据
+        List<PbVXsxxsfytbPersonalMap> pbVXsxxsfytbPersonalMapList = pbVXsxxsfytbPersonalList.stream()
+                .collect(Collectors.groupingBy(PbVXsxxsfytbPersonal::getBaseSemester))
+                .entrySet().stream()
+                .map(entry -> {
+                    String baseSemester = entry.getKey();
+                    List<PbVXsxxsfytbPersonal> pbVXsxxsfytbPersonals = entry.getValue();
+
+                    // 合并相同缴费项目
+                    Map<String, PbVXsxxsfytbPersonal> pbVXsxxsfytbPersonalByItemMap = pbVXsxxsfytbPersonals.stream()
+                            .collect(Collectors.toMap(PbVXsxxsfytbPersonal::getFeeitemcode, p -> p, (existing, replacement) -> {
+                                existing.setFactar(existing.getFactar().add(replacement.getFactar()));
+                                existing.setFactrecarmny(existing.getFactrecarmny().add(replacement.getFactrecarmny()));
+                                existing.setAdjustmny(existing.getAdjustmny().add(replacement.getAdjustmny()));
+                                existing.setArrearagemny(existing.getArrearagemny().add(replacement.getArrearagemny()));
+                                return existing;
+                            }));
+
+                    // 构建PbVXsxxsfytbPersonalMap对象
+                    PbVXsxxsfytbPersonalMap pbVXsxxsfytbPersonalMap = new PbVXsxxsfytbPersonalMap();
+                    pbVXsxxsfytbPersonalMap.setBaseSemester(baseSemester);
+                    pbVXsxxsfytbPersonalMap.setBaseSemesterCn(pbVXsxxsfytbPersonals.get(0).getBaseSemesterCn());
+                    pbVXsxxsfytbPersonalMap.setPbVXsxxsfytbPersonalList(new ArrayList<>(pbVXsxxsfytbPersonalByItemMap.values()));
+
+                    return pbVXsxxsfytbPersonalMap;
+                })
+                .collect(Collectors.toList());
+
+        // 构建返回对象
+        PersonalPortraitFeeInformationVo personalPortraitFeeInformationVo = new PersonalPortraitFeeInformationVo();
+        personalPortraitFeeInformationVo.setTotalConsumption(totalConsumption);
+        personalPortraitFeeInformationVo.setPbVXsxxsfytbPersonalMapList(pbVXsxxsfytbPersonalMapList);
+
+        return personalPortraitFeeInformationVo;
     }
 
     @Override
@@ -147,9 +147,11 @@ public class PbVXsxxsfytbServiceImpl extends MPJBaseServiceImpl<PbVXsxxsfytbMapp
                 .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId)
                 .leftJoin(PbSemesterConfig.class, PbSemesterConfig::getBeltcode, PbVXsxxsfytb::getBeltcode)
                 .leftJoin(BaseSemester.class, BaseSemester::getId, PbSemesterConfig::getBaseSemesterId)
-                .selectAs(BaseSemester::getId, PbVXsxxsfytbPageVo::getBaseSemester)
-                .selectAs(XjrUser::getId, PbVXsxxsfytbPageVo::getUserId)
-                .selectAs(BaseSemester::getName, PbVXsxxsfytbPageVo::getBaseSemesterCn)
+                .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
+                .selectAs(BaseClass::getName, PbVXsxxsfytbExcelVo::getClassname)
+                .selectAs(BaseSemester::getId, PbVXsxxsfytbExcelVo::getBaseSemester)
+                .selectAs(XjrUser::getId, PbVXsxxsfytbExcelVo::getUserId)
+                .selectAs(BaseSemester::getName, PbVXsxxsfytbExcelVo::getBaseSemesterCn)
                 .select(PbVXsxxsfytb.class, x -> VoToColumnUtil.fieldsToColumns(PbVXsxxsfytbExcelVo.class).contains(x.getProperty()))
         ;
 

+ 6 - 6
src/main/java/com/xjrsoft/module/student/vo/PbVXsxxsfytbExcelVo.java

@@ -46,11 +46,11 @@ public class PbVXsxxsfytbExcelVo {
     @ApiModelProperty("电话")
     private String telephone;
     /**
-    * 姓名
+    * 性别
     */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("姓名")
-    @ApiModelProperty("姓名")
+    @ExcelProperty("性别")
+    @ApiModelProperty("性别")
     private String sex;
     /**
     * 收费标准金额
@@ -138,11 +138,11 @@ public class PbVXsxxsfytbExcelVo {
     @ApiModelProperty("学期Id")
     private String baseSemester;
     /**
-     * 学期Id
+     * 学期
      */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("学期Id")
-    @ApiModelProperty("学期Id")
+    @ExcelProperty("学期")
+    @ApiModelProperty("学期")
     private String baseSemesterCn;
     /**
      * 学生Id

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 32 - 0
src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů