会议获取开门码
diff --git a/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java b/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java
index b987adf..3eabbbe 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java
@@ -114,7 +114,9 @@
         Integer confid = req.getConfid();
         TConference conference = conferenceService.getConferenceById(confid);
         if (null == conference) {
-            resp.setRetmsg("");
+            resp.setRetmsg("暂无会议");
+            resp.setRetcode(0);
+            return resp;
         }
 
         List<ConfPeopleApiBean> lst = conferenceService.getConfPeopleListByConfid(confid, conference.getConftype());
@@ -134,7 +136,7 @@
         Integer confid = req.getConfid();
         String timestamp = req.getTimestamp();
         String devphyid = req.getDevphyid();
-        /*if (null == confid || StringUtil.isEmpty(timestamp) || StringUtil.isEmpty(devphyid)) {
+        if (null == confid || StringUtil.isEmpty(timestamp) || StringUtil.isEmpty(devphyid)) {
             mov.addObject("msg", "签到失败");
             mov.addObject("errorMsg", "参数传递错误");
             mov.setViewName("apph5/confresult");
@@ -168,7 +170,7 @@
             mov.addObject("errorMsg", "时间误差过大");
             mov.setViewName("apph5/confresult");
             return mov;
-        }*/
+        }
 
         if(StringUtil.isEmpty(userid)){
             mov.addObject("confid",confid);
@@ -183,7 +185,7 @@
             return mov;
         }
 
-        /*String atttime = DateUtil.getNow("HHmm");
+        String atttime = DateUtil.getNow("HHmm");
 
         int compareAttend = DateUtil.compareDatetime(atttime, conference.getAttendtime(), "HHmm");
         int compareStart = DateUtil.compareDatetime(atttime, conference.getStarttime(), "HHmm");
@@ -245,7 +247,7 @@
 
         mov.addObject("msg", "签到成功");
         mov.addObject("remarkTitle", "会议概要");
-        mov.addObject("remark", conference.getRemark());*/
+        mov.addObject("remark", conference.getRemark());
         mov.setViewName("apph5/confresult");
         return mov;
     }
diff --git a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
index dc52c3b..51841ee 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
@@ -8,6 +8,7 @@
 import com.supwisdom.dlpay.api.bean.JsonResult;
 import com.supwisdom.dlpay.conference.bean.ConferenceShowBean;
 import com.supwisdom.dlpay.conference.domain.TConfPeople;
+import com.supwisdom.dlpay.conference.domain.TConference;
 import com.supwisdom.dlpay.conference.domain.TConferenceDevbind;
 import com.supwisdom.dlpay.conference.service.ConferenceService;
 import com.supwisdom.dlpay.conference.util.ConferenceConstant;
@@ -15,12 +16,20 @@
 import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;
 import com.supwisdom.dlpay.doorlist.bean.TCustomerImportBean;
 import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
+import com.supwisdom.dlpay.doorlist.service.DoorlistMgrService;
 import com.supwisdom.dlpay.framework.domain.TOperator;
+import com.supwisdom.dlpay.framework.service.SystemUtilService;
 import com.supwisdom.dlpay.framework.util.*;
 import com.supwisdom.dlpay.mainservice.service.WebInterfaceService;
+import com.supwisdom.dlpay.ncmgr.domain.TNcAllottime;
+import com.supwisdom.dlpay.ncmgr.domain.TNcAllottimeId;
+import com.supwisdom.dlpay.ncmgr.domain.TNcCardlist;
 import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;
 import com.supwisdom.dlpay.ncmgr.service.NcService;
+import com.supwisdom.dlpay.util.RedisUtil;
 import com.supwisdom.dlpay.util.WebCheckException;
+import com.supwisdom.dlpay.visitormanage.domain.EVisitorConfDtl;
+import com.supwisdom.dlpay.visitormanage.service.VisitormanageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.annotation.AuthenticationPrincipal;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -34,7 +43,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -46,7 +57,12 @@
     private NcService ncService;
     @Autowired
     private WebInterfaceService webInterfaceService;
-
+    @Autowired
+    private SystemUtilService systemUtilService;
+    @Autowired
+    private VisitormanageService visitormanageService;
+    @Autowired
+    DoorlistMgrService doorlistMgrService;
 
     @GetMapping("/conference/index")
     public String ConferenceView() {
@@ -65,7 +81,7 @@
             if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
             TOperator oper = (TOperator) operUser;
             String deptcode = oper.getDeptcode();
-            return conferenceService.getConferenceInfos(confname, conftype, deptcode,"", pageNo, pageSize);
+            return conferenceService.getConferenceInfos(confname, conftype, deptcode, "", pageNo, pageSize);
         } catch (Exception e) {
             e.printStackTrace();
             return new PageResult<>(99, "系统查询错误");
@@ -80,6 +96,12 @@
                 return JsonResult.error("参数传递错误");
             }
             if (conferenceService.deleteConference(id)) {
+
+                EVisitorConfDtl dtl = visitormanageService.getVisitorConfByConfid(id);
+                if(null!=dtl){
+                    dtl.setStatus("closed");
+                    visitormanageService.saveVisitorConf(dtl);
+                }
                 return JsonResult.ok("删除成功!");
             } else {
                 return JsonResult.error("删除失败!");
@@ -154,7 +176,7 @@
                 return JsonResult.error("登录过期,请重新登录");
             }
 
-            if (conferenceService.saveNewConference(confname.trim(), DateUtil.unParseToDateFormat(confdate), conftype, DateUtil.unParseToDateFormat(starttime), DateUtil.unParseToDateFormat(endtime), DateUtil.unParseToDateFormat(attendtime), oper,  deviceid,remark)) {
+            if (conferenceService.saveNewConference(confname.trim(), DateUtil.unParseToDateFormat(confdate), conftype, DateUtil.unParseToDateFormat(starttime), DateUtil.unParseToDateFormat(endtime), DateUtil.unParseToDateFormat(attendtime), oper, deviceid, remark)) {
                 return JsonResult.ok("新增成功");
             } else {
                 return JsonResult.error("新增失败");
@@ -209,6 +231,122 @@
         return "conference/confdetail";
     }
 
+    @GetMapping("/conference/load4qrcode")
+    public String load4QRcode(@RequestParam("confid") Integer confid, Model model) {
+        TConference conf = conferenceService.getConferenceById(confid);
+        if (null == conf) {
+            return null;
+        }
+        model.addAttribute("confid", confid);
+      /*  model.addAttribute("starttime",conf.getAttendtime());
+        model.addAttribute("endtime",conf.getEndtime());*/
+        EVisitorConfDtl dtl = visitormanageService.getVisitorConfByConfid(confid);
+        if (null != dtl) {
+            model.addAttribute("qrcode", dtl.getQrcode());
+        }
+
+        return "conference/confqrcode";
+    }
+
+
+    @PostMapping("/conference/getqrcode")
+    @ResponseBody
+    public JsonResult getQRcode(@RequestParam("confid") Integer confid,
+                                @RequestParam("starttime") String starttime,
+                                @RequestParam("endtime") String endtime, Model model) {
+
+        TConference conf = conferenceService.getConferenceById(confid);
+        if (null == conf) {
+            JsonResult.error("会议不存在");
+        }
+        starttime = DateUtil.reformatDatetime(starttime, "HH:mm", "HHmm");
+        endtime = DateUtil.reformatDatetime(endtime, "HH:mm", "HHmm");
+
+        if (DateUtil.compareDatetime(endtime, starttime, "HHmm") <= 0) {
+            return JsonResult.error("时间范围错误,结束时间必须比起始时间大");
+        } /*else if (DateUtil.compareDatetime(starttime, conf.getAttendtime(), "HHmm") <= 0) {
+            return JsonResult.error("时间范围错误,有效时间必须比签到时间早");
+        } else if (DateUtil.compareDatetime(conf.getEndtime(), endtime, "HHmm") <= 0) {
+            return JsonResult.error("时间范围错误,有效时间必须比结束时间晚");
+        }*/
+       /* Integer delay=0;
+
+        String delaypara=systemUtilService.getBusinessValue("conference.opendoor.delay");
+        if(!StringUtil.isEmpty(delaypara)){
+            delay=Integer.parseInt(delaypara);
+        }*/
+
+
+
+        EVisitorConfDtl dtl = visitormanageService.getVisitorConfByConfid(confid);
+        if (null == dtl) {
+
+            dtl = new EVisitorConfDtl();
+            //    String starttime=DateUtil.getCaculatedTime(conf.getAttendtime(),delay*-1);
+            //    String endtime=DateUtil.getCaculatedTime(conf.getEndtime(),delay);
+            dtl.setConfid(confid);
+            dtl.setStatus("normal");
+            String time = DateUtil.getNow("yyyyMMddHHmmss");
+            String s = StringUtil.getRandomString(18);
+            s += time;
+            String sign = "SIGNFORCONFERS" + s;
+            dtl.setSign(s);
+            dtl.setQrcode(sign);
+
+            List<TNcCardlist> tNcCardlists = new ArrayList<TNcCardlist>();
+            List<TNcAllottime> tNcAllottimes = new ArrayList<TNcAllottime>();
+
+            //long listid = webInterfaceService.getNextSeqTDoorcardlst();
+            //从缓存读取列表值并加1
+            long listid = RedisUtil.incr("seq_cardlist");
+            TNcCardlist tmpCardlist = new TNcCardlist();
+            tmpCardlist.setListid("100"+listid  );
+            tmpCardlist.setCustid(s);
+            tmpCardlist.setCustname(conf.getConfname());
+            tmpCardlist.setCardno(s);
+            tmpCardlist.setBankcardno("");
+            tmpCardlist.setCardphyid("");
+            tmpCardlist.setClosedate("");
+            tmpCardlist.setDeviceid(3);
+            tmpCardlist.setOperflag("A");
+            tmpCardlist.setRectime(time);
+            tmpCardlist.setSynctime("");
+            tmpCardlist.setSyncflag("Y");
+            tmpCardlist.setRtnflag("Y");
+            tmpCardlist.setRtntime(time);
+            tmpCardlist.setVersion(1);
+            tmpCardlist.setOperid("");
+            tmpCardlist.setReason("内部人员访客app申请");
+
+            tNcCardlists.add(tmpCardlist);
+
+            //webInterfaceService.saveTDoorcardlst(tDoorcardlst);
+            TNcAllottimeId tNcAllottimeId = new TNcAllottimeId();
+            tNcAllottimeId.setListid("100"+listid );
+            tNcAllottimeId.setTimeid("1");
+            TNcAllottime tNcAllottime = new TNcAllottime();
+            tNcAllottime.setDeviceid(3);
+            tNcAllottime.setId(tNcAllottimeId);
+
+            tNcAllottimes.add(tNcAllottime);
+            //long end1=System.currentTimeMillis(); //获取结束时间
+            //System.out.println("程序运行时间: "+(end1-start1)+"ms");
+
+            doorlistMgrService.batchSaveCardList(tNcCardlists);
+            doorlistMgrService.batchSaveAllotTime(tNcAllottimes);
+            tNcCardlists.clear();
+            tNcAllottimes.clear();
+            RedisUtil.incr("zcard_max_version");
+            tNcCardlists.clear();
+        }
+        dtl.setEndtime(endtime);
+        dtl.setStarttime(starttime);
+        visitormanageService.saveVisitorConf(dtl);
+
+        String qrcode=dtl.getQrcode();
+        return JsonResult.ok(qrcode);
+    }
+
     @GetMapping("/conference/load4detaillist")
     @ResponseBody
     public PageResult<TConfPeople> searchConfPeople(@RequestParam("page") Integer pageNo,
@@ -226,7 +364,7 @@
         }
     }
 
-    @RequestMapping("/conference/getQRCode")
+    @RequestMapping("/conference/getQRCode2")
     @ResponseBody
     public void getQRCode(@RequestParam("confid") String id, HttpServletResponse httpServletResponse) throws Exception {
         // QRCodeUtil.createQrCode(new FileOutputStream(new File("d:\\qrcode\\qrcode.jpg")),"confid="+id,800,"JPEG");
@@ -244,7 +382,7 @@
 
     @GetMapping("/conference/loadimport")
     public String loadimport(@RequestParam("confid") Integer confid,
-                             @RequestParam("confname") String confname,Model model) {
+                             @RequestParam("confname") String confname, Model model) {
         model.addAttribute("detailConfid", confid);
         model.addAttribute("confName", confname);
 
@@ -271,7 +409,7 @@
                 fpath = path + "/" + fileName;
             }
 
-            if (conferenceService.saveConferencePeopleByExcel(confid,fpath)) {
+            if (conferenceService.saveConferencePeopleByExcel(confid, fpath)) {
                 return JsonResult.ok("新增成功");
             } else {
                 return JsonResult.error("新增失败");
@@ -312,9 +450,9 @@
     @RequestMapping("/conference/listpeopleforimport")
     @ResponseBody
     public PageResult<TCustomerImportBean> listConfpeople(
-                                                 @RequestParam(value = "custname", required = false) String custname,
-                                                 @RequestParam(value = "deptcode", required = false) String deptcode,
-                                                 @AuthenticationPrincipal TOperator operUser) {
+            @RequestParam(value = "custname", required = false) String custname,
+            @RequestParam(value = "deptcode", required = false) String deptcode,
+            @AuthenticationPrincipal TOperator operUser) {
         try {
             CustomerSearchBean searchBean = new CustomerSearchBean();
             searchBean.setCustname(custname);
diff --git a/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java b/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java
index b58c106..ae32c0e 100644
--- a/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java
+++ b/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java
@@ -62,7 +62,7 @@
         model.put("custtypelist", typeString);
         List<TCustType> list = systemService.findAllCusttype();
         TCustType type=new TCustType();
-        type.setCusttypeid(0);
+        type.setCusttypeid(-1);
         type.setCusttypename("全部");
         list.add(0,type);
         model.addAttribute("typelist", list);
@@ -89,6 +89,7 @@
                 deptcode = operUser.getDeptcode();
             }
             searchBean.setDeptcode(deptcode);
+
             searchBean.setCusttypeid(custtypeid);
             PageResult<TCustomerInfo> bean = webInterfaceService.getCustomerInfoPage(searchBean);
 
@@ -105,7 +106,8 @@
 
         List<TDept> deptlist = systemService.findAllDept();
         model.addAttribute("deptlist", deptlist);
-
+        List<TCustType> list = systemService.findAllCusttype();
+        model.addAttribute("typelst", list);
         return "doorlist/customer/form";
     }
 
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java b/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java
index 3a7e013..df6d311 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java
@@ -324,4 +324,19 @@
   public static String getUTCTime() {
     return getUTCTime(System.currentTimeMillis());
   }
+
+
+
+  public static String getCaculatedTime(String time,int minute) {
+    SimpleDateFormat sdf=new SimpleDateFormat("HHmm");
+    String newtime="";
+    try{
+      Date d=sdf.parse(time);
+      Date newd=setMinutes(d,minute);
+      newtime=sdf.format(newd);
+    }catch (Exception e){
+      e.printStackTrace();
+    }
+    return newtime;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
index af0f85f..828f894 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
@@ -115,7 +115,8 @@
         String countSql = "select count(*) as cnt from T_Customer a left join t_card b on a.custid = b.custid " +

                 " where a.status='1' and b.status='normal' and b.transtatus='normal' ";

 

-        if (null!=param.getCusttypeid()){

+        Integer i=param.getCusttypeid();

+        if (null!=i&&-1!=i){

             sql += " and a.custtypeid = :custtypeid ";

             countSql += " and a.custtypeid = :custtypeid ";

         }

@@ -140,7 +141,7 @@
             query.setParameter("perName", "%"+perName.trim()+"%");

             countQuery.setParameter("perName", "%"+perName.trim()+"%");

         }

-        if (null!=param.getCusttypeid()){

+        if (null!=i&&-1!=i){

             query.setParameter("custtypeid", param.getCusttypeid());

             countQuery.setParameter("custtypeid", param.getCusttypeid());

         }

diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
index f506fe9..4bff0c8 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
@@ -19,6 +19,8 @@
     public PageResult<EVisitorDtl> getVisitorInfoPage(VisitorSearchBean param);
     public PageResult<VisitorShowBean> getCheckInfoPage(VisitorCheckSearchBean param);
     public boolean saveVisitorCheck(EVisitorCheckDtl bean);
+    public boolean saveVisitorConf(EVisitorConfDtl bean);
     public EVisitorCheckDtl getVisitorCheckById(int id);
+    public EVisitorConfDtl getVisitorConfByConfid(int id);
     public EVisitorCheckDtl getVisitorCheckBySign(String sign);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java
index ad5b2dd..039ca1e 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java
@@ -161,6 +161,19 @@
 
     @Transactional
     @Override
+    public boolean saveVisitorConf(EVisitorConfDtl bean) {
+        boolean flag = false;
+        try {
+            entityManager.persist(bean);
+            flag = true;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return flag;
+    }
+
+    @Transactional
+    @Override
     public EVisitorCheckDtl getVisitorCheckById(int id) {
 
         String sql = "select a.* from E_VISITOR_CHECK_DTL a  " +
@@ -175,6 +188,20 @@
     }
     @Transactional
     @Override
+    public EVisitorConfDtl getVisitorConfByConfid(int id) {
+        String sql = "select a.* from E_VISITOR_CONF_DTL a  " +
+                " where a.confid = ?  ";
+        Query query = entityManager.createNativeQuery(sql, EVisitorConfDtl.class);
+        query.setParameter(1, id);
+        List<EVisitorConfDtl> list = query.getResultList();
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        }
+        return null;
+    }
+
+    @Transactional
+    @Override
     public EVisitorCheckDtl getVisitorCheckBySign(String sign) {
 
         String sql = "select a.* from E_VISITOR_CHECK_DTL a  " +
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorConfDtl.java b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorConfDtl.java
new file mode 100644
index 0000000..743687e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorConfDtl.java
@@ -0,0 +1,87 @@
+package com.supwisdom.dlpay.visitormanage.domain;
+
+import javax.persistence.*;
+
+/**
+ * Created by shuwei on 17/6/12.
+ */
+@Entity
+@Table(name = "E_VISITOR_CONF_DTL")
+public class EVisitorConfDtl {
+
+    private int id;
+    //访客身份证号
+    private Integer confid;
+    private String starttime;
+    private String endtime;
+    private String status;
+    private String qrcode;
+    private String sign;
+
+
+    @Id
+    @Column(name = "ID", unique = true,  nullable = false, length = 32)
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    @Column(name = "CONFID", length = 9)
+    public Integer getConfid() {
+        return confid;
+    }
+
+    public void setConfid(Integer confid) {
+        this.confid = confid;
+    }
+
+    @Column(name = "starttime", length = 4)
+    public String getStarttime() {
+        return starttime;
+    }
+
+    public void setStarttime(String starttime) {
+        this.starttime = starttime;
+    }
+
+    @Column(name = "endtime", length = 4)
+    public String getEndtime() {
+        return endtime;
+    }
+
+    public void setEndtime(String endtime) {
+        this.endtime = endtime;
+    }
+
+
+    @Column(name = "QRCODE", length = 255)
+    public String getQrcode() {
+        return qrcode;
+    }
+
+    public void setQrcode(String qrcode) {
+        this.qrcode = qrcode;
+    }
+
+    @Column(name = "SIGN", length = 32)
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+    @Column(name = "STATUS", length = 32)
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorCheckBean.java b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorCheckBean.java
index 88c2247..968d8bc 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorCheckBean.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorCheckBean.java
@@ -18,6 +18,8 @@
     private String company;
     private String remarks;
     private String sign;
+    //申请码模式(conf 为时间模式)
+    private String checkmode;
 
     public String getVisitorname() {
         return visitorname;
@@ -98,4 +100,12 @@
     public void setSign(String sign) {
         this.sign = sign;
     }
+
+    public String getCheckmode() {
+        return checkmode;
+    }
+
+    public void setCheckmode(String checkmode) {
+        this.checkmode = checkmode;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java b/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
index 793d5ba..609ed6b 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
@@ -28,7 +28,10 @@
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public boolean saveVisitorCheck(EVisitorCheckDtl bean);
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+    public boolean saveVisitorConf(EVisitorConfDtl bean);
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public EVisitorCheckDtl getVisitorCheckById(int id);
+    public EVisitorConfDtl getVisitorConfByConfid(int id);
     public EVisitorCheckDtl getVisitorCheckBySign(String sign);
 
 
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java b/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java
index 4374629..5b1268a 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java
@@ -55,9 +55,20 @@
     }
 
     @Override
+    public boolean saveVisitorConf(EVisitorConfDtl bean) {
+        return visitorDao.saveVisitorConf(bean);
+    }
+
+    @Override
     public EVisitorCheckDtl getVisitorCheckById(int id) {
         return visitorDao.getVisitorCheckById(id);
     }
+
+    @Override
+    public EVisitorConfDtl getVisitorConfByConfid(int id) {
+        return visitorDao.getVisitorConfByConfid(id);
+    }
+
     @Override
     public EVisitorCheckDtl getVisitorCheckBySign(String sign) {
         return visitorDao.getVisitorCheckBySign(sign);
diff --git a/src/main/resources/templates/conference/conflist.html b/src/main/resources/templates/conference/conflist.html
index 202e880..1306d07 100644
--- a/src/main/resources/templates/conference/conflist.html
+++ b/src/main/resources/templates/conference/conflist.html
@@ -33,10 +33,10 @@
     {{# if(d.status=='unstart'&&d.conftype=='list'){ }}
     <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
     <a class="layui-btn layui-btn layui-btn-xs" lay-event="people">分配人员</a>
-   <!-- <a class="layui-btn layui-btn layui-btn-xs" lay-event="detail">查看明细</a>-->
+    <a class="layui-btn layui-btn layui-btn-xs" lay-event="qrcode">申请开门码</a>
     {{# } else if(d.status=='unstart'&&d.conftype=='nolist'){ }}
     <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
-   <!-- <a class="layui-btn layui-btn layui-btn-xs" lay-event="detail">查看明细</a>-->
+    <a class="layui-btn layui-btn layui-btn-xs" lay-event="qrcode">申请开门码</a>
     {{# } }}
 
 </script>
@@ -172,10 +172,11 @@
                         layer.msg('请求失败了,请稍后再试', {icon: 2});
                     });
                 });*/
-            } else if ('detail' == obj.event) {
+            } else if ('qrcode' == obj.event) {
+                var conftime=data.starttime+'~'+data.endtime;
                 admin.popupCenter({
-                    title: "查看名单",
-                    path: '[[@{/conference/load4detail}]]?confid=' + data.confid,
+                    title: "申请开门码("+conftime+")",
+                    path: '[[@{/conference/load4qrcode}]]?confid=' + data.confid,
                     area: '600px',
                     finish: function () {
                         table.reload('conferenceTable');
diff --git a/src/main/resources/templates/conference/confqrcode.html b/src/main/resources/templates/conference/confqrcode.html
new file mode 100644
index 0000000..3edf132
--- /dev/null
+++ b/src/main/resources/templates/conference/confqrcode.html
@@ -0,0 +1,136 @@
+
+<div id="qrcode-form" lay-filter="qrcode-form-filter" class="layui-form model-form" style="padding: 10px 25px;">
+    <div class="layui-form-item">
+        <input type="hidden" id="qrcode-confid" th:value="${confid}"/>
+        <input type="hidden" id="myText" th:value="${qrcode}"/>
+        <div id="qrcode" class="qrcode-cc layui-input-inline" style="width: auto;margin-left: 150px" ></div>
+    </div>
+
+    <div class="layui-form-item">
+        <label class="confinput-label layui-form-label" style="width: 150px;"><span style="color: red" >* </span>有效时间段</label>
+        <div class="layui-input-inline" style="width: 100px;">
+            <input type="text" name="starttime" placeholder="9:00" id="form-qrcode-starttime" autocomplete="off"
+                   maxlength="5"
+                   class="layui-input" lay-verify="required"/>
+        </div>
+        <div class="layui-form-mid">-</div>
+        <div class="layui-input-inline" style="width: 100px;">
+            <input type="text" name="endtime" placeholder="12:00" id="form-qrcode-endtime" autocomplete="off"
+                   maxlength="5"
+                   class="layui-input" lay-verify="required"/>
+        </div>
+    </div>
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+        <button class="layui-btn" lay-filter="qrcode-form-submit" lay-submit id="submitbtn">申请</button>
+    </div>
+</div>
+
+<script>
+
+    layui.use(['layer', 'admin', 'form', 'laydate', 'upload'], function () {
+        var layer = layui.layer;
+        var admin = layui.admin;
+        var form = layui.form;
+        var laydate = layui.laydate;
+
+
+        form.render("select");
+        laydate.render({
+            elem: '#form-qrcode-starttime',
+            type: 'time',
+            format: 'HH:mm',
+            trigger: 'click'
+        });
+        laydate.render({
+            elem: '#form-qrcode-endtime',
+            type: 'time',
+            format: 'HH:mm',
+            trigger: 'click'
+        });
+        var qcode = $("#myText").val();
+        createQrcode(qcode);
+
+        form.on('submit(qrcode-form-submit)', function (data) {
+            var token = $("meta[name='_csrf_token']").attr("value");
+            var vdata = data.field;
+
+            if (null == vdata.starttime || null == vdata.endtime) {
+                layer.msg("请选择时间段", {icon: 2, time: 1500});
+                return;
+            } else if (vdata.endtime <= vdata.starttime) {
+                layer.msg("请正确选择时间段", {icon: 2, time: 1500});
+                return;
+            }
+            var formData = new FormData();
+            var confid=$("#qrcode-confid").val();
+            formData.append("starttime", vdata.starttime);
+            formData.append("endtime", vdata.endtime);
+            formData.append("confid", confid);
+
+            layer.load(2);
+            $.ajax({
+                type: "POST",
+                url: '[[@{/conference/getqrcode}]]',
+                dataType: 'json',
+                processData: false,
+                contentType: false,
+                data: formData,
+                headers: {
+                    'Accept': 'application/json',
+                    'X-CSRF-TOKEN': token,
+                },
+
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+
+                        createQrcode(result.msg);
+                        layer.msg("成功", {icon: 1, time: 1500});
+
+
+                    } else if (result.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('[[@{/login}]]');
+                        }, 1000);
+                        return;
+                    } else if (result.code == 599) {
+                        //自定义错误
+                        layer.open({
+                            type: 0,
+                            title: "错误信息",
+                            icon: 2,
+                            area: ['600px', '400px'],
+                            content: result.msg
+                        });
+
+                    } else {
+                        layer.msg(result.msg, {icon: 2, time: 1500});
+                    }
+                },
+                error: function (err) {
+                    layer.msg("error", {icon: 2, time: 1500});
+                }
+            });
+
+        });
+
+
+    });
+
+    function  createQrcode(qcode) {
+
+        if (undefined != qcode && null != qcode && "" != qcode) {
+            var qrcode = new QRCode(document.getElementById("qrcode"), {
+                render : "canvas",
+                text: qcode,
+                width: 220,
+                height: 220,
+                colorDark: "#000000",
+                colorLight: "#ffffff",
+                correctLevel: QRCode.CorrectLevel.H
+            });
+        }
+    }
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/doorlist/customer/form.html b/src/main/resources/templates/doorlist/customer/form.html
index 7e3c7e0..bde6e88 100644
--- a/src/main/resources/templates/doorlist/customer/form.html
+++ b/src/main/resources/templates/doorlist/customer/form.html
@@ -22,7 +22,7 @@
         <label class="layui-form-label">人员类别</label>
         <div class="layui-input-block">
             <select name="custtypeid" id="customer-custtype" lay-verify="required">
-                <option th:each="type : ${typelist}" th:value="${type.custtypeid}">[[${type.custtypename}]]</option>
+                <option th:each="type : ${typelst}" th:value="${type.custtypeid}">[[${type.custtypename}]]</option>
             </select>
         </div>
     </div>
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index 8b34989..709d288 100755
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -43,6 +43,7 @@
     <script type="text/javascript" th:src="@{/static/res/assets/plugins/element-ui/index.js}"></script>

     <script type="text/javascript" th:src="@{/static/res/assets/plugins/echarts/echarts.min.js}"></script>

     <script type="text/javascript" th:src="@{/static/res/assets/plugins/moment/moment.js}"></script>

+    <script type="text/javascript" th:src="@{/static/res/assets/js/qrcode.min.js}"></script>

 </head>

 

 <body class="layui-layout-body">