会议签到报表
diff --git a/src/main/java/com/supwisdom/dlpay/conference/controller/ConfReportController.java b/src/main/java/com/supwisdom/dlpay/conference/controller/ConfReportController.java
index a77c228..b93540b 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/controller/ConfReportController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/controller/ConfReportController.java
@@ -120,7 +120,7 @@
         }
     }
 
-    @GetMapping("/confreport/print")
+    @GetMapping("/confreport/print/print")
     public String printReport( @RequestParam(value = "confname", required = false) String confname,
                                   @RequestParam(value = "conftype", required = false) String conftype,
                                   @RequestParam(value = "startdate", required = false) String startdate,
@@ -151,4 +151,29 @@
         return "confreport/print/printindex";
     }
 
+    @GetMapping("/confreport/print/printatt")
+    public String printunatt( @RequestParam(value = "actualcnt", required = false) String actualcnt,
+                               @RequestParam(value = "attendrate", required = false) String attendrate,
+                               @RequestParam(value = "totcnt", required = false) String totcnt,
+                               @RequestParam(value = "confid", required = false) Integer confid,
+                              @RequestParam(value = "confdate", required = false) String confdate,
+                              @RequestParam(value = "confname", required = false) String confname,
+                              @RequestParam(value = "opercode",required = false) String opercode,
+                               ModelMap model) {
+        TOperator oper=managerService.getOperatorByOpercode(opercode);
+     //   String deptcode = oper.getDeptcode();
+        PageResult<ConfpeopleReportBean> bean=conferenceService.getConfPeopleReportForPrint(confid);
+
+        model.addAttribute("confdate", confdate);
+        model.addAttribute("confname", confname);
+        model.addAttribute("actualcnt", actualcnt);
+        model.addAttribute("attendrate", attendrate);
+        model.addAttribute("totcnt",totcnt);
+        model.addAttribute("showlist",bean.getData());
+        model.addAttribute("opername", oper == null ? "unknow" : oper.getOpername());
+        model.addAttribute("printdatetime",DateUtil.reformatDatetime(systemUtilService.getSysdatetime().getHostdatetime(),DateUtil.DATETIME_FMT,"yyyy-MM-dd HH:mm:ss"));
+
+        return "confreport/print/attindex";
+    }
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java b/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
index 73cd92f..e2b54aa 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
@@ -91,6 +91,9 @@
     PageResult<ConfpeopleReportBean> getConfPeopleReport(Integer confid, String searchkey,String attstatus, String deptcode,String attflag);
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
+    PageResult<ConfpeopleReportBean> getConfPeopleReportForPrint(Integer confid);
+
+    @Transactional(rollbackFor = Exception.class, readOnly = true)
     TConfPeople getTConfPeopleByConfidAndCustid(Integer confid,String custid) ;
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
diff --git a/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java
index 82df227..b27841b 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java
@@ -74,21 +74,21 @@
     private EntityManager entityManager;
 
     @Override
-    public PageResult<ConferenceShowBean> getConferenceInfos(String confname, String conftype,String deptcode,String confdate, int pageNo, int pageSize) {
-        Page<TConference> page = getConferencePage(confname, conftype, deptcode, "","","", pageNo, pageSize);
+    public PageResult<ConferenceShowBean> getConferenceInfos(String confname, String conftype, String deptcode, String confdate, int pageNo, int pageSize) {
+        Page<TConference> page = getConferencePage(confname, conftype, deptcode, "", "", "", pageNo, pageSize);
         List<ConferenceShowBean> result = new ArrayList<>(0);
         if (null != page && page.getTotalElements() > 0) {
             for (TConference conf : page.getContent()) {
                 ConferenceShowBean bean = new ConferenceShowBean();
                 bean.setConfname(conf.getConfname());
-                bean.setConfdate(DateUtil.reformatDatetime(conf.getConfdate(),"yyyyMMdd","yyyy-MM-dd"));
+                bean.setConfdate(DateUtil.reformatDatetime(conf.getConfdate(), "yyyyMMdd", "yyyy-MM-dd"));
                 bean.setConftype(conf.getConftype());
                 bean.setStatus(conf.getStatus());
                 bean.setConfid(conf.getConfid());
                 bean.setRemark(conf.getRemark());
                 bean.setStarttime(conf.getStarttime().substring(0, 2) + ":" + conf.getStarttime().substring(2));
                 bean.setEndtime(conf.getEndtime().substring(0, 2) + ":" + conf.getEndtime().substring(2));
-                bean.setTimeperoid(bean.getStarttime()+"~"+bean.getEndtime());
+                bean.setTimeperoid(bean.getStarttime() + "~" + bean.getEndtime());
                 bean.setAttendtime(conf.getAttendtime().substring(0, 2) + ":" + conf.getAttendtime().substring(2));
                 result.add(bean);
             }
@@ -97,43 +97,43 @@
     }
 
     @Override
-    public PageResult<ConfReportShowBean> getConfReportPage(String confname, String conftype, String deptcode, String startdate,String enddate,String status, int pageNo, int pageSize) {
-        Page<TConference> page = getConferencePage(confname, conftype, deptcode, startdate,enddate,status, pageNo, pageSize);
+    public PageResult<ConfReportShowBean> getConfReportPage(String confname, String conftype, String deptcode, String startdate, String enddate, String status, int pageNo, int pageSize) {
+        Page<TConference> page = getConferencePage(confname, conftype, deptcode, startdate, enddate, status, pageNo, pageSize);
         List<ConfReportShowBean> result = new ArrayList<>(0);
-        DecimalFormat format=new DecimalFormat("0.00");
+        DecimalFormat format = new DecimalFormat("0.00");
         if (null != page && page.getTotalElements() > 0) {
             for (TConference conf : page.getContent()) {
-                ConfReportShowBean bean=new ConfReportShowBean();
+                ConfReportShowBean bean = new ConfReportShowBean();
                 bean.setConfname(conf.getConfname());
-                bean.setConfdate(DateUtil.reformatDatetime(conf.getConfdate(),"yyyyMMdd","yyyy-MM-dd"));
+                bean.setConfdate(DateUtil.reformatDatetime(conf.getConfdate(), "yyyyMMdd", "yyyy-MM-dd"));
                 bean.setConftype(conf.getConftype());
                 bean.setConfid(conf.getConfid());
-                String starttime=conf.getStarttime().substring(0, 2) + ":" + conf.getStarttime().substring(2);
-                String endtime=conf.getEndtime().substring(0, 2) + ":" + conf.getEndtime().substring(2);
-                bean.setTimeperoid(starttime+"~"+endtime);
+                String starttime = conf.getStarttime().substring(0, 2) + ":" + conf.getStarttime().substring(2);
+                String endtime = conf.getEndtime().substring(0, 2) + ":" + conf.getEndtime().substring(2);
+                bean.setTimeperoid(starttime + "~" + endtime);
                 bean.setAttendtime(conf.getAttendtime().substring(0, 2) + ":" + conf.getAttendtime().substring(2));
-                if(ConferenceConstant.CONFTYPE_NOLIST.equals(conf.getConftype())){
-                    Integer totcnt=getNoListConfPeopleTotalCount(conf.getConfid());
-                    Integer actualcnt=nolistConfPeopleDao.countByConfid(conf.getConfid());
-                    Float rate=0f;
-                    if(0!=totcnt){
-                        rate=actualcnt*100f/totcnt;
+                if (ConferenceConstant.CONFTYPE_NOLIST.equals(conf.getConftype())) {
+                    Integer totcnt = getNoListConfPeopleTotalCount(conf.getConfid());
+                    Integer actualcnt = nolistConfPeopleDao.countByConfid(conf.getConfid());
+                    Float rate = 0f;
+                    if (0 != totcnt) {
+                        rate = actualcnt * 100f / totcnt;
                     }
-                    bean.setActualcnt(actualcnt+"");
-                    bean.setTotcnt(totcnt+"");
-                    bean.setAttendrate(format.format(rate)+"%");
+                    bean.setActualcnt(actualcnt + "");
+                    bean.setTotcnt(totcnt + "");
+                    bean.setAttendrate(format.format(rate) + "%");
 
-                }else if(ConferenceConstant.CONFTYPE_LIST.equals(conf.getConftype())){
+                } else if (ConferenceConstant.CONFTYPE_LIST.equals(conf.getConftype())) {
                     Integer totcnt = getListConfPeopleTotalCount(conf.getConfid());
-                    Integer actualcnt=getConfPeopleActualCount(conf.getConfid());
-                    Float rate=0f;
-                    if(0!=totcnt){
-                        rate=actualcnt*100f/totcnt;
-                        bean.setAttendrate(format.format(rate)+"%");
+                    Integer actualcnt = getConfPeopleActualCount(conf.getConfid());
+                    Float rate = 0f;
+                    if (0 != totcnt) {
+                        rate = actualcnt * 100f / totcnt;
+                        bean.setAttendrate(format.format(rate) + "%");
                     }
-                    bean.setActualcnt(actualcnt+"");
-                    bean.setTotcnt(totcnt+"");
-                    bean.setAttendrate(format.format(rate)+"%");
+                    bean.setActualcnt(actualcnt + "");
+                    bean.setTotcnt(totcnt + "");
+                    bean.setAttendrate(format.format(rate) + "%");
                 }
                 result.add(bean);
 
@@ -143,13 +143,13 @@
     }
 
     @NotNull
-    private Page<TConference> getConferencePage(String confname, String conftype, String deptcode, String startdate,String enddate,String status, int pageNo, int pageSize) {
-        Sort.Order order1=new Sort.Order(Sort.Direction.DESC, "confdate");
-        Sort.Order order2=new Sort.Order(Sort.Direction.DESC, "confid");
+    private Page<TConference> getConferencePage(String confname, String conftype, String deptcode, String startdate, String enddate, String status, int pageNo, int pageSize) {
+        Sort.Order order1 = new Sort.Order(Sort.Direction.DESC, "confdate");
+        Sort.Order order2 = new Sort.Order(Sort.Direction.DESC, "confid");
         List<Sort.Order> list = new ArrayList<>();
         list.add(order1);
         list.add(order2);
-        Sort sort =Sort.by(list);
+        Sort sort = Sort.by(list);
         Pageable pageable = PageRequest.of(pageNo - 1, pageSize, sort);
 
 
@@ -163,9 +163,9 @@
                 if (!StringUtil.isEmpty(conftype)) {
                     predicates.add(criteriaBuilder.equal(root.get("conftype").as(String.class), conftype));
                 }
-                List<String> childdplist=null;
-                if(!StringUtil.isEmpty(deptcode)){
-                    childdplist = customerDao.getChildDeptlist( deptcode);
+                List<String> childdplist = null;
+                if (!StringUtil.isEmpty(deptcode)) {
+                    childdplist = customerDao.getChildDeptlist(deptcode);
                 }
                 if (!StringUtil.isEmpty(childdplist)) {
                     predicates.add(root.get("deptcode").in(childdplist));
@@ -186,7 +186,7 @@
     }
 
     @Override
-    public boolean deleteConference(int confid) throws Exception{
+    public boolean deleteConference(int confid) throws Exception {
         TConference conf = conferenceDao.findByConfid(confid);
         if (null == conf) {
             throw new WebCheckException("餐补规则不存在!");
@@ -202,8 +202,8 @@
 
     @Override
     public boolean deleteConfPeople(String pid) throws Exception {
-        TConfPeople people=confPeopleDao.getOne(pid);
-        if(null == people){
+        TConfPeople people = confPeopleDao.getOne(pid);
+        if (null == people) {
             throw new WebCheckException("会议人员不存在");
         }
         confPeopleDao.delete(people);
@@ -212,11 +212,11 @@
 
     @Override
     public List<TNcDevice> getBindedDevices(int confid) {
-        List<TConferenceDevbind> bind=conferenceDevbindDao.findAllByConfid(confid);
-        List<TNcDevice> list=new ArrayList<>();
-        if(!StringUtil.isEmpty(bind)){
-            for(TConferenceDevbind b:bind){
-                TNcDevice dev=deviceDao.findDevById(b.getDeviceid());
+        List<TConferenceDevbind> bind = conferenceDevbindDao.findAllByConfid(confid);
+        List<TNcDevice> list = new ArrayList<>();
+        if (!StringUtil.isEmpty(bind)) {
+            for (TConferenceDevbind b : bind) {
+                TNcDevice dev = deviceDao.findDevById(b.getDeviceid());
                 list.add(dev);
             }
             return list;
@@ -226,24 +226,24 @@
 
     @Override
     public boolean checkDevBindRelationship(int confid, int deviceid) {
-        TConferenceDevbind bind = conferenceDevbindDao.findByConfidAndDeviceid(confid,deviceid);
-        if(null!=bind){
+        TConferenceDevbind bind = conferenceDevbindDao.findByConfidAndDeviceid(confid, deviceid);
+        if (null != bind) {
             return true;
         }
         return false;
     }
 
     @Override
-    public List<TConference> getConferenceByDateAndStatus(String confdate,String status) {
+    public List<TConference> getConferenceByDateAndStatus(String confdate, String status) {
 
         List<TConference> conflist;
-        if(!StringUtil.isEmpty(status)){
-            conflist=conferenceDao.findByConfdateAndStatus(confdate,status);
-        }else{
-            conflist=conferenceDao.findByConfdate(confdate);
+        if (!StringUtil.isEmpty(status)) {
+            conflist = conferenceDao.findByConfdateAndStatus(confdate, status);
+        } else {
+            conflist = conferenceDao.findByConfdate(confdate);
         }
 
-        if(StringUtil.isEmpty(conflist)){
+        if (StringUtil.isEmpty(conflist)) {
             return null;
         }
         return conflist;
@@ -251,7 +251,7 @@
 
     @Override
     public List<TConference> getAllConference(String deptcode) {
-        if(!StringUtil.isEmpty(deptcode)){
+        if (!StringUtil.isEmpty(deptcode)) {
             return conferenceDao.findAllByDeptcodeOrderByConfdate(deptcode);
         }
         return conferenceDao.findAllOrderByConfdate();
@@ -274,12 +274,12 @@
     }*/
 
     @Override
-    public boolean saveNewConference(String confname,String confdate, String conftype, String starttime, String endtime,String attendtime, TOperator oper, List<Integer> deviceid,String remark) throws Exception {
+    public boolean saveNewConference(String confname, String confdate, String conftype, String starttime, String endtime, String attendtime, TOperator oper, List<Integer> deviceid, String remark) throws Exception {
 
-        for(Integer i : deviceid){
-            String errdevname=checkTimeErrorDevice(attendtime,endtime,confdate,i);
-            if(!StringUtil.isEmpty(errdevname)){
-                throw new WebCheckException("设备《"+ errdevname+"》存在时间冲突,请重新选择设备");
+        for (Integer i : deviceid) {
+            String errdevname = checkTimeErrorDevice(attendtime, endtime, confdate, i);
+            if (!StringUtil.isEmpty(errdevname)) {
+                throw new WebCheckException("设备《" + errdevname + "》存在时间冲突,请重新选择设备");
             }
         }
 
@@ -304,8 +304,8 @@
         conf.setRemark(remark);
         conf = conferenceDao.save(conf);
 
-        for(Integer i : deviceid){
-            TConferenceDevbind bind=new TConferenceDevbind();
+        for (Integer i : deviceid) {
+            TConferenceDevbind bind = new TConferenceDevbind();
             bind.setConfid(conf.getConfid());
             bind.setCreateOperid(oper.getOperid());
             bind.setCreatetime(systime);
@@ -317,8 +317,8 @@
 
     @Override
     public boolean saveConferencePeopleByExcel(Integer confid, String fpath) throws Exception {
-        TConference conference=conferenceDao.findByConfid(confid);
-        if(null==conference){
+        TConference conference = conferenceDao.findByConfid(confid);
+        if (null == conference) {
             throw new WebCheckException("会议不存在");
         }
         List<String> successCardnos = new ArrayList<>(0);
@@ -334,7 +334,7 @@
         try {
             for (int n = 0; n < peoplelist.size(); n++) {
                 String msg = "";
-                String cardno =peoplelist.get(n).getCardno().trim();
+                String cardno = peoplelist.get(n).getCardno().trim();
                 String name = peoplelist.get(n).getCustname().trim();
                 if (StringUtil.isEmpty(cardno)) {
                     msg += ",市民卡号为空";
@@ -342,10 +342,10 @@
                 if (StringUtil.isEmpty(name)) {
                     msg += ",姓名为空";
                 }
-                TCustomerInfo customer=null;
-                List<TCustomerInfo> customerlist = webInterfaceService.getAllTCustomerList(null,cardno,null);
-                if(customerlist.size()>0){
-                    customer=customerlist.get(0);
+                TCustomerInfo customer = null;
+                List<TCustomerInfo> customerlist = webInterfaceService.getAllTCustomerList(null, cardno, null);
+                if (customerlist.size() > 0) {
+                    customer = customerlist.get(0);
                 }
                 if (!customer.getCustname().equals(name)) {
                     msg += ",市民卡号与姓名不匹配!";
@@ -353,16 +353,16 @@
                 if (!StringUtil.isEmpty(cardno) && successCardnos.contains(cardno)) {
                     msg += ",市民卡号重复!";
                 }
-                String errconfname=checkConfTimeError(conference.getAttendtime(),conference.getEndtime(),conference.getConfdate(),cardno);
-                if(!StringUtil.isEmpty(errconfname)){
-                    msg += ",市民卡号[" + cardno + "]在会议:"+errconfname+"中已存在!";
+                String errconfname = checkConfTimeError(conference.getAttendtime(), conference.getEndtime(), conference.getConfdate(), cardno);
+                if (!StringUtil.isEmpty(errconfname)) {
+                    msg += ",市民卡号[" + cardno + "]在会议:" + errconfname + "中已存在!";
                 }
 
                 if (!StringUtil.isEmpty(msg)) {
                     errmsgList.add("第" + (n + 1) + "行数据错误" + msg);
                 } else {
-                    String atttype=ConferenceConstant.ATTTYPE_SELF;
-                    String custid=customer.getCustid();
+                    String atttype = ConferenceConstant.ATTTYPE_SELF;
+                    String custid = customer.getCustid();
                     saveNewConfPeople(confid, cardno, name, atttype, custid);
 
                     successCardnos.add(cardno);
@@ -393,31 +393,31 @@
         List<String> successCardnos = new ArrayList<>(0);
         List<String> errmsgList = new ArrayList<>(0);
 
-        for (String card :cardnos) {
+        for (String card : cardnos) {
             String msg = "";
-            TCustomerInfo customer=new TCustomerInfo();
-            List<TCustomerInfo> customerlist = webInterfaceService.getAllTCustomerList(null,card,null);
+            TCustomerInfo customer = new TCustomerInfo();
+            List<TCustomerInfo> customerlist = webInterfaceService.getAllTCustomerList(null, card, null);
 
-            if(customerlist.size()>0){
-                customer=customerlist.get(0);
-            }else{
-                msg+=",对应用户不存在";
+            if (customerlist.size() > 0) {
+                customer = customerlist.get(0);
+            } else {
+                msg += ",对应用户不存在";
             }
-            TConference conference=conferenceDao.findByConfid(confid);
-            if(null==conference){
-                msg+=",会议不存在";
+            TConference conference = conferenceDao.findByConfid(confid);
+            if (null == conference) {
+                msg += ",会议不存在";
             }
 
-            String errconfname=checkConfTimeError(conference.getAttendtime(),conference.getEndtime(),conference.getConfdate(),card);
-            if(!StringUtil.isEmpty(errconfname)){
-                msg += ",市民卡号[" + card + "]在会议:"+errconfname+"中已存在!";
+            String errconfname = checkConfTimeError(conference.getAttendtime(), conference.getEndtime(), conference.getConfdate(), card);
+            if (!StringUtil.isEmpty(errconfname)) {
+                msg += ",市民卡号[" + card + "]在会议:" + errconfname + "中已存在!";
             }
             if (!StringUtil.isEmpty(msg)) {
                 errmsgList.add(",市民卡号[" + card + "]错误" + msg);
-            } else{
-                String atttype=ConferenceConstant.ATTTYPE_SELF;
-                String custid=customer.getCustid();
-                saveNewConfPeople(confid,customer.getCardno(),customer.getCustname(),atttype,custid);
+            } else {
+                String atttype = ConferenceConstant.ATTTYPE_SELF;
+                String custid = customer.getCustid();
+                saveNewConfPeople(confid, customer.getCardno(), customer.getCustname(), atttype, custid);
             }
 
 
@@ -474,24 +474,24 @@
 
     @Override
     public List<TConfDtl> getUnupdateConfDtl() {
-        List<TConfDtl> dtl=confDtlDao.findByUpdateflag(ConferenceConstant.CONFDTL_STATUS_UNUPDATE);
-        if(!StringUtil.isEmpty(dtl)){
+        List<TConfDtl> dtl = confDtlDao.findByUpdateflag(ConferenceConstant.CONFDTL_STATUS_UNUPDATE);
+        if (!StringUtil.isEmpty(dtl)) {
             return dtl;
         }
         return null;
     }
 
     @Override
-    public List<ConferenceApiBean> getConferneceForDevice(String confdate,Integer deviceid) {
-        StringBuffer querySql=new StringBuffer("select a.confid,a.confname,a.conftype," +
+    public List<ConferenceApiBean> getConferneceForDevice(String confdate, Integer deviceid) {
+        StringBuffer querySql = new StringBuffer("select a.confid,a.confname,a.conftype," +
                 "a.confdate,a.status,a.starttime,a.endtime,a.attendtime,c.devname as confarea from tb_conference a " +
                 "left join tb_conference_devbind b on a.confid=b.confid " +
                 "left join t_nc_device c on b.deviceid=c.deviceid " +
                 "where a.confdate=:confdate and c.deviceid=:deviceid");
 
         Query query = entityManager.createNativeQuery(querySql.toString());
-        query.setParameter("confdate",confdate);
-        query.setParameter("deviceid",deviceid);
+        query.setParameter("confdate", confdate);
+        query.setParameter("deviceid", deviceid);
         query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(ConferenceApiBean.class));
         List<ConferenceApiBean> list = query.getResultList();
         return list;
@@ -499,7 +499,7 @@
 
     @Override
     public TNolistConfPeople saveNolistConfPeople(TNolistConfPeople people) {
-        return nolistConfPeopleDao.save(people) ;
+        return nolistConfPeopleDao.save(people);
     }
 
     @Override
@@ -515,13 +515,13 @@
     @Override
     public JsonResult updateConfPeople(String pid, String conftype, String insteadcustid, String attstatus, String remark) {
 
-        if(ConferenceConstant.CONFTYPE_NOLIST.equals(conftype)){
-            TNolistConfPeople people=nolistConfPeopleDao.getOne(pid);
-            if(null==people){
+        if (ConferenceConstant.CONFTYPE_NOLIST.equals(conftype)) {
+            TNolistConfPeople people = nolistConfPeopleDao.getOne(pid);
+            if (null == people) {
                 return JsonResult.error("修改失败,未查询到该用户");
             }
-            TConference conf=conferenceDao.findByConfid(people.getConfid());
-            if(null==conf){
+            TConference conf = conferenceDao.findByConfid(people.getConfid());
+            if (null == conf) {
                 return JsonResult.error("修改失败,会议不存在");
             }
 
@@ -530,35 +530,35 @@
             people.setRemark(remark);
             nolistConfPeopleDao.save(people);
 
-        }else{
-            TConfPeople people=confPeopleDao.getOne(pid);
-            if(null==people){
+        } else {
+            TConfPeople people = confPeopleDao.getOne(pid);
+            if (null == people) {
                 return JsonResult.error("修改失败,未查询到该用户");
             }
-            TConference conf=conferenceDao.findByConfid(people.getConfid());
-            if(null==conf){
+            TConference conf = conferenceDao.findByConfid(people.getConfid());
+            if (null == conf) {
                 return JsonResult.error("修改失败,会议不存在");
             }
-            if(null!=people.getAtttime()){
+            if (null != people.getAtttime()) {
                 return JsonResult.error("已签到人员不可修改状态");
             }
 
-            if(ConferenceConstant.ATTENDSTATUS_INSTEAD.equals(attstatus)){
-                if(ConferenceConstant.CONFSTATUS_OVER.equals(conf.getStatus())||ConferenceConstant.CONFSTATUS_START.equals(conf.getStatus())){
+            if (ConferenceConstant.ATTENDSTATUS_INSTEAD.equals(attstatus)) {
+                if (ConferenceConstant.CONFSTATUS_OVER.equals(conf.getStatus()) || ConferenceConstant.CONFSTATUS_START.equals(conf.getStatus())) {
                     return JsonResult.error("已开始或结束的会议不能代签");
                 }
-                List<TCustomerInfo> clist=customerDao.getAllTCustomerList("","","",insteadcustid);
-                if(clist.size()<=0){
+                List<TCustomerInfo> clist = customerDao.getAllTCustomerList("", "", "", insteadcustid);
+                if (clist.size() <= 0) {
                     return JsonResult.error("代签人员不存在");
                 }
-                TCustomerInfo cust=clist.get(0);
-                saveNewConfPeople(conf.getConfid(),cust.getCardno(),cust.getCustname(),ConferenceConstant.ATTTYPE_INSTEAD,insteadcustid);
+                TCustomerInfo cust = clist.get(0);
+                saveNewConfPeople(conf.getConfid(), cust.getCardno(), cust.getCustname(), ConferenceConstant.ATTTYPE_INSTEAD, insteadcustid);
             }
 
             people.setInsteadcustid(insteadcustid);
             people.setAttstatus(attstatus);
             people.setRemark(remark);
-            if(ConferenceConstant.ATTENDSTATUS_HANDCHECK.equals(attstatus)){
+            if (ConferenceConstant.ATTENDSTATUS_HANDCHECK.equals(attstatus)) {
                 people.setAtttime("----");
             }
             confPeopleDao.save(people);
@@ -569,29 +569,29 @@
     }
 
     @Override
-    public PageResult<ConfpeopleShowBean> getConfPeoplePage(Integer confid, String attstatus,String atttype, int pageNo, int pageSize) {
-        TConference conf=conferenceDao.findByConfid(confid);
-        if(null==conf){
+    public PageResult<ConfpeopleShowBean> getConfPeoplePage(Integer confid, String attstatus, String atttype, int pageNo, int pageSize) {
+        TConference conf = conferenceDao.findByConfid(confid);
+        if (null == conf) {
             return new PageResult<>(99, "会议不存在");
         }
-        String table="tb_conf_people";
+        String table = "tb_conf_people";
 
-        if(ConferenceConstant.CONFTYPE_NOLIST.equals(conf.getConftype())){
-            table="tb_nolist_conf_people";
+        if (ConferenceConstant.CONFTYPE_NOLIST.equals(conf.getConftype())) {
+            table = "tb_nolist_conf_people";
         }
 
-        StringBuffer querySql=new StringBuffer("select a.confid,a.confname,b.custname,b.cardno,d.deptname,b.attstatus,b.atttime,b.custid,b.pid,b.remark,b.insteadcustid,a.conftype,e.custname as insteadcustname,b.atttype from "+table+" b  " +
+        StringBuffer querySql = new StringBuffer("select a.confid,a.confname,b.custname,b.cardno,d.deptname,b.attstatus,b.atttime,b.custid,b.pid,b.remark,b.insteadcustid,a.conftype,e.custname as insteadcustname,b.atttype from " + table + " b  " +
                 "left join tb_conference a on a.confid=b.confid " +
                 "left join t_customer c on b.custid=c.custid " +
                 "left join tb_dept d on c.deptcode=d.deptcode " +
                 "left join t_customer e on b.insteadcustid=e.custid " +
                 "where b.confid=:confid and b.atttype!='temp' " +
                 "union " +
-                "select a.confid,a.confname,b.custname,b.cardno,b.remark as deptname,b.attstatus,b.atttime,b.custid,b.pid,'临时人员' as remark,'' as insteadcustid,a.conftype,'' as insteadcustname,b.atttype  from "+table+" b  " +
+                "select a.confid,a.confname,b.custname,b.cardno,b.remark as deptname,b.attstatus,b.atttime,b.custid,b.pid,'临时人员' as remark,'' as insteadcustid,a.conftype,'' as insteadcustname,b.atttype  from " + table + " b  " +
                 "left join tb_conference a on a.confid=b.confid " +
-                "where b.confid=:confid and b.atttype='temp' " );
+                "where b.confid=:confid and b.atttype='temp' ");
 
-        StringBuffer countSql = new StringBuffer("select count(*) from "+table+" b  " +
+        StringBuffer countSql = new StringBuffer("select count(*) from " + table + " b  " +
                 "left join tb_conference a on a.confid=b.confid " +
                 "left join t_customer c on b.custid=c.custid " +
                 "left join tb_dept d on c.deptcode=d.deptcode " +
@@ -611,8 +611,8 @@
         Query query = entityManager.createNativeQuery(querySql.toString());
         Query countQuery = entityManager.createNativeQuery(countSql.toString());
 
-        query.setParameter("confid",confid);
-        countQuery.setParameter("confid",confid);
+        query.setParameter("confid", confid);
+        countQuery.setParameter("confid", confid);
         if (!StringUtil.isEmpty(attstatus)) {
             query.setParameter("attstatus", attstatus);
             countQuery.setParameter("attstatus", attstatus);
@@ -626,67 +626,101 @@
     }
 
     @Override
-    public PageResult<ConfpeopleReportBean> getConfPeopleReport(Integer confid,String searchkey, String attstatus, String deptcode,String attflag) {
-        TConference conf=conferenceDao.findByConfid(confid);
-        if(null==conf){
+    public PageResult<ConfpeopleReportBean> getConfPeopleReport(Integer confid, String searchkey, String attstatus, String deptcode, String attflag) {
+        TConference conf = conferenceDao.findByConfid(confid);
+        if (null == conf) {
             return null;
         }
-        String table="tb_conf_people";
+        String table = "tb_conf_people";
 
-        if(ConferenceConstant.CONFTYPE_NOLIST.equals(conf.getConftype())){
-            table="tb_nolist_conf_people";
+        if (ConferenceConstant.CONFTYPE_NOLIST.equals(conf.getConftype())) {
+            table = "tb_nolist_conf_people";
         }
 
-        StringBuffer querySql=new StringBuffer("select b.custname,d.deptname,b.attstatus,b.atttime,b.remark,e.custname as insteadcustname,b.atttype from "+table+" b  " +
+        StringBuffer querySql = new StringBuffer("select b.custname,d.deptname,b.attstatus,b.atttime,b.remark,e.custname as insteadcustname,b.atttype from " + table + " b  " +
                 "left join tb_conference a on a.confid=b.confid " +
                 "left join t_customer c on b.custid=c.custid " +
                 "left join tb_dept d on c.deptcode=d.deptcode " +
                 "left join t_customer e on b.insteadcustid=e.custid " +
-                "where b.confid=:confid and b.atttime is "+attflag +" null and b.atttype !='temp' " );
-        if(!StringUtil.isEmpty(attflag)){
+                "where b.confid=:confid and b.atttime is " + attflag + " null and b.atttype !='temp' ");
+        if (!StringUtil.isEmpty(attflag)) {
             querySql.append("union " +
-                    "select b.custname,b.remark as deptname,b.attstatus,b.atttime,'' as remark,'' as insteadcustname,b.atttype from "+table+" b  " +
+                    "select b.custname,b.remark as deptname,b.attstatus,b.atttime,'' as remark,'' as insteadcustname,b.atttype from " + table + " b  " +
                     "where b.confid=:confid and b.atttype ='temp' ");
         }
         if (!StringUtil.isEmpty(attstatus)) {
             querySql.append(" and b.attstatus=:attstatus ");
         }
-        if(!StringUtil.isEmpty(deptcode)){
-            List<String> deptlist=customerDao.getChildDeptlist(deptcode);
-            if(!StringUtil.isEmpty(deptlist)){
-                querySql.append(" and d.deptcode in ('"+ StringUtils.join(deptlist.toArray(),"','")+"') ");
+
+        if (!StringUtil.isEmpty(deptcode)) {
+            List<String> deptlist = customerDao.getChildDeptlist(deptcode);
+            if (!StringUtil.isEmpty(deptlist)) {
+                querySql.append(" and d.deptcode in ('" + StringUtils.join(deptlist.toArray(), "','") + "') ");
             }
         }
-        if(!StringUtil.isEmpty(searchkey)){
+        if (!StringUtil.isEmpty(searchkey)) {
             querySql.append("and b.custname=:searchkey");
         }
-        querySql.append(" order by atttime ");
+        querySql.append(" order by deptname");
 
-
+        System.out.println(querySql.toString());
 
         Query query = entityManager.createNativeQuery(querySql.toString());
-        query.setParameter("confid",confid);
-        if(!StringUtil.isEmpty(searchkey)){
+        query.setParameter("confid", confid);
+        if (!StringUtil.isEmpty(searchkey)) {
             query.setParameter("searchkey", searchkey);
         }
-        if(!StringUtil.isEmpty(attstatus)){
+        if (!StringUtil.isEmpty(attstatus)) {
             query.setParameter("attstatus", attstatus);
         }
 
         query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(ConfpeopleReportBean.class));
         List<ConfpeopleReportBean> list = query.getResultList();
-        return  new PageResult<>(list);
+        return new PageResult<>(list);
     }
 
+    @Override
+    public PageResult<ConfpeopleReportBean> getConfPeopleReportForPrint(Integer confid) {
+        TConference conf = conferenceDao.findByConfid(confid);
+        if (null == conf) {
+            return null;
+        }
+        String table = "tb_conf_people";
+
+        if (ConferenceConstant.CONFTYPE_NOLIST.equals(conf.getConftype())) {
+            table = "tb_nolist_conf_people";
+        }
+
+        StringBuffer querySql = new StringBuffer("select b.custname,d.deptname,b.attstatus,b.atttime,b.remark,e.custname as insteadcustname,b.atttype from " + table + " b  " +
+                "left join tb_conference a on a.confid=b.confid " +
+                "left join t_customer c on b.custid=c.custid " +
+                "left join tb_dept d on c.deptcode=d.deptcode " +
+                "left join t_customer e on b.insteadcustid=e.custid " +
+                "where b.confid=:confid and b.atttype !='temp' ");
+        querySql.append("union " +
+                "select b.custname,b.remark as deptname,b.attstatus,b.atttime,'' as remark,'' as insteadcustname,b.atttype from " + table + " b  " +
+                "where b.confid=:confid and b.atttype ='temp' ");
+
+        querySql.append(" order by deptname");
+
+        System.out.println(querySql.toString());
+
+        Query query = entityManager.createNativeQuery(querySql.toString());
+        query.setParameter("confid", confid);
+
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(ConfpeopleReportBean.class));
+        List<ConfpeopleReportBean> list = query.getResultList();
+        return new PageResult<>(list);
+    }
 
     @Override
     public TConfPeople getTConfPeopleByConfidAndCustid(Integer confid, String custid) {
-        return confPeopleDao.findByConfidAndCustid(confid,custid);
+        return confPeopleDao.findByConfidAndCustid(confid, custid);
     }
 
     @Override
     public TNolistConfPeople getNolistConfPeopleByConfidAndCustid(Integer confid, String custid) {
-        return nolistConfPeopleDao.findByConfidAndCustid(confid,custid);
+        return nolistConfPeopleDao.findByConfidAndCustid(confid, custid);
 
     }
 
@@ -696,7 +730,7 @@
         list.add(ConferenceConstant.ATTENDSTATUS_CHECKED);
         list.add(ConferenceConstant.ATTENDSTATUS_HANDCHECK);
         list.add(ConferenceConstant.ATTENDSTATUS_LATE);
-        return confPeopleDao.countByConfidAndAttstatusInAndAtttypeNot(confid,list,ConferenceConstant.ATTTYPE_TEMP);
+        return confPeopleDao.countByConfidAndAttstatusInAndAtttypeNot(confid, list, ConferenceConstant.ATTTYPE_TEMP);
     }
 
     @Override
@@ -705,7 +739,7 @@
         list.add(ConferenceConstant.ATTENDSTATUS_INSTEAD);
         list.add(ConferenceConstant.ATTENDSTATUS_CLOSED);
 
-        return confPeopleDao.countByConfidAndAttstatusNotInAndAtttypeNot(confid,list,ConferenceConstant.ATTTYPE_TEMP);
+        return confPeopleDao.countByConfidAndAttstatusNotInAndAtttypeNot(confid, list, ConferenceConstant.ATTTYPE_TEMP);
     }
 
     @Override
@@ -715,7 +749,7 @@
 
     @Override
     public List<ConfPeopleApiBean> getConfPeopleListByDevphyid(String devphyid, String confdate) {
-        StringBuffer querySql=new StringBuffer("select a.custname,a.attstatus,a.atttime from tb_conf_people a " +
+        StringBuffer querySql = new StringBuffer("select a.custname,a.attstatus,a.atttime from tb_conf_people a " +
                 "left join tb_conference b on a.confid=b.confid  " +
                 "left join tb_conference_devbind c on b.confid=c.confid " +
                 "left join t_nc_device d on c.deviceid=d.deviceid " +
@@ -729,8 +763,8 @@
 
 
         Query query = entityManager.createNativeQuery(querySql.toString());
-        query.setParameter("devphyid",devphyid);
-        query.setParameter("confdate",confdate);
+        query.setParameter("devphyid", devphyid);
+        query.setParameter("confdate", confdate);
         query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(ConfPeopleApiBean.class));
         List<ConfPeopleApiBean> list = query.getResultList();
         return list;
@@ -738,21 +772,21 @@
 
     @Override
     public List<ConfPeopleApiBean> getConfPeopleListByConfid(Integer confid, String conftype) {
-        String table="tb_conf_people";
-        if(ConferenceConstant.CONFTYPE_NOLIST.equals(conftype)){
-            table="tb_nolist_conf_people";
+        String table = "tb_conf_people";
+        if (ConferenceConstant.CONFTYPE_NOLIST.equals(conftype)) {
+            table = "tb_nolist_conf_people";
         }
-        StringBuffer querySql=new StringBuffer("select a.custname,a.attstatus,a.atttime,c.deptname,d.custtypename from "+table+" a " +
+        StringBuffer querySql = new StringBuffer("select a.custname,a.attstatus,a.atttime,c.deptname,d.custtypename from " + table + " a " +
                 "left join t_customer b on a.custid=b.custid " +
                 "left join tb_dept c on b.deptcode=c.deptcode " +
-                "left join tb_custtype d on b.custtypeid=d.custtypeid "+
-                    "where a.atttime is not null and a.atttype != 'temp' and a.confid=:confid " +
-                "UNION "+
+                "left join tb_custtype d on b.custtypeid=d.custtypeid " +
+                "where a.atttime is not null and a.atttype != 'temp' and a.confid=:confid " +
+                "UNION " +
                 "select a.custname,a.attstatus,a.atttime,a.remark as deptname," +
-                "'临时人员' as custtypename from "+table+" a "+
+                "'临时人员' as custtypename from " + table + " a " +
                 "where  confid=:confid and a.atttype='temp'");
         Query query = entityManager.createNativeQuery(querySql.toString());
-        query.setParameter("confid",confid);
+        query.setParameter("confid", confid);
         query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(ConfPeopleApiBean.class));
         List<ConfPeopleApiBean> list = query.getResultList();
         return list;
@@ -760,7 +794,7 @@
     }
 
 
-    private String checkConfTimeError(String attendtime, String endtime,String confdate,String cardno) {
+    private String checkConfTimeError(String attendtime, String endtime, String confdate, String cardno) {
         Query query = entityManager.createNativeQuery("select a.confname from tb_conference a,TB_Conf_People b where a.confid=b.confid  " +
                 "and  (a.status='unstart' or a.status='start') " +
                 "and b.cardno=:cardno " +
@@ -771,13 +805,13 @@
         query.setParameter("attendtime", attendtime);
         query.setParameter("endtime", endtime);
         List<String> confname = query.getResultList();
-        if(!StringUtil.isEmpty(confname)){
+        if (!StringUtil.isEmpty(confname)) {
             return confname.get(0);
         }
         return null;
     }
 
-    private String checkTimeErrorDevice(String attendtime, String endtime,String confdate,Integer deviceid) {
+    private String checkTimeErrorDevice(String attendtime, String endtime, String confdate, Integer deviceid) {
         Query query = entityManager.createNativeQuery("select c.devname from tb_conference a " +
                 "left join tb_conference_devbind b on a.confid=b.confid " +
                 "left join t_nc_device c on b.deviceid=c.deviceid " +
@@ -790,7 +824,7 @@
         query.setParameter("attendtime", attendtime);
         query.setParameter("endtime", endtime);
         List<String> confname = query.getResultList();
-        if(!StringUtil.isEmpty(confname)){
+        if (!StringUtil.isEmpty(confname)) {
             return confname.get(0);
         }
         return null;
@@ -802,7 +836,7 @@
                 "on p.custid=t.custid left join tb_dept d on d.deptcode=t.deptcode where confid=:confid)");
         query.setParameter("confid", confid);
         BigInteger cnt = (BigInteger) query.getSingleResult();
-        System.out.println("cnt:::"+cnt);
+        System.out.println("cnt:::" + cnt);
 
         return cnt.intValue();
     }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index b823768..9b5eaa6 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -203,7 +203,7 @@
                         .antMatchers("/login", "/login/form","/app/**").permitAll()
                         .antMatchers("/static/**").permitAll()
                         .antMatchers("/code/image").permitAll()
-                        .antMatchers("/confreport/print").permitAll()
+                        .antMatchers("/confreport/print/**").permitAll()
                         .antMatchers("/atte/print/**").permitAll()
                         .antMatchers("/**").hasAnyRole("USER", "ADMIN")
                         .anyRequest().authenticated()
diff --git a/src/main/resources/templates/confreport/detail.html b/src/main/resources/templates/confreport/detail.html
index 7d94f42..0663470 100644
--- a/src/main/resources/templates/confreport/detail.html
+++ b/src/main/resources/templates/confreport/detail.html
@@ -19,10 +19,13 @@
                         </div>
                         姓名:
                         <input id="search-confreport-searchkey" type="text" class="layui-input search-input"
-                               maxlength="20" style="width: 200px;" placeholder="输入姓名"/>&emsp;
+                               maxlength="20" style="width: 100px;" placeholder="输入姓名"/>&emsp;
                         <button id="btn-search-confreport-att" class="layui-btn icon-btn"><i
                                 class="layui-icon">&#xe615;</i>搜索
                         </button>
+                        <button id="btn-print-confreport-att" class="layui-btn icon-btn"><i
+                                class="layui-icon">&#xe615;</i>打印
+                        </button>
                         <table class="layui-table" id="confreport-table"
                                lay-filter="confreport-table-filter"></table>
                     </div>
@@ -41,11 +44,10 @@
                         </div>
                         姓名:
                         <input id="search-confreport-searchkey-unatt" type="text" class="layui-input search-input"
-                               maxlength="20" style="width: 200px;" placeholder="输入姓名"/>&emsp;
+                               maxlength="20" style="width: 100px;" placeholder="输入姓名"/>&emsp;
                         <button id="btn-search-confreport-unatt" class="layui-btn icon-btn"><i
                                 class="layui-icon">&#xe615;</i>搜索
                         </button>
-
                         <table class="layui-table" id="confreport-table-unatt"
                                lay-filter="confreport-table-filter"></table>
                     </div>
@@ -259,6 +261,33 @@
                 }
             });
         });
+        $('#btn-print-confreport-att').click(function () {
+            var data = admin.getTempData('confdetail');
+
+
+            var actualcnt = data.actualcnt;
+            var totcnt = data.totcnt;
+            var attendrate = data.attendrate;
+            var confid=data.confid;
+            var confdate=data.confdate;
+            var confname=data.confname;
+            var opercode=admin.getTempData('opercode');
+
+            var url = '/confreport/print/printatt?confid=' + confid + '&attendrate=' + attendrate +
+                '&totcnt=' + totcnt + '&actualcnt=' + actualcnt+'&confdate=' + confdate+'&confname=' + confname+'&opercode=' + opercode;
+
+            LODOP = getLodop();
+            LODOP.PRINT_INIT("会议报表");
+            LODOP.SET_PRINT_PAGESIZE(2, 0, 0,"A4");
+            LODOP.ADD_PRINT_URL(30, 20, "95%", "90%", encodeURI(url));
+            LODOP.ADD_PRINT_HTM("95%", "48%", 150, 50, "<font style='font-size:12px'><span tdata='pageNO'>##</span>/<span tdata='pageCount'>&nbsp;&nbsp;##</span></font>");
+            LODOP.SET_PRINT_STYLEA(0, "ItemType", 1);
+            LODOP.SET_PRINT_STYLEA(0, "HOrient", 3);
+            LODOP.SET_PRINT_STYLEA(0, "VOrient", 3);
+            LODOP.SET_SHOW_MODE("NP_NO_RESULT", true);
+            LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW",true);
+            LODOP.PREVIEW();
+        });
 
     });
 </script>
\ No newline at end of file
diff --git a/src/main/resources/templates/confreport/index.html b/src/main/resources/templates/confreport/index.html
index 5da8028..8470a3c 100644
--- a/src/main/resources/templates/confreport/index.html
+++ b/src/main/resources/templates/confreport/index.html
@@ -151,10 +151,10 @@
             var confname = $("#search-confreport-confname").val();
             var startdate = $("#search-confreport-startdate").val();
             var enddate = $("#search-confreport-enddate").val();
-            var url = '/confreport/print?startdate=' + startdate + '&enddate=' + enddate + '&conftype=' + conftype + '&confname=' + confname+ '&opercode=' + opercode;
+            var url = '/confreport/print/print?startdate=' + startdate + '&enddate=' + enddate + '&conftype=' + conftype + '&confname=' + confname+ '&opercode=' + opercode;
 
             LODOP = getLodop();
-            LODOP.PRINT_INIT("考勤报表");
+            LODOP.PRINT_INIT("会议报表");
             LODOP.SET_PRINT_PAGESIZE(2, 0, 0,"A4");
             LODOP.ADD_PRINT_URL(30, 20, "95%", "90%", encodeURI(url));
             LODOP.ADD_PRINT_HTM("95%", "48%", 150, 50, "<font style='font-size:12px'><span tdata='pageNO'>##</span>/<span tdata='pageCount'>&nbsp;&nbsp;##</span></font>");
@@ -171,7 +171,10 @@
         //监听单元格
         table.on('tool(confreportTable-filter)', function (obj) {
             var data = obj.data;
+            var opercode = $("#confreport-opercode").val();
             if ('detail' == obj.event) {
+                admin.putTempData('confdetail', data);
+                admin.putTempData('opercode',opercode)
                 admin.popupCenter({
                     title: data.confname,
                     path: '[[@{/confreport/load4detail}]]?confid=' + data.confid,
diff --git a/src/main/resources/templates/confreport/print/attindex.html b/src/main/resources/templates/confreport/print/attindex.html
new file mode 100644
index 0000000..6529dfd
--- /dev/null
+++ b/src/main/resources/templates/confreport/print/attindex.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+<head>
+    <meta charset="UTF-8">
+    <title>会议签到报表</title>
+
+    <link rel="stylesheet" th:href="@{/static/libs/layui/css/layui.css}"/>
+    <link rel="stylesheet" th:href="@{/static/custom/css/custom.css}"/>
+</head>
+<body>
+<div class="layui-card">
+    <div class="layui-card-header" style="text-align: center;">
+        <h1 th:text="${confname+'签到人员表'}"></h1>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            <div style="float: left;padding-left: 10px;font-size:16px" th:text="${'日期:'+ confdate }"></div>
+            <span style="float: left;padding-left: 10px;font-size:16px" th:text="${'名单人数:'+totcnt}"></span>
+            <span style="float: left;padding-left: 10px;font-size:16px" th:text="${'参会人数:'+actualcnt }"></span>
+            <span style="float: left;padding-left: 10px;font-size:16px" th:text="${'参会率:'+attendrate }"></span>
+        </div>
+        <table class="layui-table sw-table sw-print">
+            <thead>
+            <tr>
+                <th  style="text-align: center;">姓名</th>
+                <th  style="text-align: center;">部门</th>
+                <th  style="text-align: center;">签到时间</th>
+                <th  style="text-align: center;">签到方式</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr th:if="${null==showlist || showlist.size()==0}">
+                <td colspan="13">无数据</td>
+            </tr>
+            <div th:remove="tag" th:if="${null!=showlist && showlist.size()>0}" th:each="data:${showlist}"
+                 >
+                <tr>
+                    <td th:text="${data.custname}"></td>
+                    <td th:text="${data.deptname}"></td>
+                    <div th:switch="${data.attstatus}">
+                        <div th:case="'uncheck'">
+                            <td>未签到</td>
+                        </div>
+                        <div th:case="'checked'">
+                            <td>已签到</td>
+                        </div>
+                        <div th:case="'handcheck'">
+                            <td>手工签到</td>
+                        </div>
+                        <div th:case="'closed'">
+                            <td>关闭</td>
+                        </div>
+                        <div th:case="'late'">
+                            <td>迟到</td>
+                        </div>
+                        <div th:case="'instead'">
+                            <td>被代签</td>
+                        </div>
+                    </div>
+
+                    <div th:switch="${data.atttype}">
+                        <div th:case="'instead'">
+                            <td>代签</td>
+                        </div>
+                        <div th:case="'self'">
+                            <td>实签</td>
+                        </div>
+                        <div th:case="'temp'">
+                            <td>临时</td>
+                        </div>
+                    </div>
+
+                </tr>
+
+            </div>
+            <!--<div th:if="${null!=sum}">
+                <tr>
+                    <td colspan="4" >合计:</td>
+                    <td th:text="${sum.cnt1}"></td>
+                    <td th:text="${sum.cnt2}"></td>
+                    <td th:text="${sum.cnt3}"></td>
+                    <td th:text="${sum.cnt4}"></td>
+                    <td th:text="${sum.cnts}"></td>
+                </tr>
+            </div>-->
+            </tbody>
+        </table>
+        <!--<div class="layui-form toolbar">-->
+            <!--<div style="float: left;padding-left: 3px;" th:text="${'制表人:'+opername+' &nbsp;&nbsp; '+ printdatetime}"></div>-->
+        <!--</div>-->
+    </div>
+    <div class="layui-card-body" style="margin-top: 25px;">
+    <div class="col-sm-12">
+        <table width="100%">
+            <tr style="height: 25px;">
+                <td width="12%" style="text-align: right;padding-right: 5px;"></td>
+                <td width="18%"
+                    style="text-align: left;" ></td>
+                <td width="5%">&nbsp;</td>
+                <td width="12%" style="text-align: right;padding-right: 5px;">制表人:</td>
+                <td width="18%"
+                    style="text-align: left;border-bottom: 1px solid #666;" th:text="${opername}"></td>
+                <td width="5%">&nbsp;</td>
+                <td width="12%" style="text-align: right;padding-right: 5px;">制表日期:</td>
+                <td width="18%"
+                    style="text-align: left;border-bottom: 1px solid #666;" th:text="${printdatetime}">
+                </td>
+            </tr>
+            <tr style="height: 25px;"></tr>
+            <tr style="height: 25px;">
+                <td width="12%" style="text-align: right;padding-right: 5px;"></td>
+                <td width="18%"
+                    style="text-align: left;" ></td>
+                <td width="5%">&nbsp;</td>
+                <td width="12%" style="text-align: right;padding-right: 5px;">审核人签字:</td>
+                <td width="18%"
+                    style="text-align: left;border-bottom: 1px solid #666;"></td>
+                <td width="5%">&nbsp;</td>
+                <td width="12%" style="text-align: right;padding-right: 5px;">盖章:</td>
+                <td width="18%"
+                    style="text-align: left;border-bottom: 1px solid #666;">
+                </td>
+            </tr>
+        </table>
+    </div>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file