|
|
@@ -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()))
|
|
|
;
|
|
|
|