大理车载机功能提交
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 7396dff..5196f36 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -5,7 +5,7 @@
 spring.datasource.continue-on-error=true
 #spring.datasource.initialization-mode=always
 spring.jpa.show-sql=true
-#logging.level.org.hibernate.SQL=DEBUG
+logging.level.org.hibernate.SQL=DEBUG
 # Postgresql settings
 spring.datasource.platform=postgresql
 spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/restauranttest
@@ -25,10 +25,10 @@
 spring.jackson.serialization.fail-on-empty-beans=false
 
 
-payapi.url=https://yy.dlsmk.cn/payapi
+payapi.url=http://172.28.201.70:10010/payapi
 
 payapi.appid=200001
 
 cron.offlinedtl= 0 0/5 * * * ?
 payapi.logintime= 0 0/5 * * * ? 
-busapp.cardsync.cron=0 0/10 * * * ?
\ No newline at end of file
+busapp.cardsync.cron=0 0/1 * * * ?
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/bus/bean/BusQuerysalesResp.java b/src/main/java/com/supwisdom/dlpay/bus/bean/BusQuerysalesResp.java
new file mode 100644
index 0000000..9d7df36
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/bean/BusQuerysalesResp.java
@@ -0,0 +1,51 @@
+package com.supwisdom.dlpay.bus.bean;
+
+import com.supwisdom.dlpay.api.bean.APIResp;
+
+public class BusQuerysalesResp extends BusApiResp {
+  private String salesdate;
+  private Long salesamt;
+  private Long salescnt;
+  private Long managefeeamt;
+  private Long managefeecnt;
+
+  public String getSalesdate() {
+    return salesdate;
+  }
+
+  public void setSalesdate(String salesdate) {
+    this.salesdate = salesdate;
+  }
+
+  public Long getSalesamt() {
+    return salesamt;
+  }
+
+  public void setSalesamt(Long salesamt) {
+    this.salesamt = salesamt;
+  }
+
+  public Long getSalescnt() {
+    return salescnt;
+  }
+
+  public void setSalescnt(Long salescnt) {
+    this.salescnt = salescnt;
+  }
+
+  public Long getManagefeeamt() {
+    return managefeeamt;
+  }
+
+  public void setManagefeeamt(Long managefeeamt) {
+    this.managefeeamt = managefeeamt;
+  }
+
+  public Long getManagefeecnt() {
+    return managefeecnt;
+  }
+
+  public void setManagefeecnt(Long managefeecnt) {
+    this.managefeecnt = managefeecnt;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/controller/BusConsumeController.java b/src/main/java/com/supwisdom/dlpay/bus/controller/BusConsumeController.java
index f178ce2..684039f 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/controller/BusConsumeController.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/controller/BusConsumeController.java
@@ -3,44 +3,48 @@
 import com.supwisdom.dlpay.bus.bean.*;
 import com.supwisdom.dlpay.bus.service.BusConsumeService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/api/bus")
 public class BusConsumeController {
-  @Autowired
-  private BusConsumeService busConsumeService;
+    @Autowired
+    private BusConsumeService busConsumeService;
 
-  @PostMapping("/login")
-  public BusDevLoginResp busLogin(@ModelAttribute BusDevLoginReq req) {
-    return new BusDevLoginResp();
-  }
+    @PostMapping("/login")
+    public BusDevLoginResp busLogin(@ModelAttribute BusDevLoginReq req) {
+        return busConsumeService.doLogin(req);
+    }
 
-  @PostMapping("/heartbeat")
-  public BusHeartBeatResp heartBeat(@ModelAttribute BusHeartBeatReq req) {
-    return new BusHeartBeatResp();
-  }
+    @PostMapping("/heartbeat")
+    public BusHeartBeatResp heartBeat(@ModelAttribute BusHeartBeatReq req) {
+        return busConsumeService.busHeartBeat(req);
+    }
 
-  @PostMapping("/updatesyspara")
-  public BusSysparaResp updateSyspara(@ModelAttribute BusSysparaReq req){
-    return new BusSysparaResp();
-  }
+    @PostMapping("/updatesyspara")
+    public BusSysparaResp updateSyspara(@ModelAttribute BusSysparaReq req) {
+        return busConsumeService.doGetDevpara(req);
+    }
 
-  @PostMapping("/blacklistbitmap")
-  public String downloadBlacklistbitmap(){
-    return "";
-  }
+    @PostMapping("/blacklistbitmap")
+    public String downloadBlacklistbitmap() {
+        return "";
+    }
 
-  @PostMapping("/downloadblacklist")
-  public BusBlacklistResp downloadBlacklist(@ModelAttribute BusBlacklistReq req){
-    return new BusBlacklistResp();
-  }
+    @PostMapping("/downloadblacklist")
+    public BusBlacklistResp downloadBlacklist(@ModelAttribute BusBlacklistReq req) {
+        return busConsumeService.doGetBlacklist(req);
+    }
 
-  @PostMapping("/busdtlupload")
-  public BusDtlUploadResp uploadBusdtl(@ModelAttribute BusdtlUploadReq req){
-    return new BusDtlUploadResp();
-  }
+    @PostMapping("/busdtlupload")
+    public BusDtlUploadResp uploadBusdtl(@ModelAttribute BusdtlUploadReq req) {
+        return busConsumeService.saveOfflineDtl(req);
+    }
+
+    //营业额查询
+    @RequestMapping(value = "/querysales", method = RequestMethod.POST)
+    @ResponseBody
+    public BusQuerysalesResp querysales(@ModelAttribute BusSysparaReq req) {
+        return  busConsumeService.busQuerySales(req);
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/bus/domain/TOfflineBusdtl.java b/src/main/java/com/supwisdom/dlpay/bus/domain/TOfflineBusdtl.java
index f068de4..6af8665 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/domain/TOfflineBusdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/domain/TOfflineBusdtl.java
@@ -26,7 +26,7 @@
   @Column(name = "dtltype", nullable = false, length = 10)
   private String dtltype;  //card-刷卡流水;qrcode-刷二维码流水
 
-  @Column(name = "termseqno", length = 20)
+  @Column(name = "cardno", length = 20)
   private String cardno;
 
   @Column(name = "cardphyid", length = 20)
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java b/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
index 5da2be4..7033b6a 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
@@ -13,5 +13,5 @@
 
     BusDtlUploadResp saveOfflineDtl(BusdtlUploadReq req);
 
-
+    BusQuerysalesResp busQuerySales(BusSysparaReq req);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java b/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
index f9104e9..6c71ae7 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
@@ -6,8 +6,10 @@
 import com.supwisdom.dlpay.bus.bean.*;
 import com.supwisdom.dlpay.bus.dao.CitizenCardDao;
 import com.supwisdom.dlpay.bus.dao.CitizenCardverDao;
+import com.supwisdom.dlpay.bus.dao.OfflineBusdtlDao;
 import com.supwisdom.dlpay.bus.domain.TCitizenCard;
 import com.supwisdom.dlpay.bus.domain.TCitizenCardver;
+import com.supwisdom.dlpay.bus.domain.TOfflineBusdtl;
 import com.supwisdom.dlpay.bus.service.BusConsumeService;
 import com.supwisdom.dlpay.bus.service.CitizenCardService;
 import com.supwisdom.dlpay.bus.util.BusConstant;
@@ -20,6 +22,8 @@
 import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
 import com.supwisdom.dlpay.paysdk.proxy.TransactionProxy;
 import com.supwisdom.dlpay.paysdk.proxy.UserProxy;
+import com.supwisdom.dlpay.restaurant.bean.ManageFeeAmtBean;
+import com.supwisdom.dlpay.restaurant.bean.SalesAmtBean;
 import com.supwisdom.dlpay.restaurant.dao.*;
 import com.supwisdom.dlpay.restaurant.domain.*;
 import com.supwisdom.dlpay.restaurant.service.*;
@@ -44,7 +48,7 @@
     @Autowired
     private TransDtlService transDtlService;
     @Autowired
-    private OfflineTransDtlService offlineTransDtlService;
+    private OfflineBusdtlDao offlineBusdtlDao;
     @Autowired
     private SysparaDao sysparaDao;
     @Autowired
@@ -165,7 +169,7 @@
         device.setCardverno(req.getCardverno());
         deviceService.saveDevice(device);
         List<BusCardverBean> cardverFlags = new ArrayList<>();
-        TSyspara maxcardver = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_MAXCARDVERNO); //非等待锁
+        TSyspara maxcardver = sysparaDao.findByParaid(BusConstant.SYSPARAID_MAXBLACKCARDVERNO);
 
         String maxCardverno = maxcardver.getParaval();
         Integer count = req.getMaxcount();
@@ -226,14 +230,16 @@
             resp.setRetmsg("未配置默认参数");
             return resp;
         }
+        TSyspara maxcardver = sysparaDao.findByParaid(BusConstant.SYSPARAID_MAXBLACKCARDVERNO);
 
+        String maxCardverno = maxcardver.getParaval();
 
         resp.setRetcode(ErrorCode.ERRIF_OK);
         resp.setRetmsg("心跳成功");
         resp.setSystime(datetime);
         resp.setParaverno(group.getVerno().intValue());
         resp.setParagroupid(group.getGroupid());
-        resp.setCardverno(req.getCardverno());
+        resp.setCardverno(maxCardverno);
         return resp;
 
     }
@@ -241,63 +247,99 @@
     @Override
     public BusDtlUploadResp saveOfflineDtl(BusdtlUploadReq req) {
         BusDtlUploadResp resp = new BusDtlUploadResp();
-        TOfflineTransDtl transDtl = new TOfflineTransDtl();
+        TOfflineBusdtl transDtl = new TOfflineBusdtl();
         transDtl.setTransdate(req.getTransdate());
         transDtl.setTranstime(req.getTranstime());
         transDtl.setBillno(systemUtilService.getRefno());
         transDtl.setCardno(req.getCardno());
-        transDtl.setRevflag(0);
-        transDtl.setTermsqlno(req.getTermseqno());
-        String err = "";
-        TDevice device = deviceService.getDeviceByDevphyid(req.getDevphyid());
-        if (null == device) {
-            err += "设备物理ID不存在;";
-        }
-        if (1 != device.getState()) {
-            err += "设备状态错误;";
-        }
-        if (!BusConstant.STATUS_NORMAL.equals(device.getCheckstatus())) {
-            err += "设备审核未通过;";
-        }
-        if (!"".equals(err)) {
-            transDtl.setAttr1(err);
-            offlineTransDtlService.saveOfflineTransdtl(transDtl);
+        transDtl.setTermseqno(req.getTermseqno());
+        transDtl.setCollecttime(systemUtilService.getSysdatetime().getHostdatetime());
+        transDtl.setCardno(req.getCardno());
+        transDtl.setTranstime(req.getTranstime());
+        transDtl.setTransdate(req.getTransdate());
+        transDtl.setAmount(req.getAmount() / 100.0);
+        transDtl.setDtltype("card");
+        transDtl.setDtlstat(req.getStatus());
+        transDtl.setQrcode("");
+
+        TCitizenCard tCard = cardDao.findByCardno(req.getCardno());
+        if (null == tCard) {
+            transDtl.setErrcode(BusConstant.BUS_OFFLINE_NOUSER);
+            transDtl.setErrmsg("卡号不存在");
+
+            offlineBusdtlDao.save(transDtl);
             resp.setRetmsg("保存成功");
             resp.setRetcode(ErrorCode.ERRIF_OK);
             return resp;
         }
-        Double amount = req.getAmount() / 100.0;
+        transDtl.setPayerid(tCard.getPayerid());
+        transDtl.setCardphyid(tCard.getCardphyid());
+        transDtl.setPayername(tCard.getUsername());
 
-        String cardno;
+        TDevice device = deviceService.getDeviceByDevphyid(req.getDevphyid());
+        if (null == device) {
+            transDtl.setErrcode(BusConstant.BUS_OFFLINE_NODEVICE);
+            transDtl.setErrmsg("设备物理ID不存在");
 
-        cardno = req.getCardno();
-
-        TCitizenCard tCard = cardDao.findByCardno(cardno);
-        if (null == tCard) {
-            err += "卡号[" + req.getCardno() + "]不存在;";
-        } else {
-            transDtl.setCustname(tCard.getUsername());
+            offlineBusdtlDao.save(transDtl);
+            resp.setRetmsg("保存成功");
+            resp.setRetcode(ErrorCode.ERRIF_OK);
+            return resp;
         }
-        transDtl.setAmount(amount);
-
-        if (device.getState() != 1) {
-            err += "设备状态错误;";
-        } else {
-            transDtl.setTermid(device.getId());
-            transDtl.setShopid(device.getShopid());
+        if (1 != device.getState()) {
+            transDtl.setErrcode(BusConstant.BUS_OFFLINE_DEVICEERROR);
+            transDtl.setErrmsg("设备状态异常");
+            offlineBusdtlDao.save(transDtl);
+            resp.setRetmsg("保存成功");
+            resp.setRetcode(ErrorCode.ERRIF_OK);
+            return resp;
         }
+        if (!BusConstant.STATUS_NORMAL.equals(device.getCheckstatus())) {
+            transDtl.setErrcode(BusConstant.BUS_OFFLINE_DEVICEERROR);
+            transDtl.setErrmsg("设备审核未通过");
+            offlineBusdtlDao.save(transDtl);
+            resp.setRetmsg("保存成功");
+            resp.setRetcode(ErrorCode.ERRIF_OK);
+            return resp;
+        }
+
+        transDtl.setTermid(device.getId());
+        transDtl.setDevphyid(device.getDevphyid());
+        transDtl.setMerchaccno(device.getShopid());
 
         transDtl.setStatus(BusConstant.STATUS_INIT);
-        transDtl.setAttr1(err);
-        transDtl.setTransmode(BusConstant.TRANSMODE_BUS);
-        offlineTransDtlService.saveOfflineTransdtl(transDtl);
-
+        offlineBusdtlDao.save(transDtl);
         resp.setRetcode(ErrorCode.ERRIF_OK);
         resp.setRetmsg("保存成功");
         resp.setTermseqno(req.getTermseqno());
         return resp;
     }
 
+    @Override
+    public BusQuerysalesResp busQuerySales(BusSysparaReq req) {
+        BusQuerysalesResp resp = new BusQuerysalesResp();
+        TDevice device = deviceService.getDeviceByDevphyid(req.getDevphyid());
+        BusApiResp apiResp = checkDevice(resp, device);
+        if (!ErrorCode.ERRIF_OK.equals(apiResp.getRetcode())) {
+            resp.setRetcode(apiResp.getRetcode());
+            resp.setRetmsg(apiResp.getRetmsg());
+            return resp;
+        }
+
+        SalesAmtBean salesAmtBean = transDtlService.getSalesToday(req.getTermdate(), device.getId());
+   //     ManageFeeAmtBean feeAmtBean = transDtlService.getManageFeeToday(req.getTermdate(), device.getId());
+
+
+        resp.setRetcode(ErrorCode.ERRIF_OK);
+        resp.setRetmsg("返回成功");
+   //     resp.setManagefeeamt(feeAmtBean.getManagefeeamt());
+   //     resp.setManagefeecnt(feeAmtBean.getManagefeecnt());
+        resp.setSalesamt(salesAmtBean.getSalesamt());
+        resp.setSalescnt(salesAmtBean.getSalescnt());
+        resp.setSalesdate(req.getTermdate());
+        return resp;
+    }
+
 
     private BusApiResp checkDevice(BusApiResp resp, TDevice device) {
         if (null == device) {
diff --git a/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
index c826a47..6039d60 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
@@ -38,4 +38,8 @@
 
   public final static String TRANSMODE_BUS="bus";
 
+  public final static String BUS_OFFLINE_NODEVICE = "11";
+  public final static String BUS_OFFLINE_NOUSER = "12";
+  public final static String BUS_OFFLINE_DEVICEERROR = "13";
+
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 8e9ffce..bd7e1e4 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -129,6 +129,7 @@
                         .antMatchers("/api/user/**").hasRole("THIRD_ADMIN")
                         .antMatchers("/api/shop/**").hasRole("THIRD_SHOP")
                         .antMatchers("/api/pos/**").hasRole("THIRD_SHOP")
+                        .antMatchers("/api/bus/**").hasRole("THIRD_SHOP")
                         .anyRequest().hasRole("THIRD_COMMON")
                         .and()
                         .csrf().ignoringAntMatchers("/api/**")