소스 검색

按时间范围进行合同回款统计

lamphua 2 달 전
부모
커밋
acff3831dd

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

@@ -82,6 +82,10 @@ public class CmcContractController extends BaseController
82 82
         JSONObject amountObject = new JSONObject();
83 83
         JSONArray cwAmountArray = new JSONArray();
84 84
         JSONObject cwAmountObject = new JSONObject();
85
+        JSONArray paidAmountArray = new JSONArray();
86
+        JSONObject paidAmountObject = new JSONObject();
87
+        JSONArray paidCwAmountArray = new JSONArray();
88
+        JSONObject paidCwAmountObject = new JSONObject();
85 89
         //每年合同数量及金额
86 90
         if (cmcContract.getSignDate() == null) {
87 91
             for (int i = 2019; i <= Calendar.getInstance().get(Calendar.YEAR); i++) {
@@ -89,12 +93,15 @@ public class CmcContractController extends BaseController
89 93
                 List<CmcContract> yearList = cmcContractService.selectCmcContractList(cmcContract);
90 94
                 yearObject.put(String.valueOf(i), yearList.size());
91 95
                 BigDecimal amount = new BigDecimal(0);
96
+                BigDecimal paidAmount = new BigDecimal(0);
92 97
                 for (CmcContract contract : yearList) {
93 98
                     if (contract.getAmount() != null)
94 99
                         amount = amount.add(contract.getAmount());
100
+                    if (contract.getPaidAmount() != null)
101
+                        paidAmount = paidAmount.add(contract.getPaidAmount());
95 102
                 }
96 103
                 amountObject.put(String.valueOf(i), amount);
97
-
104
+                paidAmountObject.put(String.valueOf(i), paidAmount);
98 105
             }
99 106
             cmcContract.setSignDate(null);
100 107
         }
@@ -102,21 +109,29 @@ public class CmcContractController extends BaseController
102 109
             //输入年份合同数量及金额
103 110
             yearObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), cmcContractService.selectCmcContractList(cmcContract).size());
104 111
             BigDecimal amount = new BigDecimal(0);
112
+            BigDecimal paidAmount = new BigDecimal(0);
105 113
             for (CmcContract contract : cmcContractService.selectCmcContractList(cmcContract)) {
106 114
                 if (contract.getAmount() != null)
107 115
                     amount = amount.add(contract.getAmount());
116
+                if (contract.getPaidAmount() != null)
117
+                    paidAmount = paidAmount.add(contract.getPaidAmount());
108 118
             }
109 119
             amountObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), amount);
120
+            paidAmountObject.put(new SimpleDateFormat("yyyy").format(cmcContract.getSignDate()), paidAmount);
110 121
         }
111
-        getProjectSourceStatistic(cmcContract, sourceObject, cwAmountObject);
122
+        getProjectSourceStatistic(cmcContract, sourceObject, cwAmountObject, paidCwAmountObject);
112 123
         yearArray.add(yearObject);
113 124
         sourceArray.add(sourceObject);
114 125
         amountArray.add(amountObject);
115 126
         cwAmountArray.add(cwAmountObject);
127
+        paidAmountArray.add(paidAmountObject);
128
+        paidCwAmountArray.add(paidCwAmountObject);
116 129
         jsonObject.put("year", yearArray);
117 130
         jsonObject.put("source", sourceArray);
118 131
         jsonObject.put("amount", amountArray);
119 132
         jsonObject.put("cwAmount", cwAmountArray);
133
+        jsonObject.put("paidAmount", paidAmountArray);
134
+        jsonObject.put("paidCwAmount", paidCwAmountArray);
120 135
         return success(jsonObject);
121 136
     }
122 137
 
@@ -211,25 +226,33 @@ public class CmcContractController extends BaseController
211 226
     }
212 227
 
213 228
     //院内外项目数量及金额
214
-    public void getProjectSourceStatistic(CmcContract cmcContract, JSONObject sourceObject, JSONObject cwAmountObject) {
229
+    public void getProjectSourceStatistic(CmcContract cmcContract, JSONObject sourceObject, JSONObject cwAmountObject, JSONObject paidCwAmountObject) {
215 230
         cmcContract.setProjectSource("1");
216 231
         List<CmcContract> sourceList = cmcContractService.selectCmcContractList(cmcContract);
217 232
         BigDecimal cAmount = new BigDecimal(0);
218 233
         BigDecimal wAmount = new BigDecimal(0);
234
+        BigDecimal paidCAmount = new BigDecimal(0);
235
+        BigDecimal paidWAmount = new BigDecimal(0);
219 236
         for (CmcContract contract : sourceList) {
220 237
             if(contract.getAmount() != null)
221 238
                 wAmount = wAmount.add(contract.getAmount());
239
+            if(contract.getPaidAmount() != null)
240
+                paidWAmount = paidWAmount.add(contract.getPaidAmount());
222 241
         }
223 242
         sourceObject.put("院外项目", sourceList.size());
224 243
         cwAmountObject.put("院外项目承接金额", wAmount);
244
+        paidCwAmountObject.put("院外项目回款金额", paidWAmount);
225 245
         cmcContract.setProjectSource("0");
226 246
         sourceList = cmcContractService.selectCmcContractList(cmcContract);
227 247
         for (CmcContract contract : sourceList) {
228 248
             if(contract.getAmount() != null)
229 249
                 cAmount = cAmount.add(contract.getAmount());
250
+            if(contract.getPaidAmount() != null)
251
+                paidCAmount = paidCAmount.add(contract.getPaidAmount());
230 252
         }
231 253
         sourceObject.put("院内项目", sourceList.size());
232 254
         cwAmountObject.put("院内项目承接金额", cAmount);
255
+        paidCwAmountObject.put("院内项目回款金额", paidCAmount);
233 256
         cmcContract.setProjectSource(null);
234 257
     }
235 258
 

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

@@ -92,6 +92,10 @@ public class CmcSubContractController extends BaseController
92 92
         JSONObject amountObject = new JSONObject();
93 93
         JSONArray cwAmountArray = new JSONArray();
94 94
         JSONObject cwAmountObject = new JSONObject();
95
+        JSONArray paidAmountArray = new JSONArray();
96
+        JSONObject paidAmountObject = new JSONObject();
97
+        JSONArray paidCwAmountArray = new JSONArray();
98
+        JSONObject paidCwAmountObject = new JSONObject();
95 99
         //每年合同数量及金额
96 100
         if (cmcSubContract.getSignDate() == null) {
97 101
             for (int i = 2019; i <= Calendar.getInstance().get(Calendar.YEAR); i++) {
@@ -99,11 +103,15 @@ public class CmcSubContractController extends BaseController
99 103
                 List<CmcSubContract> yearList = cmcSubContractService.selectCmcSubContractList(cmcSubContract);
100 104
                 yearObject.put(String.valueOf(i), yearList.size());
101 105
                 BigDecimal amount = new BigDecimal(0);
106
+                BigDecimal paidAmount = new BigDecimal(0);
102 107
                 for (CmcSubContract subContract : yearList) {
103 108
                     if (subContract.getSubAmount() != null)
104 109
                         amount = amount.add(subContract.getSubAmount());
110
+                    if (subContract.getPaidAmount() != null)
111
+                        paidAmount = paidAmount.add(subContract.getPaidAmount());
105 112
                 }
106 113
                 amountObject.put(String.valueOf(i), amount);
114
+                paidAmountObject.put(String.valueOf(i), paidAmount);
107 115
             }
108 116
             cmcSubContract.setSignDate(null);
109 117
         }
@@ -111,21 +119,29 @@ public class CmcSubContractController extends BaseController
111 119
             //输入年份合同数量及金额
112 120
             yearObject.put(new SimpleDateFormat("yyyy").format(cmcSubContract.getSignDate()), cmcSubContractService.selectCmcSubContractList(cmcSubContract).size());
113 121
             BigDecimal amount = new BigDecimal(0);
122
+            BigDecimal paidAmount = new BigDecimal(0);
114 123
             for (CmcSubContract subContract : cmcSubContractService.selectCmcSubContractList(cmcSubContract)) {
115 124
                 if (subContract.getSubAmount() != null)
116 125
                     amount = amount.add(subContract.getSubAmount());
126
+                if (subContract.getPaidAmount() != null)
127
+                    paidAmount = paidAmount.add(subContract.getPaidAmount());
117 128
             }
118 129
             amountObject.put(new SimpleDateFormat("yyyy").format(cmcSubContract.getSignDate()), amount);
130
+            paidAmountObject.put(new SimpleDateFormat("yyyy").format(cmcSubContract.getSignDate()), paidAmount);
119 131
         }
120
-        getProjectSourceStatistic(cmcSubContract, sourceObject, cwAmountObject);
132
+        getProjectSourceStatistic(cmcSubContract, sourceObject, cwAmountObject, paidCwAmountObject);
121 133
         yearArray.add(yearObject);
122 134
         sourceArray.add(sourceObject);
123 135
         amountArray.add(amountObject);
124 136
         cwAmountArray.add(cwAmountObject);
137
+        paidAmountArray.add(paidAmountObject);
138
+        paidCwAmountArray.add(paidCwAmountObject);
125 139
         jsonObject.put("year", yearArray);
126 140
         jsonObject.put("source", sourceArray);
127 141
         jsonObject.put("amount", amountArray);
128 142
         jsonObject.put("cwAmount", cwAmountArray);
143
+        jsonObject.put("paidAmount", paidAmountArray);
144
+        jsonObject.put("paidCwAmount", paidCwAmountArray);
129 145
         return success(jsonObject);
130 146
     }
131 147
 
@@ -160,25 +176,33 @@ public class CmcSubContractController extends BaseController
160 176
     }
161 177
 
162 178
     //院内外项目数量及金额
163
-    public void getProjectSourceStatistic(CmcSubContract cmcSubContract, JSONObject sourceObject, JSONObject cwAmountObject) {
179
+    public void getProjectSourceStatistic(CmcSubContract cmcSubContract, JSONObject sourceObject, JSONObject cwAmountObject, JSONObject paidCwAmountObject) {
164 180
         cmcSubContract.setProjectSource("1");
165 181
         List<CmcSubContract> sourceList = cmcSubContractService.selectCmcSubContractList(cmcSubContract);
166 182
         BigDecimal cAmount = new BigDecimal(0);
167 183
         BigDecimal wAmount = new BigDecimal(0);
184
+        BigDecimal paidCAmount = new BigDecimal(0);
185
+        BigDecimal paidWAmount = new BigDecimal(0);
168 186
         for (CmcSubContract subContract : sourceList) {
169 187
             if(subContract.getSubAmount() != null)
170 188
                 wAmount = wAmount.add(subContract.getSubAmount());
189
+            if(subContract.getPaidAmount() != null)
190
+                paidWAmount = paidWAmount.add(subContract.getPaidAmount());
171 191
         }
172 192
         sourceObject.put("院外项目", sourceList.size());
173 193
         cwAmountObject.put("院外项目分包金额", wAmount);
194
+        paidCwAmountObject.put("院外项目付款金额", paidWAmount);
174 195
         cmcSubContract.setProjectSource("0");
175 196
         sourceList = cmcSubContractService.selectCmcSubContractList(cmcSubContract);
176 197
         for (CmcSubContract subContract : sourceList) {
177 198
             if(subContract.getSubAmount() != null)
178 199
                 cAmount = cAmount.add(subContract.getSubAmount());
200
+            if(subContract.getPaidAmount() != null)
201
+                paidCAmount = paidCAmount.add(subContract.getPaidAmount());
179 202
         }
180 203
         sourceObject.put("院内项目", sourceList.size());
181 204
         cwAmountObject.put("院内项目分包金额", cAmount);
205
+        paidCwAmountObject.put("院内项目付款金额", paidCAmount);
182 206
         cmcSubContract.setProjectSource(null);
183 207
     }
184 208
 

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

@@ -56,6 +56,10 @@ public class CmcContract extends BaseEntity
56 56
     @Excel(name = "合同金额")
57 57
     private BigDecimal amount;
58 58
 
59
+    /** 实际回款金额 */
60
+    @Excel(name = "实际回款金额")
61
+    private BigDecimal paidAmount;
62
+
59 63
     /** 履约保证金 */
60 64
     @Excel(name = "履约保证金")
61 65
     private BigDecimal deposit;
@@ -265,6 +269,15 @@ public class CmcContract extends BaseEntity
265 269
     {
266 270
         return amount;
267 271
     }
272
+    public void setPaidAmount(BigDecimal paidAmount)
273
+    {
274
+        this.paidAmount = paidAmount;
275
+    }
276
+
277
+    public BigDecimal getPaidAmount()
278
+    {
279
+        return paidAmount;
280
+    }
268 281
     public void setDeposit(BigDecimal deposit)
269 282
     {
270 283
         this.deposit = deposit;

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

@@ -1,5 +1,6 @@
1 1
 package com.ruoyi.oa.domain;
2 2
 
3
+import java.math.BigDecimal;
3 4
 import java.util.Date;
4 5
 import com.fasterxml.jackson.annotation.JsonFormat;
5 6
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -30,7 +31,7 @@ public class CmcContractPaid extends BaseEntity
30 31
 
31 32
     /** 实际回款金额 */
32 33
     @Excel(name = "实际回款金额")
33
-    private String paidAmount;
34
+    private BigDecimal paidAmount;
34 35
 
35 36
     /** 实际回款时间 */
36 37
     @JsonFormat(pattern = "yyyy-MM-dd")
@@ -64,12 +65,12 @@ public class CmcContractPaid extends BaseEntity
64 65
     {
65 66
         return paidPercentage;
66 67
     }
67
-    public void setPaidAmount(String paidAmount) 
68
+    public void setPaidAmount(BigDecimal paidAmount)
68 69
     {
69 70
         this.paidAmount = paidAmount;
70 71
     }
71 72
 
72
-    public String getPaidAmount() 
73
+    public BigDecimal getPaidAmount()
73 74
     {
74 75
         return paidAmount;
75 76
     }

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

@@ -30,6 +30,10 @@ public class CmcSubContract extends BaseEntity
30 30
     @Excel(name = "分包合同金额")
31 31
     private BigDecimal subAmount;
32 32
 
33
+    /** 实际付款金额 */
34
+    @Excel(name = "实际付款金额")
35
+    private BigDecimal paidAmount;
36
+
33 37
     /** 项目id */
34 38
     @Excel(name = "项目编号")
35 39
     private String projectNumber;
@@ -166,6 +170,15 @@ public class CmcSubContract extends BaseEntity
166 170
     {
167 171
         return subAmount;
168 172
     }
173
+    public void setPaidAmount(BigDecimal paidAmount)
174
+    {
175
+        this.paidAmount = paidAmount;
176
+    }
177
+
178
+    public BigDecimal getPaidAmount()
179
+    {
180
+        return paidAmount;
181
+    }
169 182
     public void setPartnerId(String partnerId)
170 183
     {
171 184
         this.partnerId = partnerId;

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

@@ -16,6 +16,7 @@
16 16
         <result property="budgetAmount"    column="budget_amount"    />
17 17
         <result property="borrowAmount"    column="borrow_amount"    />
18 18
         <result property="settleAmount"    column="settle_amount"    />
19
+        <result property="paidAmount"    column="paid_amount"    />
19 20
         <result property="deposit"    column="deposit"    />
20 21
         <result property="contractDocument"    column="contract_document"    />
21 22
         <result property="drafter"    column="drafter"    />
@@ -74,7 +75,7 @@
74 75
 
75 76
     <sql id="selectCmcContractVo">
76 77
         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,
77
-               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,
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,
78 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,
79 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
80 81
         left join sys_user as u on u.user_id = c.drafter
@@ -84,6 +85,7 @@
84 85
         left join cmc_party_a as pa on pa.party_a_id = c.party_a_id
85 86
         left join cmc_project_contract as pc on pc.contract_id = c.contract_id
86 87
         left join cmc_project as p on pc.project_id = p.project_id
88
+        left join cmc_contract_paid as cp on cp.contract_id = c.contract_id
87 89
     </sql>
88 90
 
89 91
     <select id="selectCmcContractList" parameterType="CmcContract" resultMap="CmcContractResult">
@@ -107,6 +109,12 @@
107 109
             <if test="projectSource != null  and projectSource != ''"> and p.project_source = #{projectSource}</if>
108 110
             <if test="projectName != null  and projectName != ''"> and p.project_name like concat('%', #{projectName}, '%')</if>
109 111
             <if test="partyAName != null  and partyAName != ''"> and pa.party_a_name like concat('%', #{partyAName}, '%')</if>
112
+            <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
113
+                and date_format(c.sign_date,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
114
+            </if>
115
+            <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
116
+                and date_format(c.sign_date,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
117
+            </if>
110 118
         </where>
111 119
         group by c.contract_id
112 120
         order by c.draft_time desc

+ 1
- 1
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcContractPaidMapper.xml 파일 보기

@@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
22 22
         <where>  
23 23
             <if test="contractId != null  and contractId != ''"> and contract_id = #{contractId}</if>
24 24
             <if test="paidPercentage != null  and paidPercentage != ''"> and paid_percentage = #{paidPercentage}</if>
25
-            <if test="paidAmount != null  and paidAmount != ''"> and paid_amount = #{paidAmount}</if>
25
+            <if test="paidAmount != null"> and paid_amount = #{paidAmount}</if>
26 26
             <if test="paidTime != null "> and paid_time = #{paidTime}</if>
27 27
         </where>
28 28
     </select>

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

@@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
8 8
         <result property="subContractId"    column="sub_contract_id"    />
9 9
         <result property="subContractName"    column="sub_contract_name"    />
10 10
         <result property="subAmount"    column="sub_amount"    />
11
+        <result property="paidAmount"    column="paid_amount"    />
11 12
         <result property="partnerId"    column="partner_id"    />
12 13
         <result property="contactPerson"    column="contact_person"    />
13 14
         <result property="telephone"    column="telephone"    />
@@ -60,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
60 61
     </resultMap>
61 62
 
62 63
     <sql id="selectCmcSubContractVo">
63
-        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,
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,
64 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,
65 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
66 67
         left join sys_user as u on u.user_id = sc.drafter
@@ -69,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
69 70
         left join cmc_partner as pa on pa.partner_id = sc.partner_id
70 71
         left join cmc_project_sub_contract as psc on psc.sub_contract_id = sc.sub_contract_id
71 72
         left join cmc_project as p on psc.project_id = p.project_id
73
+        left join cmc_contract_paid as cp on cp.contract_id = sc.sub_contract_id
72 74
     </sql>
73 75
 
74 76
     <select id="selectCmcSubContractList" parameterType="CmcSubContract" resultMap="CmcSubContractResult">
@@ -87,6 +89,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
87 89
             <if test="signScan != null  and signScan != ''"> and sc.sign_scan = #{signScan}</if>
88 90
             <if test="commentType != null  and commentType != ''"> and sc.comment_type = #{commentType}</if>
89 91
             <if test="projectSource != null  and projectSource != ''"> and p.project_source = #{projectSource}</if>
92
+            <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
93
+                and date_format(sc.sign_date,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
94
+            </if>
95
+            <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
96
+                and date_format(sc.sign_date,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
97
+            </if>
90 98
         </where>
91 99
         group by sc.sub_contract_id
92 100
         order by sc.draft_time desc

Loading…
취소
저장