浏览代码

年度预算-新建年度预算时同步实际已执行

lgl 1 年之前
父节点
当前提交
daf694eb87

+ 1 - 1
src/main/java/com/liang/controller/PrjAnnualbudgetController.java

@@ -426,7 +426,7 @@ public class PrjAnnualbudgetController extends BaseController {
426 426
      */
427 427
     @ResponseBody
428 428
     @RequestMapping(value = "/doAdd", method = RequestMethod.POST)
429
-//    @Transactional(rollbackFor = Exception.class)
429
+    @Transactional(rollbackFor = Exception.class)
430 430
     public BaseResult doAdd(PrjAnnualbudget annualbudget) {
431 431
         annualbudget.setSpzt("未提交");
432 432
         int num = prjAnnualbudgetService.insert(annualbudget);

+ 5 - 5
src/main/java/com/liang/controller/StaReimbursementController.java

@@ -408,11 +408,11 @@ public class StaReimbursementController extends BaseController {
408 408
     public BaseResult updateSpzt(@RequestBody String strData) {
409 409
         StaReimbursement fybz = JsonTool.parseObject(strData, StaReimbursement.class);
410 410
         int num = staReimbursementService.updateSpzt(fybz);
411
-        if (StringUtils.isNotBlank(fybz.getSpzt()) && "审批结束".equals(fybz.getSpzt())) {
412
-            Integer rwsId = staReimbursementDao.getRwsIdByBzId(fybz.getId());
413
-//            BigDecimal nysSum = prjAnnualbudgetDao.getNYSSum(fybz.getId(), rwsId);
414
-            prjAnnualbudgetDao.updateSJYZXByBZID(fybz.getId(),null);
415
-        }
411
+//        if (StringUtils.isNotBlank(fybz.getSpzt()) && "审批结束".equals(fybz.getSpzt())) {
412
+//            Integer rwsId = staReimbursementDao.getRwsIdByBzId(fybz.getId());
413
+////            BigDecimal nysSum = prjAnnualbudgetDao.getNYSSum(fybz.getId(), rwsId);
414
+//            prjAnnualbudgetDao.updateSJYZXByBZID(fybz.getId(),null);
415
+//        }
416 416
         if (num > 0) {
417 417
             return BaseResult.success("保存成功!");
418 418
         } else {

+ 2 - 0
src/main/java/com/liang/dao/PrjAnnualbudgetDao.java

@@ -138,5 +138,7 @@ public interface PrjAnnualbudgetDao {
138 138
     void updateSJYZXByBZID(@Param("bzId") Integer bzId, @Param("nysSum") BigDecimal nysSum);
139 139
 
140 140
     BigDecimal getNYSSum(@Param("id") Integer id, @Param("rwsId") Integer rwsId);
141
+
142
+    void updateSJYZXSum(Integer rws);
141 143
 }
142 144
 

+ 2 - 1
src/main/java/com/liang/service/impl/PrjAnnualbudgetServiceImpl.java

@@ -146,7 +146,8 @@ public class PrjAnnualbudgetServiceImpl implements PrjAnnualbudgetService {
146 146
             prjAnnualbudgetDao.updateXTJSYZX(rws);
147 147
             //更新 历史年度预算的实际已执行
148 148
             prjAnnualbudgetDao.updateSJYZX(rws);
149
-
149
+            //更新已执行总计
150
+            prjAnnualbudgetDao.updateSJYZXSum(rws);
150 151
         }
151 152
     }
152 153
 }

+ 20 - 0
src/main/resources/mapper/PrjAnnualbudgetDao.xml

@@ -462,6 +462,26 @@
462 462
         where
463 463
             a.id=b.id
464 464
     </update>
465
+    <update id="updateSJYZXSum">
466
+        update A
467
+        set A.sjyzx = B.BZJE from prj_AnnualBudgetDetail A
468
+        inner join (SELECT	sum(BZJE) BZJE ,pa.fymc
469
+	        from(SELECT	id ,fylb
470
+	  	from sta_BudgetApproval
471
+		where	nys in (
472
+			select	id
473
+			from prj_AnnualBudget
474
+			where rws = #{rws})) sb
475
+            left join sta_Reimbursement sa on sa.fysq = sb.id
476
+            LEFT join prj_AnnualBudgetDetail pa on pa.id = sb.fylb
477
+            group by pa.fymc ) B
478
+        on A.FYMC = B.fymc
479
+        where
480
+            NYS = (
481
+            SELECT top 1 ID from
482
+            prj_AnnualBudget
483
+            where RWS = #{rws} order by nf desc )
484
+    </update>
465 485
 
466 486
     <!--已申请费用的预算-->
467 487
     <select id="getFysqBudgetList">

+ 1 - 0
src/main/resources/templates/annualbudget/update_annualbudget.html

@@ -362,6 +362,7 @@
362 362
             var value = obj.value,
363 363
                 item = obj.data,
364 364
                 colName = obj.field;
365
+            console.log(obj);
365 366
             if(item.children == undefined)
366 367
             {
367 368
                 //当前行预算

+ 118 - 25
src/main/resources/templates/annualbudget/view_annualbudget.html

@@ -28,44 +28,53 @@
28 28
                         <div class="layui-form-item layui-inline" style="width: 100%">
29 29
                             <label class="layui-form-label" style="width: 70px">名称</label>
30 30
                             <div class="layui-input-inline" style="width: 855px">
31
-                                <input type="hidden" id="id" name="id" class="layui-input" th:value="${annualbudget.id}">
32
-                                <input type="text" id="mc" name="mc" class="layui-input" th:value="${annualbudget.mc}" readonly>
31
+                                <input type="hidden" id="id" name="id" class="layui-input"
32
+                                       th:value="${annualbudget.id}">
33
+                                <input type="text" id="mc" name="mc" class="layui-input" th:value="${annualbudget.mc}"
34
+                                       readonly>
33 35
                             </div>
34 36
                         </div>
35 37
                         <div class="layui-form-item layui-inline" style="width: 100%">
36 38
                             <label class="layui-form-label" style="width: 70px">任务书</label>
37 39
                             <div class="layui-input-inline" style="width: 855px">
38
-                                <input type="hidden" id="rws" name="rws" class="layui-input" th:value="${annualbudget.rws}">
39
-                                <input type="text" id="rwsmc" name="rwsmc" class="layui-input" th:value="${annualbudget.rwsmc}" readonly>
40
+                                <input type="hidden" id="rws" name="rws" class="layui-input"
41
+                                       th:value="${annualbudget.rws}">
42
+                                <input type="text" id="rwsmc" name="rwsmc" class="layui-input"
43
+                                       th:value="${annualbudget.rwsmc}" readonly>
40 44
                             </div>
41 45
                         </div>
42 46
                         <div class="layui-form-item layui-inline" style="width: 100%">
43 47
                             <label class="layui-form-label" style="width: 70px">项目执行期</label>
44 48
                             <div class="layui-input-inline" style="width: 855px">
45
-                                <input type="text" id="xmzxq" name="xmzxq" class="layui-input" autocomplete="off" th:value="${annualbudget.xmzxq}" readonly>
49
+                                <input type="text" id="xmzxq" name="xmzxq" class="layui-input" autocomplete="off"
50
+                                       th:value="${annualbudget.xmzxq}" readonly>
46 51
                             </div>
47 52
                         </div>
48 53
                         <div class="layui-form-item layui-inline" style="width: 100%">
49 54
                             <label class="layui-form-label required" style="width: 70px">年份</label>
50 55
                             <div class="layui-input-inline" style="width: 855px">
51 56
                                 <input type="number" id="nf" name="nf" value="2023" lay-verify="required"
52
-                                       lay-reqtext="年份不能为空" class="layui-input" autocomplete="off" th:value="${annualbudget.nf}" readonly>
57
+                                       lay-reqtext="年份不能为空" class="layui-input" autocomplete="off"
58
+                                       th:value="${annualbudget.nf}" readonly>
53 59
                             </div>
54 60
                         </div>
55 61
                         <div class="layui-form-item layui-inline" style="width: 100%">
56 62
                             <label class="layui-form-label" style="width: 70px">说明</label>
57 63
                             <div class="layui-input-inline" style="width: 855px">
58
-                                <textarea id="sm" name="sm"  class="layui-textarea" style="width: 100%;height: 150px" th:text="${annualbudget.sm}" readonly></textarea>
64
+                                <textarea id="sm" name="sm" class="layui-textarea" style="width: 100%;height: 150px"
65
+                                          th:text="${annualbudget.sm}" readonly></textarea>
59 66
                             </div>
60 67
                         </div>
61 68
                         <div class="layui-form-item layui-inline" style="width: 100%">
62 69
                             <label class="layui-form-label" style="width: 70px">申请人</label>
63 70
                             <div class="layui-input-inline" style="width: 380px">
64
-                                <input type="text" name="sqrxm" class="layui-input" th:value="${annualbudget.sqrxm}" readonly>
71
+                                <input type="text" name="sqrxm" class="layui-input" th:value="${annualbudget.sqrxm}"
72
+                                       readonly>
65 73
                             </div>
66 74
                             <label class="layui-form-label" style="width: 65px">申请时间</label>
67 75
                             <div class="layui-input-inline" style="width: 370px">
68
-                                <input type="text" id="sqsj" name="sqsj" class="layui-input" th:value="${annualbudget.sqsj}" readonly>
76
+                                <input type="text" id="sqsj" name="sqsj" class="layui-input"
77
+                                       th:value="${annualbudget.sqsj}" readonly>
69 78
                             </div>
70 79
                         </div>
71 80
                         <!--                        <div class="layui-form-item layui-inline" style="width: 100%">-->
@@ -77,27 +86,32 @@
77 86
                         <div class="layui-form-item layui-inline" style="width: 100%">
78 87
                             <label class="layui-form-label" style="width: 70px">可研报告</label>
79 88
                             <div class="layui-input-inline" style="width: 855px">
80
-                                <input type="text" id="xmmc" name="xmmc" class="layui-input" th:value="${annualbudget.xmmc}" readonly>
89
+                                <input type="text" id="xmmc" name="xmmc" class="layui-input"
90
+                                       th:value="${annualbudget.xmmc}" readonly>
81 91
                             </div>
82 92
                         </div>
83 93
                         <div class="layui-form-item layui-inline" style="width: 100%">
84 94
                             <label class="layui-form-label" style="width: 70px">ERP编号</label>
85 95
                             <div class="layui-input-inline" style="width: 380px">
86
-                                <input type="text" id="erpbh" name="erpbh" class="layui-input" th:value="${annualbudget.erpbh}" readonly>
96
+                                <input type="text" id="erpbh" name="erpbh" class="layui-input"
97
+                                       th:value="${annualbudget.erpbh}" readonly>
87 98
                             </div>
88 99
                             <label class="layui-form-label" style="width: 65px">项目类型</label>
89 100
                             <div class="layui-input-inline" style="width: 370px">
90
-                                <input type="text" id="xmlxmc" name="xmlxmc" class="layui-input" th:value="${annualbudget.xmlxmc}" readonly>
101
+                                <input type="text" id="xmlxmc" name="xmlxmc" class="layui-input"
102
+                                       th:value="${annualbudget.xmlxmc}" readonly>
91 103
                             </div>
92 104
                         </div>
93 105
                         <div class="layui-form-item layui-inline" style="width: 100%">
94 106
                             <label class="layui-form-label" style="width: 90px">电科院负责人</label>
95 107
                             <div class="layui-input-inline" style="width: 370px">
96
-                                <input type="text" id="xmfzrxm" name="xmfzrxm" class="layui-input" th:value="${annualbudget.xmfzrxm}" readonly>
108
+                                <input type="text" id="xmfzrxm" name="xmfzrxm" class="layui-input"
109
+                                       th:value="${annualbudget.xmfzrxm}" readonly>
97 110
                             </div>
98 111
                             <label class="layui-form-label" style="width: 65px">所属部门</label>
99 112
                             <div class="layui-input-inline" style="width: 370px">
100
-                                <input type="text" id="ssbmmc" name="ssbmmc" class="layui-input" th:value="${annualbudget.ssbmmc}" readonly>
113
+                                <input type="text" id="ssbmmc" name="ssbmmc" class="layui-input"
114
+                                       th:value="${annualbudget.ssbmmc}" readonly>
101 115
                             </div>
102 116
                         </div>
103 117
 
@@ -120,19 +134,23 @@
120 134
                     <div class="layui-form layuimini-form">
121 135
                         <div class="layui-form-item" style="margin-bottom: -10px">
122 136
                             <div class="layui-inline">
123
-                                <label class="layui-form-label " style="width: fit-content; margin-bottom: -10px">单位:万元</label>
137
+                                <label class="layui-form-label "
138
+                                       style="width: fit-content; margin-bottom: -10px">单位:万元</label>
124 139
                                 <label class="layui-form-label" style="width: 100px"></label>
125 140
                             </div>
126 141
                             <div class="layui-inline">
127
-                                <label class="layui-form-label" style="width: 120px; margin-left: -10px">[[${ysmc}]]</label>
142
+                                <label class="layui-form-label"
143
+                                       style="width: 120px; margin-left: -10px">[[${ysmc}]]</label>
128 144
                                 <div class="layui-input-inline" style="width: 100px">
129
-                                    <input type="text" id="rwsys" name="rwsys" class="layui-input" th:value="${rwsys}" readonly>
145
+                                    <input type="text" id="rwsys" name="rwsys" class="layui-input" th:value="${rwsys}"
146
+                                           readonly>
130 147
                                 </div>
131 148
                             </div>
132 149
                             <div class="layui-inline">
133 150
                                 <label class="layui-form-label" style="width: 60px; margin-left: -15px">年度经费</label>
134 151
                                 <div class="layui-input-inline" style="width: 100px">
135
-                                    <input type="text" id="ndczje" name="ndczje" class="layui-input" th:value="${ndczje}" readonly>
152
+                                    <input type="text" id="ndczje" name="ndczje" class="layui-input"
153
+                                           th:value="${ndczje}" readonly>
136 154
                                 </div>
137 155
                             </div>
138 156
                             <div class="layui-inline">
@@ -177,10 +195,10 @@
177 195
 
178 196
         var rwsId = $("#rws").val(),
179 197
             ysId = $("#id").val();
180
-        var zjfy=0;
198
+        var zjfy = 0;
181 199
 
182 200
         // 监听查看任务书按钮
183
-        $("button[lay-filter='viewRwsBtn']").click(function(){
201
+        $("button[lay-filter='viewRwsBtn']").click(function () {
184 202
             parent.layer.open({
185 203
                 title: '查看项目任务书',
186 204
                 type: 2,
@@ -205,9 +223,9 @@
205 223
             dataType: "json",
206 224
             success: function (result) {
207 225
                 dataBudget = result;
208
-                for (let i = 0; i <dataBudget.length ; i++) {
209
-                    if(dataBudget[i].fymc.indexOf('总计')>-1){
210
-                        zjfy=i;
226
+                for (let i = 0; i < dataBudget.length; i++) {
227
+                    if (dataBudget[i].fymc.indexOf('总计') > -1) {
228
+                        zjfy = i;
211 229
                     }
212 230
                 }
213 231
                 $("#ndbyj").val(dataBudget[zjfy].byj);
@@ -226,7 +244,15 @@
226 244
                 dataBudget1 = result;
227 245
             }
228 246
         });
229
-
247
+        console.log(dataBudget1);
248
+        let fjArray = []
249
+        fjArray = Array.from(dataBudget1,({fj}) => fj)
250
+        console.log('fjArray'+fjArray);
251
+        for (var j = 0; j < dataBudget1.length; j++){
252
+            if (!fjArray.includes(dataBudget1[j].bm)) {
253
+                setFjBudget(dataBudget1[j].fj);
254
+            }
255
+        }
230 256
         treeTable.render({
231 257
             elem: '#currentTableId',
232 258
             data: dataBudget1,
@@ -261,13 +287,80 @@
261 287
                     // {field: 'byjybz', width: '11%', title: '备用金已报账'}
262 288
                 ]
263 289
             ],
290
+            done: function () {
291
+            }
264 292
         });
265 293
 
266 294
         // 监听取消按钮
267
-        $("button[lay-filter='cancleBtn']").click(function(){
295
+        $("button[lay-filter='cancleBtn']").click(function () {
268 296
             var iframeIndex = parent.layer.getFrameIndex(window.name);
269 297
             parent.layer.close(iframeIndex);
270 298
         });
299
+
300
+        //父级预算
301
+        function setFjBudget(fj) {
302
+            if (fj != null && fj != '') {
303
+                var xmzys = 0, xmz = 0, byj = 0, xtjsyzx = 0, sjyzx = 0;
304
+                //子节点的值相加
305
+                for (var j = 0; j < dataBudget1.length; j++) {
306
+                    if (fj == dataBudget1[j].fj) {
307
+                        // var t = parseFloat(dataBudget[j].xmzys);
308
+                        // if (!isNaN(t))
309
+                        //     xmzys += t;
310
+                        var t1 = parseFloat(dataBudget1[j].xmz);
311
+                        if (!isNaN(t1))
312
+                            xmz += t1;
313
+                        var t2 = parseFloat(dataBudget1[j].byj);
314
+                        if (!isNaN(t2))
315
+                            byj += t2;
316
+                        var t3 = parseFloat(dataBudget1[j].xtjsyzx);
317
+                        if (!isNaN(t3))
318
+                            xtjsyzx += t3;
319
+                        var t4 = parseFloat(dataBudget1[j].sjyzx);
320
+                        if (!isNaN(t4))
321
+                            sjyzx += t4;
322
+                    }
323
+                }
324
+                console.log(sjyzx);
325
+                //更新父节点的值
326
+                for (var j = 0; j < dataBudget1.length; j++) {
327
+                    if (fj == dataBudget1[j].bm) {
328
+                        // if (xmzys == 0)
329
+                        //     dataBudget[j].xmzys = '';
330
+                        // else
331
+                        //     dataBudget[j].xmzys = xmzys.toFixed(2);
332
+                        if (xmz == 0)
333
+                            dataBudget1[j].xmz = '';
334
+                        else
335
+                            dataBudget1[j].xmz = xmz.toFixed(2);
336
+                        if (xtjsyzx == 0)
337
+                            dataBudget1[j].xtjsyzx = '';
338
+                        else
339
+                            dataBudget1[j].xtjsyzx = xtjsyzx.toFixed(2);
340
+                        if (sjyzx == 0)
341
+                            dataBudget1[j].sjyzx = '';
342
+                        else
343
+                            dataBudget1[j].sjyzx = sjyzx.toFixed(2);
344
+                        // if (byj > 0)
345
+                        //     dataBudget[j].byj = byj.toFixed(2);
346
+                        // else if(dataBudget[j].fj != '')
347
+                        //     dataBudget[j].byj = '';
348
+
349
+                        // console.log(dataBudget[j].fj);
350
+                        // console.log(dataBudget[j].byj);
351
+
352
+                        var ysje = xmz + byj;
353
+                        if (ysje == 0)
354
+                            dataBudget1[j].ysje = "";
355
+                        else
356
+                            dataBudget1[j].ysje = ysje.toFixed(2);
357
+
358
+                        setFjBudget(dataBudget1[j].fj);
359
+                        break;
360
+                    }
361
+                }
362
+            }
363
+        }
271 364
     });
272 365
 </script>
273 366
 </body>