Browse Source

合同统计

lamphua 7 months ago
parent
commit
862323f256

+ 59
- 5
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcContractController.java View File

7
 import java.util.stream.Collectors;
7
 import java.util.stream.Collectors;
8
 import javax.servlet.http.HttpServletResponse;
8
 import javax.servlet.http.HttpServletResponse;
9
 
9
 
10
+import com.alibaba.fastjson2.JSON;
10
 import com.alibaba.fastjson2.JSONArray;
11
 import com.alibaba.fastjson2.JSONArray;
11
 import com.alibaba.fastjson2.JSONObject;
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
 import org.apache.poi.hpsf.Decimal;
15
 import org.apache.poi.hpsf.Decimal;
16
 import org.springframework.beans.factory.annotation.Autowired;
16
 import org.springframework.beans.factory.annotation.Autowired;
17
 import org.springframework.web.bind.annotation.GetMapping;
17
 import org.springframework.web.bind.annotation.GetMapping;
26
 import com.ruoyi.common.core.controller.BaseController;
26
 import com.ruoyi.common.core.controller.BaseController;
27
 import com.ruoyi.common.core.domain.AjaxResult;
27
 import com.ruoyi.common.core.domain.AjaxResult;
28
 import com.ruoyi.common.enums.BusinessType;
28
 import com.ruoyi.common.enums.BusinessType;
29
-import com.ruoyi.oa.domain.CmcContract;
30
-import com.ruoyi.oa.service.ICmcContractService;
31
 import com.ruoyi.common.utils.poi.ExcelUtil;
29
 import com.ruoyi.common.utils.poi.ExcelUtil;
32
 import com.ruoyi.common.core.page.TableDataInfo;
30
 import com.ruoyi.common.core.page.TableDataInfo;
33
 
31
 
44
     @Autowired
42
     @Autowired
45
     private ICmcContractService cmcContractService;
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
      * 查询cmc合同评审列表
61
      * 查询cmc合同评审列表
49
      */
62
      */
128
         return success(cmcContractService.selectCmcContractByContractId(contractId));
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
      * 新增cmc合同评审
186
      * 新增cmc合同评审
133
      */
187
      */

+ 48
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcContract.java View File

44
     private String projectNumber;
44
     private String projectNumber;
45
     @Excel(name = "项目名称")
45
     @Excel(name = "项目名称")
46
     private String projectName;
46
     private String projectName;
47
+    private String projectType;
47
     private String projectSource;
48
     private String projectSource;
48
 
49
 
49
     /** 甲方单位 */
50
     /** 甲方单位 */
118
 //    @Excel(name = "签订扫描件")
119
 //    @Excel(name = "签订扫描件")
119
     private String signScan;
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
     private SysUser draftUser;
134
     private SysUser draftUser;
122
 
135
 
123
     private SysUser managerUser;
136
     private SysUser managerUser;
190
         this.project = project;
203
         this.project = project;
191
         this.projectNumber = project == null ? "" : project.getProjectNumber();
204
         this.projectNumber = project == null ? "" : project.getProjectNumber();
192
         this.projectName = project == null ? "" : project.getProjectName();
205
         this.projectName = project == null ? "" : project.getProjectName();
206
+        this.projectType = project == null ? "" : project.getProjectType();
193
     }
207
     }
194
 
208
 
195
     public CmcProject getProject()
209
     public CmcProject getProject()
390
     {
404
     {
391
         return gmUser;
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
     @Override
442
     @Override
395
     public String toString() {
443
     public String toString() {

+ 17
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcContractMapper.java View File

1
 package com.ruoyi.oa.mapper;
1
 package com.ruoyi.oa.mapper;
2
 
2
 
3
 import java.util.List;
3
 import java.util.List;
4
+import java.util.Map;
5
+
4
 import com.ruoyi.oa.domain.CmcContract;
6
 import com.ruoyi.oa.domain.CmcContract;
5
 
7
 
6
 /**
8
 /**
19
      */
21
      */
20
     public CmcContract selectCmcContractByContractId(String contractId);
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
      * 查询cmc合同评审列表
33
      * 查询cmc合同评审列表
24
      * 
34
      * 
58
      * @return 结果
68
      * @return 结果
59
      */
69
      */
60
     public int deleteCmcContractByContractIds(String[] contractIds);
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 View File

1
 package com.ruoyi.oa.service;
1
 package com.ruoyi.oa.service;
2
 
2
 
3
 import java.util.List;
3
 import java.util.List;
4
+import java.util.Map;
5
+
6
+import com.alibaba.fastjson2.JSONArray;
4
 import com.ruoyi.oa.domain.CmcContract;
7
 import com.ruoyi.oa.domain.CmcContract;
5
 
8
 
6
 /**
9
 /**
19
      */
22
      */
20
     public CmcContract selectCmcContractByContractId(String contractId);
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
      * 查询cmc合同评审列表
34
      * 查询cmc合同评审列表
24
      * 
35
      * 
58
      * @return 结果
69
      * @return 结果
59
      */
70
      */
60
     public int deleteCmcContractByContractId(String contractId);
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 View File

1
 package com.ruoyi.oa.service.impl;
1
 package com.ruoyi.oa.service.impl;
2
 
2
 
3
 import java.util.List;
3
 import java.util.List;
4
+import java.util.Map;
5
+
4
 import org.springframework.beans.factory.annotation.Autowired;
6
 import org.springframework.beans.factory.annotation.Autowired;
5
 import org.springframework.stereotype.Service;
7
 import org.springframework.stereotype.Service;
6
 import com.ruoyi.oa.mapper.CmcContractMapper;
8
 import com.ruoyi.oa.mapper.CmcContractMapper;
31
         return cmcContractMapper.selectCmcContractByContractId(contractId);
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
      * 查询cmc合同评审列表
49
      * 查询cmc合同评审列表
36
      * 
50
      * 
90
     {
104
     {
91
         return cmcContractMapper.deleteCmcContractByContractId(contractId);
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 View File

12
         <result property="tenderId"    column="tender_id"    />
12
         <result property="tenderId"    column="tender_id"    />
13
         <result property="partyAId"    column="party_a_id"    />
13
         <result property="partyAId"    column="party_a_id"    />
14
         <result property="amount"    column="amount"    />
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
         <result property="deposit"    column="deposit"    />
19
         <result property="deposit"    column="deposit"    />
16
         <result property="contractDocument"    column="contract_document"    />
20
         <result property="contractDocument"    column="contract_document"    />
17
         <result property="drafter"    column="drafter"    />
21
         <result property="drafter"    column="drafter"    />
65
         <result property="projectId"    column="project_id"    />
69
         <result property="projectId"    column="project_id"    />
66
         <result property="projectNumber"    column="project_number"    />
70
         <result property="projectNumber"    column="project_number"    />
67
         <result property="projectName"    column="project_name"    />
71
         <result property="projectName"    column="project_name"    />
72
+        <result property="projectType"    column="project_type"    />
68
     </resultMap>
73
     </resultMap>
69
 
74
 
70
     <sql id="selectCmcContractVo">
75
     <sql id="selectCmcContractVo">
105
         order by c.draft_time desc
110
         order by c.draft_time desc
106
     </select>
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
     <select id="selectCmcContractByContractId" parameterType="String" resultMap="CmcContractResult">
180
     <select id="selectCmcContractByContractId" parameterType="String" resultMap="CmcContractResult">
109
         <include refid="selectCmcContractVo"/>
181
         <include refid="selectCmcContractVo"/>
110
         where c.contract_id = #{contractId}
182
         where c.contract_id = #{contractId}

Loading…
Cancel
Save