浏览代码

合同统计

lamphua 7 个月前
父节点
当前提交
862323f256

+ 59
- 5
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcContractController.java 查看文件

@@ -7,11 +7,11 @@ import java.util.*;
7 7
 import java.util.stream.Collectors;
8 8
 import javax.servlet.http.HttpServletResponse;
9 9
 
10
+import com.alibaba.fastjson2.JSON;
10 11
 import com.alibaba.fastjson2.JSONArray;
11 12
 import com.alibaba.fastjson2.JSONObject;
12
-import com.ruoyi.oa.domain.CmcPartyA;
13
-import com.ruoyi.oa.domain.CmcProject;
14
-import com.ruoyi.oa.service.ICmcPartyAService;
13
+import com.ruoyi.oa.domain.*;
14
+import com.ruoyi.oa.service.*;
15 15
 import org.apache.poi.hpsf.Decimal;
16 16
 import org.springframework.beans.factory.annotation.Autowired;
17 17
 import org.springframework.web.bind.annotation.GetMapping;
@@ -26,8 +26,6 @@ import com.ruoyi.common.annotation.Log;
26 26
 import com.ruoyi.common.core.controller.BaseController;
27 27
 import com.ruoyi.common.core.domain.AjaxResult;
28 28
 import com.ruoyi.common.enums.BusinessType;
29
-import com.ruoyi.oa.domain.CmcContract;
30
-import com.ruoyi.oa.service.ICmcContractService;
31 29
 import com.ruoyi.common.utils.poi.ExcelUtil;
32 30
 import com.ruoyi.common.core.page.TableDataInfo;
33 31
 
@@ -44,6 +42,21 @@ public class CmcContractController extends BaseController
44 42
     @Autowired
45 43
     private ICmcContractService cmcContractService;
46 44
 
45
+    @Autowired
46
+    private ICmcSubContractService cmcSubContractService;
47
+
48
+    @Autowired
49
+    private ICmcProjectContractService cmcProjectContractService;
50
+
51
+    @Autowired
52
+    private ICmcContractSubContractService cmcContractSubContractService;
53
+
54
+    @Autowired
55
+    private ICmcBorrowService cmcBorrowService;
56
+
57
+    @Autowired
58
+    private ICmcSettleService cmcSettleService;
59
+
47 60
     /**
48 61
      * 查询cmc合同评审列表
49 62
      */
@@ -128,6 +141,47 @@ public class CmcContractController extends BaseController
128 141
         return success(cmcContractService.selectCmcContractByContractId(contractId));
129 142
     }
130 143
 
144
+    /**
145
+     * 通过合同id获取cmc合同评审统计信息
146
+     */
147
+    @GetMapping(value = "statistic/{contractId}")
148
+    public AjaxResult getContractStatisticByContractId(@PathVariable("contractId") String contractId)
149
+    {
150
+        return success(cmcContractService.selectCmcContractStatisticByContractId(contractId));
151
+    }
152
+
153
+    /**
154
+     * cmc合同评审统计信息按字段排序
155
+     */
156
+    @GetMapping( "/sort")
157
+    public AjaxResult getContractStatisticSortByField(String field)
158
+    {
159
+        JSONObject jsonObject = new JSONObject();
160
+        List<CmcContract> cmcContractList = cmcContractService.selectCmcContractStatistic();
161
+        JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(cmcContractList));
162
+        if (field.equals("amount")) {
163
+            jsonArray.sort((a,b)->((JSONObject)b).getBigDecimal("amount").subtract(((JSONObject)a).getBigDecimal("amount")).intValue());
164
+            jsonObject.put("sortByAmount", jsonArray);
165
+        }
166
+        if (field.equals("subAmount")) {
167
+            jsonArray.sort((a,b)->((JSONObject)b).getBigDecimal("subAmount").subtract(((JSONObject)a).getBigDecimal("subAmount")).intValue());
168
+            jsonObject.put("sortBySubAmount", jsonArray);
169
+        }
170
+        if (field.equals("budgetAmount")) {
171
+            jsonArray.sort((a,b)->((JSONObject)b).getBigDecimal("budgetAmount").subtract(((JSONObject)a).getBigDecimal("budgetAmount")).intValue());
172
+            jsonObject.put("sortByBudgetAmount", jsonArray);
173
+        }
174
+        if (field.equals("borrowAmount")) {
175
+            jsonArray.sort((a,b)->((JSONObject)b).getBigDecimal("borrowAmount").subtract(((JSONObject)a).getBigDecimal("borrowAmount")).intValue());
176
+            jsonObject.put("sortByBorrowAmount", jsonArray);
177
+        }
178
+        if (field.equals("settleAmount")) {
179
+            jsonArray.sort((a,b)->((JSONObject)b).getBigDecimal("settleAmount").subtract(((JSONObject)a).getBigDecimal("settleAmount")).intValue());
180
+            jsonObject.put("sortBySettleAmount", jsonArray);
181
+        }
182
+        return success(jsonObject);
183
+    }
184
+
131 185
     /**
132 186
      * 新增cmc合同评审
133 187
      */

+ 48
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcContract.java 查看文件

@@ -44,6 +44,7 @@ public class CmcContract extends BaseEntity
44 44
     private String projectNumber;
45 45
     @Excel(name = "项目名称")
46 46
     private String projectName;
47
+    private String projectType;
47 48
     private String projectSource;
48 49
 
49 50
     /** 甲方单位 */
@@ -118,6 +119,18 @@ public class CmcContract extends BaseEntity
118 119
 //    @Excel(name = "签订扫描件")
119 120
     private String signScan;
120 121
 
122
+    /** 分包总额 */
123
+    private BigDecimal subAmount;
124
+
125
+    /** 预算总额 */
126
+    private BigDecimal budgetAmount;
127
+
128
+    /** 借款总额 */
129
+    private BigDecimal borrowAmount;
130
+
131
+    /** 结算总额 */
132
+    private BigDecimal settleAmount;
133
+
121 134
     private SysUser draftUser;
122 135
 
123 136
     private SysUser managerUser;
@@ -190,6 +203,7 @@ public class CmcContract extends BaseEntity
190 203
         this.project = project;
191 204
         this.projectNumber = project == null ? "" : project.getProjectNumber();
192 205
         this.projectName = project == null ? "" : project.getProjectName();
206
+        this.projectType = project == null ? "" : project.getProjectType();
193 207
     }
194 208
 
195 209
     public CmcProject getProject()
@@ -390,6 +404,40 @@ public class CmcContract extends BaseEntity
390 404
     {
391 405
         return gmUser;
392 406
     }
407
+    public void setSubAmount(BigDecimal subAmount) { this.subAmount = subAmount; }
408
+
409
+    public BigDecimal getSubAmount()
410
+    {
411
+        return subAmount;
412
+    }
413
+    public void setBorrowAmount(BigDecimal borrowAmount)
414
+    {
415
+        this.borrowAmount = borrowAmount;
416
+    }
417
+
418
+    public BigDecimal getBorrowAmount()
419
+    {
420
+        return borrowAmount;
421
+    }
422
+    public void setSettleAmount(BigDecimal settleAmount)
423
+    {
424
+        this.settleAmount = settleAmount;
425
+    }
426
+
427
+    public BigDecimal getSettleAmount()
428
+    {
429
+        return settleAmount;
430
+    }
431
+
432
+    public void setBudgetAmount(BigDecimal budgetAmount)
433
+    {
434
+        this.budgetAmount = budgetAmount;
435
+    }
436
+
437
+    public BigDecimal getBudgetAmount()
438
+    {
439
+        return budgetAmount;
440
+    }
393 441
 
394 442
     @Override
395 443
     public String toString() {

+ 17
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcContractMapper.java 查看文件

@@ -1,6 +1,8 @@
1 1
 package com.ruoyi.oa.mapper;
2 2
 
3 3
 import java.util.List;
4
+import java.util.Map;
5
+
4 6
 import com.ruoyi.oa.domain.CmcContract;
5 7
 
6 8
 /**
@@ -19,6 +21,14 @@ public interface CmcContractMapper
19 21
      */
20 22
     public CmcContract selectCmcContractByContractId(String contractId);
21 23
 
24
+    /**
25
+     * 查询cmc合同统计
26
+     *
27
+     * @param contractId cmc合同评审主键
28
+     * @return cmc合同评审
29
+     */
30
+    public CmcContract selectCmcContractStatisticByContractId(String contractId);
31
+
22 32
     /**
23 33
      * 查询cmc合同评审列表
24 34
      * 
@@ -58,4 +68,11 @@ public interface CmcContractMapper
58 68
      * @return 结果
59 69
      */
60 70
     public int deleteCmcContractByContractIds(String[] contractIds);
71
+
72
+    /**
73
+     * 查询cmc合同统计列表
74
+     *
75
+     * @return 结果
76
+     */
77
+    public List<CmcContract> selectCmcContractStatistic();
61 78
 }

+ 18
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcContractService.java 查看文件

@@ -1,6 +1,9 @@
1 1
 package com.ruoyi.oa.service;
2 2
 
3 3
 import java.util.List;
4
+import java.util.Map;
5
+
6
+import com.alibaba.fastjson2.JSONArray;
4 7
 import com.ruoyi.oa.domain.CmcContract;
5 8
 
6 9
 /**
@@ -19,6 +22,14 @@ public interface ICmcContractService
19 22
      */
20 23
     public CmcContract selectCmcContractByContractId(String contractId);
21 24
 
25
+    /**
26
+     * 查询cmc合同统计
27
+     *
28
+     * @param contractId cmc合同评审主键
29
+     * @return cmc合同评审
30
+     */
31
+    public CmcContract selectCmcContractStatisticByContractId(String contractId);
32
+
22 33
     /**
23 34
      * 查询cmc合同评审列表
24 35
      * 
@@ -58,4 +69,11 @@ public interface ICmcContractService
58 69
      * @return 结果
59 70
      */
60 71
     public int deleteCmcContractByContractId(String contractId);
72
+
73
+    /**
74
+     * 查询cmc合同统计列表
75
+     *
76
+     * @return 结果
77
+     */
78
+    public List<CmcContract> selectCmcContractStatistic();
61 79
 }

+ 24
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcContractServiceImpl.java 查看文件

@@ -1,6 +1,8 @@
1 1
 package com.ruoyi.oa.service.impl;
2 2
 
3 3
 import java.util.List;
4
+import java.util.Map;
5
+
4 6
 import org.springframework.beans.factory.annotation.Autowired;
5 7
 import org.springframework.stereotype.Service;
6 8
 import com.ruoyi.oa.mapper.CmcContractMapper;
@@ -31,6 +33,18 @@ public class CmcContractServiceImpl implements ICmcContractService
31 33
         return cmcContractMapper.selectCmcContractByContractId(contractId);
32 34
     }
33 35
 
36
+    /**
37
+     * 查询cmc合同统计
38
+     *
39
+     * @param contractId cmc合同评审主键
40
+     * @return cmc合同评审
41
+     */
42
+    @Override
43
+    public CmcContract selectCmcContractStatisticByContractId(String contractId)
44
+    {
45
+        return cmcContractMapper.selectCmcContractStatisticByContractId(contractId);
46
+    }
47
+
34 48
     /**
35 49
      * 查询cmc合同评审列表
36 50
      * 
@@ -90,4 +104,14 @@ public class CmcContractServiceImpl implements ICmcContractService
90 104
     {
91 105
         return cmcContractMapper.deleteCmcContractByContractId(contractId);
92 106
     }
107
+
108
+    /**
109
+     * 查询cmc合同统计列表
110
+     *
111
+     * @return 结果
112
+     */
113
+    public List<CmcContract> selectCmcContractStatistic()
114
+    {
115
+        return cmcContractMapper.selectCmcContractStatistic();
116
+    }
93 117
 }

+ 72
- 0
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcContractMapper.xml 查看文件

@@ -12,6 +12,10 @@
12 12
         <result property="tenderId"    column="tender_id"    />
13 13
         <result property="partyAId"    column="party_a_id"    />
14 14
         <result property="amount"    column="amount"    />
15
+        <result property="subAmount"    column="sub_amount"    />
16
+        <result property="budgetAmount"    column="budget_amount"    />
17
+        <result property="borrowAmount"    column="borrow_amount"    />
18
+        <result property="settleAmount"    column="settle_amount"    />
15 19
         <result property="deposit"    column="deposit"    />
16 20
         <result property="contractDocument"    column="contract_document"    />
17 21
         <result property="drafter"    column="drafter"    />
@@ -65,6 +69,7 @@
65 69
         <result property="projectId"    column="project_id"    />
66 70
         <result property="projectNumber"    column="project_number"    />
67 71
         <result property="projectName"    column="project_name"    />
72
+        <result property="projectType"    column="project_type"    />
68 73
     </resultMap>
69 74
 
70 75
     <sql id="selectCmcContractVo">
@@ -105,6 +110,73 @@
105 110
         order by c.draft_time desc
106 111
     </select>
107 112
 
113
+    <select id="selectCmcContractStatistic" resultMap="CmcContractResult" >
114
+    select t1.contract_id, t1.contract_name, t1.project_type, t1.project_number, IFNULL(t1.amount, 0) as amount, IFNULL(t1.sub_amount, 0) as sub_amount, IFNULL(t2.budget_amount, 0) as budget_amount, IFNULL(t3.borrow_amount, 0) as borrow_amount, IFNULL(t4.settle_amount, 0) as settle_amount from
115
+    (select distinct c.contract_id, c.contract_name, p.project_type, p.project_number, c.amount, sum(sc.sub_amount) as sub_amount from cmc_contract as c
116
+    left join cmc_contract_sub_contract as csc on csc.contract_id = c.contract_id
117
+    left join cmc_sub_contract as sc on sc.sub_contract_id = csc.sub_contract_id
118
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
119
+    left join cmc_project as p on p.project_id = pc.project_id
120
+    group by c.contract_id) as t1
121
+    left join
122
+    (select distinct c.contract_id, sum(b.total_budget) as budget_amount from cmc_contract as c
123
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
124
+    left join cmc_project as p on p.project_id = pc.project_id
125
+    left join cmc_budget as b on b.project_id = p.project_id
126
+    group by c.contract_id) as t2
127
+    on t1.contract_id = t2.contract_id
128
+    left join
129
+    (select distinct c.contract_id, sum(b.manager_amount) as borrow_amount from cmc_contract as c
130
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
131
+    left join cmc_project as p on p.project_id = pc.project_id
132
+    left join cmc_borrow as b on b.project_id = p.project_id
133
+    group by c.contract_id) as t3
134
+    on t1.contract_id = t3.contract_id
135
+    left join
136
+    (select distinct c.contract_id, sum(ss.amount) as settle_amount from cmc_contract as c
137
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
138
+    left join cmc_project as p on p.project_id = pc.project_id
139
+    left join cmc_settle as s on s.project_id = p.project_id
140
+    left join cmc_settle_summary as ss on ss.settle_id = s.settle_id
141
+    where ss.content = '实际结算总金额'
142
+    group by c.contract_id) as t4
143
+    on t1.contract_id = t4.contract_id
144
+    </select>
145
+
146
+    <select id="selectCmcContractStatisticByContractId" parameterType="String" resultMap="CmcContractResult" >
147
+    select t1.contract_id, t1.contract_name, t1.project_type, t1.project_number, IFNULL(t1.amount, 0) as amount, IFNULL(t1.sub_amount, 0) as sub_amount, IFNULL(t2.budget_amount, 0) as budget_amount, IFNULL(t3.borrow_amount, 0) as borrow_amount, IFNULL(t4.settle_amount, 0) as settle_amount from
148
+    (select distinct c.contract_id, c.contract_name, p.project_type, p.project_number, c.amount, sum(sc.sub_amount) as sub_amount from cmc_contract as c
149
+    left join cmc_contract_sub_contract as csc on csc.contract_id = c.contract_id
150
+    left join cmc_sub_contract as sc on sc.sub_contract_id = csc.sub_contract_id
151
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
152
+    left join cmc_project as p on p.project_id = pc.project_id
153
+    group by c.contract_id) as t1
154
+    left join
155
+    (select distinct c.contract_id, sum(b.total_budget) as budget_amount from cmc_contract as c
156
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
157
+    left join cmc_project as p on p.project_id = pc.project_id
158
+    left join cmc_budget as b on b.project_id = p.project_id
159
+    group by c.contract_id) as t2
160
+    on t1.contract_id = t2.contract_id
161
+    left join
162
+    (select distinct c.contract_id, sum(b.manager_amount) as borrow_amount from cmc_contract as c
163
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
164
+    left join cmc_project as p on p.project_id = pc.project_id
165
+    left join cmc_borrow as b on b.project_id = p.project_id
166
+    group by c.contract_id) as t3
167
+    on t1.contract_id = t3.contract_id
168
+    left join
169
+    (select distinct c.contract_id, sum(ss.amount) as settle_amount from cmc_contract as c
170
+    left join cmc_project_contract as pc on pc.contract_id = c.contract_id
171
+    left join cmc_project as p on p.project_id = pc.project_id
172
+    left join cmc_settle as s on s.project_id = p.project_id
173
+    left join cmc_settle_summary as ss on ss.settle_id = s.settle_id
174
+    where ss.content = '实际结算总金额'
175
+    group by c.contract_id) as t4
176
+    on t1.contract_id = t4.contract_id
177
+    where t1.contract_id = #{param}
178
+    </select>
179
+
108 180
     <select id="selectCmcContractByContractId" parameterType="String" resultMap="CmcContractResult">
109 181
         <include refid="selectCmcContractVo"/>
110 182
         where c.contract_id = #{contractId}

正在加载...
取消
保存