Sfoglia il codice sorgente

结算统计效率优化

lamphua 7 mesi fa
parent
commit
cb7cec5121

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

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

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

@@ -39,6 +39,9 @@ public class CmcSettle extends BaseEntity
39 39
     /** 结算内容 */
40 40
     private String content;
41 41
 
42
+    /** 表格编号 */
43
+    private String tableNumber;
44
+
42 45
     /** 实际结算总金额 */
43 46
     @Excel(name = "实际结算总金额")
44 47
     private BigDecimal amount;
@@ -559,15 +562,6 @@ public class CmcSettle extends BaseEntity
559 562
     {
560 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 567
     @Override

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

@@ -27,6 +27,14 @@ public interface CmcSettleMapper
27 27
      */
28 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 39
      * 新增cmc结算审批
32 40
      * 

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

@@ -27,6 +27,14 @@ public interface ICmcSettleService
27 27
      */
28 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 39
      * 新增cmc结算审批
32 40
      * 

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

@@ -43,6 +43,17 @@ public class CmcSettleServiceImpl implements ICmcSettleService
43 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 58
      * 新增cmc结算审批
48 59
      * 

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

@@ -37,7 +37,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
37 37
         <result property="modifyDocument"    column="modify_document"    />
38 38
         <result property="finalDocument"    column="final_document"    />
39 39
         <result property="amount"    column="amount"    />
40
-        <result property="content"    column="content"    />
41 40
         <association property="reportUser"    javaType="SysUser"         resultMap="ReportUserResult" />
42 41
         <association property="zhUser"    javaType="SysUser"         resultMap="ZhUserResult" />
43 42
         <association property="jsUser"    javaType="SysUser"         resultMap="JsUserResult" />
@@ -98,8 +97,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
98 97
 
99 98
     <sql id="selectCmcSettleVo">
100 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 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 103
         left join sys_user as u on u.user_id = s.reporter
105 104
         left join sys_user as u1 on u1.user_id = s.zh_user_id
@@ -146,7 +145,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
146 145
         group by s.settle_id
147 146
         order by s.report_time desc
148 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 167
     <select id="selectCmcSettleBySettleId" parameterType="String" resultMap="CmcSettleResult">
151 168
         <include refid="selectCmcSettleVo"/>
152 169
         where s.settle_id = #{settleId}

Loading…
Annulla
Salva