소스 검색

回付款比例在sql中计算

lamphua 1 개월 전
부모
커밋
c503da6e0d

+ 0
- 19
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcContractController.java 파일 보기

@@ -272,25 +272,6 @@ public class CmcContractController extends BaseController
272 272
     public void export(HttpServletResponse response, CmcContract cmcContract, String selectFields)
273 273
     {
274 274
         List<CmcContract> list = cmcContractService.selectCmcContractList(cmcContract);
275
-        for (CmcContract contract : list) {
276
-            CmcContractPaid cmcContractPaid = new CmcContractPaid();
277
-            cmcContractPaid.setContractId(contract.getContractId());
278
-            List<CmcContractPaid> cmcContractPaidList = cmcContractPaidService.selectCmcContractPaidList(cmcContractPaid);
279
-            BigDecimal paidAmount = new BigDecimal("0.00");
280
-            String paidPercentage = "";
281
-            for (CmcContractPaid contractPaid : cmcContractPaidList) {
282
-                paidAmount = paidAmount.add(contractPaid.getPaidAmount());
283
-            }
284
-            contract.setPaidAmount(paidAmount);
285
-            if (contract.getAmount().equals(new BigDecimal("0.00")) || paidAmount.equals(new BigDecimal("0.00"))) {
286
-                paidPercentage = "0%";
287
-            }
288
-            else {
289
-                paidPercentage = paidAmount.divide(contract.getAmount(), RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%";
290
-            }
291
-            contract.setPaidAmount(paidAmount);
292
-            contract.setPaidPercentage(paidPercentage);
293
-        }
294 275
         List<String> selectFieldList = Arrays.asList(selectFields.split(","));
295 276
         ExcelUtil<CmcContract> util = new ExcelUtil<CmcContract>(CmcContract.class);
296 277
         util.exportExcel(response, selectFieldList, list, "cmc合同评审数据", StringUtils.EMPTY);

+ 14
- 0
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcSubContractController.java 파일 보기

@@ -10,6 +10,7 @@ import com.alibaba.fastjson2.JSONArray;
10 10
 import com.alibaba.fastjson2.JSONObject;
11 11
 import com.ruoyi.common.utils.DateUtils;
12 12
 import com.ruoyi.common.utils.SnowFlake;
13
+import com.ruoyi.common.utils.StringUtils;
13 14
 import com.ruoyi.oa.domain.*;
14 15
 import com.ruoyi.oa.domain.CmcSubContract;
15 16
 import com.ruoyi.oa.service.ICmcPartnerService;
@@ -67,6 +68,19 @@ public class CmcSubContractController extends BaseController
67 68
         util.exportExcel(response, list, "cmc分包合同评审数据");
68 69
     }
69 70
 
71
+    /**
72
+     * 导出选择字段cmc分包合同评审列表
73
+     */
74
+    @Log(title = "cmc分包合同评审", businessType = BusinessType.EXPORT)
75
+    @PostMapping("/exportSelectFields")
76
+    public void export(HttpServletResponse response, CmcSubContract cmcSubContract, String selectFields)
77
+    {
78
+        List<CmcSubContract> list = cmcSubContractService.selectCmcSubContractList(cmcSubContract);
79
+        List<String> selectFieldList = Arrays.asList(selectFields.split(","));
80
+        ExcelUtil<CmcSubContract> util = new ExcelUtil<CmcSubContract>(CmcSubContract.class);
81
+        util.exportExcel(response, selectFieldList, list, "cmc分包合同评审数据", StringUtils.EMPTY);
82
+    }
83
+
70 84
     /**
71 85
      * 获取cmc分包合同评审详细信息
72 86
      */

+ 30
- 4
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcContract.java 파일 보기

@@ -56,12 +56,20 @@ public class CmcContract extends BaseEntity
56 56
     @Excel(name = "合同金额")
57 57
     private BigDecimal amount;
58 58
 
59
-    /** 实际回款金额 */
60
-    @Excel(name = "实际回款金额")
59
+    /** 开票金额 */
60
+    @Excel(name = "开票金额")
61
+    private BigDecimal invoiceAmount;
62
+
63
+    /** 开票比例 */
64
+    @Excel(name = "开票比例")
65
+    private String invoicePercentage;
66
+
67
+    /** 回款金额 */
68
+    @Excel(name = "回款金额")
61 69
     private BigDecimal paidAmount;
62 70
 
63
-    /** 实际回款比例 */
64
-    @Excel(name = "实际回款比例")
71
+    /** 回款比例 */
72
+    @Excel(name = "回款比例")
65 73
     private String paidPercentage;
66 74
 
67 75
     /** 履约保证金 */
@@ -294,6 +302,24 @@ public class CmcContract extends BaseEntity
294 302
     {
295 303
         return paidPercentage;
296 304
     }
305
+    public void setInvoiceAmount(BigDecimal invoiceAmount)
306
+    {
307
+        this.invoiceAmount = invoiceAmount;
308
+    }
309
+
310
+    public BigDecimal getInvoiceAmount()
311
+    {
312
+        return invoiceAmount;
313
+    }
314
+    public void setInvoicePercentage(String invoicePercentage)
315
+    {
316
+        this.invoicePercentage = invoicePercentage;
317
+    }
318
+
319
+    public String getInvoicePercentage()
320
+    {
321
+        return invoicePercentage;
322
+    }
297 323
     public void setDeposit(BigDecimal deposit)
298 324
     {
299 325
         this.deposit = deposit;

+ 41
- 2
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcSubContract.java 파일 보기

@@ -30,10 +30,22 @@ public class CmcSubContract extends BaseEntity
30 30
     @Excel(name = "分包合同金额")
31 31
     private BigDecimal subAmount;
32 32
 
33
-    /** 实际付款金额 */
34
-    @Excel(name = "实际付款金额")
33
+    /** 收票金额 */
34
+    @Excel(name = "收票金额")
35
+    private BigDecimal invoiceAmount;
36
+
37
+    /** 收票比例 */
38
+    @Excel(name = "收票比例")
39
+    private String invoicePercentage;
40
+
41
+    /** 付款金额 */
42
+    @Excel(name = "付款金额")
35 43
     private BigDecimal paidAmount;
36 44
 
45
+    /** 付款比例 */
46
+    @Excel(name = "付款比例")
47
+    private String paidPercentage;
48
+
37 49
     /** 项目id */
38 50
     @Excel(name = "项目编号")
39 51
     private String projectNumber;
@@ -179,6 +191,33 @@ public class CmcSubContract extends BaseEntity
179 191
     {
180 192
         return paidAmount;
181 193
     }
194
+    public void setPaidPercentage(String paidPercentage)
195
+    {
196
+        this.paidPercentage = paidPercentage;
197
+    }
198
+
199
+    public String getPaidPercentage()
200
+    {
201
+        return paidPercentage;
202
+    }
203
+    public void setInvoiceAmount(BigDecimal invoiceAmount)
204
+    {
205
+        this.invoiceAmount = invoiceAmount;
206
+    }
207
+
208
+    public BigDecimal getInvoiceAmount()
209
+    {
210
+        return invoiceAmount;
211
+    }
212
+    public void setInvoicePercentage(String invoicePercentage)
213
+    {
214
+        this.invoicePercentage = invoicePercentage;
215
+    }
216
+
217
+    public String getInvoicePercentage()
218
+    {
219
+        return invoicePercentage;
220
+    }
182 221
     public void setPartnerId(String partnerId)
183 222
     {
184 223
         this.partnerId = partnerId;

+ 12
- 4
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcContractMapper.xml 파일 보기

@@ -17,6 +17,9 @@
17 17
         <result property="borrowAmount"    column="borrow_amount"    />
18 18
         <result property="settleAmount"    column="settle_amount"    />
19 19
         <result property="paidAmount"    column="paid_amount"    />
20
+        <result property="paidPercentage"    column="paid_percentage"    />
21
+        <result property="invoiceAmount"    column="invoice_amount"    />
22
+        <result property="invoicePercentage"    column="invoice_percentage"    />
20 23
         <result property="deposit"    column="deposit"    />
21 24
         <result property="contractDocument"    column="contract_document"    />
22 25
         <result property="drafter"    column="drafter"    />
@@ -75,9 +78,11 @@
75 78
 
76 79
     <sql id="selectCmcContractVo">
77 80
         select distinct c.contract_id, c.contract_code, c.contract_name, c.contract_number, c.tender_id, t.project_name as t_project_name, p.project_number, p.project_name,
78
-               p.project_source, c.party_a_id, pa.party_a_name, t.a_person as a_person, t.a_phone as a_phone, t.agent as agent, t.agent_person as agent_person, sum(cp.paid_amount) as paid_amount,
79
-               t.agent_phone as agent_phone, c.amount, c.deposit, c.contract_document, c.drafter, u.nick_name as draft_nick_name, c.draft_time, c.remark, c.sign_date, c.sign_remark, c.sign_scan,
80
-               c.comment_type, c.manager_comment, c.manager_user_id, u1.nick_name as manager_nick_name, c.manager_time, c.gm_user_id, u2.nick_name as gm_nick_name, c.gm_time, c.gm_comment from cmc_contract as c
81
+        p.project_source, c.party_a_id, pa.party_a_name, t.a_person as a_person, t.a_phone as a_phone, t.agent as agent, t.agent_person as agent_person,
82
+        sum(cp.paid_amount) as paid_amount, case c.amount when 0 then '0.00%' else concat(convert(round(sum(cp.paid_amount) / c.amount * 100, 2), CHAR), '%') end as paid_percentage,
83
+        sum(ci.invoice_amount) as invoice_amount, case c.amount when 0 then '0.00%' else concat(convert(round(sum(ci.invoice_amount) / c.amount * 100, 2), CHAR), '%') end as invoice_percentage,
84
+        t.agent_phone as agent_phone, c.amount, c.deposit, c.contract_document, c.drafter, u.nick_name as draft_nick_name, c.draft_time, c.remark, c.sign_date, c.sign_remark, c.sign_scan,
85
+        c.comment_type, c.manager_comment, c.manager_user_id, u1.nick_name as manager_nick_name, c.manager_time, c.gm_user_id, u2.nick_name as gm_nick_name, c.gm_time, c.gm_comment from cmc_contract as c
81 86
         left join sys_user as u on u.user_id = c.drafter
82 87
         left join sys_user as u1 on u1.user_id = c.manager_user_id
83 88
         left join sys_user as u2 on u2.user_id = c.gm_user_id
@@ -86,6 +91,7 @@
86 91
         left join cmc_project_contract as pc on pc.contract_id = c.contract_id
87 92
         left join cmc_project as p on pc.project_id = p.project_id
88 93
         left join cmc_contract_paid as cp on cp.contract_id = c.contract_id
94
+        left join cmc_contract_invoice as ci on ci.contract_id = c.contract_id
89 95
     </sql>
90 96
 
91 97
     <select id="selectCmcContractList" parameterType="CmcContract" resultMap="CmcContractResult">
@@ -116,7 +122,9 @@
116 122
 
117 123
     <select id="selectCmcContractListFuzzy" parameterType="CmcContract" resultMap="CmcContractResult">
118 124
         select distinct c.contract_id, c.contract_code, c.contract_name, c.contract_number, c.tender_id, t.project_name as t_project_name, p.project_number, p.project_name,
119
-        p.project_source, c.party_a_id, pa.party_a_name, t.a_person as a_person, t.a_phone as a_phone, t.agent as agent, t.agent_person as agent_person, sum(cp.paid_amount) as paid_amount,
125
+        p.project_source, c.party_a_id, pa.party_a_name, t.a_person as a_person, t.a_phone as a_phone, t.agent as agent, t.agent_person as agent_person,
126
+        sum(cp.paid_amount) as paid_amount, case c.amount when 0 then '0.00%' else concat(convert(round(sum(cp.paid_amount) / c.amount * 100, 2), CHAR), '%') end as paid_percentage,
127
+        sum(ci.invoice_amount) as invoice_amount, case c.amount when 0 then '0.00%' else concat(convert(round(sum(ci.invoice_amount) / c.amount * 100, 2), CHAR), '%') end as invoice_percentage,
120 128
         t.agent_phone as agent_phone, c.amount, c.deposit, c.contract_document, c.drafter, u.nick_name as draft_nick_name, c.draft_time, c.remark, c.sign_date, c.sign_remark, c.sign_scan,
121 129
         c.comment_type, c.manager_comment, c.manager_user_id, u1.nick_name as manager_nick_name, c.manager_time, c.gm_user_id, u2.nick_name as gm_nick_name, c.gm_time, c.gm_comment from cmc_contract as c
122 130
         left join sys_user as u on u.user_id = c.drafter

+ 9
- 3
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcSubContractMapper.xml 파일 보기

@@ -9,6 +9,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
9 9
         <result property="subContractName"    column="sub_contract_name"    />
10 10
         <result property="subAmount"    column="sub_amount"    />
11 11
         <result property="paidAmount"    column="paid_amount"    />
12
+        <result property="paidPercentage"    column="paid_percentage"    />
13
+        <result property="invoiceAmount"    column="invoice_amount"    />
14
+        <result property="invoicePercentage"    column="invoice_percentage"    />
12 15
         <result property="partnerId"    column="partner_id"    />
13 16
         <result property="contactPerson"    column="contact_person"    />
14 17
         <result property="telephone"    column="telephone"    />
@@ -61,9 +64,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
61 64
     </resultMap>
62 65
 
63 66
     <sql id="selectCmcSubContractVo">
64
-        select distinct sc.sub_contract_id, sc.sub_contract_name, sc.sub_amount, sc.partner_id, pa.partner_name, sc.contact_person, sc.telephone, sc.contract_document, sc.drafter, sum(cp.paid_amount) as paid_amount,
65
-               p.project_number, p.project_name, p.project_source,u.nick_name as draft_nick_name, sc.draft_time, sc.remark, sc.sign_date, sc.sign_remark, sc.sign_scan, sc.comment_type, sc.manager_comment,
66
-               sc.manager_user_id, u1.nick_name as manager_nick_name, sc.manager_time, sc.gm_user_id, u2.nick_name as gm_nick_name, sc.gm_time, sc.gm_comment from cmc_sub_contract as sc
67
+        select distinct sc.sub_contract_id, sc.sub_contract_name, sc.sub_amount, sc.partner_id, pa.partner_name, sc.contact_person, sc.telephone, sc.contract_document, sc.drafter,
68
+        sum(cp.paid_amount) as paid_amount, case sc.amount when 0 then '0.00%' else concat(convert(round(sum(cp.paid_amount) / sc.amount * 100, 2), CHAR), '%') end as paid_percentage,
69
+        sum(ci.invoice_amount) as invoice_amount, case sc.amount when 0 then '0.00%' else concat(convert(round(sum(ci.invoice_amount) / sc.amount * 100, 2), CHAR), '%') end as invoice_percentage,
70
+        p.project_number, p.project_name, p.project_source,u.nick_name as draft_nick_name, sc.draft_time, sc.remark, sc.sign_date, sc.sign_remark, sc.sign_scan, sc.comment_type, sc.manager_comment,
71
+        sc.manager_user_id, u1.nick_name as manager_nick_name, sc.manager_time, sc.gm_user_id, u2.nick_name as gm_nick_name, sc.gm_time, sc.gm_comment from cmc_sub_contract as sc
67 72
         left join sys_user as u on u.user_id = sc.drafter
68 73
         left join sys_user as u1 on u1.user_id = sc.manager_user_id
69 74
         left join sys_user as u2 on u2.user_id = sc.gm_user_id
@@ -71,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
71 76
         left join cmc_project_sub_contract as psc on psc.sub_contract_id = sc.sub_contract_id
72 77
         left join cmc_project as p on psc.project_id = p.project_id
73 78
         left join cmc_contract_paid as cp on cp.contract_id = sc.sub_contract_id
79
+        left join cmc_contract_invoice as ci on ci.contract_id = sc.sub_contract_id
74 80
     </sql>
75 81
 
76 82
     <select id="selectCmcSubContractList" parameterType="CmcSubContract" resultMap="CmcSubContractResult">

Loading…
취소
저장