修改离线交易逻辑,冲正交易,线上交易修改
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 6a1a4cd..287dde0 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -28,5 +28,5 @@
 
 payapi.appid=200001
 
-cron.offlinedtl=0/30 * * * * ?
+cron.offlinedtl=0 0/5 * * * ?
 payapi.logintime=0 0/20 * * * ? 
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
index 35480c1..c5808eb 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
@@ -175,21 +175,14 @@
         tTransdtl.setBillno(systemUtilService.getRefno());
         tTransdtl.setShopid(tDevice.getShopid());
         tTransdtl.setAcctime(systemUtilService.getSysdatetime().getHosttime());
-
+        tTransdtl.setAmount(0d);
         tTransdtl.setCusttype(customer.getCusttype());
         tTransdtl.setTransdate(req.getTermdate());
 
-        Double amount=req.getAmount() / 100.0;
 
-        DiscountBean bean=deviceDiscountRuleService.getCustomerDiscount(tDevice.getId(),req.getTermtime(), customer.getCustid());
-        if(null!=bean){
-            tTransdtl.setRuleid(bean.getRuleid());
-            amount = getDiscountAmount(req.getTermdate(), customer.getCustid(), amount, bean);
-        }
-        tTransdtl.setAmount(amount);
         tTransdtl.setManagefee(managefee);
         tTransdtl.setTranstime(req.getTermtime());
-        tTransdtl.setCardno(req.getCardno());
+        tTransdtl.setCardno("25002885");
         tTransdtl.setTransmode(req.getTranstype());
 
         tTransdtl.setTranstype(RestaurantConstant.TRANSTYPE_TRANSDTL_ONLINE);
@@ -277,7 +270,14 @@
             resp.setRetmsg("客户" + tTransdtl.getCustid() + "不存在");
             return resp;
         }
+        Double amount=req.getAmount() / 100.0;
 
+        DiscountBean bean=deviceDiscountRuleService.getCustomerDiscount(tDevice.getId(),req.getTermtime(), cus.getCustid());
+        if(null!=bean){
+            tTransdtl.setRuleid(bean.getRuleid());
+            amount = getDiscountAmount(req.getTermdate(), cus.getCustid(), amount, bean);
+        }
+        tTransdtl.setAmount(amount);
         tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_WAIT);
         TTransDtl dtl=transDtlService.saveTransdtl(tTransdtl);
 
@@ -390,16 +390,17 @@
     @Override
     public PosPayReverseResp doPayCancel(PosPayReverseReq req) {
         PosPayReverseResp resp = new PosPayReverseResp();
+        System.out.println("termsqlno:"+req.getTermseqno());
         TTransDtl tTransDtl = transDtlService.getTransDtlByBillno(req.getReversalbillno());
         if (null == tTransDtl) {
-            resp.setRetcode(ErrorCode.ERRIF_POSDTL_NOTEXIST);
+            resp.setRetcode(ErrorCode.ERRIF_OK);
             resp.setRetmsg("交易参考号" + req.getReversalbillno() + "不存在");
             return resp;
         }
         if (!RestaurantConstant.STATUS_TRANSDTL_SUCCESS.toUpperCase().equals(tTransDtl.getStatus().toUpperCase())) {
            /* tTransDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
             tTransDtl.setAttr1("交易状态未成功");*/
-            resp.setRetcode(ErrorCode.ERRIF_POSDTL_NOTEXIST);
+            resp.setRetcode(ErrorCode.ERRIF_OK);
             resp.setRetmsg("流水" + req.getReversalbillno() + "交易状态未成功,不能冲正");
             return resp;
         }
@@ -411,10 +412,17 @@
         }
         try {
             tTransDtl.setTermsqlno(req.getTermseqno());
-            transDtlService.revertTransdtl(tTransDtl);
-            resp.setTermseqno(req.getTermseqno());
-            resp.setRetmsg("冲正成功");
-            resp.setRetcode(ErrorCode.ERRIF_OK);
+            TTransDtl revdtl=transDtlService.doRevertTransdtl(tTransDtl);
+            if(!RestaurantConstant.STATUS_TRANSDTL_SUCCESS.equals(revdtl.getStatus())){
+                resp.setTermseqno(req.getTermseqno());
+                resp.setRetmsg("冲正失败,"+revdtl.getAttr1());
+                resp.setRetcode(ErrorCode.ERRIF_OK);
+            }else{
+                resp.setTermseqno(req.getTermseqno());
+                resp.setRetmsg("冲正成功");
+                resp.setRetcode(ErrorCode.ERRIF_OK);
+            }
+
             return resp;
         } catch (Exception e) {
             e.printStackTrace();
@@ -637,7 +645,7 @@
         if (null == device) {
             err+="设备物理ID不存在;";
             transDtl.setAttr1(err);
-            offlineTransDtlService.saveTransdtl(transDtl);
+            offlineTransDtlService.saveOfflineTransdtl(transDtl);
             resp.setRetmsg("保存成功");
             resp.setRetcode(ErrorCode.ERRIF_OK);
             return resp;
@@ -739,7 +747,7 @@
             transDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_INIT);
         }
         transDtl.setAttr1(err);
-        offlineTransDtlService.saveTransdtl(transDtl);
+        offlineTransDtlService.saveOfflineTransdtl(transDtl);
 
         resp.setRetcode(ErrorCode.ERRIF_OK);
         resp.setRetmsg("保存成功");
diff --git a/src/main/java/com/supwisdom/dlpay/api/task/PosPayTask.java b/src/main/java/com/supwisdom/dlpay/api/task/PosPayTask.java
index 3cb42e0..0f15938 100644
--- a/src/main/java/com/supwisdom/dlpay/api/task/PosPayTask.java
+++ b/src/main/java/com/supwisdom/dlpay/api/task/PosPayTask.java
@@ -63,7 +63,6 @@
                 tTransDtl.setManagefee(dtl.getManagefee());
 
 
-
                 CitizenCardPayinitParam param=new CitizenCardPayinitParam();
                 param.setBillno(dtl.getBillno());
                 param.setShopaccno(dtl.getShopid());
@@ -75,9 +74,7 @@
                 param.setAmount(amt.intValue());
                 CitizenPayResponse response=citizenCardPayProxy.citizencardPayinit(param);
                 if(response.getRetcode()!=0){
-                    dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-                    dtl.setAttr1(response.getRetmsg()+","+ response.getException());
-                    offlineTransDtlService.saveTransdtl(dtl);
+                    saveTransdtls(dtl, tTransDtl, response);
                     logger.info(dtl.getBillno()+"初始化失败,"+response.getRetcode()+","+response.getRetmsg()+","+ response.getException());
                     continue;
                 }
@@ -85,18 +82,28 @@
                 finishparam.setRefno(response.getRefno());
                 CitizenPayResponse finishresp=citizenCardPayProxy.citizencardPayFinish(finishparam);
                 if(finishresp.getRetcode()!=0){
-                    dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-                    dtl.setAttr1(response.getRetmsg()+","+ response.getException());
-                    offlineTransDtlService.saveTransdtl(dtl);
+                    saveTransdtls(dtl, tTransDtl, finishresp);
                     logger.info(dtl.getBillno()+"消费缺认失败,"+finishresp.getRetcode()+","+finishresp.getRetmsg()+","+ finishresp.getException());
                     continue;
                 }
+                tTransDtl.setAccdate(date);
+                tTransDtl.setAcctime(DateUtil.getNow("HHmmss"));
                 dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
-                offlineTransDtlService.saveTransdtl(dtl);
+                offlineTransDtlService.saveOfflineTransdtl(dtl);
+                transDtlService.saveTransdtl(tTransDtl);
             }
 
         }
 
     }
 
+    private void saveTransdtls(TOfflineTransDtl dtl, TTransDtl tTransDtl, CitizenPayResponse finishresp) {
+        dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+        dtl.setAttr1(finishresp.getRetmsg() + "," + finishresp.getException());
+        tTransDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+        tTransDtl.setAttr1(finishresp.getRetmsg() + "," + finishresp.getException());
+        offlineTransDtlService.saveOfflineTransdtl(dtl);
+        transDtlService.saveTransdtl(tTransDtl);
+    }
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
index 7d4ff29..e21492d 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
@@ -58,7 +58,7 @@
                                              @RequestParam("limit") Integer pageSize,
                                              @RequestParam(value = "custname", required = false) String custname,
                                              @RequestParam(value = "accdate", required = false) String accdate,
-                                             @RequestParam(value = "refno", required = false) String refno) {
+                                             @RequestParam(value = "billno", required = false) String billno) {
         try {
             if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
             if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
@@ -70,7 +70,7 @@
 
             }
             bean.setCustname(custname);
-            bean.setBillno(refno);
+            bean.setBillno(billno);
             bean.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
             bean.setPageNo(pageNo);
             bean.setPageSize(pageSize);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
index c8fd88e..3fd6627 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
@@ -22,5 +22,5 @@
     @Query(value = "from TOfflineTransDtl where termsqlno=?1 and termid=?2 and accdate=?3 ")
     List<TOfflineTransDtl> findByTermsqlnoAndTermidAndAccdate(Integer termsqlno,Integer termid,String accdate);
 
-    List<TOfflineTransDtl> findAllByAccdateAndStatus(String accdate,String status);
+    List<TOfflineTransDtl> findAllByTransdateAndStatusAndTranstype(String transdate,String status,String transtype);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/OfflineTransDtlService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/OfflineTransDtlService.java
index e151699..74f128a 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/OfflineTransDtlService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/OfflineTransDtlService.java
@@ -14,7 +14,7 @@
 
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    TOfflineTransDtl saveTransdtl(TOfflineTransDtl dtl);
+    TOfflineTransDtl saveOfflineTransdtl(TOfflineTransDtl dtl);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     TOfflineTransDtl getTransDtlByBillno(String billno);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
index 209d4d4..e8f6fde 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
@@ -34,6 +34,9 @@
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     JsonResult revertTransdtl(TTransDtl dtl);
 
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    TTransDtl doRevertTransdtl(TTransDtl dtl);
+
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
     Integer getMaxSeqnoToday(Integer deviceid,String accdate);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java
index e9dfdfb..8c5ea23 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java
@@ -51,7 +51,7 @@
 
 
     @Override
-    public TOfflineTransDtl saveTransdtl(TOfflineTransDtl dtl) {
+    public TOfflineTransDtl saveOfflineTransdtl(TOfflineTransDtl dtl) {
         return transDtlDao.save(dtl);
     }
 
@@ -113,6 +113,6 @@
 
     @Override
     public List<TOfflineTransDtl> getUncheckOfflineTransdtl(String accdate) {
-        return transDtlDao.findAllByAccdateAndStatus(accdate,"init");
+        return transDtlDao.findAllByTransdateAndStatusAndTranstype(accdate,RestaurantConstant.STATUS_TRANSDTL_INIT,RestaurantConstant.TRANSTYPE_TRANSDTL_OFFLINE);
     }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
index 935a6b0..b86ea5c 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
@@ -164,22 +164,34 @@
 
     @Override
     public JsonResult revertTransdtl(TTransDtl dtl) {
-        TTransDtl targetDtl=null;
-        Optional<TTransDtl> odtl=transDtlDao.findById(dtl.getBillno());
-        if(odtl.isPresent()){
-            targetDtl=odtl.get();
+        TTransDtl revdtl=doRevertTransdtl(dtl);
+        if(null==revdtl){
+            return JsonResult.error("撤销流水未查询到");
         }
-        if(null==targetDtl){
-            return JsonResult.error("未查询到目标流水");
+        if (!RestaurantConstant.STATUS_TRANSDTL_SUCCESS.equals(revdtl.getStatus())){
+            return JsonResult.error("冲正失败,"+revdtl.getAttr1());
         }
+        return JsonResult.ok("操作成功");
+    }
 
+    @Override
+    public TTransDtl doRevertTransdtl(TTransDtl dtl) {
+        TTransDtl targetDtl;
+        Optional<TTransDtl> odtl=transDtlDao.findById(dtl.getBillno());
+        if(!odtl.isPresent()){
+            targetDtl=new TTransDtl();
+            targetDtl.setBillno(systemUtilService.getRefno());
+            targetDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+            targetDtl.setAttr1("未查询到目标流水");
+            transDtlDao.save(targetDtl);
+            return targetDtl;
+        }
+        targetDtl=odtl.get();
         TTransDtl revDtl=new TTransDtl();
         revDtl.setBillno(systemUtilService.getRefno());
         revDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_INIT);
         String date=DateUtil.getNow("yyyyMMdd");
         String time=DateUtil.getNow("HHmmss");
-        revDtl.setAccdate(date);
-        revDtl.setAcctime(time);
         revDtl.setTransdate(date);
         revDtl.setTranstime(time);
         revDtl.setRevbillno(targetDtl.getBillno());
@@ -192,30 +204,34 @@
         revDtl.setManagefee(targetDtl.getManagefee());
         revDtl.setRuleid(targetDtl.getRuleid());
         revDtl.setCustid(targetDtl.getCustid());
+        revDtl.setCardno(targetDtl.getCardno());
         revDtl.setCustname(targetDtl.getCustname());
         revDtl.setCusttype(targetDtl.getCusttype());
         revDtl.setTranstype(RestaurantConstant.TRANSTYPE_TRANSDTL_REVERT);
         revDtl.setAmount(targetDtl.getAmount()*-1.00);
-        transDtlDao.save(revDtl);
+      //  revDtl=transDtlDao.save(revDtl);
         ConsumePayCancelParam cancelParam=new ConsumePayCancelParam();
-        cancelParam.setBillno(revDtl.getBillno());
+      //  cancelParam.setBillno(revDtl.getBillno());
         cancelParam.setRefno(targetDtl.getRefno());
-        cancelParam.setRequestbillno(targetDtl.getBillno());
-        cancelParam.setShopaccno(targetDtl.getShopid());
-        cancelParam.setTransdate(targetDtl.getTransdate());
-        cancelParam.setTranstime(targetDtl.getTranstime());
+        cancelParam.setRequestbillno(revDtl.getBillno());
+       // cancelParam.setShopaccno(revDtl.getShopid());
+        cancelParam.setTransdate(revDtl.getTransdate());
+        cancelParam.setTranstime(revDtl.getTranstime());
         PayReverseResponse reverseResp=transactionProxy.payCancel(cancelParam);
+        revDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
         if(reverseResp.getRetcode()!=0){
             revDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-
-
+            revDtl.setAttr1(reverseResp.getRetmsg()+","+reverseResp.getException());
+            transDtlDao.save(revDtl);
+            return revDtl;
         }
-        revDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
+        revDtl.setAcctime(DateUtil.getNow("HHmmss"));
+        revDtl.setAccdate(date);
         revDtl.setRefno(reverseResp.getRefno());
         transDtlDao.save(revDtl);
         targetDtl.setRevflag(1);
         transDtlDao.save(targetDtl);
-        return JsonResult.ok("操作成功");
+        return revDtl;
     }
 
     @Override
diff --git a/src/main/resources/templates/restaurant/transdtl/index.html b/src/main/resources/templates/restaurant/transdtl/index.html
index eada656..9fb62b3 100644
--- a/src/main/resources/templates/restaurant/transdtl/index.html
+++ b/src/main/resources/templates/restaurant/transdtl/index.html
@@ -50,6 +50,7 @@
                         <label class="layui-form-label"> 商户:</label>
                         <div class="layui-input-inline">
                             <select name="shopid" id="transdtl-shopid">
+                                <option value="" selected>全部</option>
                                 <option th:each="shop : ${shoplistForSelect}" th:value="${shop.shopid}">[[${shop.shopname}]]</option>
                             </select>
                         </div>
@@ -63,7 +64,7 @@
                         <div class="layui-input-inline">
                             <select name="status" id="transdtl-status">
                                 <option value="" selected>全部</option>
-                                <option value="normal">成功</option>
+                                <option value="success">成功</option>
                                 <option value="fail">失败</option>
                                 <option value="init">初始化</option>
                                 <option value="wip">等待</option>
@@ -133,7 +134,7 @@
                     {field: 'custname', title: '姓名',width:100, fixed: 'left'},
                     {field: 'cardno', title: '市民卡号',width:100, fixed: 'left'},
                     {field: 'billno', title: '交易号', fixed: 'left',width:200, sort: true},
-                    {field: 'amount', title: '交易金额', sort: true,
+                    {field: 'amount', title: '交易金额',width:100, sort: true,
                         templet: function (item) {
                             return numberFormat(item.amount,2);
                         }},
@@ -196,6 +197,9 @@
                         width:100,
                         align: 'center',
                         templet: function (item) {
+                            if(shoplist[item.shopid]==undefined||shoplist[item.shopid]==null){
+                                return '';
+                            }
                             return shoplist[item.shopid];
                         }
                     },
diff --git a/src/main/resources/templates/restaurant/transdtlrev/form.html b/src/main/resources/templates/restaurant/transdtlrev/form.html
index 23a5594..65c68c8 100644
--- a/src/main/resources/templates/restaurant/transdtlrev/form.html
+++ b/src/main/resources/templates/restaurant/transdtlrev/form.html
@@ -1,6 +1,6 @@
 
 <form id="transdtlrev-form" lay-filter="form" class="layui-form model-form">
-    <input name="refno" id="refno" type="hidden"/>
+    <input name="billno" id="billno" type="hidden"/>
     <div class="layui-form-item">
         <label class="layui-form-label">冲正对象</label>
         <div class="layui-input-block">
@@ -41,7 +41,7 @@
         var dtl = admin.getTempData('t_dtl');
         console.log(dtl)
         if (dtl) {
-            $('input[name="refno"]').attr('readonly', 'readonly');
+            $('input[name="billno"]').attr('readonly', 'readonly');
             form.val('form', dtl);
         }
         // 表单提交事件
diff --git a/src/main/resources/templates/restaurant/transdtlrev/index.html b/src/main/resources/templates/restaurant/transdtlrev/index.html
index 564d973..b049ad8 100644
--- a/src/main/resources/templates/restaurant/transdtlrev/index.html
+++ b/src/main/resources/templates/restaurant/transdtlrev/index.html
@@ -18,7 +18,7 @@
                 <div class="layui-inline">
                     <label class="layui-form-label"> 交易号:</label>
                     <div class="layui-input-inline">
-                        <input id="transdtlrev-refno" name="refno" class="layui-input " type="text"/>
+                        <input id="transdtlrev-billno" name="billno" class="layui-input " type="text"/>
                     </div>
                 </div>
                 <div class="layui-inline">
@@ -124,7 +124,7 @@
                     },
                     {
                     field: 'refno', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
-                        if(item.transtype!='cz'){
+                        if(item.transtype!='revert'){
                             return ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>冲正</a> ';
                         }
                         return '';
@@ -158,13 +158,13 @@
         // 搜索按钮点击事件
         $('#transdtlrev-btn-search').click(function () {
             let custname = $('#transdtlrev-custname').val().trim();
-            let refno = $('#transdtlrev-refno').val().trim();
+            let billno = $('#transdtlrev-billno').val().trim();
             let accdate = $('#transdtlrev-accdate').val();
             table.reload('transdtlrev-table', {
                 where: {
                     custname: custname,
                     accdate: accdate,
-                    refno: refno,
+                    billno: billno,
                 }, page: {curr: 1}
             });
             //页面存在form需要返回false,否则layui自动刷新