From 6e94d52d0ce0c92c2169cdb19bc675ae08391a35 Mon Sep 17 00:00:00 2001
From: xinyb_ <xin0322>
Date: 星期四, 17 二月 2022 17:32:53 +0800
Subject: [PATCH] 调整维护费支付功能

---
 src/com/yc/MaintenanceFee/utils/ReceiptUtils.java               |    2 
 src/com/yc/MaintenanceFee/controller/MaintainPayController.java |   63 +++-
 src/com/yc/MaintenanceFee/entiy/Receipt.java                    |    8 
 src/com/yc/MaintenanceFee/service/impl/ReceiptServiceImpl.java  |   34 +-
 WebRoot/shopping/maintaince/systemconfig.jsp                    |   41 +-
 src/com/yc/MaintenanceFee/entiy/PayInfo.java                    |    7 
 src/com/yc/MaintenanceFee/utils/BackMsg.java                    |    5 
 src/com/yc/MaintenanceFee/service/impl/MaintainServiceImpl.java |   55 ++--
 src/com/yc/MaintenanceFee/service/impl/PayLogServiceImpl.java   |   54 +++-
 src/com/yc/MaintenanceFee/entiy/PayItem.java                    |    8 
 WebRoot/home.jsp                                                |    2 
 src/com/yc/MaintenanceFee/controller/MaintainController.java    |   19 +
 src/com/yc/MaintenanceFee/entiy/ReceiptEntity.java              |   14 
 WebRoot/public/staticform/150371/5/index.jsp                    |  154 +++++++----
 src/com/yc/MaintenanceFee/entiy/ReceiptDetailed.java            |    2 
 WebRoot/public/staticform/150371/5/payment.jsp                  |  133 +++++++---
 src/applicationContext.xml                                      |    4 
 src/com/yc/MaintenanceFee/service/ReceiptService.java           |    2 
 src/com/yc/MaintenanceFee/schedule/MaintainGate.java            |   14 +
 WebRoot/demo/update1.jsp                                        |   41 +-
 src/com/yc/MaintenanceFee/service/impl/PayInfoServiceImpl.java  |   16 
 21 files changed, 425 insertions(+), 253 deletions(-)

diff --git a/WebRoot/demo/update1.jsp b/WebRoot/demo/update1.jsp
index 8c0f297..aa6588c 100644
--- a/WebRoot/demo/update1.jsp
+++ b/WebRoot/demo/update1.jsp
@@ -203,6 +203,25 @@
             </select>
         </div>
     </div>
+    <% if(isInternalSystem){%>
+    <div class="layui-form-item">
+        <label class="layui-form-label">鏀跺彇缁存姢璐硅处鎴�</label>
+        <div class="layui-input-block">
+            <select name="MaintenanceFeeAcctCode" lay-filter="pay">
+                <option value="">&nbsp;</option>
+                <%
+                    if(acctcode!=null && acctcode.size()>0){
+                        for(Map<String,Object> m : acctcode){
+                %>
+                <option value="<%=DBHelper.getValue(m,"subacctcode")%>"><%=DBHelper.getValue(m,"subacctname")%></option>
+                <%
+                        }
+                    }
+                %>
+            </select>
+        </div>
+    </div>
+    <%}%>
 <fieldset class="layui-elem-field layui-field-title">
   <legend>瀵规帴绗笁鏂圭郴缁熼�夐」</legend>
 </fieldset>
@@ -507,28 +526,6 @@
       <input type="text" name="tengXunMapLocationServiceKey"   value="" placeholder="璺緞锛氳吘璁綅缃湇鍔�->key涓庨厤棰�->key绠$悊" autocomplete="off" class="layui-input">
     </div>
  </div>
-    <% if(isInternalSystem){%>
-    <fieldset class="layui-elem-field layui-field-title">
-        <legend>鏀跺彇缁存姢璐圭殑璐︽埛</legend>
-    </fieldset>
-    <div class="layui-form-item">
-        <label class="layui-form-label">缁存姢璐硅处鎴�</label>
-        <div class="layui-input-block">
-            <select name="MaintenanceFeeAcctCode" lay-filter="pay">
-                <option value="">&nbsp;</option>
-<%
-    if(acctcode!=null && acctcode.size()>0){
-        for(Map<String,Object> m : acctcode){
-            %>
-                <option value="<%=DBHelper.getValue(m,"subacctcode")%>"><%=DBHelper.getValue(m,"subacctname")%></option>
-                <%
-        }
-    }
-%>
-            </select>
-        </div>
-    </div>
-    <%}%>
  <input type="hidden" name="host" placeholder="" autocomplete="off" class="layui-input">
  <input type="hidden" name="userid" placeholder="" autocomplete="off" class="layui-input">
  <input type="hidden" name="port" placeholder="" autocomplete="off" class="layui-input">
diff --git a/WebRoot/home.jsp b/WebRoot/home.jsp
index 291b8f8..93e03a4 100644
--- a/WebRoot/home.jsp
+++ b/WebRoot/home.jsp
@@ -31,7 +31,7 @@
     String userCode = (String) session.getAttribute(SessionKey.USERCODE);
     //绯荤粺杩囨湡鍓╀綑澶╂暟 xin 2022-2-11 17:53:30
     Integer expireDay=maintainService.getSystemExpireDay(dataSourceEntity.getExpiredDate());
-    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     String dayStr=(expireDay>0?sdf.format(dataSourceEntity.getExpiredDate()):null);
     String expireText="鎮ㄥソ锛屾偍鐨勭郴缁熷皢浜�<span style=\"color: #f35d22;\">"+expireDay+
             "</span>澶╁悗<span style=\"color: #f35d22\">锛�"+dayStr+"锛�</span>鍒版湡锛�" +
diff --git a/WebRoot/public/staticform/150371/5/index.jsp b/WebRoot/public/staticform/150371/5/index.jsp
index 089d62a..074cef8 100644
--- a/WebRoot/public/staticform/150371/5/index.jsp
+++ b/WebRoot/public/staticform/150371/5/index.jsp
@@ -3,8 +3,8 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8" %>
 <%
-    String url= SettingKey.getHostUrl(request);
-    String dbId=(String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
+    String url = SettingKey.getHostUrl(request);
+    String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
 %>
 <!DOCTYPE html>
 <html lang="zh-cn">
@@ -23,14 +23,22 @@
         .hide {
             display: none !important;
         }
-        .waitPay{
+
+        .waitPay {
             color: red;
         }
-        .otherPay{
+
+        .otherPay {
             color: green;
         }
-        .closePay{
+
+        .closePay {
             color: #df862a;
+        }
+
+        .huise {
+            background-color: #CCC !important;
+            border-color: #5FB878 !important;
         }
     </style>
 </head>
@@ -73,11 +81,17 @@
 <script src="<%=url%>/layui/layui.js"></script>
 <script src="<%=url%>/help/js/vue.js"></script>
 <script type="text/html" id="barPayId">
-    {{#  if(d.docStatus == 0 ){ }}
+    {{#  if((d.docStatus == 0 || d.isPaid==0) && d.skCode!=null && d.skCode!="" ){ }}
     <a class="layui-btn layui-btn-xs" lay-event="goPay">鍘绘敮浠�</a>
-    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="close">鍙栨秷鏀粯</a>
     {{#  }else{ }}
-    <span>鏃�</span>
+    <%--    <span>鏃�</span>--%>
+    {{#  } }}
+</script>
+<script type="text/html" id="barPayId1">
+    {{#  if(d.docStatus == 0 && d.isPaid==0){ }}
+    <a class="layui-btn layui-btn-xs" lay-event="goPay">鍘绘敮浠�</a>
+    {{#  }else{ }}
+    <%--    <span>鏃�</span>--%>
     {{#  } }}
 </script>
 <script>
@@ -123,7 +137,7 @@
         var table = layui.table;
 
         let json_costId = [[
-            {type: 'checkbox'}
+            {type: 'checkbox', LAY_CHECKED: true}//
             , {field: 'docCode', width: 180, title: '璐圭敤鍗曞彿', align: 'center'}
             , {
                 field: 'docDate', width: 180, title: '璐圭敤鏃ユ湡', align: 'center', templet: function (t) {
@@ -154,14 +168,19 @@
                 }
             }
             , {
-                field: 'status', width: 100, title: '鐘舵��', align: 'center', templet: function (t) {
-                    if (t.status == 1) {
-                        return "<font style='color:red'>寰呮敮浠�</font>";
+                field: 'status', width: 150, title: '鐘舵��', align: 'center', templet: function (t) {
+                    if (t.docStatus == 1) {
+                        if (t.isPaid == 1) {
+                            return "<font style='color:red'>宸叉敮浠橈紝寰呭鐞�</font>";
+                        } else {
+                            return "<font style='color:red'>寰呮敮浠�</font>";
+                        }
                     } else {
                         return "<font style='color:green'>姝e父</font>";
                     }
                 }
             }
+            , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#barPayId', width: 150}
         ]];
         let json_toBePaid = [[
             {field: 'docCode', title: '鏀舵鍗曞彿', align: 'center'}
@@ -196,19 +215,23 @@
             , {
                 field: 'docStatus', title: '鐘舵��', align: 'center', templet: function (t) {
                     switch (t.docStatus) {
-                        case "0":
-                            return "<font style='color:red'>寰呮敮浠�</font>";
+                        case 0:
+                            if (t.isPaid == 1) {
+                                return "<font style='color:red'>宸叉敮浠橈紝寰呭鐞�</font>";
+                            } else {
+                                return "<font style='color:red'>寰呮敮浠�</font>";
+                            }
                             break
-                        case "100":
+                        case 100:
                             return "<font style='color:green'>宸叉敮浠�</font>";
                             break
-                        case "-200":
+                        case -200:
                             return "<font style='color:#df862a'>宸插彇娑�</font>";
                             break
                     }
                 }
             }
-            , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#barPayId', width: 150}
+            , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#barPayId1', width: 150}
         ]];
         $("#payTableId li").on("click", function () {
             vm.butPrice = 0;
@@ -236,15 +259,15 @@
                 }
                 , done: function (res, curr, count) {
                     let d = res.data;
-                    let check = $(".layui-table-view").eq(index).find("table").find("tr");
-                    let color="otherPay";
+                    let color = "otherPay";
                     for (let j in d) {
+                        let checkbox = $(".layui-table tr[data-index=" + d[j].LAY_TABLE_INDEX + "]");
                         if (index == 1) {
-                            color="waitPay";
-                        }else if(index==3){
-                            color="closePay";
+                            color = "waitPay";
+                        } else if (index == 3) {
+                            color = "closePay";
                         }
-                        check.eq(d[j].LAY_TABLE_INDEX + 1).addClass(color).attr("title", "鍗曟嵁绫诲瀷:"+d[j].docType);
+                        checkbox.addClass(color).attr("title", "鍗曟嵁绫诲瀷:" + d[j].docType);
                     }
                 }
                 , cols: json_toBePaid
@@ -265,6 +288,13 @@
                 if (res != null) {
                     vm.cltCode = res.cltCode;
                 }
+                if (res.data != null && res.data.length > 0) {
+                    for (let r in res.data) {
+                        if (res.data[r].docStatus == 1) {
+                            res.data[r].LAY_CHECKED = false;
+                        }
+                    }
+                }
                 return {
                     "code": res.code, //瑙f瀽鎺ュ彛鐘舵��
                     "msg": '', //瑙f瀽鎻愮ず鏂囨湰
@@ -273,15 +303,31 @@
                 };
             }
             , done: function (res, curr, count) {
+                vm.butPrice = 0;
+                vm.fields = [];
                 let d = res.data;
-                let check = $(".layui-table-view").eq(0).find("table").find("tr");
                 for (let j in d) {
-                    if (d[j].status == 1) {
-                        check.eq(d[j].LAY_TABLE_INDEX + 1).find(".laytable-cell-checkbox").addClass("hide");
-                        check.eq(d[j].LAY_TABLE_INDEX + 1).addClass("waitPay").attr("title", "鍙屽嚮鍘绘敮浠�");
+                    let checkbox = $(".layui-table tr[data-index=" + d[j].LAY_TABLE_INDEX + "]");
+                    if (d[j].docStatus == 1) {
+                        checkbox.addClass("waitPay").attr("title", "鍙屽嚮鍘诲鐞�");
+                        let c = checkbox.find("input[type='checkbox']");
+                        c.prop('disabled', true);
+                        c.next().addClass('layui-btn-disabled');
+                        c.next().removeClass("layui-form-checked");
+                        c.next().find("i").removeClass("layui-icon-ok");
+                        c.next().find("i").addClass("huise");
                     } else {
-                        check.eq(d[j].LAY_TABLE_INDEX + 1).addClass("otherPay");
+                        checkbox.addClass("otherPay");
+                        vm.butPrice = (Number(vm.butPrice) + Number(d[j].receivMoney));
+                        vm.fields.push(d[j].docCode);
                     }
+                }
+                if (vm.butPrice > 0) {
+                    vm.butPrice = parseFloat(vm.butPrice).toFixed(2);
+                }
+                if (vm.fields.length > 0) {
+                    $("#payment").removeClass("layui-btn-disabled");
+                    vm.disabled = false;
                 }
                 if (backIndex() > 0 && index != 0) {
                     $("#payTableId li").eq(backIndex()).trigger("click");
@@ -292,8 +338,6 @@
             , skin: 'line' //琛岃竟妗嗛鏍�
             , size: 'sm' //灏忓昂瀵哥殑琛ㄦ牸
         });
-
-
         table.on('checkbox(costId)', function (obj) {
             let checkStatus = table.checkStatus('costId');
             vm.butPrice = 0;
@@ -301,7 +345,7 @@
             if (checkStatus.data.length > 0) {
                 let mut = checkStatus.data;
                 for (let v in mut) {
-                    if (mut[v].status == 1) {
+                    if (mut[v].docStatus == 1) {
                         continue;
                     }
                     vm.butPrice = (Number(vm.butPrice) + Number(mut[v].receivMoney));
@@ -321,6 +365,18 @@
                 $("#payment").addClass("layui-btn-disabled");
                 vm.disabled = true;
             }
+            let checkbox = $(".layui-table tr[data-index]");
+            checkbox.each(function () {
+                let i = $(this).find("input[type='checkbox']");
+                if (i.next().hasClass("layui-checkbox-disbaled")) {
+                    i.next().find("i").removeClass("layui-icon-ok");
+                    i.next().find("i").addClass("huise");
+                }
+            })
+        })
+
+        table.on('checkbox(layTableAllChoose)', function () {
+            layer.alert("杩涙潵浜�");
         })
 
         //鐩戝惉琛屽崟鍑讳簨浠讹紙鍙屽嚮浜嬩欢涓猴細rowDouble锛�
@@ -334,43 +390,23 @@
         //鐩戝惉琛屽弻鍑讳簨浠讹紙鍗曞嚮浜嬩欢涓猴細row锛�
         table.on('rowDouble(costId)', function (obj) {
             let data = obj.data;
-            if (data.status == 1) {
+            if (data.docStatus == 1) {
                 location.href = '<%=url%>/app/<%=dbId%>/0/cnzh/150371/5/payment.jsp?skCode=' + data.skCode;
-                // location.href = '/general/maintainPay/payment.html?skCode=' + data.skCode;
             }
-            // let data = obj.data;
-            // let checkbox = $(".laytable-cell-checkbox");
-            // if (data.status == 0) {
-            //     let che = checkbox.eq(obj.tr[0].rowIndex + 1).find("div");
-            //     if (che.hasClass("layui-form-checked")) {
-            //         che.removeClass("layui-form-checked");
-            //         checkbox.eq(0).find("div").removeClass("layui-form-checked");
-            //         vm.butPrice = (Number(vm.butPrice) - Number(data.receivMoney));
-            //         vm.fields.splice($.inArray(data.docCode, vm.fields), 1);
-            //     } else {
-            //         che.addClass("layui-form-checked");
-            //         vm.butPrice = (Number(vm.butPrice) + Number(data.receivMoney));
-            //         vm.fields.push(data.docCode);
-            //     }
-            //     if (vm.butPrice > 0) {
-            //         vm.butPrice = parseFloat(vm.butPrice).toFixed(2);
-            //     }
-            // }
-            // if (vm.fields.length > 0) {
-            //     $("#payment").removeClass("layui-btn-disabled");
-            //     vm.disabled = false;
-            // } else {
-            //     $("#payment").addClass("layui-btn-disabled");
-            //     vm.disabled = true;
-            // }
         });
+        table.on('tool(costId)', function (obj) {
+            let data = obj.data; //鑾峰緱褰撳墠琛屾暟鎹�
+            let layEvent = obj.event; //鑾峰緱 lay-event 瀵瑰簲鐨勫��
+            if (layEvent === 'goPay') { //鏌ョ湅
+                location.href = '<%=url%>/app/<%=dbId%>/0/cnzh/150371/5/payment.jsp?skCode=' + data.skCode;
+            }
+        })
 
         table.on('tool(toBePaid)', function (obj) {
             let data = obj.data; //鑾峰緱褰撳墠琛屾暟鎹�
             let layEvent = obj.event; //鑾峰緱 lay-event 瀵瑰簲鐨勫��
             if (layEvent === 'goPay') { //鏌ョ湅
                 location.href = '<%=url%>/app/<%=dbId%>/0/cnzh/150371/5/payment.jsp?skCode=' + data.docCode;
-                // location.href = '/general/maintainPay/payment.html?skCode=' + data.docCode;
             } else if (layEvent === 'close') { //鍙栨秷
                 $.ajax({
                     url: '/Maintain/skClose.do?skCode=' + data.docCode,
diff --git a/WebRoot/public/staticform/150371/5/payment.jsp b/WebRoot/public/staticform/150371/5/payment.jsp
index 8c96dea..f573e35 100644
--- a/WebRoot/public/staticform/150371/5/payment.jsp
+++ b/WebRoot/public/staticform/150371/5/payment.jsp
@@ -3,8 +3,8 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8" %>
 <%
-    String url= SettingKey.getHostUrl(request);
-    String dbId=(String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
+    String url = SettingKey.getHostUrl(request);
+    String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
 %>
 <!DOCTYPE html>
 <html lang="zh-cn">
@@ -89,6 +89,10 @@
         .hide {
             display: none;
         }
+
+        .conterTop {
+            padding-top: 50px;
+        }
     </style>
 </head>
 <body>
@@ -107,7 +111,7 @@
             <thead>
             <tr>
                 <th>璐圭敤鍗曞彿</th>
-<%--                <th>璐圭敤鏃ユ湡</th>--%>
+                <%--                <th>璐圭敤鏃ユ湡</th>--%>
                 <th>閲戦</th>
                 <th>鏀惰垂椤圭洰</th>
                 <th>鏈夋晥鏈�</th>
@@ -116,7 +120,7 @@
             <tbody>
             <tr v-for="(item,index) in order" style="color:green;">
                 <td>{{item.sodocCode}}</td>
-<%--                <td v-html="getFilters(item.payItem,1)"></td>--%>
+                <%--                <td v-html="getFilters(item.payItem,1)"></td>--%>
                 <td>{{item.amount}}</td>
                 <td v-html="getFilters(item.payItem,2)"></td>
                 <td v-html="getFilters(item.payItem,3)"></td>
@@ -155,6 +159,9 @@
         </table>
     </div>
     <div class="info payInfo" style="margin-top: 10px">
+        <div id="skCodeRet" class="text-center" style="padding-top: 50px;display: none">
+            <button class="layui-btn layui-btn-normal" @click="goBack('skAgain')">閲嶆柊鐢熸垚鏀舵鍗�</button>
+        </div>
         <div class="flex-row">
             <div class="payment-nav" style="width: 90%">
                 <span style="float: left;">閫夋嫨鏀粯鏂瑰紡锛�</span>
@@ -210,7 +217,7 @@
                     <p style="color: green;font-weight: 600;font-size: 20px">鏀粯鎴愬姛</p>
                     <div class="orderstaus">
                         <ul>
-<!--                            <li>鏀粯璁㈠崟锛�<font style="color: green">{{callBack.skCode}}</font></li>-->
+                            <!--                            <li>鏀粯璁㈠崟锛�<font style="color: green">{{callBack.skCode}}</font></li>-->
                             <li v-if="callBack.payType == 'wxPay'">寰俊璁㈠崟锛�<font style="color: green">{{callBack.transactionId}}</font>
                             </li>
                             <li v-else="callBack.payType == 'aliPay'">鏀粯瀹濊鍗曪細<font style="color: green">{{callBack.transactionId}}</font>
@@ -244,8 +251,10 @@
             enterDate: "",
             lastPayTime: "",
             payType: "",
-            time:"",
-            payee:""
+            time: "",
+            payee: "",
+            cltCode: "",
+            sodocCode: []
         },
         mounted: function () {//娓叉煋鍚庡姞杞�
             let skCode = this.getParem("skCode");
@@ -260,21 +269,28 @@
                     let res = data.data;
                     if (res != null) {
                         vm.docCode = res.docCode;
+                        vm.cltCode = res.cltCode;
                         vm.amount = res.sumAmount;
                         vm.cltName = res.cltName;
                         vm.enterDate = res.enterDate;
-                        vm.payee=res.payee;
+                        vm.payee = res.payee;
                         let json = res.detailed;
                         for (let v in json) {
                             let item = json[v];
                             vm.order.push(item);
+                            vm.sodocCode.push(item.sodocCode);
                         }
-                        vm.computedLastPayTime();
+                        if (res.isPaid == 1 || res.docStatus == -200 || res.docStatus != 0) {
+                            $(".payInfo").html("<div style='text-align: center;color: red'>" + data.msg + "</div>");
+                        } else {
+                            vm.computedLastPayTime();
+                        }
                     } else {
                         layer.alert("鏈彂鐜�" + skCode + "鐨勪俊鎭紒");
                     }
                 } else {
-                    alert(data.msg);
+                    $(".payInfo").html("<div style='text-align: center;color: red'>" + data.msg + "</div>");
+                    $(".centerss").addClass("conterTop");
                 }
             });
         },
@@ -282,39 +298,56 @@
             goBack: function (Indexes) {//杩斿洖鎴栧彇娑堟敮浠�
                 //鍙栨秷鏀粯
                 if (Indexes == 'close') {
-                    layer.confirm('鏄鍙栨秷鏀粯璁㈠崟锛�'+vm.docCode+' 鍚�?', {icon: 3, title:'鏀粯',btn: ['鏄�', '鍚�']
-                        ,btnAlign: 'c',closeBtn: false}, function(index){
+                    layer.confirm('鏄鍙栨秷鏀粯璁㈠崟锛�' + vm.docCode + ' 鍚�?', {
+                        icon: 3, title: '鏀粯', btn: ['鏄�', '鍚�']
+                        , btnAlign: 'c', closeBtn: false
+                    }, function (index) {
                         vm.skClose(Indexes);
                         layer.close(index);
-                    },function(index){
+                    }, function (index) {
                         layer.close(index);
                     });
-                }else if(Indexes == 'overtime'){
+                } else if (Indexes == 'overtime') {
                     vm.skClose(Indexes);
-                }else{
+                } else if (Indexes == 'skAgain') {
+                    $.post("/Maintain/skCreate.do", {
+                        "whCode": vm.sodocCode.join(","),
+                        "cltCode": vm.cltCode
+                    }, function (data) {
+                        if (data != null && data.code == 0) {
+                            let skCode = data.data;
+                            location.href = '<%=url%>/app/<%=dbId%>/0/cnzh/150371/5/payment.jsp?skCode=' + skCode;
+                        } else {
+                            layer.alert(data.msg, {closeBtn: false});
+                        }
+                    });
+                } else {
                     location.href = '<%=url%>/app/<%=dbId%>/0/cnzh/150371/5/index.jsp?index=' + Indexes;
                 }
             }
-            ,skClose:function(Indexes){
+            , skClose: function (Indexes) {
                 $.ajax({
-                    url: '/payment/pay/PayCancel.do?skCode=' + vm.docCode+'&payType='+vm.payType,
+                    url: '/payment/pay/PayCancel.do?skCode=' + vm.docCode + '&payType=' + vm.payType,
                     type: "get",
                     async: false,
                     headers: {'Content-Type': 'application/json;charset=utf-8'}, //鎺ュ彛json鏍煎紡
                     success: function (data) {
                         if (data.code == 0) {
-                            if(Indexes=="close"){
+                            if (Indexes == "close") {
                                 location.href = '<%=url%>/app/<%=dbId%>/0/cnzh/150371/5/index.jsp?index=3';
                             }
                         } else {
-                            layer.alert(data.msg);
+                            // layer.alert(data.msg);
+                            layer.alert(data.msg + '' ,{closeBtn: false}, function (index) {
+                                location.reload();
+                            });
                         }
                     }, error: function (data) {
                         layer.alert(data);
                     }
                 });
             }
-            ,getParem: function (name) {
+            , getParem: function (name) {
                 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
                 var r = window.location.search.substr(1).match(reg);
                 if (r != null) {
@@ -359,10 +392,11 @@
                         self.lastPayTime = '鍓╀綑鏀粯鏃堕棿锛�' + int_minute + '鍒�' + lastTime + '绉�'
                     } else {
                         clearInterval(vm.time);
-                        self.lastPayTime = '璁㈠崟瓒呮椂锛屾敮浠樺凡澶辨晥锛佽閲嶆柊鐢熸垚璁㈠崟鍐嶆敮浠樸��';//'鍓╀綑鏀粯鏃堕棿锛�0 绉�';
+                        self.lastPayTime = '璁㈠崟瓒呮椂锛屾敮浠樺凡澶辨晥锛佽閲嶆柊鐢熸垚鏀舵鍗曘��';//'鍓╀綑鏀粯鏃堕棿锛�0 绉�';
                         $("#submit-btn").addClass("hide");
                         $(".closeee").addClass("hide");
-                        $(".payment-nav").hide();
+                        $(".payment-nav").html("");
+                        $("#skCodeRet").show();
                         layer.close(isPayQR);
                         vm.goBack('overtime');//瓒呮椂澶勭悊
                     }
@@ -378,33 +412,33 @@
                         if (data.code == 0) {
                             let j = data.data;
                             vm.updateMessage();
-                            layer.alert(j.tradeStateDesc,{closeBtn: false}, function(index){
+                            layer.alert(j.tradeStateDesc, {closeBtn: false}, function (index) {
                                 if (j.code == 0) {//鏀粯鎴愬姛锛�
                                     vm.goBack(2);
                                 }
                                 layer.close(index);
                             });
                         } else {
-                            layer.alert(data.msg,{closeBtn: false});
+                            layer.alert(data.msg, {closeBtn: false});
                         }
                     }, error: function (data) {
-                        layer.alert(data,{closeBtn: false});
+                        layer.alert(data, {closeBtn: false});
                     }
                 });
             },
-            updateMessage:function(){//鏇存柊閫氱煡娑堟伅
+            updateMessage: function () {//鏇存柊閫氱煡娑堟伅
                 $.ajax({
                     url: '/Maintain/updateMessage.do?skCode=' + vm.docCode,
                     type: "get",
                     async: false,
                     headers: {'Content-Type': 'application/json;charset=utf-8'}, //鎺ュ彛json鏍煎紡
                     success: function (data) {
-                        if(data!=null && data.code==0){
+                        if (data != null && data.code == 0) {
                             //鏇存柊缁存姢璐归�氱煡寰界珷
-                            let count=data.data;
-                            if(count!=null && count>0){
+                            let count = data.data;
+                            if (count != null && count > 0) {
                                 top.$(".tixings").html(count);
-                            }else{
+                            } else {
                                 top.$(".tixings").html("");
                             }
                         }
@@ -446,7 +480,7 @@
                 // Dom.qrcodeContainer.show();
                 Dom.paymentWay.removeClass('show');
                 Dom.paymentWay.eq(index).addClass('show');
-               isPayQR= layer.open({
+                isPayQR = layer.open({
                     type: 1
                     , title: false //涓嶆樉绀烘爣棰樻爮
                     , area: ['350px', '350px']
@@ -454,16 +488,18 @@
                     , id: 'LAY_layuipro' //璁惧畾涓�涓猧d锛岄槻姝㈤噸澶嶅脊鍑�
                     , moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
                     , content: $(".qrcode-container")
-                    ,cancel: function(index, layero){
-                        layer.confirm('鏀粯瀹屾垚鍓嶄笉瑕佸叧闂绐楀彛鍝�', {title:'鏀粯',btn: ['宸插畬鎴愭敮浠�', '閲嶆柊閫夋嫨鏀粯鏂瑰紡']
-                            ,btnAlign: 'c',closeBtn: false}, function(index){
+                    , cancel: function (index, layero) {
+                        layer.confirm('鏀粯瀹屾垚鍓嶄笉瑕佸叧闂绐楀彛鍝�', {
+                            title: '鏀粯', btn: ['宸插畬鎴愭敮浠�', '閲嶆柊閫夋嫨鏀粯鏂瑰紡']
+                            , btnAlign: 'c', closeBtn: false
+                        }, function (index) {
                             vm.isOk();
                             layer.close(index);
-                        },function(index){
+                        }, function (index) {
                             layer.close(index);
                         });
                     }
-                    });
+                });
             }
         })
 
@@ -519,7 +555,10 @@
                         qrUrl = data.data.codeURL;
                         websocketOpen();
                     } else {
-                        layer.alert(data.msg+'');
+                        // layer.alert(data.msg + '');
+                        layer.alert(data.msg + '' ,{closeBtn: false}, function (index) {
+                            location.reload();
+                        });
                     }
                 }, error: function (data) {
                     alert(data.responseText);
@@ -544,13 +583,31 @@
                 if (v != null && v.code == 0) {
                     if (v.msg = "SUCCESS") {
                         clearInterval(vm.time);
-                        vm.lastPayTime="";
+                        vm.lastPayTime = "";
                         vm.callBack = v;
                         layer.close(isPayQR);
                         checkPaymentStatus();
                         vm.updateMessage();
                         ws.close();
                     }
+                } else if (v != null && v.code == -1) {
+                    ws.close();
+                    layer.close(isPayQR);
+                    layer.open({
+                        type: 1
+                        , title: false //涓嶆樉绀烘爣棰樻爮
+                        , closeBtn: false
+                        , area: ['300px', '300px']
+                        , shade: 0.8
+                        , id: 'LAY_layuipro1' //璁惧畾涓�涓猧d锛岄槻姝㈤噸澶嶅脊鍑�
+                        , btn: ['鍏抽棴']
+                        , btnAlign: 'c'
+                        , moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                        , content: '<div style="text-align: center;margin: 10px">v.msg</div>'
+                        , yes: function (index, layero) {
+                            location.reload();
+                        }
+                    });
                 } else {
                     layer.alert(v.msg);
                 }
diff --git a/WebRoot/shopping/maintaince/systemconfig.jsp b/WebRoot/shopping/maintaince/systemconfig.jsp
index e82183d..b4cc243 100644
--- a/WebRoot/shopping/maintaince/systemconfig.jsp
+++ b/WebRoot/shopping/maintaince/systemconfig.jsp
@@ -143,6 +143,25 @@
             </select>
         </div>
     </div>
+    <% if(isInternalSystem){%>
+    <div class="layui-form-item">
+        <label class="layui-form-label">缁存姢璐硅处鎴�</label>
+        <div class="layui-input-block">
+            <select name="MaintenanceFeeAcctCode" lay-filter="pay">
+                <option value="">&nbsp;</option>
+                <%
+                    if(acctcode!=null && acctcode.size()>0){
+                        for(Map<String,Object> m : acctcode){
+                %>
+                <option value="<%=DBHelper.getValue(m,"subacctcode")%>"><%=DBHelper.getValue(m,"subacctname")%></option>
+                <%
+                        }
+                    }
+                %>
+            </select>
+        </div>
+    </div>
+    <%}%>
 <fieldset class="layui-elem-field layui-field-title">
   <legend>瀵规帴绗笁鏂圭郴缁熼�夐」</legend>
 </fieldset>
@@ -372,28 +391,6 @@
       <input type="text" name="tengXunMapLocationServiceKey"   value="" placeholder="璺緞锛氳吘璁綅缃湇鍔�->key涓庨厤棰�->key绠$悊" autocomplete="off" class="layui-input">
     </div>
  </div>
-    <% if(isInternalSystem){%>
-    <fieldset class="layui-elem-field layui-field-title">
-        <legend>鏀跺彇缁存姢璐圭殑璐︽埛</legend>
-    </fieldset>
-    <div class="layui-form-item">
-        <label class="layui-form-label">缁存姢璐硅处鎴�</label>
-        <div class="layui-input-block">
-            <select name="MaintenanceFeeAcctCode" lay-filter="pay">
-                <option value="">&nbsp;</option>
-                <%
-                    if(acctcode!=null && acctcode.size()>0){
-                        for(Map<String,Object> m : acctcode){
-                %>
-                <option value="<%=DBHelper.getValue(m,"subacctcode")%>"><%=DBHelper.getValue(m,"subacctname")%></option>
-                <%
-                        }
-                    }
-                %>
-            </select>
-        </div>
-    </div>
-    <%}%>
   <input type="hidden" name="host" placeholder="" autocomplete="off" class="layui-input"> 
   <input type="hidden" name="userid" placeholder="" autocomplete="off" class="layui-input">
   <input type="hidden" name="port" placeholder="" autocomplete="off" class="layui-input">
diff --git a/src/applicationContext.xml b/src/applicationContext.xml
index 9c9f960..e22f29f 100644
--- a/src/applicationContext.xml
+++ b/src/applicationContext.xml
@@ -109,9 +109,9 @@
     <!-- 浜嬬墿锛屾棩蹇�(鎷︽埅service鍖呯殑鎵�鏈夋墽琛宻ql鍑芥暟瀵规墽琛宻ql鎶ラ敊鐨勪繚瀛樺埌鏁版嵁搴�)AOP閰嶇疆-->
     <aop:config>
         <aop:pointcut id="bizMethods"
-                      expression="execution(* com.yc.service..*.*(..)) or execution(* com.yc.sdk.shopping.service..*.*(..))  or execution(* com.yc.sdk.weixincp.service..*.*(..))  or execution(* com.yc.sdk.weixinmp.service..*.*(..)) or execution(* com.yc.api.service..*.*(..)) or execution(* com.yc.ionic.service..*.*(..))  or execution(* com.yc.sdk.oauth2.service..*.*(..)) or execution(* com.yc.im.service..*.*(..)) or execution(* com.yc.batchUpload.service..*.*(..)) "/>
+                      expression="execution(* com.yc.service..*.*(..)) or execution(* com.yc.sdk.shopping.service..*.*(..))  or execution(* com.yc.sdk.weixincp.service..*.*(..))  or execution(* com.yc.sdk.weixinmp.service..*.*(..)) or execution(* com.yc.api.service..*.*(..)) or execution(* com.yc.ionic.service..*.*(..))  or execution(* com.yc.sdk.oauth2.service..*.*(..)) or execution(* com.yc.im.service..*.*(..)) or execution(* com.yc.batchUpload.service..*.*(..)) or execution(* com.yc.MaintenanceFee.service..*.*(..))"/>
         <aop:pointcut id="logger"
-                      expression="(execution(* com.yc.service..*.*(..)) or execution(* com.yc.sdk.shopping.service..*.*(..))  or execution(* com.yc.sdk.weixincp.service..*.*(..))  or execution(* com.yc.sdk.weixinmp.service..*.*(..)) or execution(* com.yc.api.service..*.*(..)) or execution(* com.yc.ionic.service..*.*(..))  or execution(* com.yc.sdk.oauth2.service..*.*(..)) or execution(* com.yc.im.service..*.*(..)) or execution(* com.yc.batchUpload.service..*.*(..))  ) and !execution(* com.yc.service.log.ErrorLogImpl.*(..))"/>
+                      expression="(execution(* com.yc.service..*.*(..)) or execution(* com.yc.sdk.shopping.service..*.*(..))  or execution(* com.yc.sdk.weixincp.service..*.*(..))  or execution(* com.yc.sdk.weixinmp.service..*.*(..)) or execution(* com.yc.api.service..*.*(..)) or execution(* com.yc.ionic.service..*.*(..))  or execution(* com.yc.sdk.oauth2.service..*.*(..)) or execution(* com.yc.im.service..*.*(..)) or execution(* com.yc.batchUpload.service..*.*(..))  or execution(* com.yc.MaintenanceFee.service..*.*(..))  ) and !execution(* com.yc.service.log.ErrorLogImpl.*(..))"/>
         <aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods"/>
         <aop:aspect id="loggerAspect" ref="genericLoggerBean">
             <aop:around pointcut-ref="logger" method="invoke"/>
diff --git a/src/com/yc/MaintenanceFee/controller/MaintainController.java b/src/com/yc/MaintenanceFee/controller/MaintainController.java
index 2fa0464..1303fb7 100644
--- a/src/com/yc/MaintenanceFee/controller/MaintainController.java
+++ b/src/com/yc/MaintenanceFee/controller/MaintainController.java
@@ -7,6 +7,7 @@
 import com.yc.MaintenanceFee.utils.BackMsg;
 import com.yc.MaintenanceFee.utils.PayCallBackUtil;
 import com.yc.entity.DataSourceEntity;
+import com.yc.exception.ApplicationException;
 import com.yc.multiData.MultiDataSource;
 import com.yc.multiData.SpObserver;
 import com.yc.service.grid.GridServiceIfc;
@@ -77,7 +78,7 @@
                     for (PayInfo f : info) {
                         for (Map<String, Object> m : d) {
                             if (f.getDocCode().equals(DBHelper.getValue(m,"soDocCode"))) {
-                                f.setStatus(DBHelper.getValueInt(m, "docStatus"));
+                                f.setDocStatus(DBHelper.getValueInt(m, "docStatus"));
                                 f.setSkCode(DBHelper.getValue(m,"docCode"));
                             }
                         }
@@ -115,8 +116,8 @@
 
             Integer feeId = PayCallBackUtil.chargeMaintenanceFee(request);
             DataSourceEntity data = MultiDataSource.getDataSourceMap(feeId + "");//鑾峰彇瀵瑰簲鏁版嵁婧愯缃殑缁存姢璐硅处鎴�
-            if (StringUtils.isBlank(data.getMaintenanceFeeAcctCode())) {
-                msg.setError("缁存姢璐硅处鎴蜂笉鑳戒负绌猴紒");
+            if(data.getMaintenanceFeeToDbId()==null){
+                msg.setError("銆愭敹鍙栫淮鎶よ垂鎵�灞炲叕鍙搞�戜笉鑳戒负绌猴紝璇峰湪銆愬揩鎹�->缁存姢绯荤粺璁剧疆銆戜腑褰曞叆");
                 return msg;
             }
             SpObserver.setDBtoInstance(DBID);
@@ -178,6 +179,18 @@
                 String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
                 //鑾峰彇鏀舵浜�
                 receipt.setPayee(PayCallBackUtil.getReceivingCompany(dbId));
+                if (receipt.getIsPaid() == 1) {
+                    msg.setOkEd(receipt,"宸叉敮浠樻垚鍔燂紝涓嶈兘閲嶅鏀粯銆�");
+                    return msg;
+                }
+                if (receipt.getDocStatus() == -200) {
+                    msg.setOkEd(receipt,"璁㈠崟宸茶鍙栨秷锛屾敮浠樺け璐ャ��");
+                    return msg;
+                }
+                if (receipt.getDocStatus() != 0) {
+                    msg.setOkEd(receipt,"璁㈠崟涓嶆槸寰呮敮浠樼姸鎬侊紝鏀粯澶辫触銆�");
+                    return msg;
+                }
             }
             msg.setOk(receipt);
         } catch (Exception e) {
diff --git a/src/com/yc/MaintenanceFee/controller/MaintainPayController.java b/src/com/yc/MaintenanceFee/controller/MaintainPayController.java
index 871bdcf..300d19a 100644
--- a/src/com/yc/MaintenanceFee/controller/MaintainPayController.java
+++ b/src/com/yc/MaintenanceFee/controller/MaintainPayController.java
@@ -80,9 +80,21 @@
             SpObserver.setDBtoInstance(DBID);
             Receipt receipt = receiptService.QueryReceipt(skCode, 0);
             if (receipt != null && !StringUtils.isBlank(receipt.getDocCode())) {
+                if (receipt.getIsPaid() == 1) {
+                    msg.setError("宸叉敮浠樻垚鍔燂紝涓嶈兘閲嶅鏀粯銆�");
+                    return msg;
+                }
+                if (receipt.getDocStatus() == -200) {
+                    msg.setError("璁㈠崟宸茶鍙栨秷锛屾敮浠樺け璐ャ��");
+                    return msg;
+                }
+                if (receipt.getDocStatus() != 0) {
+                    msg.setError("璁㈠崟涓嶆槸寰呮敮浠樼姸鎬侊紝鏀粯澶辫触銆�");
+                    return msg;
+                }
                 receipt.setCltName(receipt.getCltName() + "-" + receipt.getDocType());
                 //璁剧疆鍥炶皟鍦板潃
-                String notifyUrl = SettingKey.getHostUrl(request)+"/payment/pay";//"http://u69m1tj.nat.ipyingshe.com/payment/pay";
+                String notifyUrl = SettingKey.getHostUrl(request) + "/payment/pay";//"http://u69m1tj.nat.ipyingshe.com/payment/pay";
                 switch (payType.toLowerCase()) {
                     case "wx"://寰俊鏀粯
                     case "1":
@@ -159,8 +171,6 @@
                         Integer code = DBHelper.getValueInt(map, "code");
                         //杩斿洖鐘舵�佹槸鏀粯鎴愬姛鐨勫鐞�
                         if (code == 0) {
-                            //鎵ц淇濆瓨鍙婅繃璐�
-                            maintainService.savePostingLogic(skCode);
                             list = maintainService.selectWHCode(skCode);
                             //澶囨敞淇℃伅
                             remarks = "缁存姢璐规敮浠樹俊鎭�傝鍗曞彿锛�" + map.get("tradeNo") + ",浜ゆ槗鍙凤細" + map.get("transactionId");
@@ -177,6 +187,10 @@
                         log.setAmount(map.get("totalFee").toString());
                         log.setThirdOrderNo((String) map.get("transactionId"));
                         payLogService.saveOrUpdatePayLog(log);
+                        if (code == 0) {
+                            //鎵ц淇濆瓨鍙婅繃璐�
+                            maintainService.savePostingLogic(skCode);
+                        }
                     }
                 } catch (Exception e) {
                     map.put("LogError", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
@@ -256,16 +270,14 @@
     @RequestMapping("/PayCancel.do")
     public BackMsg setPayCancel(String skCode, String payType, HttpServletRequest request) {
         BackMsg msg = new BackMsg();
+        PayLog log = new PayLog();
         try {
             if (StringUtils.isBlank(skCode)) {
                 msg.setError("璁㈠崟鍙蜂笉鑳戒负绌�");
                 return msg;
             }
-            if (StringUtils.isBlank(payType)) {
-                payType = "null";
-            }
             SpObserver.setDBtoInstance(DBID);
-            PayLog log = payLogService.getPayLog(skCode);
+            log = payLogService.getPayLog(skCode);
             switch (payType.toLowerCase()) {
                 case "wx"://寰俊
                 case "1":
@@ -280,16 +292,18 @@
                     break;
             }
             if (msg.getCode() == 0) {
-                receiptService.cancelReceipt(skCode);
+                receiptService.doCancelReceipt(skCode);
                 log.setStatus("-200");
                 log.setRefDoccode(skCode);
-                log.setTrxType(payType);
-                log.setPayType(payType);
-                log.setMerchantRemarks("缁存姢璐瑰彇娑堜俊鎭�傚彇娑堟敹娆惧崟锛�" + skCode + ",涓嶈兘鍐嶈繘琛屾敮浠樻搷浣滐紒");
+                log.setMerchantRemarks("缁存姢璐瑰彇娑堟敮浠樹俊鎭�傚彇娑堟敹娆惧崟锛�" + skCode + ",涓嶈兘鍐嶈繘琛屾敮浠樻搷浣滐紒");
                 payLogService.saveOrUpdatePayLog(log);
                 msg.setOk("鏀舵鍗曪細" + skCode + "锛屽凡澶辨晥锛�");
             }
         } catch (Exception e) {
+            log.setStatus("-500");
+            log.setRefDoccode(skCode);
+            log.setMerchantRemarks("缁存姢璐瑰彇娑堟敮浠樺嚭鐜伴敊璇細" + e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
+            payLogService.saveOrUpdatePayLog(log);
             msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
         } finally {
             SpObserver.setDBtoInstance();
@@ -299,9 +313,10 @@
 
     /**
      * 寰俊鏀粯鍜屾敮浠樺疂鏀粯鐨勫洖璋冨鐞� xin 2021-12-13 09:42:50
-     * @param skCode 鍗曞彿
-     * @param type 鏀粯绫诲瀷銆傚井淇℃垨鏀粯瀹�
-     * @param dbId //鏁版嵁婧怚d(璁剧疆鏀舵鐨勭郴缁熸暟鎹簮)
+     *
+     * @param skCode   鍗曞彿
+     * @param type     鏀粯绫诲瀷銆傚井淇℃垨鏀粯瀹�
+     * @param dbId     //鏁版嵁婧怚d(璁剧疆鏀舵鐨勭郴缁熸暟鎹簮)
      * @param request
      * @param response
      * @throws IOException
@@ -310,9 +325,9 @@
     public void wxPayCallBack(@PathVariable String skCode, @PathVariable String type, @PathVariable String dbId,
                               HttpServletRequest request, HttpServletResponse response) throws IOException {
         synchronized (this) {
+            PayCallBack pcb = new PayCallBack();
             try {
                 PrintWriter out = null;
-                PayCallBack pcb = new PayCallBack();
                 String backTxt = "";
                 boolean bol = false;
                 if (!StringUtils.isBlank(skCode) && !StringUtils.isBlank(type)) {
@@ -326,7 +341,7 @@
                                 response.setContentType("application/xml; charset=utf-8");
                                 backTxt = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
                                 //淇濆瓨鏀粯璁板綍淇℃伅
-                                log=PayCallBackUtil.setPayLog(null, result);
+                                log = PayCallBackUtil.setPayLog(null, result);
                                 //杩斿洖淇℃伅
                                 pcb.setTransactionId(result.getTransactionId());
                                 pcb.setSkCode(result.getOutTradeNo());
@@ -340,7 +355,7 @@
                             if (bol) {//楠岃瘉鎴愬姛鍚�
                                 backTxt = "SUCCESS";
                                 //淇濆瓨鏀粯璁板綍淇℃伅
-                                log=PayCallBackUtil.setPayLog(param, null);
+                                log = PayCallBackUtil.setPayLog(param, null);
                                 //澶勭悊璁㈠崟鎿嶄綔
                                 pcb.setTransactionId(param.get("trade_no"));
                                 pcb.setSkCode(param.get("out_trade_no"));
@@ -356,12 +371,12 @@
                         out.close();
                         try {
                             SpObserver.setDBtoInstance(DBID);
-                            //澶勭悊杩囪处
-                            maintainService.savePostingLogic(skCode);
                             //鏇存柊鏃ュ織
                             log.setRefDoccode(skCode);
                             payLogService.saveOrUpdatePayLog(log);
-                        }finally {
+                            //澶勭悊杩囪处
+                            maintainService.savePostingLogic(skCode);
+                        } finally {
                             SpObserver.setDBtoInstance();
                         }
                         //鍙戝竷璁㈤槄淇℃伅
@@ -372,7 +387,13 @@
                     }
                 }
             } catch (Exception e) {
-                response.getWriter().print("Fail");
+                //鍙戝竷璁㈤槄淇℃伅
+                pcb.setMsg("鏀粯澶辫触锛�" + e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
+                pcb.setCode(-1);
+                pcb.setState("true");
+                redisDAO.publishMessage("Onbus_Maintain", GridUtils.toJsonNotNull(pcb));
+                e.printStackTrace();
+                response.getWriter().print(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
             }
         }
     }
diff --git a/src/com/yc/MaintenanceFee/entiy/PayInfo.java b/src/com/yc/MaintenanceFee/entiy/PayInfo.java
index e68ed34..acd68b7 100644
--- a/src/com/yc/MaintenanceFee/entiy/PayInfo.java
+++ b/src/com/yc/MaintenanceFee/entiy/PayInfo.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -14,11 +15,13 @@
     private String CltCode;
     private String cltName;
     private String DocType;
-    private String DocDate;
+    private Date DocDate;
     private BigDecimal ReceivMoney;
 
     private List<PayItem> itemList;
-    private Integer status=0;
+    private Integer docStatus=0;
     private String skCode;
 
+    private Integer isPaid;
+
 }
diff --git a/src/com/yc/MaintenanceFee/entiy/PayItem.java b/src/com/yc/MaintenanceFee/entiy/PayItem.java
index bac8e69..940f3f2 100644
--- a/src/com/yc/MaintenanceFee/entiy/PayItem.java
+++ b/src/com/yc/MaintenanceFee/entiy/PayItem.java
@@ -2,6 +2,7 @@
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 缁存姢璐圭敤瀛愰」
@@ -12,13 +13,14 @@
     private String CltCode;
     private String cltName;
     private String DocType;
-    private String DocDate;
+    private Date DocDate;
     private BigDecimal ReceivMoney;
     private String matName;
     private BigDecimal price;
     private BigDecimal totalMoney;
     private String itemMemo;
     private Integer Digit;
-    private String FYbeginday;
-    private String FYendday;
+    private Date FYbeginday;
+    private Date FYendday;
+    private Integer isPaid;
 }
diff --git a/src/com/yc/MaintenanceFee/entiy/Receipt.java b/src/com/yc/MaintenanceFee/entiy/Receipt.java
index cc3936a..7b38d9a 100644
--- a/src/com/yc/MaintenanceFee/entiy/Receipt.java
+++ b/src/com/yc/MaintenanceFee/entiy/Receipt.java
@@ -15,13 +15,13 @@
 @Data
 public class Receipt {
     private String docCode;
-    private String formId;
-    private String docDate;
+    private Integer formId;
+    private Date docDate;
     private Date enterDate;
     private String docType;
     private String refCode;
     private String companyName;
-    private String docStatus;
+    private Integer docStatus;
     private String cltCode;
     private String cltName;
     private String hdMemo;
@@ -30,5 +30,7 @@
     private List<ReceiptDetailed> detailed=new ArrayList<>();
     private String payee;//鏀舵浜�
 
+    private Integer isPaid;
+
 
 }
diff --git a/src/com/yc/MaintenanceFee/entiy/ReceiptDetailed.java b/src/com/yc/MaintenanceFee/entiy/ReceiptDetailed.java
index f1e1abf..6209e4b 100644
--- a/src/com/yc/MaintenanceFee/entiy/ReceiptDetailed.java
+++ b/src/com/yc/MaintenanceFee/entiy/ReceiptDetailed.java
@@ -16,7 +16,7 @@
     private String cltCode;
     private String cltName;
     private String SODocCode;
-    private String SOFormId;
+    private Integer SOFormId;
     private BigDecimal natAmount;
     private BigDecimal amount;
 
diff --git a/src/com/yc/MaintenanceFee/entiy/ReceiptEntity.java b/src/com/yc/MaintenanceFee/entiy/ReceiptEntity.java
index 87d9f2d..21bb70e 100644
--- a/src/com/yc/MaintenanceFee/entiy/ReceiptEntity.java
+++ b/src/com/yc/MaintenanceFee/entiy/ReceiptEntity.java
@@ -12,13 +12,13 @@
 @Data
 public class ReceiptEntity {
     private String DocCode;
-    private String FormID;
-    private String DocDate;
+    private Integer FormID;
+    private Date DocDate;
     private Date EnterDate;
     private String DocType;
     private String RefCode;
     private String CompanyName;
-    private String DocStatus;
+    private Integer DocStatus;
     private String CltCode;
     private String CltName;
     private String HDMemo;
@@ -26,13 +26,15 @@
     private BigDecimal SumAmount;
 
     private String SODocCode;
-    private String SOFormId;
+    private Integer SOFormId;
     private BigDecimal natAmount;
     private BigDecimal amount;
 
     private String MatName;
     private BigDecimal TotalMoney;
     private Integer Digit;
-    private String FYbeginday;
-    private String FYendday;
+    private Date FYbeginday;
+    private Date FYendday;
+
+    private Integer isPaid;
 }
diff --git a/src/com/yc/MaintenanceFee/schedule/MaintainGate.java b/src/com/yc/MaintenanceFee/schedule/MaintainGate.java
index 7cdfcc1..3937501 100644
--- a/src/com/yc/MaintenanceFee/schedule/MaintainGate.java
+++ b/src/com/yc/MaintenanceFee/schedule/MaintainGate.java
@@ -11,6 +11,7 @@
 import com.yc.open.mutual.schedule.GateEntity;
 import com.yc.service.build.type.T_22_Ifc;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -43,9 +44,18 @@
             if (task != null && task.getResult() == 1) {
                 String table = t22Ifc.getProcName(gateEntity.getFormid() + "");
                 dbId = maintainService.selectCltCodeDbId(table, gateEntity.getDocCode());
-                if ("148".equals(dbId) || "549".equals(dbId)) {
-                    throw new Exception("姝ゅ鎴风紪鍙蜂笉鍦ㄧ淮鎶よ垂鐢ㄨ寖鍥村唴");
+//                if ("148".equals(dbId) || "549".equals(dbId)) {
+//                    throw new Exception("姝ゅ鎴风紪鍙蜂笉鍦ㄧ淮鎶よ垂鐢ㄨ寖鍥村唴");
+//                }
+                DataSourceEntity data = MultiDataSource.getDataSourceMap(dbId);
+                if(data.getMaintenanceFeeToDbId()==null){
+                    throw new ApplicationException("璇蜂负銆�"+data.getSystemDescribe()+"銆戠郴缁熷綍鍏ャ�愭敹鍙栫淮鎶よ垂鎵�灞炲叕鍙搞��(鎿嶄綔璺緞锛氬揩鎹�->缁存姢绯荤粺璁剧疆)锛岀劧鍚庨噸璇曟鎿嶄綔銆�");
                 }
+                DataSourceEntity dataSourceEntity=MultiDataSource.getDataSourceMap(data.getMaintenanceFeeToDbId()+"");
+                if(StringUtils.isBlank(dataSourceEntity.getMaintenanceFeeAcctCode())){
+                    throw new ApplicationException("璇蜂负銆�"+dataSourceEntity.getSystemDescribe()+"銆戞暟鎹簮褰曞叆銆愭敹鍙栫淮鎶よ垂璐︽埛銆戯紝鐒跺悗閲嶈瘯姝ゆ搷浣溿��");
+                }
+
             }
         } catch (Exception e) {
             throw e;
diff --git a/src/com/yc/MaintenanceFee/service/ReceiptService.java b/src/com/yc/MaintenanceFee/service/ReceiptService.java
index 7980487..9307f81 100644
--- a/src/com/yc/MaintenanceFee/service/ReceiptService.java
+++ b/src/com/yc/MaintenanceFee/service/ReceiptService.java
@@ -15,7 +15,7 @@
 
     abstract List<Receipt> selectReceipt(String cltCode,Integer docStatus);
 
-    abstract void cancelReceipt(String skCode);
+    abstract void doCancelReceipt(String skCode);
 
     abstract List<Map<String,Object>> getReceiptStatus(String docCode);
 }
diff --git a/src/com/yc/MaintenanceFee/service/impl/MaintainServiceImpl.java b/src/com/yc/MaintenanceFee/service/impl/MaintainServiceImpl.java
index a0e390e..fa01a01 100644
--- a/src/com/yc/MaintenanceFee/service/impl/MaintainServiceImpl.java
+++ b/src/com/yc/MaintenanceFee/service/impl/MaintainServiceImpl.java
@@ -9,6 +9,7 @@
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -46,13 +47,25 @@
             sb.append(" update t150372 \n" +
                     " set ISpay = 1 ,PayDate=GETDATE() \n" +
                     " where Refdoccode in(select SODoccode from t" + formId + "D where DocCode=@docCode) \n");
-            sb.append(createPostSql(formId));
+            sb.append(" --鎵ц淇濆瓨鍙婅繃璐�---缁存姢璐规敮浠樺悗杩涜鐨勪繚瀛樺強杩囪处---\n" +
+                    " exec p" + formId + "Save @doccode\n" +
+                    "                         select @PostFormId = FormId,@DocStatusValue = DocStatus from t" + formId + "H where docCode=@docCode\n" +
+                    "                    select @PreDocStatus = PreDocStatus,@PostDocStatus = a.PostDocStatus from gform a where a.formid = @PostFormId \n" +
+                    "                if isnull(@DocStatusValue,0) = isnull(@PreDocStatus,0)\n" +
+                    "                         begin \n" +
+                    "                            update a set DocStatus = @PostDocStatus,PostCode=@EnterCode,PostName=@EnterName,PostDate=@now\n" +
+                    "                             from t" + formId + "H a where a.DocCode = @docCode \n" +
+                    "                             exec p" + formId + "Post @UserCode = @EnterCode,@UserName = @EnterName, \n" +
+                    "                                @DocCode = @docCode,@FormId = @PostFormId,\n" +
+                    "                                 @DocStatusValue = @DocStatusValue,@ButtonType ='鎻愪氦', \n" +
+                    "                                @Memo=@Memo output ,@LinkDocInfo = @LinkDocInfo output   \n" +
+                    "                         end\n");
             sb.append(" select @docCode as docCode");
             log.info("do120311sql:" + sb.toString());
             this.jdbcTemplate.execute(sb.toString());
             return true;
         } catch (Exception e) {
-            return false;
+            throw e;
         }
     }
 
@@ -113,7 +126,8 @@
     @Override
     public String selectCltCodeDbId(String table, String docCode) throws Exception {
         try {
-            String sql = "select DocCode,CltCode,DocType,DocDate \n" +
+            String sql = "set nocount on\n" +
+                    " select DocCode,CltCode,DocType,DocDate \n" +
                     " from " + table + " where DocCode = '" + docCode + "'";
             PayInfo info = super.jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(PayInfo.class));
             if (info != null && !StringUtils.isBlank(info.getCltCode())) {
@@ -158,7 +172,8 @@
     @Override
     public List<Map<String, Object>> selectMaintainMsg() {
         try {
-            String sql = "declare @today datetime = convert(varchar(10),getdate(),120) \n" +
+            String sql = "set nocount on\n" +
+                    " declare @today datetime = convert(varchar(10),getdate(),120) \n" +
                     " select a.autoid,a.messagetxt,a.refdoccode,a.refformid,a.refformtype,a.insertactioncode," +
                     " a.insertactionname,a.insertdate ,b.dbid,a.unvaliddate,a.tipcount \n" +
                     " from t150372 a join t110203 b on a.cltcode = b.cltcode \n" +
@@ -172,7 +187,8 @@
     @Override
     public Integer selectMaintainCunt(String dbId) {
         try {
-            String sql = "select COUNT(*) from t120301H a join t110203 b on a.CltCode=b.cltCode and a.DocStatus=100 and isnull(a.ReceivMoney,0) - isnull(a.ShouKuanAmount,0)>0 where b.dbId=" + dbId;
+            String sql = "set nocount on \n" +
+                    " select COUNT(*) from t120301H a join t110203 b on a.CltCode=b.cltCode and a.DocStatus=100 and isnull(a.ReceivMoney,0) - isnull(a.ShouKuanAmount,0)>0 where b.dbId=" + dbId;
             return super.jdbcTemplate.queryForObject(sql, Integer.class);
         } catch (Exception e) {
             return 0;
@@ -197,7 +213,8 @@
     @Override
     public List<String> selectWHCode(String skCode) {
         try {
-            String sql = "select SODoccode from t150101D where DocCode='" + skCode + "'";
+            String sql = "set nocount on\n" +
+                    " select SODoccode from t150101D where DocCode='" + skCode + "'";
             return super.jdbcTemplate.query(sql, new RowMapper<String>() {
                 @Override
                 public String mapRow(ResultSet resultSet, int i) throws SQLException {
@@ -212,7 +229,8 @@
     @Override
     public String queryPayDbId(String whCode) {
         try {
-            String sql = "select b.dbid from t120301H a join t110203 b on a.CltCode=b.cltCode where a.docCode='" + whCode + "'";
+            String sql = "set nocount on\n" +
+                    " select b.dbid from t120301H a join t110203 b on a.CltCode=b.cltCode where a.docCode='" + whCode + "'";
             return super.jdbcTemplate.queryForObject(sql, String.class);
         } catch (Exception e) {
             return "";
@@ -242,28 +260,5 @@
         } catch (Exception e) {
             return -1;
         }
-    }
-
-
-    /**
-     * 閫氳繃鐢熸垚鍗曟嵁淇濆瓨鍙婅繃璐ql,榛樿浠doccode涓哄崟鍙峰彉閲�
-     *
-     * @param formid
-     * @return
-     */
-    private String createPostSql(int formid) {
-        return " --鎵ц淇濆瓨鍙婅繃璐�---缁存姢璐规敮浠樺悗杩涜鐨勪繚瀛樺強杩囪处---\n" +
-                " exec p" + formid + "Save @doccode\n" +
-                "                         select @PostFormId = FormId,@DocStatusValue = DocStatus from t" + formid + "H where docCode=@docCode\n" +
-                "                    select @PreDocStatus = PreDocStatus,@PostDocStatus = a.PostDocStatus from gform a where a.formid = @PostFormId \n" +
-                "                if isnull(@DocStatusValue,0) = isnull(@PreDocStatus,0)\n" +
-                "                         begin \n" +
-                "                            update a set DocStatus = @PostDocStatus,PostCode=@EnterCode,PostName=@EnterName,PostDate=@now\n" +
-                "                             from t" + formid + "H a where a.DocCode = @docCode \n" +
-                "                             exec p" + formid + "Post @UserCode = @EnterCode,@UserName = @EnterName, \n" +
-                "                                @DocCode = @docCode,@FormId = @PostFormId,\n" +
-                "                                 @DocStatusValue = @DocStatusValue,@ButtonType ='鎻愪氦', \n" +
-                "                                @Memo=@Memo output ,@LinkDocInfo = @LinkDocInfo output   \n" +
-                "                         end\n";
     }
 }
diff --git a/src/com/yc/MaintenanceFee/service/impl/PayInfoServiceImpl.java b/src/com/yc/MaintenanceFee/service/impl/PayInfoServiceImpl.java
index fe90d05..7d07dce 100644
--- a/src/com/yc/MaintenanceFee/service/impl/PayInfoServiceImpl.java
+++ b/src/com/yc/MaintenanceFee/service/impl/PayInfoServiceImpl.java
@@ -17,10 +17,12 @@
     @Override
     public List<PayInfo> queryListByCltCode(String dbId) {
         try {
-            String sql = "select a.DocCode,a.CltCode,a.cltName,a.DocType,a.DocDate,a.ReceivMoney,b.MatName, b.Price, b.TotalMoney, b.ItemMemo,b.Digit,b.FYbeginday,b.FYendday\n" +
-                    "from dbo.t120301H a join t120301D b on a.DocCode=b.doccode and  isnull(a.DocStatus,0)=100 and isnull(a.ReceivMoney,0)- isnull(a.ShouKuanAmount,0) > 0 \n" +
-                    "join t110203 c on a.CltCode=c.cltCode \n" +
-                    "where c.dbid=" + dbId + " order by a.DocDate desc";
+            String sql = "set nocount on \n" +
+                    " select a.DocCode,a.CltCode,a.cltName,a.DocType,a.DocDate,a.ReceivMoney,b.MatName, b.Price, b.TotalMoney, b.ItemMemo,b.Digit,b.FYbeginday,b.FYendday, " +
+                    " case when exists(select 1 from t150101d d join t150101log e on d.doccode = e.RefDoccode where a.doccode = d.SODoccode and isnull(e.ThirdOrderNo,'') <> '' ) then 1 else 0 end as isPaid \n"+
+                    " from dbo.t120301H a join t120301D b on a.DocCode=b.doccode and  isnull(a.DocStatus,0)=100 and isnull(a.ReceivMoney,0)- isnull(a.ShouKuanAmount,0) > 0 \n" +
+                    " join t110203 c on a.CltCode=c.cltCode \n" +
+                    " where c.dbid=" + dbId + " order by a.DocDate desc";
             return ReceiptUtils.getList_T(super.jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(PayItem.class)));
         } catch (Exception e) {
             throw e;
@@ -30,7 +32,8 @@
     @Override
     public Integer queryDbIdByCltCode(String cltCode) {
         try {
-            String sql = "select dbId from t110203 where cltCode='" + cltCode + "'";
+            String sql = "set nocount on \n" +
+                    " select dbId from t110203 where cltCode='" + cltCode + "'";
             return super.jdbcTemplate.queryForObject(sql, Integer.class);
         } catch (Exception e) {
             return 0;
@@ -40,7 +43,8 @@
     @Override
     public String queryCltCodeByDbId(String dbId) {
         try {
-            String sql = "select cltCode from t110203 where dbId=" + dbId;
+            String sql = "set nocount on \n" +
+                    " select cltCode from t110203 where dbId=" + dbId;
             return super.jdbcTemplate.queryForObject(sql, String.class);
         } catch (Exception e) {
             return "";
diff --git a/src/com/yc/MaintenanceFee/service/impl/PayLogServiceImpl.java b/src/com/yc/MaintenanceFee/service/impl/PayLogServiceImpl.java
index ed6c954..a8b78f5 100644
--- a/src/com/yc/MaintenanceFee/service/impl/PayLogServiceImpl.java
+++ b/src/com/yc/MaintenanceFee/service/impl/PayLogServiceImpl.java
@@ -2,9 +2,12 @@
 
 import com.yc.MaintenanceFee.entiy.PayLog;
 import com.yc.MaintenanceFee.service.PayLogService;
+import com.yc.action.grid.GridUtils;
 import com.yc.service.BaseService;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
 
 /**
  * @USER: xinyb_
@@ -16,37 +19,54 @@
     @Override
     public int saveOrUpdatePayLog(PayLog payLog) {
         try {
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String sql = "set nocount on ;  \n" +
-                    " begin \n";
-            sql+="if not exists(select 1 from t150101Log where RefDoccode='"+payLog.getRefDoccode()+"') \n";
+                    " declare @MerchantID varchar(50)=" + GridUtils.prossSqlParm(payLog.getMerchantID())+"" +
+                    ",@TrxType varchar(50)=" + GridUtils.prossSqlParm(payLog.getTrxType())+"" +
+                    ",@RefDoccode varchar(50)="+GridUtils.prossSqlParm(payLog.getRefDoccode())+"" +
+                    ",@Refformid int="+payLog.getRefformid()+"" +
+                    ",@Refformtype int="+payLog.getRefformtype()+"" +
+                    ",@Amount money="+payLog.getAmount()+"" +
+                    ",@BatchNo varchar(50)="+GridUtils.prossSqlParm(payLog.getBatchNo()+"")+"" +
+                    ",@VoucherNo varchar(50)="+GridUtils.prossSqlParm(payLog.getVoucherNo())+"" +
+                    ",@HostDate varchar(50)="+GridUtils.prossSqlParm(payLog.getHostDate())+"" +
+                    ",@HostTime varchar(50)="+GridUtils.prossSqlParm(payLog.getHostTime())+"" +
+                    ",@MerchantRemarks varchar(200)="+GridUtils.prossSqlParm(payLog.getMerchantRemarks())+"" +
+                    ",@PayType varchar(50)="+GridUtils.prossSqlParm(payLog.getPayType())+"" +
+                    ",@NotifyType varchar(50)="+GridUtils.prossSqlParm(payLog.getNotifyType())+"" +
+                    ",@ThirdOrderNo varchar(100)="+GridUtils.prossSqlParm(payLog.getThirdOrderNo())+"" +
+                    ",@Status varchar(50)="+GridUtils.prossSqlParm(payLog.getStatus())+"" +
+                    ",@InsertTime datetime ="+GridUtils.prossSqlParm(payLog.getInsertTime()==null?null:formatter.format(payLog.getInsertTime()))+" \n" ;
+
+            sql+="if not exists(select 1 from t150101Log where RefDoccode=@RefDoccode) \n";
+            sql+="  begin \n";
             sql += "insert into t150101Log(MerchantID,TrxType,RefDoccode,Refformid,Refformtype,Amount,BatchNo,\n" +
                     "VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,ThirdOrderNo,Status,InsertTime)\n" +
-                    "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) \n";
+                    "values(@MerchantID,@TrxType,@RefDoccode,@Refformid,@Refformtype,@Amount,@BatchNo," +
+                    "@VoucherNo,@HostDate,@HostTime,@MerchantRemarks,@PayType,@NotifyType,@ThirdOrderNo,@Status,@InsertTime) \n"+
+                    " end \n";
             sql+=" else \n";
-            sql+="update a set a.MerchantRemarks='"+payLog.getMerchantRemarks()+"',a.TrxType='"+payLog.getTrxType()+"'," +
-                    "a.PayType='"+payLog.getPayType()+"',a.Status=?"+
-                    ",a.Amount="+payLog.getAmount()+
-                    ",a.ThirdOrderNo='"+payLog.getThirdOrderNo()+"',a.InsertTime=?"+
-                    " from t150101Log a where a.RefDoccode='"+payLog.getRefDoccode()+"'\n";
+            sql+=" begin \n";
+            sql+="update a set a.MerchantRemarks=@MerchantRemarks,a.TrxType=@TrxType," +
+                    "a.PayType=@PayType,a.Status=@Status"+
+                    ",a.Amount=@Amount,a.ThirdOrderNo=@ThirdOrderNo,a.InsertTime=@InsertTime"+
+                    " from t150101Log a where a.RefDoccode=@RefDoccode \n";
             sql += " end \n" +
                     " select @@ROWCOUNT";
-            int count = super.jdbcTemplate.queryForObject(sql, new Object[]{payLog.getMerchantID()
-                    , payLog.getTrxType(), payLog.getRefDoccode(), payLog.getRefformid(), payLog.getRefformtype(),
-                    payLog.getAmount(), payLog.getBatchNo(), payLog.getVoucherNo(), payLog.getHostDate(), payLog.getHostTime(),
-                    payLog.getMerchantRemarks(), payLog.getPayType(), payLog.getNotifyType(), payLog.getThirdOrderNo(),
-                    payLog.getStatus(), payLog.getInsertTime(),payLog.getStatus(),payLog.getInsertTime()}, Integer.class);
+            int count = super.jdbcTemplate.queryForObject(sql, Integer.class);
             return count;
         } catch (Exception e) {
-            throw e;
+            return  -1;
         }
     }
 
     @Override
     public PayLog getPayLog(String docCode) {
         try {
-            String sql = "select MerchantID,TrxType,RefDoccode,Refformid,Refformtype,Amount,BatchNo,\n" +
-                    "VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,ThirdOrderNo,Status,InsertTime " +
-                    "from t150101Log where RefDoccode='" + docCode + "'";
+            String sql = "set nocount on \n" +
+                    " select MerchantID,TrxType,RefDoccode,Refformid,Refformtype,Amount,BatchNo,\n" +
+                    " VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,ThirdOrderNo,Status,InsertTime " +
+                    " from t150101Log where RefDoccode='" + docCode + "'";
             return super.jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(PayLog.class));
         } catch (Exception e) {
             throw null;
diff --git a/src/com/yc/MaintenanceFee/service/impl/ReceiptServiceImpl.java b/src/com/yc/MaintenanceFee/service/impl/ReceiptServiceImpl.java
index 634bda8..82bff3d 100644
--- a/src/com/yc/MaintenanceFee/service/impl/ReceiptServiceImpl.java
+++ b/src/com/yc/MaintenanceFee/service/impl/ReceiptServiceImpl.java
@@ -4,6 +4,7 @@
 import com.yc.MaintenanceFee.entiy.ReceiptEntity;
 import com.yc.MaintenanceFee.service.ReceiptService;
 import com.yc.MaintenanceFee.utils.ReceiptUtils;
+import com.yc.action.grid.GridUtils;
 import com.yc.service.BaseService;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
@@ -21,12 +22,15 @@
     @Override
     public Receipt QueryReceipt(String docCode, Integer docStatus) {
         try {
-            String sql="select a.DocCode,a.FormID,a.DocDate,a.EnterDate,a.DocType,a.RefCode,a.CompanyName,a.DocStatus,a.CltCode,\n" +
-                    "a.CltName,a.HDMemo,a.SumNatAmount,a.SumAmount,b.SODocCode,b.SOFormId,b.natAmount,b.amount,\n" +
-                    "c.MatName,c.Digit,c.TotalMoney,c.FYendday,c.FYbeginday \n" +
-                    "from t150101H a join t150101D b on a.DocCode=b.DocCode\n" +
-                    "join t120301D c on c.doccode=b.SODoccode\n" +
-                    "where a.DocCode='"+docCode+"' and a.DocStatus="+docStatus;
+            String sql="set nocount on \n " +
+                    " declare @DocCode varchar(50) = " + GridUtils.prossSqlParm(docCode)+
+                    " select a.DocCode,a.FormID,a.DocDate,a.EnterDate,a.DocType,a.RefCode,a.CompanyName,a.DocStatus,a.CltCode,\n" +
+                    " a.CltName,a.HDMemo,a.SumNatAmount,a.SumAmount,b.SODocCode,b.SOFormId,b.natAmount,b.amount,\n" +
+                    " c.MatName,c.Digit,c.TotalMoney,c.FYendday,c.FYbeginday,case when exists(select 1 from t150101log d " +
+                    " where a.doccode = d.RefDoccode and isnull(d.ThirdOrderNo,'') <> '' ) then 1 else 0 end as isPaid \n" +
+                    " from t150101H a join t150101D b on a.DocCode=b.DocCode\n" +
+                    " join t120301D c on c.doccode=b.SODoccode \n" +
+                    " where a.DocCode=@DocCode \n";
             return ReceiptUtils.getReceipt(super.jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ReceiptEntity.class)));
         } catch (Exception e) {
             throw e;
@@ -36,12 +40,14 @@
     @Override
     public List<Receipt> selectReceipt(String cltCode, Integer docStatus) {
         try {
-            String sql="select a.DocCode,a.FormID,a.DocDate,a.EnterDate,a.DocType,a.RefCode,a.CompanyName,a.DocStatus,a.CltCode,\n" +
-                    "a.CltName,a.HDMemo,a.SumNatAmount,a.SumAmount,b.SODocCode,b.SOFormId,b.natAmount,b.amount,\n" +
-                    "c.MatName,c.Digit,c.TotalMoney,c.FYendday,c.FYbeginday \n" +
-                    "from t150101H a join t150101D b on a.DocCode=b.DocCode\n" +
-                    "join t120301D c on c.doccode=b.SODoccode\n" +
-                    "where a.CltCode='"+cltCode+"' and a.DocStatus="+docStatus;
+            String sql="set nocount on \n" +
+                    " select a.DocCode,a.FormID,a.DocDate,a.EnterDate,a.DocType,a.RefCode,a.CompanyName,a.DocStatus,a.CltCode,\n" +
+                    " a.CltName,a.HDMemo,a.SumNatAmount,a.SumAmount,b.SODocCode,b.SOFormId,b.natAmount,b.amount,\n" +
+                    " c.MatName,c.Digit,c.TotalMoney,c.FYendday,c.FYbeginday ,case when exists(select 1 from t150101log d " +
+                    " where a.doccode = d.RefDoccode and isnull(d.ThirdOrderNo,'') <> '' ) then 1 else 0 end as isPaid \n" +
+                    " from t150101H a join t150101D b on a.DocCode=b.DocCode\n" +
+                    " join t120301D c on c.doccode=b.SODoccode\n" +
+                    " where a.CltCode='"+cltCode+"' and a.DocStatus="+docStatus;
             return ReceiptUtils.getReceipts(super.jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ReceiptEntity.class)));
         } catch (Exception e) {
             throw e;
@@ -49,14 +55,14 @@
     }
 
     @Override
-    public void cancelReceipt(String skCode) {
+    public void doCancelReceipt(String skCode) {
         try {
             String sql = " set nocount on\n" +
                     " declare @docCode varchar(50)='"+skCode+"' \n" +
                     " exec p150101v4 @doccode \n";
             super.jdbcTemplate.update(sql);
         } catch (Exception e) {
-//           throw e;
+           throw e;
         }
     }
 
diff --git a/src/com/yc/MaintenanceFee/utils/BackMsg.java b/src/com/yc/MaintenanceFee/utils/BackMsg.java
index 75c2632..d1c52e7 100644
--- a/src/com/yc/MaintenanceFee/utils/BackMsg.java
+++ b/src/com/yc/MaintenanceFee/utils/BackMsg.java
@@ -18,6 +18,11 @@
         this.data=data;
         return  this;
     }
+    public BackMsg setOkEd(Object data,String msg){
+        this.msg=msg;
+        this.data=data;
+        return this;
+    }
     public BackMsg setError(String msg){
         this.code=-1;
         this.msg=msg;
diff --git a/src/com/yc/MaintenanceFee/utils/ReceiptUtils.java b/src/com/yc/MaintenanceFee/utils/ReceiptUtils.java
index 3081f3e..7c0d89e 100644
--- a/src/com/yc/MaintenanceFee/utils/ReceiptUtils.java
+++ b/src/com/yc/MaintenanceFee/utils/ReceiptUtils.java
@@ -33,6 +33,7 @@
                 payInfo.setDocType(item.getDocType());
                 payInfo.setDocDate(item.getDocDate());
                 payInfo.setReceivMoney(item.getReceivMoney());
+                payInfo.setIsPaid(item.getIsPaid());
                 payInfo.setItemList(m);
                 info.add(payInfo);
             }
@@ -69,6 +70,7 @@
                         receipt.setHdMemo(r1.get(0).getHDMemo());
                         receipt.setSumAmount(r1.get(0).getSumAmount());
                         receipt.setSumNatAmount(r1.get(0).getSumNatAmount());
+                        receipt.setIsPaid(r1.get(0).getIsPaid());
                         List<ReceiptDetailed> receiptDetailedList = new ArrayList<>();
                         for (ReceiptEntity e1 : r1) {
                             String whCode = e1.getSODocCode();

--
Gitblit v1.8.0