前置对接pos机修改
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 c443ae8..f3c454a 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
@@ -45,6 +45,7 @@
 
     @Override
     public CitizenPayResponse citizencardPayFinish(CitizenCardPayfinishParam param) {
-        return null;
+        CitizenPayResponse resp =citizenCardPayProxy.citizencardPayFinish(param);
+        return resp;
     }
 }
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 0451c78..9bb853f 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
@@ -9,12 +9,13 @@
 import com.supwisdom.dlpay.framework.util.DateUtil;
 import com.supwisdom.dlpay.api.util.ErrorCode;
 import com.supwisdom.dlpay.framework.service.SystemUtilService;
-import com.supwisdom.dlpay.framework.util.MoneyUtil;
 import com.supwisdom.dlpay.framework.util.StringUtil;
-import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
+import com.supwisdom.dlpay.restaurant.bean.DiscountBean;
 import com.supwisdom.dlpay.restaurant.bean.ManageFeeAmtBean;
 import com.supwisdom.dlpay.restaurant.bean.SalesAmtBean;
 import com.supwisdom.dlpay.restaurant.dao.DevparaBindDao;
+import com.supwisdom.dlpay.restaurant.dao.DiscountDetailDao;
+import com.supwisdom.dlpay.restaurant.dao.DiscountRuleDao;
 import com.supwisdom.dlpay.restaurant.dao.MealTypeDao;
 import com.supwisdom.dlpay.restaurant.domain.*;
 import com.supwisdom.dlpay.restaurant.service.*;
@@ -55,8 +56,9 @@
     @Autowired
     private PayApiService payApiService;
     @Autowired
-    private CitizenCardPayProxy citizenCardPayProxy;
-
+    private DiscountRuleDao discountRuleDao;
+    @Autowired
+    private DeviceDiscountRuleService deviceDiscountRuleService;
 
 
     @Override
@@ -209,6 +211,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);*/
         resp.setBillno(tTransdtl.getBillno());
         resp.setRetcode(ErrorCode.ERRIF_OK);
         resp.setAnonymous(false);
@@ -236,6 +246,14 @@
             resp.setRetmsg("交易参考号" + req.getBillno() + "不存在");
             return resp;
         }
+
+        TDevice tDevice = deviceService.getDeviceByDevphyid(req.getDevphyid());
+        if (tDevice == null) {
+            resp.setRetcode(ErrorCode.ERRIF_POS_NOREG);
+            resp.setRetmsg("设备不存在");
+            return resp;
+        }
+
         TCustomer cus = customerService.getCustomerByCustid(tTransdtl.getCustid());
         if (null == cus) {
             resp.setRetcode(ErrorCode.ERRIF_POSDTL_NOTEXIST);
@@ -244,43 +262,50 @@
         }
 
         Integer extamount = 0; //TODO:改 餐补规则的应用??
-        if (cus.getCusttype() == 1) {
-            extamount += 100;
-        }
+   /*     Integer posamount=req.getAmount();
+        DiscountBean discountBean=deviceDiscountRuleService.getCustomerDiscount(tDevice.getId(),req.getTermtime().substring(0,4));
+        if(null!=discountBean){
+            String
+        }*/
 
-        Integer posamount=req.getAmount();
         tTransdtl.setAmount(req.getAmount() / 100.0);
         tTransdtl.setManagefee(extamount / 100.0); //managefeetype :mealer discount
         tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_WAIT);
-        transDtlService.saveTransdtl(tTransdtl);
+        TTransDtl dtl=transDtlService.saveTransdtl(tTransdtl);
 
         CitizenCardPayinitParam param=new CitizenCardPayinitParam();
-        param.setBillno(tTransdtl.getBillno());
-        param.setShopaccno(tTransdtl.getShopid());
-        param.setTransdate(tTransdtl.getTransdate());
-        param.setTranstime(tTransdtl.getTranstime());
-        param.setCardNo(tTransdtl.getCardno());
-        param.setAmount(MoneyUtil.YuanToFen(tTransdtl.getAmount()));
+        param.setBillno(dtl.getBillno());
+        param.setShopaccno(dtl.getShopid());
+        param.setTransdate(dtl.getTransdate());
+        param.setTranstime(dtl.getTranstime());
+        param.setCardNo(dtl.getCardno());
+        Double amt=dtl.getAmount()*100;
+        param.setAmount(amt.intValue());
         param.setDtltype("canteen");
-        CitizenPayResponse response=citizenCardPayProxy.citizencardPayinit(param);
-        if(response.getRetcode() == 0){
-            CitizenCardPayfinishParam confirmParam=new CitizenCardPayfinishParam();
-            confirmParam.setRefno(response.getRefno());
-            CitizenPayResponse confirmResp = citizenCardPayProxy.citizencardPayFinish(confirmParam);
-            if(confirmResp.getRetcode() == 0){
-                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
-                transDtlService.saveTransdtl(tTransdtl);
-            }else{
-                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-                tTransdtl.setAttr1(confirmResp.getRetmsg());
-                transDtlService.saveTransdtl(tTransdtl);
-            }
-        }else{
+        CitizenPayResponse response=payApiService.citizencardPayinit(param);
+        if(response.getRetcode()!=0){
             tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-            tTransdtl.setAttr1(response.getRetmsg());
             transDtlService.saveTransdtl(tTransdtl);
+            resp.setRetcode(response.getRetcode().toString());
+            resp.setRetmsg(response.getRetmsg());
+            return resp;
+        }else{
+            CitizenCardPayfinishParam finishparam=new CitizenCardPayfinishParam();
+            finishparam.setRefno(response.getRefno());
+            CitizenPayResponse finishresp=payApiService.citizencardPayFinish(finishparam);
+            if(finishresp.getRetcode()!=0){
+                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+                transDtlService.saveTransdtl(tTransdtl);
+                resp.setRetcode(finishresp.getRetcode().toString());
+                resp.setRetmsg(finishresp.getRetmsg());
+                return resp;
+            }
         }
 
+        tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
+        //TODO:调核心平台初始化确认 逻辑缺!!!
+
+        transDtlService.saveTransdtl(tTransdtl);
         resp.setBillno(req.getBillno());
         Double retAmount=tTransdtl.getAmount()*100;
         resp.setAmount(retAmount.intValue());
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java
new file mode 100644
index 0000000..369acb4
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java
@@ -0,0 +1,53 @@
+package com.supwisdom.dlpay.restaurant.bean;
+
+import com.supwisdom.dlpay.system.bean.PageBean;
+
+public class DiscountBean{
+    private String ruletype;
+    private Integer limitcnt;
+    private String amount;
+    private Integer ruleid;
+
+    public DiscountBean(){
+
+    }
+
+    public DiscountBean(String ruletype, Integer limitcnt, String amount, Integer ruleid) {
+        this.ruletype = ruletype;
+        this.limitcnt = limitcnt;
+        this.amount = amount;
+        this.ruleid = ruleid;
+    }
+
+    public Integer getRuleid() {
+        return ruleid;
+    }
+
+    public void setRuleid(Integer ruleid) {
+        this.ruleid = ruleid;
+    }
+
+    public String getRuletype() {
+        return ruletype;
+    }
+
+    public void setRuletype(String ruletype) {
+        this.ruletype = ruletype;
+    }
+
+    public Integer getLimitcnt() {
+        return limitcnt;
+    }
+
+    public void setLimitcnt(Integer limitcnt) {
+        this.limitcnt = limitcnt;
+    }
+
+    public String getAmount() {
+        return amount;
+    }
+
+    public void setAmount(String amount) {
+        this.amount = amount;
+    }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
index ef1b587..ac610bf 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
@@ -138,7 +138,7 @@
                                      @AuthenticationPrincipal UserDetails operUser) {
     try {
       if (StringUtil.isEmpty(rulename)
-          || (!RestaurantConstant.RULETYPE_QUOTA.equals(ruletype) && !RestaurantConstant.RULETYPE_REDUCTION.equals(ruletype))
+          || (!RestaurantConstant.RULETYPE_QUOTA.equals(ruletype) && !RestaurantConstant.RULETYPE_REDUCTION.equals(ruletype)&& !RestaurantConstant.RULETYPE_DISCOUNT.equals(ruletype))
           || !DateUtil.checkDatetimeValid(starttime, "HH:mm")
           || !DateUtil.checkDatetimeValid(endtime, "HH:mm")
           || !NumberUtil.isAmount(amount) || null == limitcnt) {
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
index 4f0dbdd..b44b02e 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
@@ -30,6 +30,7 @@
   private String transmode;
   private Integer custtype;
   private Double managefee;
+  private Integer ruleid;
   private String mealtype;
   private Integer termsqlno;
   private String refno;
@@ -260,4 +261,13 @@
   public void setCoreStatus(String coreStatus) {
     this.coreStatus = coreStatus;
   }
+
+  @Column(name = "ruleid", length = 10)
+  public Integer getRuleid() {
+    return ruleid;
+  }
+
+  public void setRuleid(Integer ruleid) {
+    this.ruleid = ruleid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
index e40f5d6..47d613e 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
@@ -3,10 +3,7 @@
 import com.supwisdom.dlpay.exception.WebCheckException;
 import com.supwisdom.dlpay.framework.domain.TOperator;
 import com.supwisdom.dlpay.framework.util.PageResult;
-import com.supwisdom.dlpay.restaurant.bean.DevparaBinddevShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleBindShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleSelectBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleShowBean;
+import com.supwisdom.dlpay.restaurant.bean.*;
 import com.supwisdom.dlpay.restaurant.domain.TDiscountDetail;
 import com.supwisdom.dlpay.restaurant.domain.TDiscountDevbind;
 import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +46,9 @@
   @Transactional(rollbackFor = Exception.class, readOnly = true)
   TDiscountDevbind getDiscountDevbindById(String id);
 
+  @Transactional(rollbackFor = Exception.class, readOnly = true)
+  DiscountBean getCustomerDiscount(Integer deviceid, String termtime);
+
   @Transactional(rollbackFor = Exception.class)
   boolean deleteDiscountDevbind(TDiscountDevbind bind);
 
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 7530e47..e2f32ed 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
@@ -6,10 +6,7 @@
 import com.supwisdom.dlpay.framework.util.ImportExcelUtil;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
-import com.supwisdom.dlpay.restaurant.bean.DevparaBinddevShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleBindShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleSelectBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleShowBean;
+import com.supwisdom.dlpay.restaurant.bean.*;
 import com.supwisdom.dlpay.restaurant.dao.*;
 import com.supwisdom.dlpay.restaurant.domain.*;
 import com.supwisdom.dlpay.restaurant.service.DeviceDiscountRuleService;
@@ -405,6 +402,24 @@
     }
 
     @Override
+    public DiscountBean getCustomerDiscount(Integer deviceid, String termtime) {
+        StringBuffer sql = new StringBuffer("select d.limitcnt,d.ruletype,d.amount,d.ruleid from  tb_discount_rule d " +
+                "left join tb_discount_devbind t on t.ruleid=d.ruleid " +
+                "left join tb_discount_detail c on t.ruleid=c.ruleid " +
+                "where c.status='normal' and t.deviceid=:deviceid" +
+                "and d.starttime<:termtime and d.endtime>:termtime ");
+        Query query = entityManager.createNativeQuery(sql.toString());
+        query.setParameter("deviceid", deviceid);
+        query.setParameter("termtime", termtime);
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DiscountBean.class));
+        List<DiscountBean> list = query.getResultList();
+        if(list.size()>0){
+            return list.get(0);
+        }
+        return null;
+    }
+
+    @Override
     public boolean deleteDiscountDevbind(TDiscountDevbind bind) {
         if (null != bind) {
             discountDevbindDao.delete(bind);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
index b07eb45..c93865e 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
@@ -31,6 +31,7 @@
 
   public static final String RULETYPE_QUOTA = "quota"; //定额
   public static final String RULETYPE_REDUCTION = "reduction"; //减免
+  public static final String RULETYPE_DISCOUNT = "discount"; //折扣
 
 
   public static final int POS_TIME_ERROR_DIFFMINS = 10; //设备时钟误差
diff --git a/src/main/resources/templates/restaurant/discountrule/rule.html b/src/main/resources/templates/restaurant/discountrule/rule.html
index dbfb625..1607c04 100644
--- a/src/main/resources/templates/restaurant/discountrule/rule.html
+++ b/src/main/resources/templates/restaurant/discountrule/rule.html
@@ -13,6 +13,7 @@
                 <option value=""> 选择餐补类型 </option>
                 <option value="quota"> 定额 </option>
                 <option value="reduction"> 减免 </option>
+                <option value="discount"> 折扣 </option>
             </select>&emsp;
             <input id="search-discountrule-rulename" class="layui-input search-input" maxlength="20" type="text" placeholder="输入名称查询"/>&emsp;
             <button id="btn-search-discountrule" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
@@ -57,6 +58,8 @@
                                 return '定额';
                             } else if ('reduction' == d.ruletype) {
                                 return '减免';
+                            } else if('discount' == d.ruletype){
+                                return '折扣';
                             } else {
                                 return d.ruletype;
                             }
diff --git a/src/main/resources/templates/restaurant/discountrule/ruleform.html b/src/main/resources/templates/restaurant/discountrule/ruleform.html
index f9e0fc5..7d50742 100644
--- a/src/main/resources/templates/restaurant/discountrule/ruleform.html
+++ b/src/main/resources/templates/restaurant/discountrule/ruleform.html
@@ -4,6 +4,8 @@
         <div class="layui-input-block">
             <input type="radio" name="ruletype" id="form-discountrule-ruletype-quota" lay-filter="discountrule-ruletype-filter" value="quota" title="定额" checked/>
             <input type="radio" name="ruletype" id="form-discountrule-ruletype-reduction" lay-filter="discountrule-ruletype-filter" value="reduction" title="减免"/>
+            <input type="radio" name="ruletype" id="form-discountrule-ruletype-discount" lay-filter="discountrule-ruletype-filter" value="discount" title="折扣"/>
+
         </div>
     </div>
 
@@ -127,8 +129,10 @@
         var changeDiscountRuletype = function (val) {
             if ('reduction' == val) {
                 $("#form-discountrule-amount-text").text("减免金额(元)");
-            } else {
+            } else if('quota'==val) {
                 $("#form-discountrule-amount-text").text("固定金额(元)");
+            }else{
+                $("#form-discountrule-amount-text").text("折率(折)");
             }
         }