会议增加会议手机流水查询
diff --git a/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java b/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java
index d3a0f87..6c46563 100644
--- a/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java
+++ b/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java
@@ -1,6 +1,8 @@
 package com.supwisdom.dlpay.api.controller;
 
 import com.supwisdom.dlpay.api.bean.BaseResp;
+import com.supwisdom.dlpay.api.bean.DoorQRCodeParam;
+import com.supwisdom.dlpay.api.bean.DoorQrcodeResponse;
 import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;
 import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
 import com.supwisdom.dlpay.framework.data.SystemDateTime;
@@ -10,6 +12,7 @@
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
 import com.supwisdom.dlpay.mainservice.service.WebInterfaceService;
+import com.supwisdom.dlpay.paysdk.proxy.ConsumePropxy;
 import com.supwisdom.dlpay.system.domain.TDept;
 import com.supwisdom.dlpay.system.service.SystemService;
 import com.supwisdom.dlpay.visitormanage.domain.EVisitorCheckDtl;
@@ -37,6 +40,8 @@
   private WebInterfaceService webInterfaceService;
   @Autowired
   private VisitormanageService visitormanageService;
+  @Autowired
+  private ConsumePropxy consumePropxy;
 
   @RequestMapping("/checkonline")
   @ResponseBody
@@ -48,7 +53,19 @@
     resp.setRetmsg("连接成功");
     resp.setData(dt);
     return resp;
-  }@RequestMapping("/getdeptlist")
+  }
+
+
+  @RequestMapping("/checkqrcode")
+  @ResponseBody
+  public DoorQrcodeResponse resolveQrcode(@RequestParam(value = "qrcode",required = true,defaultValue = "")String qrcode) {
+      DoorQRCodeParam qrparam = new DoorQRCodeParam();
+      qrparam.setQrcode(qrcode);
+      DoorQrcodeResponse qrcoderesp = consumePropxy.qrcodequery(qrparam);
+      return qrcoderesp;
+  }
+
+  @RequestMapping("/getdeptlist")
   @ResponseBody
   public BaseResp getdeptlist() {
     BaseResp resp = new BaseResp();
diff --git a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
index e5be303..a830922 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -6,6 +6,7 @@
 import com.supwisdom.dlpay.app.domain.WechatResp;

 import com.supwisdom.dlpay.app.service.AppService;

 import com.supwisdom.dlpay.conference.bean.ConferenceShowBean;

+import com.supwisdom.dlpay.conference.bean.ConfpeopleShowBean;

 import com.supwisdom.dlpay.conference.dao.ConferenceReviewDao;

 import com.supwisdom.dlpay.conference.domain.TConferenceReview;

 import com.supwisdom.dlpay.conference.service.ConferenceService;

@@ -44,6 +45,7 @@
 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 import javax.servlet.http.HttpSession;

+import javax.xml.crypto.Data;

 import java.util.*;

 

 @Controller

@@ -435,16 +437,22 @@
         return "apph5/remoteMintUIH5";}

     */

 

-    @RequestMapping("/conference/attendconference")

-    public String doAttendConference( @RequestParam(value = "userId", required = true, defaultValue = "") String userId,

+    /**

+     * 手机会议报名

+     * @param userId

+     * @param model

+     * @return

+     */

+    @GetMapping("/conference/signupconference")

+    public String doSignupConference( @RequestParam(value = "userId", required = true, defaultValue = "") String userId,

             Model model) {

-        TConferenceReview review=conferenceService.getReviewerByuserid(userId);

-        if(null==review){

-            return null;

-        }

         TCustomer cust=webInterfaceService.findCustomerById(userId);

         if(null==cust){

-            return null;

+            return "/error/403";

+        }

+        TConferenceReview review=conferenceService.getReviewerByuserid(userId);

+        if(null==review){

+            return "/error/403";

         }

 

         model.addAttribute("deptcode",cust.getDeptcode());

@@ -517,6 +525,61 @@
     }

 

     /**

+     * 手机会议流水

+     * @param userId

+     * @param model

+     * @return

+     */

+    @GetMapping("/conference/conferencedtl")

+    public String ConferenceDtl( @RequestParam(value = "userId", required = true, defaultValue = "") String userId,

+                                      Model model) {

+        TConferenceReview review=conferenceService.getReviewerByuserid(userId);

+        if(null==review){

+            return "error/403";

+        }

+        TCustomer cust=webInterfaceService.findCustomerById(userId);

+        if(null==cust){

+            return "error/403";

+        }

+    /*    String startdate= DateUtil.getNewDay(-7, "yyyy-MM-dd");

+        model.addAttribute("startdate", startdate);

+

+        String today = DateUtil.getNow("yyyy-MM-dd");

+        model.addAttribute("enddate", today);*/

+        model.addAttribute("custid",userId);

+

+        return "apph5/conference/conferencedtl";

+    }

+

+

+    @GetMapping("/conference/confdtllist")

+    @ResponseBody

+    public PageResult<ConfpeopleShowBean> searchConfdtllist(

+            @RequestParam(value = "custid" ) String custid ,

+            @RequestParam(value = "peroid" ) String peroid ) {

+        try {

+            if(StringUtil.isEmpty(custid)||StringUtil.isEmpty(peroid)){

+                throw new WebCheckException("查询参数不完整");

+            }

+            String startdate;

+            if("year".equals(peroid)){

+                startdate= DateUtil.getNewDay(-365, "yyyy-MM-dd");

+

+            }else if ("month".equals(peroid)){

+                startdate= DateUtil.getNewDay(-30, "yyyy-MM-dd");

+

+            }else{

+                startdate= DateUtil.getNewDay(-7, "yyyy-MM-dd");

+            }

+

+            return conferenceService.getPersonalConfDtl(custid, startdate,"");

+        } catch (Exception e) {

+            e.printStackTrace();

+            return new PageResult<>(99, "系统查询错误");

+        }

+    }

+

+    /**

      * App远程开门

      *

      * @param devId

diff --git a/src/main/java/com/supwisdom/dlpay/conference/bean/ConfpeopleShowBean.java b/src/main/java/com/supwisdom/dlpay/conference/bean/ConfpeopleShowBean.java
index b36dcd9..a873c5c 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/bean/ConfpeopleShowBean.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/bean/ConfpeopleShowBean.java
@@ -9,6 +9,7 @@
     private String conftype;
     private String cardno;
     private String deptname;
+    private String confdate;
     private String attstatus;
     private String atttime;
     private String remark;
@@ -128,4 +129,12 @@
     public void setInsteadcustname(String insteadcustname) {
         this.insteadcustname = insteadcustname;
     }
+
+    public String getConfdate() {
+        return confdate;
+    }
+
+    public void setConfdate(String confdate) {
+        this.confdate = confdate;
+    }
 }
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 bb40eb3..83f82c4 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
@@ -31,6 +31,8 @@
 import com.supwisdom.dlpay.ncmgr.service.NcService;
 import com.supwisdom.dlpay.paysdk.proxy.ApiCommonProxy;
 import com.supwisdom.dlpay.paysdk.proxy.UserProxy;
+import com.supwisdom.dlpay.system.domain.TDept;
+import com.supwisdom.dlpay.system.service.SystemService;
 import com.supwisdom.dlpay.util.RedisUtil;
 import com.supwisdom.dlpay.util.WebCheckException;
 import com.supwisdom.dlpay.visitormanage.domain.EVisitorConfDtl;
@@ -64,7 +66,7 @@
     @Autowired
     private WebInterfaceService webInterfaceService;
     @Autowired
-    private SystemUtilService systemUtilService;
+    private SystemService systemService;
     @Autowired
     private VisitormanageService visitormanageService;
     @Autowired
@@ -153,6 +155,8 @@
         model.addAttribute("maxdate", DateUtil.reformatDatetime(now, "yyyyMMdd", "yyyy-MM-dd"));
         List<TNcDevice> devices = ncService.getSystemDevByType(ConferenceConstant.DEVICETYPE_CONFERENCE);
         model.addAttribute("confdevice", devices);
+        List<TDept> depts=systemService.findAllDept();
+        model.addAttribute("depts",depts);
         return "conference/confform";
     }
 
@@ -182,6 +186,7 @@
                                      @RequestParam("endtime") String endtime,
                                      @RequestParam("attendtime") String attendtime,
                                      @RequestParam("deviceids") List<Integer> deviceid,
+                                     @RequestParam("deptcodes") List<String> deptcodes,
                                      @RequestParam("remark") String remark,
                                      @AuthenticationPrincipal UserDetails operUser,
                                      HttpServletRequest request) {
@@ -205,7 +210,7 @@
 
 
             if (conferenceService.saveNewConference(confname.trim(), DateUtil.unParseToDateFormat(confdate), conftype, DateUtil.unParseToDateFormat(starttime), DateUtil.unParseToDateFormat(endtime), DateUtil.unParseToDateFormat(attendtime), oper, deviceid, remark)) {
-                List<TConferenceReview> review=conferenceService.getAllReviewer(oper.getDeptcode());
+                List<TConferenceReview> review=conferenceService.getReviewerByDeptcodes(deptcodes);
                 CommonSendMessageParam param=new CommonSendMessageParam();
                 param.setContent("您有新的会议需要分配,请确认");
                 param.setTitle("会议分配通知");
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 9ed6589..7a024ce 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
@@ -93,6 +93,9 @@
     PageResult<ConfpeopleShowBean> getConfPeoplePage(Integer confid, String attstatus,String atttype, int pageNo, int pageSize);
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
+    PageResult<ConfpeopleShowBean> getPersonalConfDtl(String  custid, String startdate,String enddate );
+
+    @Transactional(rollbackFor = Exception.class, readOnly = true)
     PageResult<ConfpeopleReportBean> getConfPeopleReport(Integer confid, String searchkey,String attstatus, String deptcode,String attflag);
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
@@ -126,6 +129,10 @@
     List<TConferenceReview> getAllReviewer(String deptcode);
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
+    List<TConferenceReview> getReviewerByDeptcodes(List<String> deptcode);
+
+
+    @Transactional(rollbackFor = Exception.class, readOnly = true)
     TConferenceReview getReviewerByuserid(String userid);
 
     @Transactional(rollbackFor = Exception.class)
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 47f0bd5..f8c848a 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
@@ -643,6 +643,42 @@
     }
 
     @Override
+    public PageResult<ConfpeopleShowBean> getPersonalConfDtl(String custid, String startdate, String enddate) {
+
+        StringBuffer querySql = new StringBuffer("SELECT g.confname,g.confdate,g.attstatus from " +
+                "(SELECT c.confname,c.confdate,t.attstatus,t.custid,c.status from tb_conf_people t " +
+                "LEFT JOIN tb_conference c " +
+                "on t.confid=c.confid " +
+                "union " +
+                "SELECT c.confname,c.confdate,t.attstatus,t.custid,c.status from tb_nolist_conf_people t " +
+                "LEFT JOIN tb_conference c " +
+                "on t.confid=c.confid) g " +
+                "where g.custid=:custid " +
+                "and g.status='over' ") ;
+
+        if (!StringUtil.isEmpty(startdate)) {
+            querySql.append("and g.confdate >=:startdate ");
+        }
+        if (!StringUtil.isEmpty(enddate)) {
+            querySql.append("and g.confdate <=:enddate  ");
+        }
+        querySql.append(" order by g.confdate desc");
+        Query query = entityManager.createNativeQuery(querySql.toString());
+
+        query.setParameter("custid", custid);
+        if (!StringUtil.isEmpty(startdate)) {
+            query.setParameter("startdate", startdate);
+
+        }
+        if (!StringUtil.isEmpty(enddate)) {
+            query.setParameter("enddate", enddate);
+        }
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(ConfpeopleShowBean.class));
+        List<ConfpeopleShowBean> list = query.getResultList();
+        return new PageResult<>(list);
+    }
+
+    @Override
     public PageResult<ConfpeopleReportBean> getConfPeopleReport(Integer confid, String searchkey, String attstatus, String deptcode, String attflag) {
         TConference conf = conferenceDao.findByConfid(confid);
         if (null == conf) {
@@ -892,6 +928,21 @@
     }
 
     @Override
+    public List<TConferenceReview> getReviewerByDeptcodes(List<String> deptcode) {
+
+        StringBuffer querySql = new StringBuffer("select a.custid,a.opercode,a.updatetime from t_conference_review a  " +
+                "left join t_customer c on a.custid=c.custid where 1=1" );
+
+        if (!StringUtil.isEmpty(deptcode)) {
+            querySql.append(" and c.deptcode in ('" + StringUtils.join(deptcode.toArray(), "','") + "') ");
+        }
+        Query query = entityManager.createNativeQuery(querySql.toString());
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(TConferenceReview.class));
+        List<TConferenceReview> list = query.getResultList();
+        return list;
+    }
+
+    @Override
     public TConferenceReview getReviewerByuserid(String userid) {
         return conferenceReviewDao.getOne(userid);
     }
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 df6d311..8621dad 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java
@@ -81,6 +81,22 @@
   }
 
   /**
+   * 获取当天前后的时间
+   *
+   * @param intervalday
+   * @param format
+   * @return
+   */
+  public static String getNewDay(int intervalday, String format) {
+    SimpleDateFormat sdf = new SimpleDateFormat(format);
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTime(new Date());
+    calendar.add(Calendar.DATE, intervalday);
+    return sdf.format(calendar.getTime());
+  }
+
+
+  /**
    * 得到两个日期相差的天数 格式 yyyyMMdd @return diffdays = secondDay - firstDay
    */
   public static long getIntervalDay(String firstDay, String secondDay) {
diff --git a/src/main/resources/templates/apph5/conference/conferencedtl.html b/src/main/resources/templates/apph5/conference/conferencedtl.html
new file mode 100644
index 0000000..a73f48c
--- /dev/null
+++ b/src/main/resources/templates/apph5/conference/conferencedtl.html
@@ -0,0 +1,108 @@
+
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+
+<head>
+    <title>首页</title>
+    <meta name="_csrf_header" th:content="${_csrf.headerName}"/>
+    <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}"/>
+    <meta charset="utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" th:href="@{/static/libs/layui/css/layui.css}"/>
+    <link rel="stylesheet" th:href="@{/static/custom/module/formSelects/formSelects-v4.css}"/>
+    <link rel="stylesheet" th:href="@{/static/custom/css/admin.css}"/>
+    <link th:if="${session.theme != null}" rel="stylesheet" th:href="@{/static/custom/css/theme-blue.css}"/>
+
+</head>
+
+<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>
+<script type="text/javascript" th:src="@{/static/libs/q.js}"></script>
+<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>
+<script type="text/javascript" th:src="@{/static/libs/zTree/js/jquery.ztree.all-3.5.min.js}"></script>
+<script type="text/javascript" th:src="@{/static/libs/custom.js}"></script>
+<script type="text/javascript" th:src="@{/static/res/assets/plugins/laydate/laydate.js}"></script>
+
+
+<div class="layui-card">
+    <input type="hidden" id="conferenceDtl-custid" th:value="${custid}"/>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            <div class="layui-inline">
+                <select  lay-filter="onChange"  id="conferenceDtl-peroid">
+                    <option value="week"> 最近一周</option>
+                    <option value="month"> 最近一个月</option>
+                    <option value="year"> 最近一年</option>
+                </select>&emsp;
+            </div>
+            </button>
+        </div>
+        <table class="layui-table" id="conferenceDtlTable" lay-filter="conferenceDtlTable-filter"></table>
+    </div>
+</div>
+
+<script>
+    layui.use(['form', 'table', 'layer', 'element'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        form.render("select");
+        // 渲染表格
+        var renderDetailTable = function (obj) {
+            table.render({
+                where: obj,
+                elem: '#conferenceDtlTable',
+                url: '[[@{/app/conference/confdtllist}]]',
+                page: false,
+                cols: [
+                    [
+                        {field: 'confname', title: '会议名称', align: 'center', fixed: 'left'},
+                        {field: 'confdate',   title: '会议日期', align: 'center'},
+                        {
+                            field: 'attstatus', title: '状态', align: 'center', sort: true, templet: function (d) {
+                                if ('uncheck' == d.attstatus) {
+                                    return '<span class="layui-badge layui-bg-orange">未签到</span>'
+                                } else if ('checked' == d.attstatus) {
+                                    return '<span class="layui-badge layui-bg-green">已签到</span>';
+                                } else if ('handcheck' == d.attstatus) {
+                                    return '<span class="layui-badge layui-bg-green">手工签到</span>';
+                                } else if ('late' == d.attstatus) {
+                                    return '<span class="layui-badge layui-bg-cyan">迟到</span>';
+                                } else if ('instead' == d.attstatus) {
+                                    return '<span class="layui-badge">被代签</span>';
+                                }  else if ('closed' == d.attstatus) {
+                                    return '<span class="layui-badge layui-bg-gray">关闭</span>';
+                                }
+                                else {
+                                    return d.attstatus;
+                                }
+                            }
+                        },
+                    ]
+                ]
+            });
+        }
+        var peroid=$("#conferenceDtl-peroid").val()
+        var custid=$("#conferenceDtl-custid").val()
+
+        renderDetailTable({custid:custid,peroid:peroid});
+
+        // 搜索按钮点击事件
+        $('#btn-search-conferenceDtl').click(function () {
+            var peroid=$("#conferenceDtl-peroid").val()
+            var custid=$("#conferenceDtl-custid").val()
+
+            table.reload('conferenceDtlTable',
+                {where: { custid:custid,peroid:peroid}});
+        });
+
+        form.on('select(onChange)', function(data){
+            var peroid=$("#conferenceDtl-peroid").val()
+            var custid=$("#conferenceDtl-custid").val()
+
+            table.reload('conferenceDtlTable',
+                {where: { custid:custid,peroid:peroid}});
+        });
+
+    });
+</script>
+
diff --git a/src/main/resources/templates/conference/confform.html b/src/main/resources/templates/conference/confform.html
index 8f84fc0..7c99fb7 100644
--- a/src/main/resources/templates/conference/confform.html
+++ b/src/main/resources/templates/conference/confform.html
@@ -59,6 +59,17 @@
              </select>&emsp;
          </div>
     </div>
+
+    <div class="layui-form-item">
+        <label class="confinput-label layui-form-label"> </span>参会部门</label>
+        <div class="layui-input-block">
+            <select   name="deptcode" class="layui-select" xm-select-height="36px" xm-select="deptcodes">
+                <option th:each="dept:${depts}" th:value="${dept.deptcode}"
+                        th:text="${dept.deptname}"></option>
+            </select>&emsp;
+        </div>
+    </div>
+
     <div class="layui-form-item">
         <label class="layui-form-label confinput-label">会议概要</label>
         <div class="layui-input-block">
@@ -93,12 +104,12 @@
         var admin = layui.admin;
         var form = layui.form;
         var laydate = layui.laydate;
-        var upload = layui.upload;
 
         var confType = 'list';
 
         var formSelects = layui.formSelects;
         formSelects.btns('deviceids', []);
+        formSelects.btns('deptcodes', []);
 
      //   form.render("select");
         laydate.render({
@@ -155,6 +166,8 @@
                 return;
             }
             var deviceids=formSelects.value('deviceids','val');
+            var deptcodes=formSelects.value('deptcodes','val');
+
             if(deviceids.length==0){
                 layer.msg("请选择设备", {icon: 2, time: 1500});
                 return;
@@ -171,22 +184,7 @@
 
             formData.append("remark",vdata.remark);
             formData.append("deviceids",deviceids);
-          /*  var flag=false;
-            var files = $('#form-conference-records').prop('files');
-            for (var i = 0; i < files.length; i++) {
-                var filename = files[i].name;
-                var suffix = filename.substr(filename.lastIndexOf("."));
-                if ('.xls' != suffix && '.xlsx' != suffix) {
-                    layer.msg("请选择excel文件", {icon: 2, time: 1500});
-                    return;
-                }
-                formData.append('file', files[i]);
-                flag = true;
-            }
-            if (!flag&&"list"==vdata.conftype) {
-                layer.msg("请选择名单", {icon: 2, time: 1500});
-                return;
-            }*/
+            formData.append("deptcodes",deptcodes);
 
             layer.load(2);
             $.ajax({