会议新增会议报名功能,消息推送增加消息类型
diff --git a/build.gradle b/build.gradle
index b57d012..fd8efb1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -93,7 +93,7 @@
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     compileOnly 'org.projectlombok:lombok:1.18.8'
 
-    compile 'com.supwisdom:payapi-sdk:1.0.17'
+    compile 'com.supwisdom:payapi-sdk:1.0.18'
     
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
     testImplementation 'io.rest-assured:rest-assured:3.3.0'
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 e5ed541..e5be303 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -1,11 +1,22 @@
 package com.supwisdom.dlpay.app.controller;

 

+import com.supwisdom.dlpay.api.bean.JsonResult;

+import com.supwisdom.dlpay.app.bean.CustomerInfo;

 import com.supwisdom.dlpay.app.domain.VisitorConfig;

 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.dao.ConferenceReviewDao;

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

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

+import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;

+import com.supwisdom.dlpay.doorlist.bean.TCustomerImportBean;

 import com.supwisdom.dlpay.doorlist.service.DoorlistMgrService;

+import com.supwisdom.dlpay.framework.domain.TOperator;

 import com.supwisdom.dlpay.framework.util.DateUtil;

+import com.supwisdom.dlpay.framework.util.PageResult;

 import com.supwisdom.dlpay.framework.util.StringUtil;

+import com.supwisdom.dlpay.framework.util.WebConstant;

 import com.supwisdom.dlpay.mainservice.domain.TCustomer;

 import com.supwisdom.dlpay.mainservice.service.WebInterfaceService;

 import com.supwisdom.dlpay.ncmgr.domain.TNcAllottime;

@@ -14,6 +25,7 @@
 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.EVisitorCheckDtl;

 import com.supwisdom.dlpay.visitormanage.domain.VisitorCheckBean;

 import com.supwisdom.dlpay.visitormanage.service.VisitormanageService;

@@ -22,6 +34,8 @@
 import org.slf4j.LoggerFactory;

 import org.springframework.beans.factory.annotation.Autowired;

 import org.springframework.beans.factory.annotation.Value;

+import org.springframework.security.core.annotation.AuthenticationPrincipal;

+import org.springframework.security.core.userdetails.UserDetails;

 import org.springframework.stereotype.Controller;

 import org.springframework.ui.Model;

 import org.springframework.web.bind.annotation.*;

@@ -39,6 +53,9 @@
 

     @Autowired

     private AppService appService;

+

+    @Autowired

+    private ConferenceService conferenceService;

     @Autowired

     private NcService ncService;

     @Autowired

@@ -421,11 +438,83 @@
     @RequestMapping("/conference/attendconference")

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

             Model model) {

-        model.addAttribute("flag",false);

-        return "apph5/conference/confresult";

+        TConferenceReview review=conferenceService.getReviewerByuserid(userId);

+        if(null==review){

+            return null;

+        }

+        TCustomer cust=webInterfaceService.findCustomerById(userId);

+        if(null==cust){

+            return null;

+        }

+

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

+

+        return "apph5/conference/confreviewlist";

+    }

+

+    @GetMapping("/conference/conflist")

+    @ResponseBody

+    public PageResult<ConferenceShowBean> searchConflist(

+                                                         @RequestParam(value = "confname", required = false) String confname,

+                                                         @RequestParam(value = "confstatus", required = false) String confstatus,

+                                                         @RequestParam(value = "deptcode", required = false) String deptcode ) {

+        try {

+            return conferenceService.getConferenceInfos(confname, "", deptcode, "",confstatus, 1, 100);

+        } catch (Exception e) {

+            e.printStackTrace();

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

+        }

+    }

+

+    @GetMapping("/conference/loadimport")

+    public String loadimport(@RequestParam("confid") Integer confid,

+                             @RequestParam(value = "deptcode", required = false) String deptcode,

+                           Model model) {

+        model.addAttribute("detailConfid", confid);

+        return "apph5/conference/confpeoplebind";

+    }

+

+    @GetMapping("/conference/listpeopleforimport")

+    @ResponseBody

+    public PageResult<TCustomerImportBean> listConfpeople(

+            @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);

+            searchBean.setDeptcode(deptcode);

+            PageResult<TCustomerImportBean> bean = webInterfaceService.getCustomerInfo(searchBean);

+            return bean;

+        } catch (Exception e) {

+            e.printStackTrace();

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

+        }

     }

 

 

+    @PostMapping("/conference/addconfpeople")

+    @ResponseBody

+    public JsonResult addConfpeople(@RequestParam("confid") Integer confid,

+                                    @RequestParam("cardnos[]") List<String> cardnos) {

+        try {

+            if (null == confid || StringUtil.isEmpty(cardnos)) {

+                return JsonResult.error("参数传递错误");

+            }

+

+            if (conferenceService.saveConferencePeople(confid, cardnos)) {

+                return JsonResult.ok("人员添加成功");

+            } else {

+                return JsonResult.error("添加失败");

+            }

+        } catch (WebCheckException e) {

+            return JsonResult.ok(599, e.getMessage());

+        } catch (Exception e) {

+            e.printStackTrace();

+            return JsonResult.error("系统处理异常").put("exception", e);

+        }

+

+    }

 

     /**

      * App远程开门

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 507edf3..bb40eb3 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
@@ -93,7 +93,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, "系统查询错误");
@@ -209,12 +209,12 @@
                 CommonSendMessageParam param=new CommonSendMessageParam();
                 param.setContent("您有新的会议需要分配,请确认");
                 param.setTitle("会议分配通知");
+                param.setMsgtype("conference");
                 for(TConferenceReview rev:review){
                     param.setUserid(rev.getCustid());
                     ApiResponse resp=commonProxy.sendMsg(param);
                     resp.getRetcode();
                     resp.getRetmsg();
-
                 }
                 return JsonResult.ok("新增成功");
             } else {
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 269dda1..9ed6589 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
@@ -21,7 +21,7 @@
 public interface ConferenceService {
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
-    PageResult<ConferenceShowBean> getConferenceInfos(String confname, String conftype,String deptocde,String confdate, int pageNo, int pageSize);
+    PageResult<ConferenceShowBean> getConferenceInfos(String confname, String conftype,String deptocde,String confdate,String confstatus, int pageNo, int pageSize);
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
     PageResult<ConfReportShowBean> getConfReportPage(String confname, String conftype, String deptcode, String startdate,String enddate,String status, int pageNo, int pageSize);
@@ -125,6 +125,9 @@
     @Transactional(rollbackFor = Exception.class, readOnly = true)
     List<TConferenceReview> getAllReviewer(String deptcode);
 
+    @Transactional(rollbackFor = Exception.class, readOnly = true)
+    TConferenceReview getReviewerByuserid(String userid);
+
     @Transactional(rollbackFor = Exception.class)
     boolean addConfReview(String deptcode, String opercode, List<String> custidlist);
 }
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 cf69c68..47f0bd5 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
@@ -76,8 +76,8 @@
     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,String confstatus, int pageNo, int pageSize) {
+        Page<TConference> page = getConferencePage(confname, conftype, deptcode, "", "", confstatus, pageNo, pageSize);
         List<ConferenceShowBean> result = new ArrayList<>(0);
         if (null != page && page.getTotalElements() > 0) {
             for (TConference conf : page.getContent()) {
@@ -171,7 +171,6 @@
                 }
                 if (!StringUtil.isEmpty(childdplist)) {
                     predicates.add(root.get("deptcode").in(childdplist));
-
                 }
                 if (!StringUtil.isEmpty(startdate)) {
                     predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("confdate").as(String.class), startdate));
@@ -411,7 +410,6 @@
     public boolean saveConferencePeople(Integer confid, List<String> cardnos) throws Exception {
         List<String> successCardnos = new ArrayList<>(0);
         List<String> errmsgList = new ArrayList<>(0);
-
         for (String card : cardnos) {
             String msg = "";
             TCustomerInfo customer = new TCustomerInfo();
@@ -894,6 +892,11 @@
     }
 
     @Override
+    public TConferenceReview getReviewerByuserid(String userid) {
+        return conferenceReviewDao.getOne(userid);
+    }
+
+    @Override
     public boolean addConfReview(String deptcode, String opercode, List<String> custidlist) {
         delConfReview(deptcode);
         for (String custid:custidlist){
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 4979e95..4815d9d 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
@@ -180,7 +180,7 @@
             sql+=" and a.deptcode in ('"+ StringUtils.join(childdplist.toArray(),"','")+"') ";

         }

 

-        sql +=" order by b.cardno desc ";

+        sql +=" order by c.deptno desc ";

 

         Query query = entityManager.createNativeQuery(sql);

         if (!StringUtil.isEmpty(perName)){

diff --git a/src/main/resources/templates/apph5/conference/confpeoplebind.html b/src/main/resources/templates/apph5/conference/confpeoplebind.html
new file mode 100644
index 0000000..1d427f3
--- /dev/null
+++ b/src/main/resources/templates/apph5/conference/confpeoplebind.html
@@ -0,0 +1,152 @@
+<div id="confpeoplebind-form" lay-filter="confpeoplebind-filter" class="layui-form model-form"
+     style="padding: 30px 25px 10px 25px;">
+    <input type="hidden" id="confpeoplebind-confid" th:value="${detailConfid}"/>
+
+    <div class="layui-form-item">
+            <div class="layui-card-body">
+                <table class="layui-table" id="confpeoplebind-form-table"
+                       lay-filter="confpeoplebind-form-table-filter"></table>
+            </div>
+        </div>
+    </div>
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+        <button style="margin-right: 30px" class="layui-btn" lay-filter="confpeoplebind-form-submit" lay-submit id="submitbtn">保存</button>
+    </div>
+</div>
+
+<style type="text/css" id="confpeoplebind-form-css">
+    .layui-form-item .layui-form-checkbox[lay-skin=primary] {
+        margin-top: 0;
+    }
+    .layui-layer-page {
+        left: 10% !important;
+        top:20px ! important;
+        width: 80% ! important;
+    }
+</style>
+
+<script>
+    layui.use(['layer', 'table', 'admin', 'form'], function () {
+        var layer = layui.layer;
+        var admin = layui.admin;
+        var form = layui.form;
+        var table = layui.table;
+        var deptcode=$("#conferenceReview-deptcode").val();
+        console.log(deptcode)
+
+        var renderDetailTable = function (obj) {
+            table.render({
+                where: obj,
+                elem: '#confpeoplebind-form-table',
+                url: '[[@{/app/conference/listpeopleforimport}]]',
+                page: false,
+                height:300,
+                cols: [
+                    [
+                        {type: 'checkbox', style: "#confpeoplebind-form-css", fixed: 'left'},
+                        {field: 'custname', title: '姓名', align: 'center'},
+                        {field: 'deptname', title: '部门', align: 'center'}
+                    ]
+                ]
+            });
+        }
+
+        renderDetailTable({ deptcode:deptcode});
+
+        // 搜索按钮点击事件
+        $('#btn-search-confpeoplebind-form').click(function () {
+            var deptcode = $("#search-confpeoplebind-form-deptcode").val();
+            var custname = $("#search-confpeoplebind-form-searchkey").val();
+            table.reload('confpeoplebind-form-table', {
+                where: {
+                    deptcode: deptcode,
+                    custname: custname
+                }
+            });
+        });
+
+        $("#btn-reset-confpeoplebind-form").click(function () {
+            $("#search-confpeoplebind-form-deptcode").val("");
+            $("#search-confpeoplebind-form-searchkey").val("");
+            treeSelect.revokeNode('search-confpeoplebind-form-deptcode-filter');
+        });
+
+        $("#loadimport").click(function () {
+            var confid = $("#confpeoplebind-confid").val();
+            admin.popupCenter({
+                title: "分配人员",
+                //  area: '900px',
+                path: '[[@{/conference/loadimportbyExcel}]]?confid=' + confid,
+                finish: function () {
+                    table.reload('conferenceTable');
+                }
+            });
+        })
+
+        form.on('submit(confpeoplebind-form-submit)', function (el) {
+            var confid = $("#confpeoplebind-confid").val();
+            var checkStatus = table.checkStatus('confpeoplebind-form-table');
+            var data = checkStatus.data;
+            var cardnos = [];
+            var custnames=[];
+            for (var i = 0; i < data.length; i++) {
+                cardnos.push(data[i].cardno);
+                custnames.push(data[i].custname);
+            }
+            if (cardnos.length < 1) {
+                layer.msg("请选择用户", {icon: 2, time: 1500});
+                return;
+            }
+
+            var token = $("meta[name='_csrf_token']").attr("value");
+
+            layer.confirm('确定要添加【' +custnames + '】吗?', {
+                btn: ['确定', '取消']
+            }, function () {
+                layer.load(2);
+                $.ajax({
+                    type: "POST",
+                    dataType: "json",
+                    url: '[[@{/app/conference/addconfpeople}]]',
+                    data: {
+                        "confid": confid,
+                        "cardnos[]": cardnos,
+                        "_csrf": token
+                    },
+                    success: function (result) {
+                        layer.closeAll('loading');
+                        if (result.code == 200) {
+                            layer.msg(result.msg, {icon: 1});
+                            table.reload('confpeoplebind-form-table'); //刷新表格
+                            admin.finishPopupCenter();
+                        } 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 {
+                            console.log('err:' + result.code);
+                            layer.msg(result.msg, {icon: 2});
+                        }
+                    },
+                    error: function (err) {
+                        admin.errorBack(err);
+                    }
+                });
+            });
+
+
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/conference/confreviewlist.html b/src/main/resources/templates/apph5/conference/confreviewlist.html
new file mode 100644
index 0000000..4d2f92b
--- /dev/null
+++ b/src/main/resources/templates/apph5/conference/confreviewlist.html
@@ -0,0 +1,88 @@
+
+<!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/libs/zTree/css/zTreeStyle/zTreeStyle.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>
+
+
+<div class="layui-card">
+    <input type="hidden" id="conferenceReview-deptcode" th:value="${deptcode}"/>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            <input id="search-conference-confname" class="layui-input search-input" maxlength="20" type="text"
+                   placeholder="输入名称查询"/>&emsp;
+            <button id="btn-search-conferenceReview" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+            </button>
+        </div>
+        <table class="layui-table" id="conferenceReviewTable" lay-filter="conferenceReviewTable-filter"></table>
+    </div>
+</div>
+
+<script>
+    layui.config({
+        base: '../../static/custom/module/'
+    }).use(['form', 'table', 'layer','admin', 'element'], function () {
+        var table = layui.table;
+        var deptcode=$("#conferenceReview-deptcode").val();
+        var admin = layui.admin;
+        // 渲染表格
+        console.log(deptcode)
+        var renderDetailTable = function (obj) {
+            table.render({
+                where: obj,
+                elem: '#conferenceReviewTable',
+                url: '[[@{/app/conference/conflist}]]',
+                page: false,
+                cols: [
+                    [
+                        {field: 'confname', title: '会议名称', align: 'center', fixed: 'left'},
+                        {field: 'confdate',   title: '会议日期', align: 'center'},
+                        {field: 'timeperoid',  title: '会议时间', align: 'center'}
+                    ]
+                ]
+            });
+        }
+
+        renderDetailTable({confstatus:'unstart',deptcode:deptcode});
+
+        // 搜索按钮点击事件
+        $('#btn-search-conferenceReview').click(function () {
+             var confname = $("#search-conference-confname").val();
+            table.reload('conferenceReviewTable',
+                {where: { confstatus:'unstart', confname: confname,deptcode:deptcode}});
+        });
+        //监听行
+        table.on('row(conferenceReviewTable-filter)', function (obj) {
+            var data = obj.data;
+            admin.popupCenter({
+                title: data.confname,
+                area: '200px',
+                path: '[[@{/app/conference/loadimport}]]?confid=' + data.confid+'&confname='+data.confname,
+                finish: function () {
+                    table.reload('conferenceTable');
+                }
+            });
+        });
+
+    });
+</script>
+