Browse Source

科目余额报表

yzc 11 months ago
parent
commit
29045e6767
20 changed files with 408 additions and 2 deletions
  1. 17 0
      code/src/test/java/FromDataSource.java
  2. 1 1
      hx-account/src/main/java/com/fjhx/account/entity/calculate/po/CostCalculateItem.java
  3. 1 1
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountSubjectsServiceImpl.java
  4. 25 0
      hx-form/src/main/java/com/fjhx/form/controller/FinanceReportController.java
  5. 20 0
      hx-form/src/main/java/com/fjhx/form/controller/account/AccountSubjectsBalanceController.java
  6. 32 0
      hx-form/src/main/java/com/fjhx/form/entity/SubjectBalanceBo.java
  7. 12 0
      hx-form/src/main/java/com/fjhx/form/entity/SubjectBalanceSelectDto.java
  8. 17 0
      hx-form/src/main/java/com/fjhx/form/entity/account/dto/AccountSubjectsBalanceDto.java
  9. 17 0
      hx-form/src/main/java/com/fjhx/form/entity/account/dto/AccountSubjectsBalanceSelectDto.java
  10. 39 0
      hx-form/src/main/java/com/fjhx/form/entity/account/po/AccountSubjectsBalance.java
  11. 17 0
      hx-form/src/main/java/com/fjhx/form/entity/account/vo/AccountSubjectsBalanceVo.java
  12. 5 0
      hx-form/src/main/java/com/fjhx/form/entity/cost/po/CostControlDetail.java
  13. 16 0
      hx-form/src/main/java/com/fjhx/form/mapper/FinanceReportMapper.java
  14. 17 0
      hx-form/src/main/java/com/fjhx/form/mapper/account/AccountSubjectsBalanceMapper.java
  15. 10 0
      hx-form/src/main/java/com/fjhx/form/service/FinanceReportService.java
  16. 17 0
      hx-form/src/main/java/com/fjhx/form/service/account/AccountSubjectsBalanceService.java
  17. 21 0
      hx-form/src/main/java/com/fjhx/form/service/account/impl/AccountSubjectsBalanceServiceImpl.java
  18. 84 0
      hx-form/src/main/java/com/fjhx/form/service/impl/FinanceReportServiceImpl.java
  19. 36 0
      hx-form/src/main/resources/mapper/FinanceReportMapper.xml
  20. 4 0
      hx-form/src/main/resources/mapper/account/AccountSubjectsBalanceMapper.xml

+ 17 - 0
code/src/test/java/FromDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class FromDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url(DataSourceInfo.URL)
+                .username(DataSourceInfo.USER_NAME)
+                .password(DataSourceInfo.PASSWORD)
+                .port(9989)
+                .module("hx-form")
+                .parent("com.fjhx.form")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 1 - 1
hx-account/src/main/java/com/fjhx/account/entity/calculate/po/CostCalculateItem.java

@@ -15,7 +15,7 @@ import lombok.Setter;
  */
  */
 @Getter
 @Getter
 @Setter
 @Setter
-@TableName("calculate_item")
+@TableName("cost_calculate_item")
 public class CostCalculateItem extends BasePo {
 public class CostCalculateItem extends BasePo {
 
 
     /**
     /**

+ 1 - 1
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountSubjectsServiceImpl.java

@@ -59,7 +59,7 @@ public class AccountSubjectsServiceImpl extends ServiceImpl<AccountSubjectsMappe
                 subjectsNameGroup.add(0, accountSubjects.getSubjectsName());
                 subjectsNameGroup.add(0, accountSubjects.getSubjectsName());
                 accountSubjects = accountSubjectsMap.get(accountSubjects.getParentId());
                 accountSubjects = accountSubjectsMap.get(accountSubjects.getParentId());
             }
             }
-            accountSubjectsVo.setAccountSubjectsNames(subjectsNameGroup.stream().collect(Collectors.joining(" / ")));
+            accountSubjectsVo.setAccountSubjectsNames(subjectsNameGroup.stream().collect(Collectors.joining(" - ")));
         }
         }
 
 
         return list;
         return list;

+ 25 - 0
hx-form/src/main/java/com/fjhx/form/controller/FinanceReportController.java

@@ -0,0 +1,25 @@
+package com.fjhx.form.controller;
+
+import com.fjhx.form.entity.SubjectBalanceBo;
+import com.fjhx.form.entity.SubjectBalanceSelectDto;
+import com.fjhx.form.service.FinanceReportService;
+import org.springframework.beans.factory.annotation.Autowired;
+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 java.util.List;
+
+@RestController
+@RequestMapping("/report/finance")
+public class FinanceReportController {
+
+    @Autowired
+    private FinanceReportService financeReportService;
+
+    @PostMapping("/subjectBalance")
+    List<SubjectBalanceBo> subjectBalance(@RequestBody SubjectBalanceSelectDto dto) {
+        return financeReportService.subjectBalance(dto);
+    }
+}

+ 20 - 0
hx-form/src/main/java/com/fjhx/form/controller/account/AccountSubjectsBalanceController.java

@@ -0,0 +1,20 @@
+package com.fjhx.form.controller.account;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 科目余额表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2024-05-13
+ */
+@RestController
+@RequestMapping("/accountSubjectsBalance")
+public class AccountSubjectsBalanceController {
+
+
+}

+ 32 - 0
hx-form/src/main/java/com/fjhx/form/entity/SubjectBalanceBo.java

@@ -0,0 +1,32 @@
+package com.fjhx.form.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class SubjectBalanceBo {
+    private Long id;
+    private Long subjectsId;
+    private String subjectsCode;
+    private String subjectsName;
+    private String calculateItemStr;
+    private BigDecimal tradeAmount;
+    private BigDecimal month1Amount;
+    private BigDecimal month2Amount;
+    private BigDecimal month3Amount;
+    private BigDecimal month4Amount;
+    private BigDecimal month5Amount;
+    private BigDecimal month6Amount;
+    private BigDecimal month7Amount;
+    private BigDecimal month8Amount;
+    private BigDecimal month9Amount;
+    private BigDecimal month10Amount;
+    private BigDecimal month11Amount;
+    private BigDecimal month12Amount;
+
+    private BigDecimal yearBeginBalance;
+    private BigDecimal balanceAmount;
+}

+ 12 - 0
hx-form/src/main/java/com/fjhx/form/entity/SubjectBalanceSelectDto.java

@@ -0,0 +1,12 @@
+package com.fjhx.form.entity;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class SubjectBalanceSelectDto extends BaseSelectDto {
+
+    private Integer year;
+}

+ 17 - 0
hx-form/src/main/java/com/fjhx/form/entity/account/dto/AccountSubjectsBalanceDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.form.entity.account.dto;
+
+import com.fjhx.form.entity.account.po.AccountSubjectsBalance;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 科目余额表新增编辑入参实体
+ *
+ * @author
+ * @since 2024-05-13
+ */
+@Getter
+@Setter
+public class AccountSubjectsBalanceDto extends AccountSubjectsBalance {
+
+}

+ 17 - 0
hx-form/src/main/java/com/fjhx/form/entity/account/dto/AccountSubjectsBalanceSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.form.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 科目余额表列表查询入参实体
+ *
+ * @author
+ * @since 2024-05-13
+ */
+@Getter
+@Setter
+public class AccountSubjectsBalanceSelectDto extends BaseSelectDto {
+
+}

+ 39 - 0
hx-form/src/main/java/com/fjhx/form/entity/account/po/AccountSubjectsBalance.java

@@ -0,0 +1,39 @@
+package com.fjhx.form.entity.account.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 科目余额表
+ * </p>
+ *
+ * @author
+ * @since 2024-05-13
+ */
+@Getter
+@Setter
+@TableName("account_subjects_balance")
+public class AccountSubjectsBalance extends BasePo {
+
+    /**
+     * 科目id
+     */
+    private Long subjectsId;
+
+    /**
+     * 日期-yyyy-MM
+     */
+    private Date accountDate;
+
+    /**
+     * 月余额
+     */
+    private BigDecimal balance;
+
+}

+ 17 - 0
hx-form/src/main/java/com/fjhx/form/entity/account/vo/AccountSubjectsBalanceVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.form.entity.account.vo;
+
+import com.fjhx.form.entity.account.po.AccountSubjectsBalance;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 科目余额表列表查询返回值实体
+ *
+ * @author
+ * @since 2024-05-13
+ */
+@Getter
+@Setter
+public class AccountSubjectsBalanceVo extends AccountSubjectsBalance {
+
+}

+ 5 - 0
hx-form/src/main/java/com/fjhx/form/entity/cost/po/CostControlDetail.java

@@ -225,5 +225,10 @@ public class CostControlDetail extends BasePo {
     @Label("费用合计")
     @Label("费用合计")
     private String costMoneySum;
     private String costMoneySum;
 
 
+    /**
+     * 核算项目字符串拼接
+     */
+    private String calculateItemStr;
+
 
 
 }
 }

+ 16 - 0
hx-form/src/main/java/com/fjhx/form/mapper/FinanceReportMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.form.mapper;
+
+import com.fjhx.form.entity.SubjectBalanceBo;
+import com.fjhx.form.entity.SubjectBalanceSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface FinanceReportMapper {
+
+    List<SubjectBalanceBo> subjectBalance(@Param("ew") IWrapper<Object> wrapper, @Param("dto") SubjectBalanceSelectDto dto);
+
+}

+ 17 - 0
hx-form/src/main/java/com/fjhx/form/mapper/account/AccountSubjectsBalanceMapper.java

@@ -0,0 +1,17 @@
+package com.fjhx.form.mapper.account;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.form.entity.account.po.AccountSubjectsBalance;
+
+
+/**
+ * <p>
+ * 科目余额表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2024-05-13
+ */
+public interface AccountSubjectsBalanceMapper extends BaseMapper<AccountSubjectsBalance> {
+
+}

+ 10 - 0
hx-form/src/main/java/com/fjhx/form/service/FinanceReportService.java

@@ -0,0 +1,10 @@
+package com.fjhx.form.service;
+
+import com.fjhx.form.entity.SubjectBalanceBo;
+import com.fjhx.form.entity.SubjectBalanceSelectDto;
+
+import java.util.List;
+
+public interface FinanceReportService {
+    List<SubjectBalanceBo> subjectBalance(SubjectBalanceSelectDto dto);
+}

+ 17 - 0
hx-form/src/main/java/com/fjhx/form/service/account/AccountSubjectsBalanceService.java

@@ -0,0 +1,17 @@
+package com.fjhx.form.service.account;
+
+import com.fjhx.form.entity.account.po.AccountSubjectsBalance;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 科目余额表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-05-13
+ */
+public interface AccountSubjectsBalanceService extends BaseService<AccountSubjectsBalance> {
+
+}

+ 21 - 0
hx-form/src/main/java/com/fjhx/form/service/account/impl/AccountSubjectsBalanceServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fjhx.form.service.account.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.form.entity.account.po.AccountSubjectsBalance;
+import com.fjhx.form.mapper.account.AccountSubjectsBalanceMapper;
+import com.fjhx.form.service.account.AccountSubjectsBalanceService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 科目余额表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2024-05-13
+ */
+@Service
+public class AccountSubjectsBalanceServiceImpl extends ServiceImpl<AccountSubjectsBalanceMapper, AccountSubjectsBalance> implements AccountSubjectsBalanceService {
+
+}

+ 84 - 0
hx-form/src/main/java/com/fjhx/form/service/impl/FinanceReportServiceImpl.java

@@ -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;
+    }
+}

+ 36 - 0
hx-form/src/main/resources/mapper/FinanceReportMapper.xml

@@ -0,0 +1,36 @@
+<?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.fjhx.form.mapper.FinanceReportMapper">
+    <select id="subjectBalance" resultType="com.fjhx.form.entity.SubjectBalanceBo">
+        SELECT t1.id,
+               t1.account_subjects_id                                     as subjects_id,
+               asj.subjects_code,
+               asj.subjects_name,
+               t1.calculate_item_str,
+               sum(t1.tradeAmount)                                        AS trade_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 1, t1.tradeAmount, 0))  AS month1_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 2, t1.tradeAmount, 0))  AS month2_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 3, t1.tradeAmount, 0))  AS month3_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 4, t1.tradeAmount, 0))  AS month4_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 5, t1.tradeAmount, 0))  AS month5_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 6, t1.tradeAmount, 0))  AS month6_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 7, t1.tradeAmount, 0))  AS month7_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 8, t1.tradeAmount, 0))  AS month8_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 9, t1.tradeAmount, 0))  AS month9_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 10, t1.tradeAmount, 0)) AS month10_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 11, t1.tradeAmount, 0)) AS month11_amount,
+               sum(IF(MONTH ( t1.expenses_time )= 12, t1.tradeAmount, 0)) AS month12_amount
+        FROM (SELECT ccd.id,
+                     ccd.account_subjects_id,
+                     IF(cc.trade_type = 20, cc.apply_time, ap.expenses_time)                AS expenses_time,
+                     IF(cc.trade_type = 20, ccd.money, IF(ap.`status` != 20, ap.amount, 0)) AS tradeAmount,
+                     ccd.calculate_item_str
+              FROM cost_control cc
+                       JOIN cost_control_detail ccd ON ccd.cost_control_id = cc.id
+                       LEFT JOIN account_payment ap ON ap.business_id = cc.id) t1
+                 LEFT JOIN account_subjects asj ON t1.account_subjects_id = asj.id
+            ${ew.customSqlSegment}
+        GROUP BY
+            CONCAT( calculate_item_str )
+    </select>
+</mapper>

+ 4 - 0
hx-form/src/main/resources/mapper/account/AccountSubjectsBalanceMapper.xml

@@ -0,0 +1,4 @@
+<?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.fjhx.form.mapper.account.AccountSubjectsBalanceMapper">
+</mapper>