设备参数设置错误修改,参数查询名字修改,pos冲正bug修改
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 4154d02..7760e30 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -24,4 +24,6 @@
 spring.jackson.serialization.fail-on-empty-beans=false
 
 
-payapi.url=https://yy.dlsmk.cn/payapi
\ No newline at end of file
+payapi.url=https://yy.dlsmk.cn/payapi
+
+payapi.appid=200001
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java b/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java
index 39f2163..8e8b477 100644
--- a/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java
+++ b/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java
@@ -3,8 +3,8 @@
 public class PosPayConfirmResp extends APIResp {
   private String billno;
   private boolean require_query;
-  private Double amount;
-  private Double extraamt;
+  private Integer amount;
+  private Integer extraamt;
   private String userid;
   private String username;
   private Integer balance;
@@ -33,19 +33,19 @@
     this.require_query = require_query;
   }
 
-  public Double getAmount() {
+  public Integer getAmount() {
     return amount;
   }
 
-  public void setAmount(Double amount) {
+  public void setAmount(Integer amount) {
     this.amount = amount;
   }
 
-  public Double getExtraamt() {
+  public Integer getExtraamt() {
     return extraamt;
   }
 
-  public void setExtraamt(Double extraamt) {
+  public void setExtraamt(Integer extraamt) {
     this.extraamt = extraamt;
   }
 
diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
index 61addfa..6e4c958 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
@@ -1,29 +1,59 @@
 package com.supwisdom.dlpay.api.service.impl;
 
-import com.google.gson.Gson;
 import com.supwisdom.dlpay.api.bean.CitizenCardPayfinishParam;
 import com.supwisdom.dlpay.api.bean.CitizenCardPayinitParam;
 import com.supwisdom.dlpay.api.bean.CitizenPayResponse;
 import com.supwisdom.dlpay.api.service.PayApiService;
-import net.minidev.json.JSONObject;
+import com.supwisdom.dlpay.framework.dao.ApiClientDao;
+import com.supwisdom.dlpay.framework.domain.TApiClient;
+import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.paysdk.ApiLoginHelper;
+import com.supwisdom.dlpay.paysdk.proxy.ApiLoginProxy;
+import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-import sun.net.www.http.HttpClient;
 
+
+@EnableFeignClients(basePackages = "com.supwisdom.dlpay.paysdk")
+@ComponentScan(basePackages = {"com.supwisdom.dlpay.paysdk"})
 @Service
 public class PayApiServiceImpl implements PayApiService {
 
     @Value("${payapi.url}")
     private String payapiurl;
 
+    @Value("${payapi.appid}")
+    private String appid;
+
+    @Autowired
+    private ApiClientDao apiClientDao;
+
+    @Autowired
+    private ApiLoginProxy apiLoginProxy;
+
+    @Autowired
+    private CitizenCardPayProxy citizenCardPayProxy;
 
     @Override
     public CitizenPayResponse citizencardPayinit(CitizenCardPayinitParam param) {
-      //  String gsonString = new Gson().toJson(param);
-//        RestTemplate client=new RestTemplate();
-       /* client.postForEntity(payapiurl+"/api/consume/citizencard/payinit")*/
-        return null;
+        CitizenPayResponse resp=new CitizenPayResponse();
+        if(StringUtil.isEmpty(appid)){
+            resp.setRetmsg("请在配置文件中配置appid");
+            resp.setRetcode(99);
+        }
+        ApiLoginHelper helper=new ApiLoginHelper(apiLoginProxy);
+        TApiClient client=apiClientDao.findByAppid(appid);
+        if(null==client){
+            resp.setRetmsg("未找到对应客户号");
+            resp.setRetcode(99);
+        }
+        helper.login(appid, client.getSecret());
+        resp = citizenCardPayProxy.citizencardPayinit(param);
+
+        return resp;
     }
 
     @Override
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 320c8bc..5a489e1 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
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.service.impl;
 
 import com.supwisdom.dlpay.api.bean.*;
+import com.supwisdom.dlpay.api.service.PayApiService;
 import com.supwisdom.dlpay.api.service.PosPayService;
 import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
 import com.supwisdom.dlpay.framework.domain.TBusinesspara;
@@ -49,6 +50,8 @@
     private ShopSettlementService shopSettlementService;
     @Autowired
     private BusinessparaDao businessparaDao;
+    @Autowired
+    private PayApiService payApiService;
 
 
 
@@ -204,18 +207,14 @@
 
         TTransDtl dtl=transDtlService.saveTransdtl(tTransdtl);
 
-//        CitizenCardPayinitParam param=new CitizenCardPayinitParam();
-//        param.setBillno(dtl.getBillno());
-//        param.setShopaccno(dtl.getShopid());
-//        param.setTransdate(dtl.getTransdate());
-//        param.setTranstime(dtl.getTranstime());
-//        param.setCardNo(dtl.getCardno());
-//        param.setAmount(0);
-//        CitizenPayResponse response=payApiService.citizencardPayinit(param);
-//        if (response.getRetcode()!=0){
-//            dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-//        }
-
+/*        CitizenCardPayinitParam param=new CitizenCardPayinitParam();
+        param.setBillno(dtl.getBillno());
+        param.setShopaccno(dtl.getShopid());
+        param.setTransdate(dtl.getTransdate());
+        param.setTranstime(dtl.getTranstime());
+        param.setCardNo(dtl.getCardno());
+        param.setAmount(0);
+        CitizenPayResponse response=payApiService.citizencardPayinit(param);*/
         resp.setBillno(tTransdtl.getBillno());
         resp.setRetcode(ErrorCode.ERRIF_OK);
         resp.setAnonymous(false);
@@ -223,6 +222,13 @@
         resp.setSourcetype("pos");
         resp.setUserid(tTransdtl.getCustid());
         resp.setUsername(customer.getCustname());
+    /*    if (response.getRetcode()!=0){
+            dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+            transDtlService.saveTransdtl(dtl);
+            resp.setRetcode(response.getRetcode().toString());
+            resp.setRetmsg(response.getRetmsg());
+        }*/
+
         return resp;
     }
 
@@ -262,8 +268,9 @@
 
 
         resp.setBillno(req.getBillno());
-        resp.setAmount(tTransdtl.getAmount()*100);
-        resp.setExtraamt(extamount*100.0);
+        Double retAmount=tTransdtl.getAmount()*100;
+        resp.setAmount(retAmount.intValue());
+        resp.setExtraamt(extamount*100);
         resp.setUserid(cus.getCustid());
         resp.setUsername(cus.getCustname());
         if(RestaurantConstant.STATUS_TRANSDTL_WAIT.equals(tTransdtl.getStatus())){
@@ -294,8 +301,11 @@
         }
 
         resp.setBillno(tTransdtl.getBillno());
-        resp.setAmount(tTransdtl.getAmount()*100);
-        resp.setExtraamt(tTransdtl.getManagefee()*100);
+
+        Double retAmount=tTransdtl.getAmount()*100;
+        resp.setAmount(retAmount.intValue());
+        Double retExtamt=tTransdtl.getManagefee()*100;
+        resp.setExtraamt(retExtamt.intValue());
         resp.setUserid(cus.getCustid());
         resp.setUsername(cus.getCustname());
         resp.setRequire_query(true);
@@ -322,13 +332,15 @@
             return resp;
         }
         if (tTransDtl.getRevflag() == 1) {
-            resp.setRetcode(ErrorCode.ERRIF_POSDTL_NOTEXIST);
+            resp.setRetcode(ErrorCode.ERRIF_OK);
+            resp.setTermseqno(req.getTermseqno());
             resp.setRetmsg("流水" + req.getReversalbillno() + "已冲正");
             return resp;
         }
         try {
+            tTransDtl.setTermsqlno(req.getTermseqno());
             transDtlService.revertTransdtl(tTransDtl);
-            resp.setTermseqno(tTransDtl.getTermsqlno());
+            resp.setTermseqno(req.getTermseqno());
             resp.setRetmsg("冲正成功");
             resp.setRetcode(ErrorCode.ERRIF_OK);
             return resp;
@@ -546,6 +558,7 @@
         transDtl.setAmount(req.getAmount()/100.0);
         transDtl.setBillno(systemUtilService.getRefno());
         transDtl.setCardno(req.getCardno());
+        transDtl.setRevflag(0);
         List<TMealtype> mealtypes = mealTypeDao.findAllByOrderByEndtime();
         transDtl.setTermsqlno(req.getTermseqno());
         String err="";
@@ -597,7 +610,7 @@
 
         if("true".equals(req.getReversalflag())){
             TOfflineTransDtl tTransDtl =
-                    offlineTransDtlService.getOfflineTransDtlByTermsqlnoAndTermid(req.getTermseqno(),device.getId(),req.getTransdate());
+                    offlineTransDtlService.getOfflineTransDtlByTermsqlnoAndTermid(req.getReversaltermseqno(),device.getId(),req.getTransdate());
             if (null == tTransDtl) {
                 err+=("终端参考号" + req.getReversaltermseqno() + "不存在;");
             }else{
@@ -615,6 +628,7 @@
                     }else{
                         transDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_INIT);
                     }
+                    transDtl.setAttr1(err);
                     offlineTransDtlService.revertOfflineTransdtl(tTransDtl);
                     resp.setTermseqno(tTransDtl.getTermsqlno());
                     resp.setRetmsg("保存成功");
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
index 73dbf10..c557714 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
@@ -1,5 +1,8 @@
 package com.supwisdom.dlpay.framework.domain;
 
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
index 6ed5bb6..7a70969 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
@@ -15,6 +15,7 @@
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Optional;
 
 @Service
 public class SystemUtilServiceImpl implements SystemUtilService {
@@ -118,7 +119,12 @@
   @Override
   public String getAccdate() {
     String hostdate = getSysdatetime().getHostdate();
-    TSettlectl settlectl = settleCtlDao.getOne(1);
+    Optional<TSettlectl> opt=settleCtlDao.findById(1);
+    TSettlectl settlectl = null;
+    if(opt.isPresent()){
+      settlectl=opt.get();
+    }
+
     if (null != settlectl && null != settlectl.getSettledate()) {
       if (Integer.valueOf(hostdate) < settlectl.getSettledate().intValue()) {
         return settlectl.getSettledate().toString();
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java
index 7dd29ce..74d7b8b 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java
@@ -1,13 +1,15 @@
 package com.supwisdom.dlpay.restaurant.bean;
 
+import java.math.BigInteger;
+
 public class AmountCountBean {
   private Double totalamt;
-  private Long totalcnt;
+  private BigInteger totalcnt;
 
   public AmountCountBean() {
   }
 
-  public AmountCountBean(Double totalamt, Long totalcnt) {
+  public AmountCountBean(Double totalamt, BigInteger totalcnt) {
     this.totalamt = totalamt;
     this.totalcnt = totalcnt;
   }
@@ -20,11 +22,11 @@
     this.totalamt = totalamt;
   }
 
-  public Long getTotalcnt() {
+  public BigInteger getTotalcnt() {
     return totalcnt;
   }
 
-  public void setTotalcnt(Long totalcnt) {
+  public void setTotalcnt(BigInteger totalcnt) {
     this.totalcnt = totalcnt;
   }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java
index 3e245e5..39f4109 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java
@@ -36,7 +36,7 @@
     }
 
     @RequestMapping("/list")
-    @PreAuthorize("hasPermission('/custtype/index','')")
+  //  @PreAuthorize("hasPermission('/custtype/index','')")
     @ResponseBody
     public PageResult<TCustType> getDataList(@RequestParam("page") Integer pageNo,
                                              @RequestParam("limit") Integer pageSize,
@@ -57,13 +57,13 @@
 
 
     @GetMapping("/loadadd")
-    @PreAuthorize("hasPermission('/custtype/loadadd','')")
+  //  @PreAuthorize("hasPermission('/custtype/loadadd','')")
     public String loadadd(Model model) {
         return "restaurant/custtype/form";
     }
 
     @PostMapping("/add")
-    @PreAuthorize("hasPermission('/custtype/add','')")
+  //  @PreAuthorize("hasPermission('/custtype/add','')")
     @ResponseBody
     public JsonResult add(@RequestBody TCustType custType) {
         if (custType != null) {
@@ -74,7 +74,7 @@
     }
 
     @PostMapping("/delete")
-    @PreAuthorize("hasPermission('/custtype/delete','')")
+ //   @PreAuthorize("hasPermission('/custtype/delete','')")
     @ResponseBody
     public JsonResult delfunc(@RequestParam Integer id) {
         return custTypeService.deleteCusttype(id);
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 7e8d538..3c55565 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
@@ -14,13 +14,12 @@
 @Repository
 public interface OfflineTransDtlDao extends JpaRepository<TOfflineTransDtl, String>, JpaSpecificationExecutor<TTransDtl> {
 
-
     TOfflineTransDtl getByBillno(String billno);
 
-
     @Query(value = "select max(termsqlno) from tb_offlinetransdtl where termid=?1 and accdate=?2 ", nativeQuery=true)
     Integer getMaxSqlnoToday(Integer deviceid, String accdate);
 
+    @Query(value = "from TOfflineTransDtl where termsqlno=?1 and termid=?2 and accdate=?3 ")
     List<TOfflineTransDtl> findByTermsqlnoAndTermidAndAccdate(Integer termsqlno,Integer termid,String accdate);
 
     List<TOfflineTransDtl> findAllByAccdateAndStatusIsNull(String accdate);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java
index 361830a..42d77fb 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java
@@ -73,7 +73,7 @@
     public void setAdderflag(Integer adderflag) {
         this.adderflag = adderflag;
     }
-    @Column(name = "status", length = 1)
+    @Column(name = "status", length = 10)
     public String getStatus() {
         return status;
     }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
index c691ade..a237010 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
@@ -133,7 +133,7 @@
         this.lastsaved = lastsaved;
     }
 
-    @Column(name = "status", length = 1)
+    @Column(name = "status", length = 10)
     public String getStatus() {
         return status;
     }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
index a19c528..c76a7c5 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
@@ -39,427 +39,434 @@
 
 @Service
 public class DeviceDiscountRuleServiceImpl implements DeviceDiscountRuleService {
-  @Autowired
-  private DiscountRuleDao discountRuleDao;
-  @Autowired
-  private DiscountDevbindDao discountDevbindDao;
-  @Autowired
-  private DiscountDetailDao discountDetailDao;
-  @Autowired
-  private SystemUtilService systemUtilService;
-  @Autowired
-  private CustomerDao customerDao;
-  @Autowired
-  private DeviceDao deviceDao;
+    @Autowired
+    private DiscountRuleDao discountRuleDao;
+    @Autowired
+    private DiscountDevbindDao discountDevbindDao;
+    @Autowired
+    private DiscountDetailDao discountDetailDao;
+    @Autowired
+    private SystemUtilService systemUtilService;
+    @Autowired
+    private CustomerDao customerDao;
+    @Autowired
+    private DeviceDao deviceDao;
 
-  @PersistenceContext
-  private EntityManager entityManager;
+    @PersistenceContext
+    private EntityManager entityManager;
 
-  private PageResult<DiscountRuleShowBean> getDiscountRuleBySearch(String rulename, String ruletype, String status, Pageable pageable) {
-    Page<TDiscountRule> page = discountRuleDao.findAll(new Specification<TDiscountRule>() {
-      @Override
-      public Predicate toPredicate(Root<TDiscountRule> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-        List<Predicate> predicates = new ArrayList<>();
-        if (!StringUtil.isEmpty(rulename)) {
-          predicates.add(criteriaBuilder.like(root.get("rulename").as(String.class), "%" + rulename.trim() + "%"));
+    private PageResult<DiscountRuleShowBean> getDiscountRuleBySearch(String rulename, String ruletype, String status, Pageable pageable) {
+        Page<TDiscountRule> page = discountRuleDao.findAll(new Specification<TDiscountRule>() {
+            @Override
+            public Predicate toPredicate(Root<TDiscountRule> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
+                List<Predicate> predicates = new ArrayList<>();
+                if (!StringUtil.isEmpty(rulename)) {
+                    predicates.add(criteriaBuilder.like(root.get("rulename").as(String.class), "%" + rulename.trim() + "%"));
+                }
+                if (!StringUtil.isEmpty(ruletype)) {
+                    predicates.add(criteriaBuilder.equal(root.get("ruletype").as(String.class), ruletype));
+
+                }
+                if (!StringUtil.isEmpty(status)) {
+                    predicates.add(criteriaBuilder.equal(root.get("status").as(String.class), status));
+                }
+                return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
+            }
+        }, pageable);
+        List<DiscountRuleShowBean> result = new ArrayList<>(0);
+        if (null != page && page.getTotalElements() > 0) {
+            for (TDiscountRule rule : page.getContent()) {
+                DiscountRuleShowBean bean = new DiscountRuleShowBean();
+                bean.setRuleid(rule.getRuleid());
+                bean.setRulename(rule.getRulename());
+                bean.setRuletype(rule.getRuletype());
+                bean.setAmount(rule.getAmount());
+                bean.setStatus(rule.getStatus());
+                bean.setDetailStatus(rule.getDetailStatus());
+                bean.setLimitcnt(rule.getLimitcnt());
+                bean.setRemark(rule.getRemark());
+                bean.setStarttime(rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2));
+                bean.setEndtime(rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2));
+                bean.setTimeperiod(bean.getStarttime() + " ~ " + bean.getEndtime());
+                result.add(bean);
+            }
         }
-        if (!StringUtil.isEmpty(ruletype)) {
-          predicates.add(criteriaBuilder.equal(root.get("ruletype").as(String.class), ruletype));
-
-        }
-        if (!StringUtil.isEmpty(status)) {
-          predicates.add(criteriaBuilder.equal(root.get("status").as(String.class), status));
-        }
-        return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
-      }
-    }, pageable);
-    List<DiscountRuleShowBean> result = new ArrayList<>(0);
-    if (null != page && page.getTotalElements() > 0) {
-      for (TDiscountRule rule : page.getContent()) {
-        DiscountRuleShowBean bean = new DiscountRuleShowBean();
-        bean.setRuleid(rule.getRuleid());
-        bean.setRulename(rule.getRulename());
-        bean.setRuletype(rule.getRuletype());
-        bean.setAmount(rule.getAmount());
-        bean.setStatus(rule.getStatus());
-        bean.setDetailStatus(rule.getDetailStatus());
-        bean.setLimitcnt(rule.getLimitcnt());
-        bean.setRemark(rule.getRemark());
-        bean.setStarttime(rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2));
-        bean.setEndtime(rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2));
-        bean.setTimeperiod(bean.getStarttime() + " ~ " + bean.getEndtime());
-        result.add(bean);
-      }
-    }
-    return new PageResult<>(page.getTotalElements(), result);
-  }
-
-  @Override
-  public PageResult<DiscountRuleShowBean> getDiscountRuleInfos(String rulename, String ruletype, int pageNo, int pageSize) {
-    Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("ruleid"));
-    return getDiscountRuleBySearch(rulename, ruletype, null, pageable);
-  }
-
-  @Override
-  public boolean deleteDiscountRule(int ruleid) throws WebCheckException {
-    TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
-    if (null == rule) {
-      throw new WebCheckException("餐补规则不存在!");
-    } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus()) && !RestaurantConstant.STATUS_DISCOUNTRULE_REJECT.equals(rule.getStatus())) {
-      throw new WebCheckException("待审核或驳回的餐补规则才能删除!");
+        return new PageResult<>(page.getTotalElements(), result);
     }
 
-    discountDetailDao.deleteRuleDetailsByRuleid(ruleid); //名单
-    discountDevbindDao.deleteBindByRuleid(ruleid); //绑定设备
-    discountRuleDao.delete(rule);
-    return true;
-  }
-
-  @Override
-  public boolean closeDiscountRule(int ruleid) throws WebCheckException {
-    TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
-    if (null == rule) {
-      throw new WebCheckException("餐补规则不存在!");
-    } else if (RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED.equals(rule.getStatus())) {
-      throw new WebCheckException("餐补规则已经失效!");
-    } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
-      throw new WebCheckException("餐补规则未审核通过,不能关闭");
+    @Override
+    public PageResult<DiscountRuleShowBean> getDiscountRuleInfos(String rulename, String ruletype, int pageNo, int pageSize) {
+        Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("ruleid"));
+        return getDiscountRuleBySearch(rulename, ruletype, null, pageable);
     }
 
+    @Override
+    public boolean deleteDiscountRule(int ruleid) throws WebCheckException {
+        TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+        if (null == rule) {
+            throw new WebCheckException("餐补规则不存在!");
+        } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus()) && !RestaurantConstant.STATUS_DISCOUNTRULE_REJECT.equals(rule.getStatus())) {
+            throw new WebCheckException("待审核或驳回的餐补规则才能删除!");
+        }
+
+        discountDetailDao.deleteRuleDetailsByRuleid(ruleid); //名单
+        discountDevbindDao.deleteBindByRuleid(ruleid); //绑定设备
+        discountRuleDao.delete(rule);
+        return true;
+    }
+
+    @Override
+    public boolean closeDiscountRule(int ruleid) throws WebCheckException {
+        TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+        if (null == rule) {
+            throw new WebCheckException("餐补规则不存在!");
+        } else if (RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED.equals(rule.getStatus())) {
+            throw new WebCheckException("餐补规则已经失效!");
+        } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
+            throw new WebCheckException("餐补规则未审核通过,不能关闭");
+        }
+
 //    if (discountDevbindDao.getBindcntByRuleid(ruleid) > 0) {
 //      throw new WebCheckException("有设备正在使用该餐补规则,请先解绑设备");
 //    }
 
-    rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED);
-    rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
-    discountRuleDao.save(rule);
-    return true;
-  }
-
-  @Override
-  public boolean checkDiscountRulenameExist(String rulename, Integer ruleid) {
-    if (null == ruleid) {
-      if (discountRuleDao.checkRulenameExists(rulename) > 0) {
+        rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED);
+        rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+        discountRuleDao.save(rule);
         return true;
-      }
-    } else {
-      if (discountRuleDao.checkRulenameExists(rulename, ruleid) > 0) {
+    }
+
+    @Override
+    public boolean checkDiscountRulenameExist(String rulename, Integer ruleid) {
+        if (null == ruleid) {
+            if (discountRuleDao.checkRulenameExists(rulename) > 0) {
+                return true;
+            }
+        } else {
+            if (discountRuleDao.checkRulenameExists(rulename, ruleid) > 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private TCustomer getCustomerByCardno(String cardno) {
+        if (!StringUtil.isEmpty(cardno)) {
+            List<TCustomer> list = customerDao.findAllByCardno(cardno.trim());
+            if (!StringUtil.isEmpty(list)) {
+                return list.get(0);
+            }
+        }
+        return null;
+    }
+
+    private boolean checkRuleTimeError(String starttime, String endtime, String cardno, String custid) {
+        Query query = entityManager.createNativeQuery("select count(a.id) from tb_discount_detail a, tb_discount_rule b where a.ruleid=b.ruleid and (b.status='uncheck' or b.status='normal') " +
+                "and a.cardno=:cardno and ((b.starttime<:starttime and b.endtime>:starttime) or (b.starttime<:endtime and b.endtime>:endtime)) ");
+        query.setParameter("cardno", cardno);
+        query.setParameter("starttime", starttime);
+        query.setParameter("endtime", endtime);
+        BigInteger cnt = (BigInteger) query.getSingleResult();
+        if (null != cnt && cnt.longValue() > 0) {
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean saveNewDiscountRule(String rulename, String ruletype, String starttime,
+                                       String endtime, Double amount, Integer limitcnt, MultipartFile file, TOperator oper) throws Exception {
+        TDiscountRule rule = new TDiscountRule();
+        if (discountRuleDao.checkRulenameExists(rulename) > 0) {
+            throw new WebCheckException("餐补名称已经存在!");
+        }
+        rule.setRulename(rulename);
+        rule.setRuletype(ruletype);
+        rule.setStarttime(starttime);
+        rule.setEndtime(endtime);
+        rule.setAmount(amount);
+        rule.setLimitcnt(limitcnt);
+        rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK);
+        rule.setDetailStatus(1);
+        rule.setCreateOperid(oper.getOperid());
+        String systime = systemUtilService.getSysdatetime().getHostdatetime();
+        rule.setCreatetime(systime);
+        rule.setLastsaved(systime);
+        rule.setVerno(1);
+        rule = discountRuleDao.save(rule);
+
+        String filename = file.getOriginalFilename();
+        if (!filename.endsWith(".xls") && !filename.endsWith(".xlsx")) {
+            throw new WebCheckException("文件格式错误,请选择excel文件");
+        }
+        List<Object[][]> excelData = null;
+        try {
+            if (filename.endsWith(".xls")) {
+                excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
+            } else {
+                excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
+            }
+            if (null == excelData || excelData.size() < 1) {
+                throw new WebCheckException("excel文件解析错误");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new WebCheckException("模板格式错误,请重新下载模板");
+        }
+
+
+        int index_cardno = -1;
+        int index_name = -1;
+        Object[] titleRow = excelData.get(0)[0]; //sheet1表头
+        for (int i = 0; i < titleRow.length; i++) {
+            if ("市民卡号".equals(titleRow[i])) {
+                index_cardno = i;
+                continue;
+            } else if ("姓名".equals(titleRow[i])) {
+                index_name = i;
+                continue;
+            }
+        }
+        if (index_cardno == -1 || index_name == -1 || excelData.get(0).length < 2) {
+            throw new WebCheckException("名单模板表头不能修改,且必须包含数据!");
+        }
+
+        List<String> successCardnos = new ArrayList<>(0);
+        List<String> errmsgList = new ArrayList<>(0);
+
+        try {
+            for (int n = 1; n < excelData.get(0).length; n++) {
+                String msg = "";
+                Object[] row = excelData.get(0)[n];
+                String cardno = row[index_cardno] == null ? null : row[index_cardno].toString().trim();
+                String name = row[index_name] == null ? null : row[index_name].toString().trim();
+                if (StringUtil.isEmpty(cardno)) {
+                    msg += ",市民卡号为空";
+                }
+                if (StringUtil.isEmpty(name)) {
+                    msg += ",姓名为空";
+                }
+                TCustomer customer = getCustomerByCardno(cardno);
+                if (!StringUtil.isEmpty(cardno)) {
+                    if (null == customer) {
+                        msg += ",市民卡用户不存在";
+                    } else if (!customer.getCustname().equals(name)) {
+                        msg += ",市民卡号与姓名不匹配!";
+                    }
+                }
+                if (!StringUtil.isEmpty(cardno) && successCardnos.contains(cardno)) {
+                    msg += ",市民卡号重复!";
+                } else if (null != customer && checkRuleTimeError(starttime, endtime, cardno, customer.getCustid())) {
+                    msg += ",市民卡号[" + cardno + "]存在规则时间段冲突!";
+                }
+
+
+                if (!StringUtil.isEmpty(msg)) {
+                    errmsgList.add("第" + (n + 1) + "行数据错误" + msg);
+                } else {
+                    TDiscountDetail detail = new TDiscountDetail();
+                    detail.setRuleid(rule.getRuleid());
+                    detail.setCardno(cardno);
+                    detail.setUsername(name);
+                    detail.setUserid(customer.getCustid() + "");
+                    detail.setStatus("uncheck");
+                    detail.setLastsaved(systime);
+                    discountDetailDao.save(detail); //保存明细
+
+                    successCardnos.add(cardno);
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new WebCheckException("模板格式有误,请确保卡号为文本格式");
+        }
+
+        if (!StringUtil.isEmpty(errmsgList)) {
+            StringBuffer errmsg = new StringBuffer("导入失败,名单存在错误!");
+            for (int j = 0; j < errmsgList.size(); j++) {
+                errmsg.append("<br/>" + errmsgList.get(j));
+                if (j > 10) {
+                    errmsg.append("<br/>错误太多,请仔细核对名单后再上传!");
+                }
+            }
+            throw new WebCheckException(errmsg.toString());
+        }
         return true;
-      }
-    }
-    return false;
-  }
-
-  private TCustomer getCustomerByCardno(String cardno) {
-    if (!StringUtil.isEmpty(cardno)) {
-      List<TCustomer> list = customerDao.findAllByCardno(cardno.trim());
-      if (!StringUtil.isEmpty(list)) {
-        return list.get(0);
-      }
-    }
-    return null;
-  }
-
-  private boolean checkRuleTimeError(String starttime, String endtime, String cardno, String custid) {
-    Query query = entityManager.createNativeQuery("select count(a.id) from tb_discount_detail a, tb_discount_rule b where a.ruleid=b.ruleid and (b.status='uncheck' or b.status='normal') " +
-        "and a.cardno=:cardno and ((b.starttime<:starttime and b.endtime>:starttime) or (b.starttime<:endtime and b.endtime>:endtime)) ");
-    query.setParameter("cardno", cardno);
-    query.setParameter("starttime", starttime);
-    query.setParameter("endtime", endtime);
-    BigInteger cnt = (BigInteger) query.getSingleResult();
-    if (null != cnt && cnt.longValue() > 0) {
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  public boolean saveNewDiscountRule(String rulename, String ruletype, String starttime,
-                                     String endtime, Double amount, Integer limitcnt, MultipartFile file, TOperator oper) throws Exception {
-    TDiscountRule rule = new TDiscountRule();
-    if (discountRuleDao.checkRulenameExists(rulename) > 0) {
-      throw new WebCheckException("餐补名称已经存在!");
-    }
-    rule.setRulename(rulename);
-    rule.setRuletype(ruletype);
-    rule.setStarttime(starttime);
-    rule.setEndtime(endtime);
-    rule.setAmount(amount);
-    rule.setLimitcnt(limitcnt);
-    rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK);
-    rule.setDetailStatus(1);
-    rule.setCreateOperid(oper.getOperid());
-    String systime = systemUtilService.getSysdatetime().getHostdatetime();
-    rule.setCreatetime(systime);
-    rule.setLastsaved(systime);
-    rule.setVerno(1);
-    rule = discountRuleDao.save(rule);
-
-    String filename = file.getOriginalFilename();
-    if (!filename.endsWith(".xls") && !filename.endsWith(".xlsx")) {
-      throw new WebCheckException("文件格式错误,请选择excel文件");
-    }
-    List<Object[][]> excelData = null;
-    try{
-      if (filename.endsWith(".xls")) {
-        excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
-      } else {
-        excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
-      }
-      if (null == excelData || excelData.size() < 1) {
-        throw new WebCheckException("excel文件解析错误");
-      }
-    }catch (Exception e){
-      e.printStackTrace();
-      throw new WebCheckException("模板格式错误,请重新下载模板");
     }
 
-
-    int index_cardno = -1;
-    int index_name = -1;
-    Object[] titleRow = excelData.get(0)[0]; //sheet1表头
-    for (int i = 0; i < titleRow.length; i++) {
-      if ("市民卡号".equals(titleRow[i])) {
-        index_cardno = i;
-        continue;
-      } else if ("姓名".equals(titleRow[i])) {
-        index_name = i;
-        continue;
-      }
-    }
-    if (index_cardno == -1 || index_name == -1 || excelData.get(0).length < 2) {
-      throw new WebCheckException("名单模板表头不能修改,且必须包含数据!");
-    }
-
-    List<String> successCardnos = new ArrayList<>(0);
-    List<String> errmsgList = new ArrayList<>(0);
-    for (int n = 1; n < excelData.get(0).length; n++) {
-      String msg = "";
-      Object[] row = excelData.get(0)[n];
-      String cardno = row[index_cardno] == null ? null : row[index_cardno].toString().trim();
-      String name = row[index_name] == null ? null : row[index_name].toString().trim();
-      if (StringUtil.isEmpty(cardno)) {
-        msg += ",市民卡号为空";
-      }
-      if (StringUtil.isEmpty(name)) {
-        msg += ",姓名为空";
-      }
-      TCustomer customer = getCustomerByCardno(cardno);
-      if (!StringUtil.isEmpty(cardno)) {
-        if (null == customer) {
-          msg += ",市民卡用户不存在";
-        } else if (!customer.getCustname().equals(name)) {
-          msg += ",市民卡号与姓名不匹配!";
+    @Override
+    public PageResult<TDiscountDetail> getDiscountRuleDetails(String searchkey, int ruleid, int pageNo, int pageSize) {
+        StringBuffer querySql = new StringBuffer("from TDiscountDetail t where t.ruleid=:rlid ");
+        StringBuffer countSql = new StringBuffer("select count(t.id) as cnt from TDiscountDetail t where t.ruleid=:rlid ");
+        if (!StringUtil.isEmpty(searchkey)) {
+            querySql.append(" and (t.cardno like :str or t.username like :str) ");
+            countSql.append(" and (t.cardno like :str or t.username like :str) ");
         }
-      }
-      if (!StringUtil.isEmpty(cardno) && successCardnos.contains(cardno)) {
-        msg += ",市民卡号重复!";
-      } else if (null != customer && checkRuleTimeError(starttime, endtime, cardno, customer.getCustid())) {
-        msg += ",市民卡号[" + cardno + "]存在规则时间段冲突!";
-      }
-
-
-      if (!StringUtil.isEmpty(msg)) {
-        errmsgList.add("第" + (n+1) + "行数据错误" + msg);
-      } else {
-        TDiscountDetail detail = new TDiscountDetail();
-        detail.setRuleid(rule.getRuleid());
-        detail.setCardno(cardno);
-        detail.setUsername(name);
-        detail.setUserid(customer.getCustid() + "");
-        detail.setStatus("uncheck");
-        detail.setLastsaved(systime);
-        discountDetailDao.save(detail); //保存明细
-
-        successCardnos.add(cardno);
-      }
-    }
-
-    if (!StringUtil.isEmpty(errmsgList)) {
-      StringBuffer errmsg = new StringBuffer("导入失败,名单存在错误!");
-      for (int j = 0; j < errmsgList.size(); j++) {
-        errmsg.append("<br/>" + errmsgList.get(j));
-        if (j > 10) {
-          errmsg.append("<br/>错误太多,请仔细核对名单后再上传!");
+        querySql.append(" order by t.cardno ");
+        Query query = entityManager.createQuery(querySql.toString());
+        Query countQuery = entityManager.createQuery(countSql.toString());
+        query.setParameter("rlid", ruleid);
+        countQuery.setParameter("rlid", ruleid);
+        if (!StringUtil.isEmpty(searchkey)) {
+            query.setParameter("str", "%" + searchkey.trim() + "%");
+            countQuery.setParameter("str", "%" + searchkey.trim() + "%");
         }
-      }
-      throw new WebCheckException(errmsg.toString());
-    }
-    return true;
-  }
-
-  @Override
-  public PageResult<TDiscountDetail> getDiscountRuleDetails(String searchkey, int ruleid, int pageNo, int pageSize) {
-    StringBuffer querySql = new StringBuffer("from TDiscountDetail t where t.ruleid=:rlid ");
-    StringBuffer countSql = new StringBuffer("select count(t.id) as cnt from TDiscountDetail t where t.ruleid=:rlid ");
-    if (!StringUtil.isEmpty(searchkey)) {
-      querySql.append(" and (t.cardno like :str or t.username like :str) ");
-      countSql.append(" and (t.cardno like :str or t.username like :str) ");
-    }
-    querySql.append(" order by t.cardno ");
-    Query query = entityManager.createQuery(querySql.toString());
-    Query countQuery = entityManager.createQuery(countSql.toString());
-    query.setParameter("rlid", ruleid);
-    countQuery.setParameter("rlid", ruleid);
-    if (!StringUtil.isEmpty(searchkey)) {
-      query.setParameter("str", "%" + searchkey.trim() + "%");
-      countQuery.setParameter("str", "%" + searchkey.trim() + "%");
-    }
-    query.setFirstResult((pageNo - 1) * pageSize);
-    query.setMaxResults(pageSize); //分页显示
-    List<TDiscountDetail> list = query.getResultList();
-    Long count = (Long) countQuery.getSingleResult();
-    return new PageResult<>(count.longValue(), list);
-  }
-
-
-  @Override
-  public PageResult<DiscountRuleShowBean> getCheckDiscountRuleInfos(String status, int pageNo, int pageSize) {
-    Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createtime"));
-    return getDiscountRuleBySearch(null, null, status, pageable);
-  }
-
-  @Override
-  public boolean doCheckDiscountRule(int ruleid, boolean passflag, String reason, TOperator oper) throws Exception {
-    TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
-    if (null == rule) {
-      throw new WebCheckException("餐补规则不存在!");
-    } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus())) {
-      throw new WebCheckException("餐补规则非待审核状态");
+        query.setFirstResult((pageNo - 1) * pageSize);
+        query.setMaxResults(pageSize); //分页显示
+        List<TDiscountDetail> list = query.getResultList();
+        Long count = (Long) countQuery.getSingleResult();
+        return new PageResult<>(count.longValue(), list);
     }
 
-    rule.setCheckOperid(oper.getOperid());
-    rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
-    if (passflag) {
-      rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
-      rule.setRemark(null);
-    } else {
-      rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_REJECT);
-      rule.setRemark(reason);
-    }
-    discountRuleDao.save(rule);
-    discountDetailDao.updateRuleDetailStatusByRuleid(rule.getStatus(), rule.getRuleid());
-    return true;
-  }
 
-  @Override
-  public List<DiscountRuleSelectBean> getNormalDiscountRules() {
-    List<TDiscountRule> list = discountRuleDao.getDiscountRuleByStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
-    if (!StringUtil.isEmpty(list)) {
-      List<DiscountRuleSelectBean> result = new ArrayList<>(0);
-      for (TDiscountRule rule : list) {
-        DiscountRuleSelectBean bean = new DiscountRuleSelectBean();
-        bean.setRuleid(rule.getRuleid());
-        String period = rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2) + " ~ " + rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2);
-        bean.setRulename(rule.getRulename()+"("+period+")");
-        bean.setTimeperiod(period);
-        result.add(bean);
-      }
-      return result;
-    }
-    return new ArrayList<>(0);
-  }
-
-  @Override
-  public PageResult<DiscountRuleBindShowBean> getDiscountRuleDevBindInfo(String searchkey, int pageNo, int pageSize) {
-    StringBuffer querySql = new StringBuffer("select t.id,t.deviceid,b.devicename,b.devphyid,t.ruleid,a.rulename,a.status as rulestatus,t.createtime " +
-        " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
-    StringBuffer countSql = new StringBuffer("select count(t.id) as cnt " +
-        " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
-    if (!StringUtil.isEmpty(searchkey)) {
-      querySql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
-      countSql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
-    }
-    querySql.append(" order by t.createtime desc ");
-    Query query = entityManager.createNativeQuery(querySql.toString());
-    Query countQuery = entityManager.createNativeQuery(countSql.toString());
-    if (!StringUtil.isEmpty(searchkey)) {
-      query.setParameter("str", "%" + searchkey.trim() + "%");
-      countQuery.setParameter("str", "%" + searchkey.trim() + "%");
-    }
-    query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DiscountRuleBindShowBean.class));
-    query.setFirstResult((pageNo - 1) * pageSize);
-    query.setMaxResults(pageSize); //分页显示
-    List<DiscountRuleBindShowBean> list = query.getResultList();
-    BigInteger count = (BigInteger) countQuery.getSingleResult();
-    return new PageResult<>(count.longValue(), list);
-  }
-
-  @Override
-  public TDiscountDevbind getDiscountDevbindById(String id) {
-    if (!StringUtil.isEmpty(id)) {
-      return discountDevbindDao.getDiscountDevbindById(id.trim());
-    }
-    return null;
-  }
-
-  @Override
-  public boolean deleteDiscountDevbind(TDiscountDevbind bind) {
-    if (null != bind) {
-      discountDevbindDao.delete(bind);
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  public PageResult<DevparaBinddevShowBean> searchRuleBindDevices(Integer devgroupid, String searchkey, int ruleid) {
-    List<Integer> chirdGroupids = null;
-    if (null != devgroupid) {
-      Query chirdGroupQuery = entityManager.createNativeQuery(" WITH  RECURSIVE  r  AS ( " +
-          " SELECT * FROM tb_devicegroup WHERE devgroupid = :gid " +
-          " union ALL " +
-          " SELECT a.* FROM tb_devicegroup a, r WHERE a.pid = r.devgroupid ) " +
-          " SELECT devgroupid FROM r ORDER BY devgroupid ");
-      chirdGroupQuery.setParameter("gid", devgroupid.intValue());
-      chirdGroupids = chirdGroupQuery.getResultList(); //递归查询所有的子节点
+    @Override
+    public PageResult<DiscountRuleShowBean> getCheckDiscountRuleInfos(String status, int pageNo, int pageSize) {
+        Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createtime"));
+        return getDiscountRuleBySearch(null, null, status, pageable);
     }
 
-    StringBuffer sql = new StringBuffer("select t.id as deviceid,t.devicename,t.devphyid,t.devgroupid,a.groupname as devgroupname " +
-        " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid " +
-        " left join TB_DISCOUNT_DEVBIND b on t.id=b.deviceid and b.ruleid=:rlid where b.id is null and t.state=1 ");
-    if (!StringUtil.isEmpty(chirdGroupids)) {
-      sql.append(" and t.devgroupid in (" + StringUtils.join(chirdGroupids.toArray(), ",") + ") ");
-    }
-    if (!StringUtil.isEmpty(searchkey)) {
-      sql.append(" and (t.devicename like :str or t.devphyid like :str) ");
-    }
-    sql.append(" order by t.id ");
-    Query query = entityManager.createNativeQuery(sql.toString());
-    if (!StringUtil.isEmpty(searchkey)) {
-      query.setParameter("str", "%" + searchkey.trim() + "%");
-    }
-    query.setParameter("rlid", ruleid);
-    query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DevparaBinddevShowBean.class));
-    List<DevparaBinddevShowBean> list = query.getResultList();
-    return new PageResult<>(list);
-  }
+    @Override
+    public boolean doCheckDiscountRule(int ruleid, boolean passflag, String reason, TOperator oper) throws Exception {
+        TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+        if (null == rule) {
+            throw new WebCheckException("餐补规则不存在!");
+        } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus())) {
+            throw new WebCheckException("餐补规则非待审核状态");
+        }
 
-  @Override
-  public boolean saveRuleBindDevices(int ruleid, List<Integer> deviceIds, TOperator oper) throws WebCheckException {
-    TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
-    if (null == rule) {
-      throw new WebCheckException("所选餐补规则不存在");
-    } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
-      throw new WebCheckException("所选餐补规则状态异常");
+        rule.setCheckOperid(oper.getOperid());
+        rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+        if (passflag) {
+            rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
+            rule.setRemark(null);
+        } else {
+            rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_REJECT);
+            rule.setRemark(reason);
+        }
+        discountRuleDao.save(rule);
+        discountDetailDao.updateRuleDetailStatusByRuleid(rule.getStatus(), rule.getRuleid());
+        return true;
     }
 
-    for (Integer id : deviceIds) {
-      TDevice device = deviceDao.findTDeviceById(id);
-      if (null == device) {
-        throw new WebCheckException("终端编号为[" + id + "]的设备不存在");
-      } else if (1 != device.getState()) {
-        throw new WebCheckException("终端编号为[" + id + "]的设备状态异常");
-      }
-
-      TDiscountDevbind bind = new TDiscountDevbind();
-      bind.setRuleid(rule.getRuleid());
-      bind.setDeviceid(device.getId());
-      bind.setCreateOperid(oper == null ? null : oper.getOperid());
-      bind.setCreatetime(systemUtilService.getSysdatetime().getHostdatetime());
-      discountDevbindDao.save(bind);
+    @Override
+    public List<DiscountRuleSelectBean> getNormalDiscountRules() {
+        List<TDiscountRule> list = discountRuleDao.getDiscountRuleByStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
+        if (!StringUtil.isEmpty(list)) {
+            List<DiscountRuleSelectBean> result = new ArrayList<>(0);
+            for (TDiscountRule rule : list) {
+                DiscountRuleSelectBean bean = new DiscountRuleSelectBean();
+                bean.setRuleid(rule.getRuleid());
+                String period = rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2) + " ~ " + rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2);
+                bean.setRulename(rule.getRulename() + "(" + period + ")");
+                bean.setTimeperiod(period);
+                result.add(bean);
+            }
+            return result;
+        }
+        return new ArrayList<>(0);
     }
-    return true;
-  }
+
+    @Override
+    public PageResult<DiscountRuleBindShowBean> getDiscountRuleDevBindInfo(String searchkey, int pageNo, int pageSize) {
+        StringBuffer querySql = new StringBuffer("select t.id,t.deviceid,b.devicename,b.devphyid,t.ruleid,a.rulename,a.status as rulestatus,t.createtime " +
+                " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
+        StringBuffer countSql = new StringBuffer("select count(t.id) as cnt " +
+                " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
+        if (!StringUtil.isEmpty(searchkey)) {
+            querySql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
+            countSql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
+        }
+        querySql.append(" order by t.createtime desc ");
+        Query query = entityManager.createNativeQuery(querySql.toString());
+        Query countQuery = entityManager.createNativeQuery(countSql.toString());
+        if (!StringUtil.isEmpty(searchkey)) {
+            query.setParameter("str", "%" + searchkey.trim() + "%");
+            countQuery.setParameter("str", "%" + searchkey.trim() + "%");
+        }
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DiscountRuleBindShowBean.class));
+        query.setFirstResult((pageNo - 1) * pageSize);
+        query.setMaxResults(pageSize); //分页显示
+        List<DiscountRuleBindShowBean> list = query.getResultList();
+        BigInteger count = (BigInteger) countQuery.getSingleResult();
+        return new PageResult<>(count.longValue(), list);
+    }
+
+    @Override
+    public TDiscountDevbind getDiscountDevbindById(String id) {
+        if (!StringUtil.isEmpty(id)) {
+            return discountDevbindDao.getDiscountDevbindById(id.trim());
+        }
+        return null;
+    }
+
+    @Override
+    public boolean deleteDiscountDevbind(TDiscountDevbind bind) {
+        if (null != bind) {
+            discountDevbindDao.delete(bind);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public PageResult<DevparaBinddevShowBean> searchRuleBindDevices(Integer devgroupid, String searchkey, int ruleid) {
+        List<Integer> chirdGroupids = null;
+        if (null != devgroupid) {
+            Query chirdGroupQuery = entityManager.createNativeQuery(" WITH  RECURSIVE  r  AS ( " +
+                    " SELECT * FROM tb_devicegroup WHERE devgroupid = :gid " +
+                    " union ALL " +
+                    " SELECT a.* FROM tb_devicegroup a, r WHERE a.pid = r.devgroupid ) " +
+                    " SELECT devgroupid FROM r ORDER BY devgroupid ");
+            chirdGroupQuery.setParameter("gid", devgroupid.intValue());
+            chirdGroupids = chirdGroupQuery.getResultList(); //递归查询所有的子节点
+        }
+
+        StringBuffer sql = new StringBuffer("select t.id as deviceid,t.devicename,t.devphyid,t.devgroupid,a.groupname as devgroupname " +
+                " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid " +
+                " left join TB_DISCOUNT_DEVBIND b on t.id=b.deviceid and b.ruleid=:rlid where b.id is null and t.state=1 ");
+        if (!StringUtil.isEmpty(chirdGroupids)) {
+            sql.append(" and t.devgroupid in (" + StringUtils.join(chirdGroupids.toArray(), ",") + ") ");
+        }
+        if (!StringUtil.isEmpty(searchkey)) {
+            sql.append(" and (t.devicename like :str or t.devphyid like :str) ");
+        }
+        sql.append(" order by t.id ");
+        Query query = entityManager.createNativeQuery(sql.toString());
+        if (!StringUtil.isEmpty(searchkey)) {
+            query.setParameter("str", "%" + searchkey.trim() + "%");
+        }
+        query.setParameter("rlid", ruleid);
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DevparaBinddevShowBean.class));
+        List<DevparaBinddevShowBean> list = query.getResultList();
+        return new PageResult<>(list);
+    }
+
+    @Override
+    public boolean saveRuleBindDevices(int ruleid, List<Integer> deviceIds, TOperator oper) throws WebCheckException {
+        TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+        if (null == rule) {
+            throw new WebCheckException("所选餐补规则不存在");
+        } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
+            throw new WebCheckException("所选餐补规则状态异常");
+        }
+
+        for (Integer id : deviceIds) {
+            TDevice device = deviceDao.findTDeviceById(id);
+            if (null == device) {
+                throw new WebCheckException("终端编号为[" + id + "]的设备不存在");
+            } else if (1 != device.getState()) {
+                throw new WebCheckException("终端编号为[" + id + "]的设备状态异常");
+            }
+
+            TDiscountDevbind bind = new TDiscountDevbind();
+            bind.setRuleid(rule.getRuleid());
+            bind.setDeviceid(device.getId());
+            bind.setCreateOperid(oper == null ? null : oper.getOperid());
+            bind.setCreatetime(systemUtilService.getSysdatetime().getHostdatetime());
+            discountDevbindDao.save(bind);
+        }
+        return true;
+    }
 
 }
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 a21021e..4ba2770 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
@@ -86,21 +86,28 @@
             transDtlDao.save(dtl);
             return null;
         }
-
-        TOfflineTransDtl targetDtl=transDtlDao.findById(dtl.getBillno()).get();
-       
+        TOfflineTransDtl targetDtl=null;
+        Optional<TOfflineTransDtl> odtl=transDtlDao.findById(dtl.getBillno());
+        if(odtl.isPresent()){
+            targetDtl=odtl.get();
+        }else{
+            targetDtl=new TOfflineTransDtl();
+        }
+        Integer osqlno=targetDtl.getTermsqlno();
         TOfflineTransDtl revDtl=new TOfflineTransDtl();
         BeanUtils.copyProperties(targetDtl,revDtl);
         revDtl.setBillno(systemUtilService.getRefno());
         revDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_INIT);
-        revDtl.setAccdate(DateUtil.getNow("yyyyMMdd"));
-        revDtl.setAcctime(DateUtil.getNow("HHmmss"));
+        revDtl.setTransdate(DateUtil.getNow("yyyyMMdd"));
+        revDtl.setTranstime(DateUtil.getNow("HHmmss"));
         revDtl.setRevbillno(dtl.getBillno());
+        revDtl.setTermsqlno(dtl.getTermsqlno());
         revDtl.setTranstype(RestaurantConstant.TRANSTYPE_TRANSDTL_REVERT);
         revDtl.setAmount(targetDtl.getAmount()*-1.00);
         transDtlDao.save(revDtl);
-        targetDtl.setRevflag(1);
-        transDtlDao.save(targetDtl);
+        TOfflineTransDtl offlineTransDtl=odtl.get();
+        offlineTransDtl.setRevflag(1);
+        transDtlDao.save(offlineTransDtl);
         return JsonResult.ok("操作成功");
     }
 
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 add5d95..e004451 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
@@ -33,10 +33,7 @@
 import javax.persistence.criteria.Root;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class TransDtlServiceImpl implements TransDtlService {
@@ -158,10 +155,15 @@
 
     @Override
     public JsonResult revertTransdtl(TTransDtl dtl) {
-        TTransDtl targetDtl=transDtlDao.findById(dtl.getBillno()).get();
+        TTransDtl targetDtl=null;
+        Optional<TTransDtl> odtl=transDtlDao.findById(dtl.getBillno());
+        if(odtl.isPresent()){
+            targetDtl=odtl.get();
+        }
         if(null==targetDtl){
             return JsonResult.error("未查询到目标流水");
         }
+        Integer otermsqlno=targetDtl.getTermsqlno();
         TTransDtl revDtl=new TTransDtl();
         BeanUtils.copyProperties(targetDtl,revDtl);
         revDtl.setBillno(systemUtilService.getRefno());
@@ -175,10 +177,12 @@
         revDtl.setRevbillno(dtl.getBillno());
         revDtl.setAttr1(dtl.getAttr1());
         revDtl.setStatus(dtl.getStatus());
+        revDtl.setTermsqlno(dtl.getTermsqlno());
         revDtl.setTranstype(RestaurantConstant.TRANSTYPE_TRANSDTL_REVERT);
         revDtl.setAmount(targetDtl.getAmount()*-1.00);
         transDtlDao.save(revDtl);
         targetDtl.setRevflag(1);
+        targetDtl.setTermsqlno(otermsqlno);
         transDtlDao.save(targetDtl);
         return JsonResult.ok("操作成功");
     }
@@ -207,7 +211,7 @@
         if(!StringUtil.isEmpty(list)){
             AmountCountBean acb = list.get(0);
             ManageFeeAmtBean bean = new ManageFeeAmtBean();
-            bean.setManagefeecnt(acb.getTotalcnt());
+            bean.setManagefeecnt(acb.getTotalcnt().longValue());
             bean.setManagefeeamt(acb.getTotalamt() == null ? 0 : Math.round(acb.getTotalamt() * 100));
             return bean;
         }
@@ -228,7 +232,7 @@
         if (!StringUtil.isEmpty(list)) {
             AmountCountBean acb = list.get(0);
             SalesAmtBean bean = new SalesAmtBean();
-            bean.setSalescnt(acb.getTotalcnt());
+            bean.setSalescnt(acb.getTotalcnt().longValue());
             bean.setSalesamt(acb.getTotalamt() == null ? 0 : Math.round(acb.getTotalamt() * 100));
             return bean;
         }
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 2e222d2..c555d6c 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -28,7 +28,7 @@
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_offline_days', 1, '90', '0', '脱机使用最大天数 ([1-90] 单位:天)', '7', 'N');
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_pay_cnt', 1, '999999', '1', '卡最大使用次数 ([1-999999])', '65535', 'N');
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('min_cardbal', 1, '99999', '0', '最小卡余额 ([0-99999] 单位:分)', '1', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('offline_flag', 1, NULL, NULL, '脱机消费时限开关 (0-关闭, 1-开启)', '0', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('offline_flag', 1, NULL, NULL, '脱机消费时限开关 (0-关闭, 1-开启)', '1', 'B');
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('once_limit_amt', 1, NULL, NULL, '单笔消费限额 ([1-9999] 单位:分)', '1000', 'N');
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('return_flag', 1, NULL, NULL, '消费撤销开关 (0-关闭, 1-开启)', '1', 'B');
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('timeout', 1, '9999', '10', '超时时间 ([10-9999] 单位:秒)', '90', 'N');
@@ -269,6 +269,17 @@
 INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f72009a', 90, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f73009b', 88, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb14005f', 33, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150061', 39, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150062', 34, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150063', 40, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150064', 37, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150065', 36, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150066', 35, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbca060016cbca3a983006a', 27, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+
+
+
 
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (4, '1', 4, '添加功能', '/function/add');
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (5, '', 4, '添加父功能', '/function/loadadd');
@@ -351,10 +362,10 @@
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (88, '', 30, '查询', '/transdtlrev/index');
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (89, '', 30, '加载冲正页面', '/transdtlrev/loadrevert');
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (90, '', 30, '冲正', '/transdtlrev/revert');
-INSERT INTO "tb_resource"(id,code,function_id,name,uri) VALUES 91, '', 1, '加载添加', '/custtype/loadadd');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (92, '', 1, '添加', '/custtype/add');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (93, '', 1, '修改', '/custtype/update');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (94, '', 1, '删除', '/custtype/delete');
+INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (91, '', 1, '查询', '/custtype/index');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (92, '', 1, '添加', '/custtype/add');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (93, '', 1, '修改', '/custtype/update');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (94, '', 1, '删除', '/custtype/delete');
 
 INSERT INTO "tb_role" (roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename) VALUES ('d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '20190101000000', 0, '', 'ROLE_ADMIN', '超级管理员', '超级管理员');
 INSERT INTO "tb_role" (roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename) VALUES ('2c9cab836a8af5d5016a8af6ece20000', '20190506102639', 1, '', 'ROLE_ADMIN', '系统管理员', '系统管理员');
diff --git a/src/main/resources/static/custom/module/admin.js b/src/main/resources/static/custom/module/admin.js
index e15cfdf..7f03260 100755
--- a/src/main/resources/static/custom/module/admin.js
+++ b/src/main/resources/static/custom/module/admin.js
@@ -212,7 +212,7 @@
         },

         formatDate:function (str) {

             if (str == null || str == "") {

-                return;

+                return '';

             }

             switch (str.length) {

                 case 8:

diff --git a/src/main/resources/templates/restaurant/devpara/devpara.html b/src/main/resources/templates/restaurant/devpara/devpara.html
index 5525d8d..d460615 100644
--- a/src/main/resources/templates/restaurant/devpara/devpara.html
+++ b/src/main/resources/templates/restaurant/devpara/devpara.html
@@ -51,10 +51,7 @@
                         }},
                     {
                         field: 'lastsaved', title: '更新时间', align: 'center', templet: function (d) {
-                            if(d.lastsaved!=null){
-                                return admin.formatDate(d.lastsaved);
-                            }
-                           return '';
+                            return admin.formatDate(d.lastsaved);
                         }
                     },
                     {align: 'center', title: '操作', width: 250, toolbar: '#devparagroup-table-bar',  fixed: 'right'}
diff --git a/src/main/resources/templates/restaurant/transdtlrev/index.html b/src/main/resources/templates/restaurant/transdtlrev/index.html
index 6a0dc4b..6b2d2c0 100644
--- a/src/main/resources/templates/restaurant/transdtlrev/index.html
+++ b/src/main/resources/templates/restaurant/transdtlrev/index.html
@@ -143,7 +143,7 @@
         });
 
         let showModel = function (data) {
-            let title = data ? '修改设备' : '添加设备';
+            let title = data ? '冲正' : '冲正';
             admin.putTempData('t_dtl', data);
             admin.popupCenter({
                 title: title,