Browse Source

添加报账时添加保存限制,禁止报账总金额大于该科目本年度项目组预算填报金额

梁世豪 4 months ago
parent
commit
917538370f

+ 0 - 2
src/main/java/com/liang/controller/StaBudgetapprovalController.java

@@ -1941,8 +1941,6 @@ public class StaBudgetapprovalController extends BaseController {
1941 1941
     public StaBudgetapproval getKmFyInfo(@PathVariable Integer nys, @PathVariable Integer fylb,
1942 1942
                                          @RequestParam(required = false,defaultValue = "",value = "fylbmc")String fymc) {
1943 1943
         Map<String, String> paraMap = new HashMap<>();
1944
-        paraMap.put("fylb1", fylb.toString());
1945
-        paraMap.put("nys1", nys.toString());
1946 1944
         paraMap.put("fylb", fylb.toString());
1947 1945
         paraMap.put("nys", nys.toString());
1948 1946
         StaBudgetapproval kmFyInfo = staBudgetapprovalService.getKmFyInfo(paraMap);

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

@@ -852,19 +852,19 @@ public class StaReimbursementController extends BaseController {
852 852
     }
853 853
 
854 854
     /**
855
-     * 获取该年度项目总预算和已报账金额
855
+     * 获取该年度项目总预算和已报账金额,该科目细目组预算,科目已申请报账金额
856 856
      *
857 857
      * @param fysq
858 858
      * @return
859 859
      */
860 860
     @ResponseBody
861
-    @RequestMapping(value = "/getZbjje/{fysq}", method = RequestMethod.POST)
862
-    public BaseResult getZbjje(@PathVariable Integer fysq) {
861
+    @RequestMapping(value = "/getZbjje/{fysq}/{fylb}", method = RequestMethod.POST)
862
+    public BaseResult getZbjje(@PathVariable Integer fysq,@PathVariable Integer fylb) {
863 863
     // 获取该报账的年度预算id
864 864
         StaBudgetapproval sb = staBudgetapprovalService.queryById(fysq);
865 865
         Integer nys = sb.getNys();
866 866
 //        通过年度预算id获取该年度已报账金额和项目总预算
867
-        StaBudgetapproval staBudgetapproval =staBudgetapprovalService.getZbjje(nys);
867
+        StaBudgetapproval staBudgetapproval =staBudgetapprovalService.getZbjje(nys,fylb);
868 868
         return BaseResult.success(staBudgetapproval);
869 869
     }
870 870
 }

+ 1 - 1
src/main/java/com/liang/dao/StaBudgetapprovalDao.java

@@ -242,7 +242,7 @@ public interface StaBudgetapprovalDao {
242 242
 
243 243
     StaBudgetapproval getId(Integer id);
244 244
 
245
-    StaBudgetapproval getZbzje(@Param("nys") Integer nys);
245
+    StaBudgetapproval getZbzje(@Param("nys") Integer nys,@Param("fylb") Integer fylb);
246 246
 
247 247
 
248 248
     StaBudgetapproval getSqjes(Integer nys);

+ 8 - 0
src/main/java/com/liang/entity/StaBudgetapproval.java

@@ -203,6 +203,14 @@ public class StaBudgetapproval implements Serializable {
203 203
      * 项目总报账金额
204 204
      */
205 205
     private Double zbzje;
206
+    /**
207
+     * 科目项目组预算
208
+     */
209
+    private Double kmzys;
210
+    /**
211
+     * 科目已报账金额
212
+     */
213
+    private Double kmybzje;
206 214
     /**
207 215
      * 是否退回
208 216
      */

+ 1 - 1
src/main/java/com/liang/service/StaBudgetapprovalService.java

@@ -211,7 +211,7 @@ public interface StaBudgetapprovalService {
211 211
 
212 212
     StaBudgetapproval getId(Integer id);
213 213
 
214
-    StaBudgetapproval getZbjje(Integer nys);
214
+    StaBudgetapproval getZbjje(Integer nys,Integer fylb);
215 215
 
216 216
 
217 217
     StaBudgetapproval getSqjes(Integer nys);

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

@@ -245,8 +245,8 @@ public class StaBudgetapprovalServiceImpl implements StaBudgetapprovalService {
245 245
     }
246 246
 
247 247
     @Override
248
-    public StaBudgetapproval getZbjje(Integer nys) {
249
-        return staBudgetapprovalDao.getZbzje(nys);
248
+    public StaBudgetapproval getZbjje(Integer nys,Integer fylb) {
249
+        return staBudgetapprovalDao.getZbzje(nys,fylb);
250 250
     }
251 251
 
252 252
     @Override

+ 18 - 6
src/main/resources/mapper/StaBudgetapprovalDao.xml

@@ -1036,15 +1036,15 @@
1036 1036
     <!--项目分项费用信息-->
1037 1037
     <select id="getKmFyInfo" resultMap="StaBudgetapprovalMap" parameterType="map">
1038 1038
         select b.NYS, b.FYLB,
1039
-               ISNULL((select SUM(SQJE) from sta_BudgetApproval where  NYS = #{nys1} and FYLB = #{fylb1} and SPZT != '作废' and SFBYJ = 0),0) as SQJE,
1039
+               ISNULL((select SUM(SQJE) from sta_BudgetApproval where  NYS = #{nys} and FYLB = #{fylb} and SPZT != '作废' and SFBYJ = 0),0) as SQJE,
1040 1040
                (select
1041 1041
                     SUM(sr.bzje)
1042 1042
                 from
1043 1043
                     sta_Reimbursement sr
1044 1044
                     left join  sta_BudgetApproval sb on sr.fysq = sb.id
1045 1045
                 where
1046
-                sb.NYS = #{nys1}
1047
-                and sb.FYLB = #{fylb1}
1046
+                sb.NYS = #{nys}
1047
+                and sb.FYLB = #{fylb}
1048 1048
                 and sb.SPZT != '作废'
1049 1049
                 and sb.SFBYJ = 0
1050 1050
                 and sr.spzt = '审批结束') as BZJE,
@@ -1057,8 +1057,8 @@
1057 1057
                 sta_BudgetApproval sb
1058 1058
                 left join sta_Reimbursement sr on sr.fysq = sb.id and sr.SPZT = '审批结束'
1059 1059
               where
1060
-                sb.NYS = #{nys1}
1061
-                and sb.fylb = #{fylb1}
1060
+                sb.NYS = #{nys}
1061
+                and sb.fylb = #{fylb}
1062 1062
                 and sb.spzt != '作废'
1063 1063
                 and sb.SFBYJ = 0
1064 1064
               ) xmndjfysq
@@ -1147,7 +1147,19 @@
1147 1147
     <select id="getZbzje" resultType="com.liang.entity.StaBudgetapproval">
1148 1148
         SELECT
1149 1149
             (SELECT XMZYS * 10000 FROM prj_AnnualBudgetDetail WHERE FJ = '' AND NYS = #{nys}) AS XMZYS,
1150
-            (SELECT SUM(BZJE) FROM sta_BudgetApproval WHERE NYS = #{nys} ) AS ZBZJE;
1150
+            (SELECT XMZ * 10000 FROM prj_AnnualBudgetDetail WHERE ID = #{fylb} AND NYS = #{nys}) AS KMZYS,
1151
+            (SELECT SUM(BZJE) FROM sta_BudgetApproval WHERE NYS = #{nys} and SPZT = '审批结束' ) AS ZBZJE,
1152
+            (select
1153
+                 SUM(sr.bzje)
1154
+             from
1155
+                 sta_Reimbursement sr
1156
+                     left join  sta_BudgetApproval sb on sr.fysq = sb.id
1157
+             where
1158
+                 sb.NYS = #{nys}
1159
+               and sb.FYLB = #{fylb}
1160
+               and sb.SPZT != '作废'
1161
+                and sb.SFBYJ = 0
1162
+                and sr.spzt != '作废') as KMYBZJE
1151 1163
     </select>
1152 1164
 
1153 1165
 <!--    <select id="getxmndjfysq" resultMap="StaBudgetapprovalMap">

+ 3 - 2
src/main/resources/mapper/StaPayapprovalDao.xml

@@ -331,8 +331,9 @@ where
331 331
             COALESCE(SUM(b.BCFKJE), 0) AS FKJE,
332 332
             COALESCE(a.BZJE, 0) / 10000 AS BZJE
333 333
         FROM sta_Reimbursement a
334
-        left  JOIN sta_PayApproval b ON a.FYSQ = b.FYSQ
335
-        WHERE a.FYSQ = #{fysq} and b.SPZT != '作废'
334
+                 left  JOIN sta_PayApproval b ON a.FYSQ = b.FYSQ AND b.SPZT != '作废'
335
+        WHERE a.FYSQ = #{fysq}
336
+          and a.spzt != '作废'
336 337
         GROUP BY a.BZJE
337 338
 
338 339
     </select>

+ 25 - 87
src/main/resources/templates/reimburse/add.html

@@ -162,10 +162,14 @@
162 162
         var fysq = $("#fysq").val();
163 163
         var sqje = $("#sqje").val();
164 164
         var xmmc = [[${budgetapproval.xmmc}]];
165
+        var fylb = [[${budgetapproval.fylb}]];
165 166
         xmmc = xmmc.replace(/[\/\\]/g, '_');
166 167
         var htId ;
167
-        var xmzys;
168
-        var zbzje;
168
+
169
+        var xmzys;//项目总预算
170
+        var zbzje;//项目总报账额
171
+        var kmzys;//科目项目组预算
172
+        var kmybzje;//科目已报账金额
169 173
         var bzId = -1;
170 174
 
171 175
         setTimeout(function() {
@@ -518,8 +522,8 @@
518 522
             ],
519 523
             autoSort: false,
520 524
             limits: [10, 15, 20, 25, 50, 100],
521
-            limit: 10,
522
-            page: true,
525
+            limit: -1,
526
+            page: false,
523 527
             skin: 'grid',
524 528
             done: function (res, curr, count) { // done为数据渲染完的回调
525 529
             }
@@ -595,10 +599,12 @@
595 599
             });
596 600
         });
597 601
         AjaxUtil.post({
598
-            url: AjaxUtil.ctx + 'staReimbursement/getZbjje/'+fysq,
602
+            url: AjaxUtil.ctx + 'staReimbursement/getZbjje/'+fysq+'/'+fylb,
599 603
             success:function (data){
600 604
                 xmzys = data.data.xmzys;
601 605
                 zbzje = data.data.zbzje;
606
+                kmzys =data.data.kmzys;
607
+                kmybzje =data.data.kmybzje;
602 608
 
603 609
             }
604 610
         })
@@ -607,10 +613,23 @@
607 613
         form.on('submit(saveBtn)', function (data) {
608 614
             var sqje = parseFloat($("#sqje").val());
609 615
             var bzje = parseFloat($("#bzje").val());
616
+            console.log(kmzys)
617
+            console.log(kmybzje)
618
+            //校验报账金额是否大于科目项目组预算
619
+            if (kmzys == null  && kmzys ==''){
620
+                alert('该报账此费用类别没有项目组预算,请在年度预算中修改项目组预算!!')
621
+                return false;
622
+            }else if (bzje > kmzys){
623
+                alert('报账金额大于该科目项目组预算,请查看年度预算中该科目项目组预算后重新填写!!!')
624
+                return false;
625
+            }else if (bzje + kmybzje >kmzys){
626
+                alert('该科目已申请报账加上当前报账金额,已超过该科目项目组预算!!')
627
+                return false;
628
+            }
610 629
             // 获取该项目的总报账金额
611 630
             if (xmzys !== null && zbzje !== null) {
612 631
                 if (zbzje + bzje > xmzys) {
613
-                    alert("该项目已申请报账加上当前报账金额,超过该项目总预算!!")
632
+                    alert("该项目已申请报账加上当前报账金额,超过该项目总预算!!")
614 633
                     return false;
615 634
                 }
616 635
             }
@@ -729,87 +748,6 @@
729 748
                     }
730 749
                 });
731 750
             }
732
-            // var index = layer.load(0, {shade: 0.1});
733
-            // layer.confirm('保存后合同基础信息将不能修改,你确定要继续吗?', {
734
-            //     btn: ['确定', '取消']
735
-            // }, function(){
736
-            //     // 确定的回调
737
-            //     AjaxUtil.post({
738
-            //         url: url,
739
-            //         data: data.field,
740
-            //         success: function (res) {
741
-            //             var project = {
742
-            //                 "id": htId,
743
-            //                 "spzt": '锁定中'
744
-            //             }
745
-            //             AjaxUtil.post({
746
-            //                 url: AjaxUtil.ctx +"prjContract/updateSpzt",
747
-            //                 contentType: "application/json",
748
-            //                 data: JSON.stringify(project),
749
-            //                 success:function () {
750
-            //                     console.log(htId+'状态修改成功为'+'锁定中')
751
-            //                 }
752
-            //             })
753
-            //             if (res.code === 0) {
754
-            //                 Message.success(1500, res.message, function () {
755
-            //                     parent.setUpdateFlag();
756
-            //                     if (bzId == -1) {
757
-            //                         bzId = res.data.id;
758
-            //                         $("#id").val(bzId);
759
-            //                     }
760
-            //                     //差旅费
761
-            //                     var travleExpenses = [];
762
-            //                     for (const item of dataExpense) {
763
-            //                         var expense = {
764
-            //                             "zb": fysq,
765
-            //                             "xh": item.xh,
766
-            //                             "ccr": item.ccr,
767
-            //                             "ccsy": item.ccsy,
768
-            //                             "ccdd": item.ccdd,
769
-            //                             "qsrq": item.qsrq,
770
-            //                             "jtf": item.jtf,
771
-            //                             "zsf": item.zsf,
772
-            //                             "cb": item.cb,
773
-            //                             "jsrq": item.jsrq,
774
-            //                             "ccts": item.ccts,
775
-            //                             "zj": item.zj,
776
-            //                             "rpj": item.rpj,
777
-            //                             "ccsy": item.ccsy
778
-            //                         };
779
-            //                         travleExpenses.push(expense);
780
-            //                     }
781
-            //                     //保存差旅费
782
-            //                     AjaxUtil.post({
783
-            //                         url: AjaxUtil.ctx + "staActualexpenses/batchInsert/" + fysq,
784
-            //                         contentType: "application/json",
785
-            //                         data: JSON.stringify(travleExpenses),
786
-            //                         success: function (res) {
787
-            //                             if (res.code === 0) {
788
-            //                                 // Message.success(1500, res.message, function () {
789
-            //                                 //
790
-            //                                 // });
791
-            //                             } else {
792
-            //                                 // Message.error(res.message, 1000);
793
-            //                             }
794
-            //                         },
795
-            //                         error: function (error) {
796
-            //                         }
797
-            //                     });
798
-            //
799
-            //                     var iframeIndex = parent.layer.getFrameIndex(window.name);
800
-            //                     parent.layer.close(iframeIndex);
801
-            //                 });
802
-            //             } else {
803
-            //                 Message.error(res.message, 1000);
804
-            //             }
805
-            //         },
806
-            //         error: function (error) {
807
-            //             Message.error(error.message, 1000)
808
-            //         }
809
-            //     });
810
-            // }, function(){
811
-            //     // layer.close(index);
812
-            // });
813 751
         });
814 752
 
815 753
         // 监听取消按钮

+ 45 - 10
src/main/resources/templates/reimburse/update.html

@@ -143,6 +143,25 @@
143 143
             layer = layui.layer,
144 144
             upload = layui.upload;
145 145
         var fysq = $("#fysq").val();
146
+        var fylb = [[${reimbursement.fylb}]]
147
+
148
+        var xmzys;//项目总预算
149
+        var zbzje;//项目总报账额
150
+        var kmzys;//科目项目组预算
151
+        var kmybzje;//科目已报账金额
152
+
153
+
154
+        AjaxUtil.post({
155
+            url: AjaxUtil.ctx + 'staReimbursement/getZbjje/'+fysq+'/'+fylb,
156
+            success:function (data){
157
+                console.log(data.data)
158
+                xmzys = data.data.xmzys;
159
+                zbzje = data.data.zbzje;
160
+                kmzys =data.data.kmzys;
161
+                kmybzje =data.data.kmybzje;
162
+
163
+            }
164
+        })
146 165
 
147 166
         // //下拉框回显
148 167
         // function set_select(id, value) {
@@ -207,9 +226,6 @@
207 226
                 bzje = 0;
208 227
             } else {
209 228
                 var sqje = parseFloat($("#sqje").val());
210
-                // if(bzje > sqje)
211
-                //     Message.error("报账金额与申请金额不符!", 1500);
212
-                // else {
213 229
                 var sl = parseInt($("#sl").val(), 10);
214 230
                 var bhsje = (bzje * 100) / (100 + sl);
215 231
                 $("#bhsje").val(bhsje.toFixed(2));
@@ -251,8 +267,8 @@
251 267
             ],
252 268
             autoSort: false,
253 269
             limits: [10, 15, 20, 25, 50, 100],
254
-            limit: 10,
255
-            page: true,
270
+            limit: -1,
271
+            page: false,
256 272
             skin: 'grid',
257 273
             initSort: {
258 274
                 field: 'xh', //排序字段
@@ -528,11 +544,30 @@
528 544
         form.on('submit(saveBtn)', function (data) {
529 545
             var sqje = parseFloat($("#sqje").val());
530 546
             var bzje = parseFloat($("#bzje").val());
531
-            // if(bzje != sqje) {
532
-            //     Message.error("报账金额与申请金额不符!", 1500);
533
-            //     return false;
534
-            // }
535
-            //报销凭证
547
+            var oldbzje = [[${reimbursement.bzje}]]
548
+            console.log('xmzys='+xmzys)
549
+            console.log('zbzje='+zbzje)
550
+            console.log('kmzys='+kmzys)
551
+            console.log('kmybzje='+kmybzje)
552
+            console.log('oldbzje='+oldbzje)
553
+            console.log('bzje='+bzje)
554
+            if (kmzys == null  && kmzys ==''){
555
+                alert('该报账此费用类别没有项目组预算,请在年度预算中修改项目组预算!!')
556
+                return false;
557
+            }else if (bzje > kmzys){
558
+                alert('报账金额大于该科目项目组预算,请查看年度预算中该科目项目组预算后重新填写!!!')
559
+                return false;
560
+            }else if (bzje + kmybzje -oldbzje >kmzys){
561
+                alert('该科目已申请报账加上当前报账金额,已超过该科目项目组预算!!')
562
+                return false;
563
+            }
564
+            // 获取该项目的总报账金额
565
+            if (xmzys !== null && zbzje !== null) {
566
+                if (zbzje + bzje - oldbzje > xmzys) {
567
+                    alert("该项目已申请报账加上当前报账金额,已超过该项目总预算!!")
568
+                    return false;
569
+                }
570
+            }
536 571
 
537 572
             var dataWB = [];
538 573
             for (const item of dataBxpz) {