chengf
2025-12-10 ee89a5cfa50980f1f2f2fa84bb69741b161670b5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package com.java110.job.dao.impl;
 
import com.java110.dto.msg.BankIncomePo;
import com.java110.dto.msg.ReportAmountDetailPo;
import com.java110.dto.msg.ReportApprovalRecordPo;
import com.java110.dto.msg.ReportMainPo;
import com.java110.job.dao.IBankIncomeServiceDao;
import com.java110.job.dao.IReportAmountDetailServiceDao;
import com.java110.job.dao.IReportApprovalRecordServiceDao;
import com.java110.job.dao.IReportMainServiceDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.math.BigDecimal;
import java.util.Date;
 
/**
 * 签报数据导入Service
 */
@Service
public class ReportImportService {
 
    @Autowired
    private IReportMainServiceDao reportMainServiceDao;
 
    @Autowired
    private IReportAmountDetailServiceDao reportAmountDetailServiceDao;
 
    @Autowired
    private IReportApprovalRecordServiceDao reportApprovalRecordServiceDao;
 
    @Autowired
    private IBankIncomeServiceDao bankIncomeServiceDao;
 
    /**
     * 保存签报单主表数据
     * @param reportMainPo 签报单主表实体
     * @return 主键ID
     */
    @Transactional(rollbackFor = Exception.class)
    public int saveReportMain(ReportMainPo reportMainPo) {
        Date now = new Date();
        reportMainPo.setCreateTime(now);
        reportMainPo.setUpdateTime(now);
        return reportMainServiceDao.saveReportMain(reportMainPo);
    }
 
    /**
     * 保存签报金额明细
     * @param reportAmountDetailPo 金额明细实体
     * @return 影响行数
     */
    @Transactional(rollbackFor = Exception.class)
    public int saveReportAmountDetail(ReportAmountDetailPo reportAmountDetailPo) {
        Date now = new Date();
        reportAmountDetailPo.setCreateTime(now);
        reportAmountDetailPo.setUpdateTime(now);
        // 自动计算打印合计
        reportAmountDetailPo.setPrintTotal(
            reportAmountDetailPo.getFirstPrintAmount().add(reportAmountDetailPo.getSecondPrintAmount())
            .add(reportAmountDetailPo.getThirdPrintAmount()).add(reportAmountDetailPo.getFourthPrintAmount())
            .add(reportAmountDetailPo.getFifthPrintAmount())
        );
        // 自动计算到账合计
        reportAmountDetailPo.setReceiptTotal(
            reportAmountDetailPo.getFirstReceiptAmount().add(reportAmountDetailPo.getSecondReceiptAmount())
            .add(reportAmountDetailPo.getThirdReceiptAmount()).add(reportAmountDetailPo.getFourthReceiptAmount())
            .add(reportAmountDetailPo.getFifthReceiptAmount())
        );
        // 自动计算尚缺金额
        reportAmountDetailPo.setRemainingAmount(
            reportAmountDetailPo.getCommitteeAmount().subtract(reportAmountDetailPo.getReceiptTotal())
        );
        // 自动计算到账率(避免除0)
        if (reportAmountDetailPo.getCommitteeAmount().compareTo(BigDecimal.ZERO) != 0) {
            reportAmountDetailPo.setFundReceiptRate(
                reportAmountDetailPo.getReceiptTotal().divide(reportAmountDetailPo.getCommitteeAmount(), 4, BigDecimal.ROUND_HALF_UP)
            );
        } else {
            reportAmountDetailPo.setFundReceiptRate(BigDecimal.ZERO);
        }
        return reportAmountDetailServiceDao.saveReportAmountDetail(reportAmountDetailPo);
    }
 
    /**
     * 保存签报审批记录
     * @param reportApprovalRecordPo 审批记录实体
     * @return 影响行数
     */
    @Transactional(rollbackFor = Exception.class)
    public int saveReportApprovalRecord(ReportApprovalRecordPo reportApprovalRecordPo) {
        Date now = new Date();
        reportApprovalRecordPo.setCreateTime(now);
        reportApprovalRecordPo.setUpdateTime(now);
        return reportApprovalRecordServiceDao.saveReportApprovalRecord(reportApprovalRecordPo);
    }
 
    /**
     * 保存银行收入记录
     * @param bankIncomePo 银行收入实体
     * @return 影响行数
     */
    @Transactional(rollbackFor = Exception.class)
    public int saveBankIncome(BankIncomePo bankIncomePo) {
        Date now = new Date();
        bankIncomePo.setCreateTime(now);
        bankIncomePo.setUpdateTime(now);
        return bankIncomeServiceDao.saveBankIncome(bankIncomePo);
    }
}