|
@@ -0,0 +1,84 @@
|
|
|
+package com.fjhx.form.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.fjhx.common.utils.Assert;
|
|
|
+import com.fjhx.form.entity.SubjectBalanceBo;
|
|
|
+import com.fjhx.form.entity.SubjectBalanceSelectDto;
|
|
|
+import com.fjhx.form.entity.account.po.AccountSubjectsBalance;
|
|
|
+import com.fjhx.form.mapper.FinanceReportMapper;
|
|
|
+import com.fjhx.form.service.FinanceReportService;
|
|
|
+import com.fjhx.form.service.account.AccountSubjectsBalanceService;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class FinanceReportServiceImpl implements FinanceReportService {
|
|
|
+ @Resource
|
|
|
+ private FinanceReportMapper financeReportMapper;
|
|
|
+ @Resource
|
|
|
+ private AccountSubjectsBalanceService accountSubjectsBalanceService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<SubjectBalanceBo> subjectBalance(SubjectBalanceSelectDto dto) {
|
|
|
+ Assert.notEmpty(dto.getYear(), "年份不能为空!");
|
|
|
+ IWrapper<Object> wrapper = IWrapper.getWrapper();
|
|
|
+
|
|
|
+
|
|
|
+ wrapper.apply("YEAR ( t1.expenses_time ) = {0}", dto.getYear());
|
|
|
+
|
|
|
+ wrapper.keyword(dto.getKeyword(),
|
|
|
+ new SqlField("asj.subjects_name"),
|
|
|
+ new SqlField("t1.calculate_item_str")
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ Map<Long, AccountSubjectsBalance> subjectsBalanceMap = accountSubjectsBalanceService.mapKEntity(AccountSubjectsBalance::getSubjectsId, q -> q
|
|
|
+ .apply("YEAR(account_date) = {0} AND MONTH(account_date) = 12", dto.getYear() - 1)
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ SubjectBalanceBo totalBo = new SubjectBalanceBo();
|
|
|
+
|
|
|
+
|
|
|
+ List<SubjectBalanceBo> subjectBalanceBos = financeReportMapper.subjectBalance(wrapper, dto);
|
|
|
+ for (SubjectBalanceBo subjectBalanceBo : subjectBalanceBos) {
|
|
|
+
|
|
|
+ //获取期出余额
|
|
|
+ BigDecimal yearBeginBalance = BigDecimal.ZERO;
|
|
|
+ AccountSubjectsBalance accountSubjectsBalance = subjectsBalanceMap.get(subjectBalanceBo.getSubjectsId());
|
|
|
+ if (accountSubjectsBalance != null) {
|
|
|
+ yearBeginBalance = accountSubjectsBalance.getBalance();
|
|
|
+ }
|
|
|
+ subjectBalanceBo.setYearBeginBalance(yearBeginBalance);
|
|
|
+ //余额 = 年初余额 + 本期发生额
|
|
|
+ subjectBalanceBo.setBalanceAmount(yearBeginBalance.add(subjectBalanceBo.getTradeAmount()));
|
|
|
+
|
|
|
+ totalBo.setSubjectsName("合计");
|
|
|
+ totalBo.setYearBeginBalance(ObjectUtil.defaultIfNull(totalBo.getYearBeginBalance(), BigDecimal.ZERO).add(subjectBalanceBo.getYearBeginBalance()));
|
|
|
+ totalBo.setMonth1Amount(ObjectUtil.defaultIfNull(totalBo.getMonth1Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth1Amount()));
|
|
|
+ totalBo.setMonth2Amount(ObjectUtil.defaultIfNull(totalBo.getMonth2Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth2Amount()));
|
|
|
+ totalBo.setMonth3Amount(ObjectUtil.defaultIfNull(totalBo.getMonth3Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth3Amount()));
|
|
|
+ totalBo.setMonth4Amount(ObjectUtil.defaultIfNull(totalBo.getMonth4Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth4Amount()));
|
|
|
+ totalBo.setMonth5Amount(ObjectUtil.defaultIfNull(totalBo.getMonth5Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth5Amount()));
|
|
|
+ totalBo.setMonth6Amount(ObjectUtil.defaultIfNull(totalBo.getMonth6Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth6Amount()));
|
|
|
+ totalBo.setMonth7Amount(ObjectUtil.defaultIfNull(totalBo.getMonth7Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth7Amount()));
|
|
|
+ totalBo.setMonth8Amount(ObjectUtil.defaultIfNull(totalBo.getMonth8Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth8Amount()));
|
|
|
+ totalBo.setMonth9Amount(ObjectUtil.defaultIfNull(totalBo.getMonth9Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth9Amount()));
|
|
|
+ totalBo.setMonth10Amount(ObjectUtil.defaultIfNull(totalBo.getMonth10Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth10Amount()));
|
|
|
+ totalBo.setMonth11Amount(ObjectUtil.defaultIfNull(totalBo.getMonth11Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth11Amount()));
|
|
|
+ totalBo.setMonth12Amount(ObjectUtil.defaultIfNull(totalBo.getMonth12Amount(), BigDecimal.ZERO).add(subjectBalanceBo.getMonth12Amount()));
|
|
|
+ totalBo.setTradeAmount(ObjectUtil.defaultIfNull(totalBo.getTradeAmount(), BigDecimal.ZERO).add(subjectBalanceBo.getTradeAmount()));
|
|
|
+ totalBo.setBalanceAmount(ObjectUtil.defaultIfNull(totalBo.getBalanceAmount(), BigDecimal.ZERO).add(subjectBalanceBo.getBalanceAmount()));
|
|
|
+ }
|
|
|
+
|
|
|
+ subjectBalanceBos.add(totalBo);
|
|
|
+
|
|
|
+ return subjectBalanceBos;
|
|
|
+ }
|
|
|
+}
|