Browse Source

结算统计效率优化

lamphua 7 months ago
parent
commit
cb7cec5121

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

82
      */
82
      */
83
     @GetMapping("/statistic")
83
     @GetMapping("/statistic")
84
     public AjaxResult getSettleStatistic(CmcSettle cmcSettle) throws ParseException {
84
     public AjaxResult getSettleStatistic(CmcSettle cmcSettle) throws ParseException {
85
-        cmcSettle.setContent("实际结算总金额");
86
         JSONObject jsonObject = new JSONObject();
85
         JSONObject jsonObject = new JSONObject();
87
         JSONArray yearArray = new JSONArray();
86
         JSONArray yearArray = new JSONArray();
88
         JSONObject yearObject = new JSONObject();
87
         JSONObject yearObject = new JSONObject();
103
                 List<CmcSettle> yearList = cmcSettleService.selectCmcSettleList(cmcSettle);
102
                 List<CmcSettle> yearList = cmcSettleService.selectCmcSettleList(cmcSettle);
104
                 yearObject.put(String.valueOf(i), yearList.size());
103
                 yearObject.put(String.valueOf(i), yearList.size());
105
                 BigDecimal amount = new BigDecimal(0);
104
                 BigDecimal amount = new BigDecimal(0);
106
-                for (CmcSettle settle : yearList) {
105
+                for (CmcSettle settle : cmcSettleService.selectCmcSettleStatisticList(cmcSettle)) {
107
                     if (settle.getAmount() != null)
106
                     if (settle.getAmount() != null)
108
                         amount = amount.add(settle.getAmount());
107
                         amount = amount.add(settle.getAmount());
109
                 }
108
                 }
114
         else {
113
         else {
115
             yearObject.put(new SimpleDateFormat("yyyy").format(cmcSettle.getGmTime()), cmcSettleService.selectCmcSettleList(cmcSettle).size());
114
             yearObject.put(new SimpleDateFormat("yyyy").format(cmcSettle.getGmTime()), cmcSettleService.selectCmcSettleList(cmcSettle).size());
116
             BigDecimal amount = new BigDecimal(0);
115
             BigDecimal amount = new BigDecimal(0);
117
-            for (CmcSettle settle : cmcSettleService.selectCmcSettleList(cmcSettle)) {
116
+            for (CmcSettle settle : cmcSettleService.selectCmcSettleStatisticList(cmcSettle)) {
118
                 if (settle.getAmount() != null)
117
                 if (settle.getAmount() != null)
119
                     amount = amount.add(settle.getAmount());
118
                     amount = amount.add(settle.getAmount());
120
             }
119
             }
177
         List<CmcSettle> typeList = cmcSettleService.selectCmcSettleList(cmcSettle);
176
         List<CmcSettle> typeList = cmcSettleService.selectCmcSettleList(cmcSettle);
178
         typeObject.put("项目结算", typeList.size());
177
         typeObject.put("项目结算", typeList.size());
179
         BigDecimal pAmount = new BigDecimal(0);
178
         BigDecimal pAmount = new BigDecimal(0);
180
-        for (CmcSettle settle : typeList) {
179
+        for (CmcSettle settle : cmcSettleService.selectCmcSettleStatisticList(cmcSettle)) {
181
             if (settle.getAmount() != null)
180
             if (settle.getAmount() != null)
182
                 pAmount = pAmount.add(settle.getAmount());
181
                 pAmount = pAmount.add(settle.getAmount());
183
         }
182
         }
185
         for (int i = 2019; i <= Calendar.getInstance().get(Calendar.YEAR); i++) {
184
         for (int i = 2019; i <= Calendar.getInstance().get(Calendar.YEAR); i++) {
186
             BigDecimal pyAmount = new BigDecimal(0);
185
             BigDecimal pyAmount = new BigDecimal(0);
187
             int count = 0;
186
             int count = 0;
188
-            for (CmcSettle settle : typeList) {
187
+            for (CmcSettle settle : cmcSettleService.selectCmcSettleStatisticList(cmcSettle)) {
189
                 if (settle.getAmount() != null && settle.getProjectNumber() != null && settle.getProjectNumber().contains(String.valueOf(i))) {
188
                 if (settle.getAmount() != null && settle.getProjectNumber() != null && settle.getProjectNumber().contains(String.valueOf(i))) {
190
                     pyAmount = pyAmount.add(settle.getAmount());
189
                     pyAmount = pyAmount.add(settle.getAmount());
191
                     count ++;
190
                     count ++;
199
         typeList = cmcSettleService.selectCmcSettleList(cmcSettle);
198
         typeList = cmcSettleService.selectCmcSettleList(cmcSettle);
200
         typeObject.put("其他结算", typeList.size());
199
         typeObject.put("其他结算", typeList.size());
201
         BigDecimal oAmount = new BigDecimal(0);
200
         BigDecimal oAmount = new BigDecimal(0);
202
-        for (CmcSettle settle : typeList) {
201
+        for (CmcSettle settle : cmcSettleService.selectCmcSettleStatisticList(cmcSettle)) {
203
             if (settle.getAmount() != null)
202
             if (settle.getAmount() != null)
204
                 oAmount = oAmount.add(settle.getAmount());
203
                 oAmount = oAmount.add(settle.getAmount());
205
         }
204
         }

+ 3
- 9
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcSettle.java View File

39
     /** 结算内容 */
39
     /** 结算内容 */
40
     private String content;
40
     private String content;
41
 
41
 
42
+    /** 表格编号 */
43
+    private String tableNumber;
44
+
42
     /** 实际结算总金额 */
45
     /** 实际结算总金额 */
43
     @Excel(name = "实际结算总金额")
46
     @Excel(name = "实际结算总金额")
44
     private BigDecimal amount;
47
     private BigDecimal amount;
559
     {
562
     {
560
         return amount;
563
         return amount;
561
     }
564
     }
562
-    public void setContent(String content)
563
-    {
564
-        this.content = content;
565
-    }
566
-
567
-    public String getContent()
568
-    {
569
-        return content;
570
-    }
571
 
565
 
572
 
566
 
573
     @Override
567
     @Override

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

27
      */
27
      */
28
     public List<CmcSettle> selectCmcSettleList(CmcSettle cmcSettle);
28
     public List<CmcSettle> selectCmcSettleList(CmcSettle cmcSettle);
29
 
29
 
30
+    /**
31
+     * 查询cmc结算统计列表
32
+     *
33
+     * @param cmcSettle cmc结算审批
34
+     * @return cmc结算审批集合
35
+     */
36
+    public List<CmcSettle> selectCmcSettleStatisticList(CmcSettle cmcSettle);
37
+
30
     /**
38
     /**
31
      * 新增cmc结算审批
39
      * 新增cmc结算审批
32
      * 
40
      * 

+ 8
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcSettleService.java View File

27
      */
27
      */
28
     public List<CmcSettle> selectCmcSettleList(CmcSettle cmcSettle);
28
     public List<CmcSettle> selectCmcSettleList(CmcSettle cmcSettle);
29
 
29
 
30
+    /**
31
+     * 查询cmc结算统计列表
32
+     *
33
+     * @param cmcSettle cmc结算审批
34
+     * @return cmc结算审批集合
35
+     */
36
+    public List<CmcSettle> selectCmcSettleStatisticList(CmcSettle cmcSettle);
37
+
30
     /**
38
     /**
31
      * 新增cmc结算审批
39
      * 新增cmc结算审批
32
      * 
40
      * 

+ 11
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcSettleServiceImpl.java View File

43
         return cmcSettleMapper.selectCmcSettleList(cmcSettle);
43
         return cmcSettleMapper.selectCmcSettleList(cmcSettle);
44
     }
44
     }
45
 
45
 
46
+    /**
47
+     * 查询cmc结算统计列表
48
+     *
49
+     * @param cmcSettle cmc结算审批
50
+     * @return cmc结算审批集合
51
+     */
52
+    public List<CmcSettle> selectCmcSettleStatisticList(CmcSettle cmcSettle)
53
+    {
54
+        return cmcSettleMapper.selectCmcSettleStatisticList(cmcSettle);
55
+    }
56
+
46
     /**
57
     /**
47
      * 新增cmc结算审批
58
      * 新增cmc结算审批
48
      * 
59
      * 

+ 21
- 4
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcSettleMapper.xml View File

37
         <result property="modifyDocument"    column="modify_document"    />
37
         <result property="modifyDocument"    column="modify_document"    />
38
         <result property="finalDocument"    column="final_document"    />
38
         <result property="finalDocument"    column="final_document"    />
39
         <result property="amount"    column="amount"    />
39
         <result property="amount"    column="amount"    />
40
-        <result property="content"    column="content"    />
41
         <association property="reportUser"    javaType="SysUser"         resultMap="ReportUserResult" />
40
         <association property="reportUser"    javaType="SysUser"         resultMap="ReportUserResult" />
42
         <association property="zhUser"    javaType="SysUser"         resultMap="ZhUserResult" />
41
         <association property="zhUser"    javaType="SysUser"         resultMap="ZhUserResult" />
43
         <association property="jsUser"    javaType="SysUser"         resultMap="JsUserResult" />
42
         <association property="jsUser"    javaType="SysUser"         resultMap="JsUserResult" />
98
 
97
 
99
     <sql id="selectCmcSettleVo">
98
     <sql id="selectCmcSettleVo">
100
         select distinct s.settle_id, s.project_id, p.project_number, p.project_name, p.undertaking_dept, s.xm_name, s.workload_report, s.reporter, u.nick_name as report_nick_name, s.report_time, s.settle_comment, s.zh_user_id, u1.nick_name as zh_nick_name,
99
         select distinct s.settle_id, s.project_id, p.project_number, p.project_name, p.undertaking_dept, s.xm_name, s.workload_report, s.reporter, u.nick_name as report_nick_name, s.report_time, s.settle_comment, s.zh_user_id, u1.nick_name as zh_nick_name,
101
-               s.zh_time, s.zh_comment, s.js_user_id, u2.nick_name as js_nick_name, s.js_time, s.js_comment, s.jy_user_id, u3.nick_name as jy_nick_name, s.jy_time, s.jy_comment, 
102
-               s.manager_user_id, u4.nick_name as manager_nick_name, s.manager_time, s.manager_comment, s.gm_user_id, u5.nick_name as gm_nick_name, s.gm_time, s.gm_comment, ss.amount,
100
+               s.zh_time, s.zh_comment, s.js_user_id, u2.nick_name as js_nick_name, s.js_time, s.js_comment, s.jy_user_id, u3.nick_name as jy_nick_name, s.jy_time, s.jy_comment,
101
+               s.manager_user_id, u4.nick_name as manager_nick_name, s.manager_time, s.manager_comment, s.gm_user_id, u5.nick_name as gm_nick_name, s.gm_time, s.gm_comment,
103
                s.dsz_user_id, u6.nick_name as dsz_nick_name, s.dsz_time, s.dsz_comment, s.settle_document, s.modify_document, s.final_document, s.report_dept, d.dept_name from cmc_settle as s
102
                s.dsz_user_id, u6.nick_name as dsz_nick_name, s.dsz_time, s.dsz_comment, s.settle_document, s.modify_document, s.final_document, s.report_dept, d.dept_name from cmc_settle as s
104
         left join sys_user as u on u.user_id = s.reporter
103
         left join sys_user as u on u.user_id = s.reporter
105
         left join sys_user as u1 on u1.user_id = s.zh_user_id
104
         left join sys_user as u1 on u1.user_id = s.zh_user_id
146
         group by s.settle_id
145
         group by s.settle_id
147
         order by s.report_time desc
146
         order by s.report_time desc
148
     </select>
147
     </select>
149
-    
148
+
149
+    <select id="selectCmcSettleStatisticList" parameterType="CmcSettle" resultMap="CmcSettleResult">
150
+        select t0.settle_id, t0.project_id, t0.project_number, t0.project_name, t0.xm_name, t0.gm_time, (t2.amount - t0.amount) as amount from
151
+        (select distinct s.settle_id, s.project_id, p.project_number, p.project_name, s.xm_name, ss.table_number, s.gm_time, sum(ss.amount) as amount from cmc_settle as s
152
+        left join cmc_project as p on p.project_id = s.project_id
153
+        left join cmc_settle_summary as ss on ss.settle_id = s.settle_id
154
+        where ss.table_number = '0' group by s.settle_id) as t0 left join
155
+        (select distinct s.settle_id, sum(ss.amount) as amount from cmc_settle as s
156
+        left join cmc_project as p on p.project_id = s.project_id
157
+        left join cmc_settle_summary as ss on ss.settle_id = s.settle_id
158
+        where ss.table_number = '2' group by s.settle_id) as t2 on t0.settle_id = t2.settle_id
159
+        <where>
160
+            <if test="projectId != null"> and t0.project_id = #{projectId}</if>
161
+            <if test="projectNumber != null  and projectNumber != ''"> and t0.project_number like concat('%', #{projectNumber}, '%')</if>
162
+            <if test="xmName != null"> and t0.xm_name = #{xmName}</if>
163
+            <if test="gmTime != null"> and YEAR(t0.gm_time) = YEAR(#{gmTime})</if>
164
+        </where>
165
+    </select>
166
+
150
     <select id="selectCmcSettleBySettleId" parameterType="String" resultMap="CmcSettleResult">
167
     <select id="selectCmcSettleBySettleId" parameterType="String" resultMap="CmcSettleResult">
151
         <include refid="selectCmcSettleVo"/>
168
         <include refid="selectCmcSettleVo"/>
152
         where s.settle_id = #{settleId}
169
         where s.settle_id = #{settleId}

Loading…
Cancel
Save