设备名单查询添加区域权限判断
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 1ea7143..3fa666b 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -21,5 +21,3 @@
 auth.password.bcrypt.seed=
 spring.jackson.serialization.fail-on-empty-beans=false
 server.port=8099
-
-server.context-path=/
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
index 193273c..a766f1e 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
@@ -5,12 +5,14 @@
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;

 import cn.afterturn.easypoi.view.PoiBaseView;

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

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

 import com.supwisdom.dlpay.mainservice.bean.TDoorcardlstInfo;

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

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

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

 import com.supwisdom.dlpay.ncmgr.service.NcService;

 import com.supwisdom.dlpay.system.domain.TDictionaryId;

+import com.supwisdom.dlpay.system.domain.TRegion;

 import com.supwisdom.dlpay.system.page.Pagination;

 import com.supwisdom.dlpay.system.service.SystemService;

 import com.supwisdom.dlpay.util.RedisUtil;

@@ -66,24 +68,40 @@
      */

     @ResponseBody

     @RequestMapping(value = "/getFillFormList")

-    public Map getFillFormList() throws Exception {

+    public Map getFillFormList(@AuthenticationPrincipal TOperator operUser) throws Exception {

         Map map = new HashMap();

-        //名单状态

-        List<TDictionaryId> syncDicts = systemService.findTDictionaryByType(3);

-        map.put("syncDicts", syncDicts);

-        //厂商id

-        List<TKey> allFactoryId = webInterfaceService.getAllKeys();

-        map.put("allFactoryId", allFactoryId);

-        //操作标记

-        List<TDictionaryId> operDicts = new ArrayList<TDictionaryId>();

-        operDicts.addAll(systemService.findByType(2, "A"));

-        operDicts.addAll(systemService.findByType(2, "D"));

-        operDicts.addAll(systemService.findByType(2, "C"));

-        map.put("operDicts", operDicts);

+        try {

+            String opertype = operUser.getOpertype();

+            //名单状态

+            List<TDictionaryId> syncDicts = systemService.findTDictionaryByType(3);

+            map.put("syncDicts", syncDicts);

+            //厂商id

+            List<TKey> allFactoryId = webInterfaceService.getAllKeys();

+            map.put("allFactoryId", allFactoryId);

+            //操作标记

+            List<TDictionaryId> operDicts = new ArrayList<TDictionaryId>();

+            operDicts.addAll(systemService.findByType(2, "A"));

+            operDicts.addAll(systemService.findByType(2, "D"));

+            operDicts.addAll(systemService.findByType(2, "C"));

+            map.put("operDicts", operDicts);

 

-        //所有楼栋

-        List<TBuilding> buildings = ncService.getAllBuilding();

-        map.put("buildings", buildings);

+            List<TRegion> regions = null;

+            List<TBuilding> buildings = null;

+            if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))) {

+                regions = systemService.getAllRegions();

+                buildings = ncService.getAllBuilding();

+                map.put("regions", regions);

+                map.put("buildings", buildings);

+            }else if (!StringUtil.isEmpty(operUser.getRegionid())){

+                regions = systemService.getRegionListById(operUser.getRegionid());

+                map.put("regions", regions);

+                buildings = systemService.getBuildingByRegionId(operUser.getRegionid());

+                map.put("buildings", buildings);

+            }

+

+        }catch (Exception e){

+            e.printStackTrace();

+        }

         return map;

     }

 

@@ -96,8 +114,8 @@
      * @param stuempNo

      * @param syncStatus

      * @param operFlag

-     * @param buildingname

-     * @param regionname

+     * @param buildingid

+     * @param regionid

      * @param allocatStartDate

      * @param allocatEndDate

      * @param pageNo

@@ -114,8 +132,8 @@
                                  @RequestParam(value = "stuempNo", required = false, defaultValue = "") String stuempNo,

                                  @RequestParam(value = "syncStatus", required = false, defaultValue = "all") String syncStatus,

                                  @RequestParam(value = "operFlag", required = false, defaultValue = "all") String operFlag,

-                                 @RequestParam(value = "buildingname", required = false, defaultValue = "") String buildingname,

-                                 @RequestParam(value = "regionname",required = false,defaultValue = "") String regionname,

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

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

                                  @RequestParam(value = "allocatStartDate", required = false, defaultValue = "") String allocatStartDate,

                                  @RequestParam(value = "allocatEndDate", required = false, defaultValue = "") String allocatEndDate,

                                  @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo,

@@ -124,12 +142,14 @@
 

         Map map = new HashMap();

         try {

-            List<String> allopername = systemService.findOperatorsByFopercode(operUser.getOperid());

+            String opertype = operUser.getOpertype();

             boolean flag = true;

-

-            Pagination pResult;

-            pResult = webInterfaceService.getAllCardListFrSearch(factoryId, allocatStartDate, allocatEndDate,

-                    doorName, custName, stuempNo, syncStatus, allopername, operFlag, buildingname,regionname, pageNo, pageSize);

+            Pagination pResult  = new Pagination();

+            if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){

+                pResult = webInterfaceService.getSystemCardListFrSearch(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid, pageNo, pageSize);

+            }else if (!StringUtil.isEmpty(operUser.getRegionid())){

+                pResult = webInterfaceService.getOperatorCardListFrSearch(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid, pageNo, pageSize,operUser.getRegionid());

+            }

             map.put("PageResult", pResult);

             map.put("index", flag);

             map.put("result", "查询设备名单成功!");

@@ -152,8 +172,8 @@
      * @param stuempNo

      * @param syncStatus

      * @param operFlag

-     * @param buildingname

-     * @param regionname

+     * @param buildingid

+     * @param regionid

      * @param allocatStartDate

      * @param allocatEndDate

      * @param operUser

@@ -166,17 +186,23 @@
                          @RequestParam(value = "stuempNo", required = false, defaultValue = "") String stuempNo,

                          @RequestParam(value = "syncStatus", required = false, defaultValue = "all") String syncStatus,

                          @RequestParam(value = "operFlag", required = false, defaultValue = "all") String operFlag,

-                         @RequestParam(value = "buildingname", required = false, defaultValue = "") String buildingname,

-                         @RequestParam(value = "regionname",required = false,defaultValue = "") String regionname,

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

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

                          @RequestParam(value = "allocatStartDate", required = false, defaultValue = "") String allocatStartDate,

                          @RequestParam(value = "allocatEndDate", required = false, defaultValue = "") String allocatEndDate,

                          @AuthenticationPrincipal TOperator operUser) {

+        String opertype = operUser.getOpertype();

         /**

          * 1.查询值

          */

-        List<String> allopername = systemService.findOperatorsByFopercode(operUser.getOperid());

-        List<TDoorcardlstInfo> cardList = webInterfaceService.getAllCardListMap(factoryId, allocatStartDate, allocatEndDate,

-                doorName, custName, stuempNo, syncStatus, allopername, operFlag, buildingname,regionname);

+        List<TDoorcardlstInfo> cardList = null;

+        if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))) {

+            cardList=webInterfaceService.getSystemCardListMap(factoryId, allocatStartDate, allocatEndDate,

+                    doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid);

+        }else if (!StringUtil.isEmpty(operUser.getRegionid())){

+            cardList = webInterfaceService.getOperatorCardListMap(factoryId, allocatStartDate, allocatEndDate,

+                    doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid,operUser.getRegionid());

+        }

 

         /**

          * 2.设置表格属性: title:标题  sheetName:工作簿名 type:表格类型

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardListDao.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardListDao.java
index e2e1b60..b7540d9 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardListDao.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardListDao.java
@@ -7,11 +7,17 @@
 

 public interface CardListDao {

 

-    public Pagination getAllCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate,

-                                             String doorName, String custName, String stuempNo, String syncStatus, List<String> opername, String operFlag, String buildingname,String regionname, int pageNo, int pageSize);

+    public Pagination getSystemCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate,

+                                             String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid, int pageNo, int pageSize);

 

-    public List<TDoorcardlstInfo> getAllCardListMap(String factoryId, String allocatStartDate, String allocatEndDate,

-                                                    String doorName, String custName, String stuempNo, String syncStatus, List<String> operids, String operFlag, String buildingname,String regionname);

+    public Pagination getOperatorCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate,

+                                                String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid, int pageNo, int pageSize,String operRegionid);

+

+    public List<TDoorcardlstInfo> getSystemCardListMap(String factoryId, String allocatStartDate, String allocatEndDate,

+                                                    String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid);

+

+    public List<TDoorcardlstInfo> getOperatorCardListMap(String factoryId, String allocatStartDate, String allocatEndDate,

+                                                       String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid,String operRegionid);

 

     public void updateDoorcardlstToNoWithIds(List<Long> listIds);

 }

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
index c081d4d..ff69c48 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
@@ -23,19 +23,18 @@
 

     @Transactional

     @Override

-    public Pagination getAllCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus,List<String> operids, String operFlag, String buildingname,String regionname, int pageNo, int pageSize) {

+    public Pagination getSystemCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid, int pageNo, int pageSize) {

         try {

 

             String queryString = "select a.listid, a.factoryId,d.doorName,a.custName,g.operName,a.stuempNo," +

                     "a.syncStatus,a.operFlag operFlagIndex,a.updatetime allocatTime,a.syncTime,a.closedate," +

                     "b.updatetime feedbackTime,b.retmsg,a.reason ,a.buildingName,f.regionName" +

-                    " from t_doorcardlst a left join t_rtnresult b on a.listid=b.listid " +

+                    " from t_doorcardlst a " +

+                    " left join t_rtnresult b on a.listid=b.listid " +

                     " left join tb_region f on a.regionid=f.regionid " +

                     " left join t_doordev d on a.deviceid=d.doorid" +

                     " left join tb_operator g on a.operid=g.operid" +

-                    " where 1>0 " +

-                    "  and (a.operid in (:operids ) " +

-                    " or a.deviceid in (select deviceid from T_OPERDEVICE o where o.operid in(:operids)))";

+                    " where 1>0 " ;

             if (!"".equals(allocatStartDate)) {

                 queryString += " and a.updatetime>=:allocatStartDate ";

             }

@@ -54,15 +53,15 @@
             if (!("all").equals(operFlag)) {

                 queryString += " and a.operFlag =:operFlag";

             }

-            if (!("").equals(buildingname)) {

-                queryString += " and a.buildingname like :buildingname ";

+            if (!("").equals(buildingid)) {

+                queryString += " and a.buildingid = :buildingid ";

             }

-            if (!regionname.equals("")){

+            if (!regionid.equals("")){

                 queryString += "and a.regionid in  "

                         +"("

                         + "with recursive tmp as  "

                         + "("

-                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionname like :regionname  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

                         + "union all  "

                         + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

                         + ") select regionid from tmp  )";

@@ -85,7 +84,6 @@
             }

 

 

-            query.setParameter("operids", operids);

             if (!("all").equals(syncStatus)) {

                 query.setParameter("syncStatus", syncStatus);

             }

@@ -98,11 +96,11 @@
             if (!("all").equals(operFlag)) {

                 query.setParameter("operFlag", operFlag);

             }

-            if (!("").equals(buildingname)) {

-                query.setParameter("buildingname", "%"+buildingname+"%");

+            if (!("").equals(buildingid)) {

+                query.setParameter("buildingid", buildingid);

             }

-            if (!("").equals(regionname)){

-                query.setParameter("regionname", "%"+regionname+"%");

+            if (!("").equals(regionid)){

+                query.setParameter("regionid", regionid);

             }

             if (!("").equals(custName)) {

                 query.setParameter("custName", "%" + custName + "%");

@@ -118,7 +116,7 @@
             page.setPageNo(pageNo);

             page.setPageSize(pageSize);

 

-            int totalCount = getAllCardListCount(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operids, operFlag, buildingname, regionname);

+            int totalCount = getSystemCardListCount(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid);

             page.setTotalCount(totalCount);

 

             List<TDoorcardlstInfo> tDoorcardlstInfos = query.getResultList();

@@ -238,15 +236,13 @@
         return null;

     }

 

-    private int getAllCardListCount(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus,List<String> operids, String operFlag, String buildingname,String regionname){

+    private int getSystemCardListCount(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid){

         try {

-            String queryString = "select count(a.listid) from TDoorcardlst a," +

-                    "TDoordev d " +

+            String queryString = "select count(*) from T_Doordev d,T_Doorcardlst a" +

                     " left join tb_region f on a.regionid=f.regionid " +

-                    "where  a.id.factoryid=d.id.factoryid " +

-                    " and a.id.deviceid=d.id.doorid " +

-                    " and (a.operid in (:operids) " +

-                    " or a.id.deviceid in (select oe.id.deviceid from TOperdevice oe where oe.id.operid in(:operids)))";

+                    "where  a.factoryid=d.factoryid " +

+                    " and a.deviceid=d.doorid ";

+

             if (!"".equals(allocatStartDate)) {

                 queryString += " and a.updatetime>=:allocatStartDate ";

             }

@@ -260,17 +256,17 @@
                 queryString += " and a.id.factoryid =:factoryId";

             }

             if (!("all").equals(operFlag)) {

-                queryString += " and a.operfalg =:operFlag";

+                queryString += " and a.operflag =:operFlag";

             }

-            if (!("").equals(buildingname)) {

-                queryString += " and a.buildingname like :buildingname ";

+            if (!("").equals(buildingid)) {

+                queryString += " and a.buildingid = :buildingid ";

             }

-            if (!regionname.equals("")){

+            if (!regionid.equals("")){

                 queryString += "and a.regionid in  "

                         +"("

                         + "with recursive tmp as  "

                         + "("

-                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionname like :regionname  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

                         + "union all  "

                         + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

                         + ") select regionid from tmp  )";

@@ -285,7 +281,6 @@
                 queryString += " and a.stuempno like :stuempNo";

             }

             Query query = entityManager.createNativeQuery(queryString);

-            query.setParameter("operids", operids);

             if (!"".equals(allocatStartDate)) {

                 query.setParameter("allocatStartDate", allocatStartDate + "000000");

             }

@@ -302,11 +297,335 @@
             if (!("all").equals(operFlag)) {

                 query.setParameter("operFlag", operFlag);

             }

-            if (!("").equals(buildingname)) {

-                query.setParameter("buildingname", "%"+buildingname+"%");

+            if (!("").equals(buildingid)) {

+                query.setParameter("buildingid", buildingid);

             }

-            if (!("").equals(regionname)){

-                query.setParameter("regionname", "%"+regionname+"%");

+            if (!("").equals(regionid)){

+                query.setParameter("regionid", regionid);

+            }

+            if (!("").equals(doorName)) {

+                query.setParameter("doorName", "%" + doorName + "%");

+            }

+            if (!("").equals(custName)) {

+                query.setParameter("custName", "%" + custName + "%");

+            }

+            if (!("").equals(stuempNo)) {

+                query.setParameter("stuempNo", stuempNo);

+            }

+            int cnt = 0;

+            List list = query.getResultList();

+            if (list!=null && list.size()>0){

+                Object o = list.get(0);

+                cnt = Integer.parseInt(o.toString());

+            }

+            return cnt;

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+        return 0;

+    }

+

+    @Transactional

+    @Override

+    public Pagination getOperatorCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid, String regionid, int pageNo, int pageSize, String operRegionid) {

+        try {

+

+            String queryString = "select a.listid, a.factoryId,d.doorName,a.custName,g.operName,a.stuempNo," +

+                    "a.syncStatus,a.operFlag operFlagIndex,a.updatetime allocatTime,a.syncTime,a.closedate," +

+                    "b.updatetime feedbackTime,b.retmsg,a.reason ,a.buildingName,f.regionName" +

+                    " from t_doorcardlst a left join t_rtnresult b on a.listid=b.listid " +

+                    " left join tb_region f on a.regionid=f.regionid " +

+                    " left join t_doordev d on a.deviceid=d.doorid" +

+                    " left join tb_operator g on a.operid=g.operid" +

+                    " where 1>0 " ;

+            if (!"".equals(allocatStartDate)) {

+                queryString += " and a.updatetime>=:allocatStartDate ";

+            }

+            if (!"".equals(allocatEndDate)) {

+                queryString += " and a.updatetime<=:allocatEndDate ";

+            }

+            if (!("all").equals(syncStatus)) {

+                queryString += " and a.syncstatus =:syncStatus";

+            }

+            if (!("all").equals(factoryId)) {

+                queryString += " and a.factoryid =:factoryId";

+            }

+            if (!("").equals(doorName)) {

+                queryString += " and d.doorname like :doorName";

+            }

+            if (!("all").equals(operFlag)) {

+                queryString += " and a.operFlag =:operFlag";

+            }

+            if (!("").equals(buildingid)) {

+                queryString += " and a.buildingid = :buildingid ";

+            }

+

+            if (!regionid.equals("")){

+                queryString += "and a.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :operRegionid  "

+                        + "union all  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                        + ") select regionid from tmp  where tmp.regionid=:regionid)";

+            }else {

+                queryString += "and a.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :operRegionid  "

+                        + "union all  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                        + ") select regionid from tmp  )";

+            }

+            if (!("").equals(custName)) {

+                queryString += " and a.custname like :custName";

+            }

+            if (!("").equals(stuempNo)) {

+                queryString += " and a.stuempno like :stuempNo";

+            }

+            queryString += " ORDER by a.listid DESC";

+

+            Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

+

+            if (!"".equals(allocatStartDate)) {

+                query.setParameter("allocatStartDate", allocatStartDate + "000000");

+            }

+            if (!"".equals(allocatEndDate)) {

+                query.setParameter("allocatEndDate", allocatEndDate + "235959");

+            }

+

+

+            if (!("all").equals(syncStatus)) {

+                query.setParameter("syncStatus", syncStatus);

+            }

+            if (!("all").equals(factoryId)) {

+                query.setParameter("factoryId", factoryId);

+            }

+            if (!("").equals(doorName)) {

+                query.setParameter("doorName", "%" + doorName + "%");

+            }

+            if (!("all").equals(operFlag)) {

+                query.setParameter("operFlag", operFlag);

+            }

+            if (!("").equals(buildingid)) {

+                query.setParameter("buildingid", buildingid);

+            }

+            query.setParameter("operRegionid", operRegionid);

+            if (!("").equals(regionid)){

+                query.setParameter("regionid", regionid);

+            }

+            if (!("").equals(custName)) {

+                query.setParameter("custName", "%" + custName + "%");

+            }

+            if (!("").equals(stuempNo)) {

+                query.setParameter("stuempNo", stuempNo);

+            }

+

+            pageNo = pageNo <= 0 ? 1 : pageNo;

+            query.setFirstResult((pageNo - 1) * pageSize);

+            query.setMaxResults(pageSize);

+            Pagination page = new Pagination();

+            page.setPageNo(pageNo);

+            page.setPageSize(pageSize);

+

+            int totalCount = getOperatorCardListCount(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid,operRegionid);

+            page.setTotalCount(totalCount);

+

+            List<TDoorcardlstInfo> tDoorcardlstInfos = query.getResultList();

+            SimpleDateFormat _ymdhms = new SimpleDateFormat("yyyyMMddHHmmss");

+            SimpleDateFormat ymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

+            for (TDoorcardlstInfo grp : tDoorcardlstInfos) {

+                List<String> factory = RedisUtil.lrange("dict_4", 0, -1);

+                List<String> operflag = RedisUtil.lrange("dict_2", 0, -1);

+                List<String> sync = RedisUtil.lrange("dict_3", 0, -1);

+                if(operflag!= null && operflag.size()>0){

+                    String operFlagIndex = grp.getOperFlagIndex();

+                    for (String s : operflag) {

+                        String[] split = s.split("_");

+                        if (operFlagIndex.equals(split[0])){

+                            grp.setOperFlag(split[1]);

+                            break;

+                        }

+                    }

+                }

+                if(sync!= null && sync.size()>0){

+                    String syncStatus1 = grp.getSyncStatus();

+                    for (String s : sync) {

+                        String[] split = s.split("_");

+                        if (syncStatus1.equals(split[0])){

+                            grp.setSyncStatus(split[1]);

+                            break;

+                        }else {

+                            grp.setSyncStatus("");

+                        }

+                    }

+                }

+                if(factory != null && factory.size()>0){

+                    String factoryId1 = grp.getFactoryId();

+                    for (String s : factory) {

+                        String[] split = s.split("_");

+                        if (factoryId1.equals(split[0])){

+                            grp.setFactoryName(split[1]);

+                            break;

+                        }else {

+                            grp.setFactoryName("");

+                        }

+                    }

+                }else {

+                    queryString = "select a.id.dictcaption from TDictionary a where a.id.dicttype=:dicttype and a.id.dictval=:dictval";

+                    query = entityManager.createQuery(queryString);

+                    query.setParameter("dicttype", 4);

+                    query.setParameter("dictval", grp.getFactoryId());

+                    if(null != query.getSingleResult()){

+                        grp.setFactoryName(query.getSingleResult().toString());

+                    }else {

+                        grp.setFactoryName("");

+                    }

+

+                    query.setParameter("dicttype", 3);

+                    query.setParameter("dictval", grp.getSyncStatus());

+                    if(null != query.getSingleResult()) {

+                        grp.setSyncStatus(query.getSingleResult().toString());

+                    }else {

+                        grp.setSyncStatus("");

+                    }

+                    query.setParameter("dicttype", 2);

+                    if (grp.getOperFlagIndex() != null) {

+                        query.setParameter("dictval", grp.getOperFlagIndex());

+                        grp.setOperFlag(query.getSingleResult().toString());

+                    }

+                }

+

+

+                String time = grp.getAllocatTime();

+                Date date;

+                String hms = "000000";

+                if (time != null) {

+                    if (time.length() == 14) {

+                        date = _ymdhms.parse(time);

+                        grp.setAllocatTime(ymdhms.format(date));

+                    } else {

+

+                        time += hms.substring(0, 14 - time.length());

+                        date = _ymdhms.parse(time + "");

+                        grp.setAllocatTime(ymdhms.format(date));

+                    }

+

+                }

+

+                time = grp.getSyncTime();

+                if (time != null) {

+                    if (time.length() == 14) {

+                        date = _ymdhms.parse(time);

+                        grp.setSyncTime(ymdhms.format(date));

+                    } else {

+                        time += hms.substring(0, 14 - time.length());

+                        date = _ymdhms.parse(time);

+                        grp.setSyncTime(ymdhms.format(date));

+                    }

+

+                }

+

+                time = grp.getFeedbackTime();

+                if (time != null) {

+                    if (time.length() == 14) {

+                        date = _ymdhms.parse(time);

+                        grp.setFeedbackTime(ymdhms.format(date));

+                    } else {

+                        time += hms.substring(0, 14 - time.length());

+                        date = _ymdhms.parse(time);

+                        grp.setFeedbackTime(ymdhms.format(date));

+                    }

+                }

+

+            }

+

+            page.setList(tDoorcardlstInfos);

+            return page;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return null;

+    }

+

+    private int getOperatorCardListCount(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid,String operRegionid){

+        try {

+            String queryString = "select count(*) from T_Doordev d,T_Doorcardlst a" +

+                    " left join tb_region f on a.regionid=f.regionid " +

+                    "where  a.factoryid=d.factoryid " +

+                    " and a.deviceid=d.doorid ";

+

+            if (!"".equals(allocatStartDate)) {

+                queryString += " and a.updatetime>=:allocatStartDate ";

+            }

+            if (!"".equals(allocatEndDate)) {

+                queryString += " and a.updatetime<=:allocatEndDate ";

+            }

+            if (!("all").equals(syncStatus)) {

+                queryString += " and a.syncstatus =:syncStatus";

+            }

+            if (!("all").equals(factoryId)) {

+                queryString += " and a.id.factoryid =:factoryId";

+            }

+            if (!("all").equals(operFlag)) {

+                queryString += " and a.operflag =:operFlag";

+            }

+            if (!("").equals(buildingid)) {

+                queryString += " and a.buildingid = :buildingid ";

+            }

+            if (!regionid.equals("")){

+                queryString += "and a.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :operRegionid  "

+                        + "union all  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                        + ") select regionid from tmp  where tmp.regionid=:regionid)";

+            }else {

+                queryString += "and a.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :operRegionid  "

+                        + "union all  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                        + ") select regionid from tmp  )";

+            }

+            if (!("").equals(doorName)) {

+                queryString += " and d.doorname like :doorName";

+            }

+            if (!("").equals(custName)) {

+                queryString += " and a.custname like :custName";

+            }

+            if (!("").equals(stuempNo)) {

+                queryString += " and a.stuempno like :stuempNo";

+            }

+            Query query = entityManager.createNativeQuery(queryString);

+            if (!"".equals(allocatStartDate)) {

+                query.setParameter("allocatStartDate", allocatStartDate + "000000");

+            }

+            if (!"".equals(allocatEndDate)) {

+                query.setParameter("allocatEndDate", allocatEndDate + "235959");

+            }

+

+            if (!("all").equals(syncStatus)) {

+                query.setParameter("syncStatus", syncStatus);

+            }

+            if (!("all").equals(factoryId)) {

+                query.setParameter("factoryId", factoryId);

+            }

+            if (!("all").equals(operFlag)) {

+                query.setParameter("operFlag", operFlag);

+            }

+            if (!("").equals(buildingid)) {

+                query.setParameter("buildingid", buildingid);

+            }

+            query.setParameter("operRegionid", operRegionid);

+            if (!("").equals(regionid)){

+                query.setParameter("regionid", regionid);

             }

             if (!("").equals(doorName)) {

                 query.setParameter("doorName", "%" + doorName + "%");

@@ -331,10 +650,9 @@
     }

 

 

-

     @Transactional

     @Override

-    public List<TDoorcardlstInfo> getAllCardListMap(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, List<String> operids, String operFlag, String buildingname,String regionname) {

+    public List<TDoorcardlstInfo> getSystemCardListMap(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid) {

         try {

             String queryString = "select a.listid, a.factoryId,d.doorName,a.custName,g.operName,a.stuempNo," +

                     "a.syncStatus,a.operFlag operFlagIndex,a.updatetime allocatTime,a.syncTime,a.closedate," +

@@ -343,9 +661,7 @@
                     " left join tb_region f on a.regionid=f.regionid " +

                     " left join t_doordev d on a.deviceid=d.doorid" +

                     " left join tb_operator g on a.operid=g.operid" +

-                    " where 1>0 " +

-                    "  and (a.operid in (:operids ) " +

-                    " or a.deviceid in (select deviceid from T_OPERDEVICE o where o.operid in(:operids)))";

+                    " where 1>0 ";

             if (!"".equals(allocatStartDate)) {

                 queryString += " and a.updatetime>=:allocatStartDate ";

             }

@@ -364,15 +680,15 @@
             if (!("all").equals(operFlag)) {

                 queryString += " and a.operFlag =:operFlag";

             }

-            if (!("").equals(buildingname)) {

-                queryString += " and a.buildingname like :buildingname";

+            if (!("").equals(buildingid)) {

+                queryString += " and a.buildingid = :buildingid";

             }

-            if (!regionname.equals("")){

+            if (!regionid.equals("")){

                 queryString += "and a.regionid in  "

                         +"("

                         + "with recursive tmp as  "

                         + "("

-                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionname like :regionname  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

                         + "union all  "

                         + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

                         + ") select regionid from tmp  )";

@@ -394,7 +710,6 @@
             }

 

 

-            query.setParameter("operids", operids);

             if (!("all").equals(syncStatus)) {

                 query.setParameter("syncStatus", syncStatus);

             }

@@ -407,11 +722,219 @@
             if (!("all").equals(operFlag)) {

                 query.setParameter("operFlag", operFlag);

             }

-            if (!("").equals(buildingname)) {

-                query.setParameter("buildingname", "%"+buildingname+"%");

+            if (!("").equals(buildingid)) {

+                query.setParameter("buildingid", buildingid);

             }

-            if (!("").equals(regionname)){

-                query.setParameter("regionname","%"+regionname+"%");

+            if (!("").equals(regionid)){

+                query.setParameter("regionid",regionid);

+            }

+            if (!("").equals(custName)) {

+                query.setParameter("custName", "%" + custName + "%");

+            }

+            if (!("").equals(stuempNo)) {

+                query.setParameter("stuempNo", "%" + stuempNo + "%");

+            }

+

+            List<TDoorcardlstInfo> tDoorcardlstInfos = query.getResultList();

+            SimpleDateFormat _ymdhms = new SimpleDateFormat("yyyyMMddHHmmss");

+            SimpleDateFormat ymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

+            for (TDoorcardlstInfo grp : tDoorcardlstInfos) {

+                List<String> factory = RedisUtil.lrange("dict_4", 0, -1);

+                List<String> operflag = RedisUtil.lrange("dict_2", 0, -1);

+                List<String> sync = RedisUtil.lrange("dict_3", 0, -1);

+                if(operflag!= null && operflag.size()>0){

+                    String operFlagIndex = grp.getOperFlagIndex();

+                    for (String s : operflag) {

+                        String[] split = s.split("_");

+                        if (operFlagIndex.equals(split[0])){

+                            grp.setOperFlag(split[1]);

+                            break;

+                        }

+                    }

+                }

+                if(sync!= null && sync.size()>0){

+                    String syncStatus1 = grp.getSyncStatus();

+                    for (String s : sync) {

+                        String[] split = s.split("_");

+                        if (syncStatus1.equals(split[0])){

+                            grp.setSyncStatus(split[1]);

+                            break;

+                        }else {

+                            grp.setSyncStatus("");

+                        }

+                    }

+                }

+                if(factory != null && factory.size()>0){

+                    String factoryId1 = grp.getFactoryId();

+                    for (String s : factory) {

+                        String[] split = s.split("_");

+                        if (factoryId1.equals(split[0])){

+                            grp.setFactoryName(split[1]);

+                            break;

+                        }else {

+                            grp.setFactoryName("");

+                        }

+                    }

+                }else {

+                    queryString = "select a.id.dictcaption from TDictionary a where a.id.dicttype=:dicttype and a.id.dictval=:dictval";

+                    query = entityManager.createQuery(queryString);

+                    query.setParameter("dicttype", 4);

+                    query.setParameter("dictval", grp.getFactoryId());

+                    if(null != query.getSingleResult()){

+                        grp.setFactoryName(query.getSingleResult().toString());

+                    }else {

+                        grp.setFactoryName("");

+                    }

+

+                    query.setParameter("dicttype", 3);

+                    query.setParameter("dictval", grp.getSyncStatus());

+                    if(null != query.getSingleResult()) {

+                        grp.setSyncStatus(query.getSingleResult().toString());

+                    }else {

+                        grp.setSyncStatus("");

+                    }

+                    query.setParameter("dicttype", 2);

+                    if (grp.getOperFlagIndex() != null) {

+                        query.setParameter("dictval", grp.getOperFlagIndex());

+                        grp.setOperFlag(query.getSingleResult().toString());

+                    }

+                }

+

+                String time = grp.getAllocatTime();

+                Date date;

+                String hms = "000000";

+                if (time != null) {

+                    if (time.length() == 14) {

+                        date = _ymdhms.parse(time);

+                        grp.setAllocatTime(ymdhms.format(date));

+                    } else {

+

+                        time += hms.substring(0, 14 - time.length());

+                        date = _ymdhms.parse(time + "");

+                        grp.setAllocatTime(ymdhms.format(date));

+                    }

+

+                }

+

+                time = grp.getSyncTime();

+                if (time != null) {

+                    if (time.length() == 14) {

+                        date = _ymdhms.parse(time);

+                        grp.setSyncTime(ymdhms.format(date));

+                    } else {

+                        time += hms.substring(0, 14 - time.length());

+                        date = _ymdhms.parse(time);

+                        grp.setSyncTime(ymdhms.format(date));

+                    }

+

+                }

+

+                time = grp.getFeedbackTime();

+                if (time != null) {

+                    if (time.length() == 14) {

+                        date = _ymdhms.parse(time);

+                        grp.setFeedbackTime(ymdhms.format(date));

+                    } else {

+                        time += hms.substring(0, 14 - time.length());

+                        date = _ymdhms.parse(time);

+                        grp.setFeedbackTime(ymdhms.format(date));

+                    }

+                }

+            }

+            return tDoorcardlstInfos;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public List<TDoorcardlstInfo> getOperatorCardListMap(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid, String regionid, String operRegionid) {

+        try {

+            String queryString = "select a.listid, a.factoryId,d.doorName,a.custName,g.operName,a.stuempNo," +

+                    "a.syncStatus,a.operFlag operFlagIndex,a.updatetime allocatTime,a.syncTime,a.closedate," +

+                    "b.updatetime feedbackTime,b.retmsg,a.reason ,a.buildingName,f.regionName" +

+                    " from t_doorcardlst a left join t_rtnresult b on a.listid=b.listid " +

+                    " left join tb_region f on a.regionid=f.regionid " +

+                    " left join t_doordev d on a.deviceid=d.doorid" +

+                    " left join tb_operator g on a.operid=g.operid" +

+                    " where 1>0 " ;

+            if (!"".equals(allocatStartDate)) {

+                queryString += " and a.updatetime>=:allocatStartDate ";

+            }

+            if (!"".equals(allocatEndDate)) {

+                queryString += " and a.updatetime<=:allocatEndDate ";

+            }

+            if (!("all").equals(syncStatus)) {

+                queryString += " and a.syncstatus =:syncStatus";

+            }

+            if (!("all").equals(factoryId)) {

+                queryString += " and a.factoryid =:factoryId";

+            }

+            if (!("").equals(doorName)) {

+                queryString += " and d.doorname like :doorName";

+            }

+            if (!("all").equals(operFlag)) {

+                queryString += " and a.operFlag =:operFlag";

+            }

+            if (!("").equals(buildingid)) {

+                queryString += " and a.buildingid = :buildingid";

+            }

+            if (!regionid.equals("")){

+                queryString += "and a.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :operRegionid  "

+                        + "union all  "

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                        + ") select regionid from tmp  where tmp.regionid=:regionid)";

+            }else {

+                queryString += "and a.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :operRegionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp )";

+

+            }

+            if (!("").equals(custName)) {

+                queryString += " and a.custname like :custName";

+            }

+            if (!("").equals(stuempNo)) {

+                queryString += " and a.stuempno like :stuempNo";

+            }

+            queryString += " order by a.listid DESC";

+

+            Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

+            if (!"".equals(allocatStartDate)) {

+                query.setParameter("allocatStartDate", allocatStartDate + "000000");

+            }

+            if (!"".equals(allocatEndDate)) {

+                query.setParameter("allocatEndDate", allocatEndDate + "235959");

+            }

+

+

+            if (!("all").equals(syncStatus)) {

+                query.setParameter("syncStatus", syncStatus);

+            }

+            if (!("all").equals(factoryId)) {

+                query.setParameter("factoryId", factoryId);

+            }

+            if (!("").equals(doorName)) {

+                query.setParameter("doorName", "%" + doorName + "%");

+            }

+            if (!("all").equals(operFlag)) {

+                query.setParameter("operFlag", operFlag);

+            }

+            if (!("").equals(buildingid)) {

+                query.setParameter("buildingid", buildingid);

+            }

+            if (!("").equals(regionid)){

+                query.setParameter("regionid",regionid);

             }

             if (!("").equals(custName)) {

                 query.setParameter("custName", "%" + custName + "%");

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java b/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
index feba2d1..ad4deba 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
@@ -12,13 +12,20 @@
     //获取所有厂商

     public List<TKey> getAllKeys() throws Exception;

 

-    //根据查询条件分页获取流水

-    public Pagination getAllCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate,

-                                             String doorName, String custName, String stuempNo, String syncStatus, List<String> opername,String operFlag, String buildingname,String regionname, int pageNo, int pageSize);

+    //根据查询条件分页获取所有流水

+    public Pagination getSystemCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate,

+                                             String doorName, String custName, String stuempNo, String syncStatus,String operFlag, String buildingid,String regionid, int pageNo, int pageSize);

 

-    //根据查询条件获取导出表单信息

-    public List<TDoorcardlstInfo> getAllCardListMap(String factoryId, String allocatStartDate, String allocatEndDate,

-                                                    String doorName, String custName, String stuempNo, String syncStatus, List<String> operids, String operFlag, String buildingname,String regionname);

+    //根据查询条件分页获取管理员权限的流水

+    public Pagination getOperatorCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate,

+                                                  String doorName, String custName, String stuempNo, String syncStatus,String operFlag, String buildingid,String regionid, int pageNo, int pageSize,String operRegionid);

+

+    //根据查询条件获取所有导出表单信息

+    public List<TDoorcardlstInfo> getSystemCardListMap(String factoryId, String allocatStartDate, String allocatEndDate,

+                                                    String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid);

+

+    public List<TDoorcardlstInfo> getOperatorCardListMap(String factoryId, String allocatStartDate, String allocatEndDate,

+                                                       String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid,String regionid,String operRegionid);

 

     //根据名单编号将已同步的名单修改为未同步使其重新同步

     public void updateDoorcardlstToNoWithIds (List<Long> listIds);

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
index e286cd3..1636a09 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
@@ -28,13 +28,23 @@
     }

 

     @Override

-    public Pagination getAllCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, List<String> opername, String operFlag, String buildingname,String regionname, int pageNo, int pageSize) {

-        return cardListDao.getAllCardListFrSearch(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, opername, operFlag, buildingname,regionname, pageNo, pageSize);

+    public Pagination getSystemCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus,  String operFlag, String buildingid,String regionid, int pageNo, int pageSize) {

+        return cardListDao.getSystemCardListFrSearch(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operFlag, buildingid,regionid, pageNo, pageSize);

     }

 

     @Override

-    public List<TDoorcardlstInfo> getAllCardListMap(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, List<String> operids, String operFlag, String buildingname,String regionname) {

-        return cardListDao.getAllCardListMap(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operids, operFlag, buildingname,regionname);

+    public Pagination getOperatorCardListFrSearch(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid, String regionid, int pageNo, int pageSize, String operRegionid) {

+        return cardListDao.getOperatorCardListFrSearch(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid, pageNo, pageSize, operRegionid);

+    }

+

+    @Override

+    public List<TDoorcardlstInfo> getSystemCardListMap(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus,  String operFlag, String buildingid,String regionid) {

+        return cardListDao.getSystemCardListMap(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus,  operFlag, buildingid,regionid);

+    }

+

+    @Override

+    public List<TDoorcardlstInfo> getOperatorCardListMap(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, String operFlag, String buildingid, String regionid, String operRegionid) {

+        return cardListDao.getOperatorCardListMap(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operFlag, buildingid, regionid, operRegionid);

     }

 

     @Override

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/OperatorDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/OperatorDao.java
index 31bf34d..4079c55 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/OperatorDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/OperatorDao.java
@@ -4,5 +4,5 @@
 

 public interface OperatorDao {

 

-    public List<String> findOperatorsByFopercode(String operid);

+

 }

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
index 5c39b62..9e5c8e7 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
@@ -15,6 +15,8 @@
 

     public TRegion getRegionById(String regionid);

 

+    public List<TRegion> getRegionListById(String regionid);

+

     public List<TRegion> getRegionListByLevel(int level);

 

     public List<TRegion> getAllRegions();

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/OperatorDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/OperatorDaoImpl.java
index 9949432..243801f 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/OperatorDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/OperatorDaoImpl.java
@@ -18,52 +18,5 @@
     @PersistenceContext

     EntityManager entityManager;

 

-    @Transactional

-    @Override

-    public List<String> findOperatorsByFopercode(String operid) {

-        try{

-            String sql = "select bean from TOperator bean where bean.status='0' and bean.father.opercode =?1 ";

-            TypedQuery<TOperator> query = entityManager.createQuery(sql, TOperator.class);

-            query.setParameter(1, operid);

-            List<TOperator> tOperators = new ArrayList<TOperator>();

-            tOperators.addAll(query.getResultList());

-            List<String> allopercode = new ArrayList<String>();

-            if(tOperators != null && tOperators.size() > 0){

-                for(TOperator grp:tOperators){

-                    allopercode.add(grp.getOpercode());

-                }

-                boolean index = false;

-                List<TOperator> lstsons = new ArrayList<TOperator>();

-                List<TOperator> lstson = new ArrayList<TOperator>();

-                lstson.addAll(tOperators);

-                while(lstson != null && lstson.size() > 0){

-                    if(index){

-                        for(TOperator grp:lstson){

-                            allopercode.add(grp.getOpercode());

-                        }

-                    }

-                    index = true;

-                    if(!lstsons.isEmpty()){

-                        lstsons.clear();

-                    }

-                    for(TOperator grp:lstson){

-                        String queryString = "select bean from TOperator bean where bean.father.opercode =?1";

-                        query = entityManager.createQuery(queryString, TOperator.class);

-                        query.setParameter(1, grp.getOpercode());

-                        lstsons.addAll(query.getResultList());

-                    }

-                    if(!lstson.isEmpty()){

-                        lstson.clear();

-                    }

-                    lstson.addAll(lstsons);

-                }

-            }

-            allopercode.add(operid);

 

-            return allopercode;

-        }catch(Exception e){

-            e.printStackTrace();

-        }

-        return null;

-    }

 }

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java
index fe077a8..05ba7a9 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java
@@ -153,6 +153,22 @@
 

     @Transactional

     @Override

+    public List<TRegion> getRegionListById(String regionid) {

+        String sql = "select bean.regionid,bean.address,bean.level,bean.parentid,bean.regionname,bean.remarks,bean.parentname,bean.flag " +

+                "from TB_REGION bean where flag=1 "+

+                "and bean.regionid in  " +

+                "(with recursive tmp as  (select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr " +

+                " where regionid= :regionid union all  select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  " +

+                " ) select regionid from tmp  )";

+        Query query = entityManager.createNativeQuery(sql, TRegion.class);

+        query.setParameter("regionid", regionid);

+        List list = query.getResultList();

+

+        return list;

+    }

+

+    @Transactional

+    @Override

     public List<TRegion> getRegionListByLevel(int level) {

         String sql = "select bean from TRegion bean where bean.flag=1 and bean.level=:level";

         TypedQuery<TRegion> query = entityManager.createQuery(sql, TRegion.class);

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
index 8adf9ed..1bd453e 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
@@ -30,8 +30,6 @@
     //修改字典值

     public TDictionary updateDictionary(String dicttype, String dicttypename, String dictval, String dictcaption, String oriengaltype, String oriengalval);

 

-    //根据操作员id获取有权限的操作员

-    public List<String> findOperatorsByFopercode(String operid);

 

     //根据查询条件分页获取所有区域

     public Pagination getSystemRegionList(String regionname,int pageNo,int pageSize);

@@ -48,6 +46,9 @@
     //根据id获取区域

     public TRegion getRegionById(String regionid);

 

+    //根据区域id获取其权限下所有区域

+    public List<TRegion> getRegionListById(String regionid);

+

     //根据区域级别获取其上一级级别的所有区域

     public List<TRegion> getRegionListByLevel(int level);

 

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
index 1f48e88..f729371 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
@@ -65,10 +65,6 @@
         return dictionaryDao.updateDictionary(dicttype, dicttypename, dictval, dictcaption, oriengaltype, oriengalval);

     }

 

-    @Override

-    public List<String> findOperatorsByFopercode(String operid) {

-        return operatorDao.findOperatorsByFopercode(operid);

-    }

 

     @Override

     public Pagination getSystemRegionList(String regionname, int pageNo, int pageSize) {

@@ -96,6 +92,11 @@
     }

 

     @Override

+    public List<TRegion> getRegionListById(String regionid) {

+        return regionDao.getRegionListById(regionid);

+    }

+

+    @Override

     public List<TRegion> getRegionListByLevel(int level) {

         return regionDao.getRegionListByLevel(level);

     }

diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index b3d349d..d37e1ac 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -27,4 +27,6 @@
 # user password
 auth.password.bcrypt.length=10
 
+server.servlet.context-path=/
+
 
diff --git a/src/main/resources/templates/doorlist/searchDoorlist.html b/src/main/resources/templates/doorlist/searchDoorlist.html
index b874920..0ded60e 100644
--- a/src/main/resources/templates/doorlist/searchDoorlist.html
+++ b/src/main/resources/templates/doorlist/searchDoorlist.html
@@ -76,20 +76,33 @@
                     </el-col>
 
                     <el-col :span="8">
-                        <el-form-item label="楼栋">
-                            <el-input v-model="searchDoorForm.buildingname" placeholder="楼栋名称">
-                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
-                            </el-input>
+                        <el-form-item label="区域">
+                            <el-select v-model="searchDoorForm.regionid"
+                                       @Change="regionChange"
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="regionid in regions"
+                                        :key="regionid.value"
+                                        :label="regionid.label"
+                                        :value="regionid.value">
+                                </el-option>
+                            </el-select>
                         </el-form-item>
                     </el-col>
 
                     <el-col :span="8">
-                        <el-form-item label="区域">
-                            <el-input v-model="searchDoorForm.regionname" placeholder="区域名称">
-                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
-                            </el-input>
+                        <el-form-item label="楼栋">
+                            <el-select v-model="searchDoorForm.buildingid" placeholder="请选择">
+                                <el-option
+                                        v-for="buildingid in buildings"
+                                        :key="buildingid.value"
+                                        :label="buildingid.label"
+                                        :value="buildingid.value">
+                                </el-option>
+                            </el-select>
                         </el-form-item>
                     </el-col>
+
                 </el-row>
                 <el-row>
                     <el-col :span="8" :offset="16">
@@ -125,11 +138,6 @@
                         width="100">
                 </el-table-column>
                 <el-table-column
-                        prop="buildingname"
-                        label="楼栋"
-                        min-width="140">
-                </el-table-column>
-                <el-table-column
                         prop="doorName"
                         label="设备名称"
                         width="180">
@@ -144,16 +152,17 @@
                         label="姓名"
                         width="150">
                 </el-table-column>
-                <el-table-column
-                        prop="buildingName"
-                        label="楼栋"
-                        width="180">
-                </el-table-column>
+
                     <el-table-column
                             prop="regionName"
                             label="区域"
                             width="130">
                     </el-table-column>
+                    <el-table-column
+                            prop="buildingName"
+                            label="楼栋"
+                            width="180">
+                    </el-table-column>
                 <el-table-column
                         prop="closedate"
                         label="有效期"
@@ -252,9 +261,11 @@
                 stuempNo: '',
                 syncStatus: '',
                 operFlag: '',
-                buildingname: '',
-                regionname:''
+                buildingid: '',
+                regionid:''
             },
+            regions:[],
+            buildings:[],
             factoryIds: [],
             syncStatus: [],
             operFlag: [],
@@ -315,7 +326,12 @@
 
             handleSelect:function(val){
                 this.selectList=val;
-            }
+            },
+            regionChange:function(value){
+                this.buildings=[];
+                this.searchDoorForm.buildingid='',
+                getRegionBuilding(this,value);
+            },
         },
         created: function () {
             var url = "/doorlistMgr/getFillFormList";
@@ -362,26 +378,31 @@
                             label: operDict[i]["dictcaption"]
                         })
                     }
-                    /*var buildings = [];
+                    var regionlist = [];
+                    var region = data.regions;
+                    for (var i = 0; i < region.length; i++) {
+                        regionlist.push({
+                            value: region[i]["regionid"],
+                            label: region[i]["regionname"]
+                        })
+                    }
+
+                    var buildinglist = [];
                     var building = data.buildings;
-                    buildings.push({
-                        value: "",
-                        label: "全部"
-                    })
                     for (var i = 0; i < building.length; i++) {
-                        buildings.push({
+                        buildinglist.push({
                             value: building[i]["buildingid"],
                             label: building[i]["buildingname"]
                         })
-                    }*/
+                    }
                     vue.factoryIds = factoryList;
                     vue.syncStatus = syncDicts;
                     vue.operFlag = operDicts;
-                    //vue.buildings = buildings;
+                    vue.regions = regionlist;
+                    vue.buildings = buildinglist;
                     vue.searchDoorForm.factoryId = 'all';
                     vue.searchDoorForm.syncStatus = 'all';
                     vue.searchDoorForm.operFlag = 'all';
-                    //vue.searchDoorForm.building = '';
                 }
             })
             this.searchDoorForm.allocatStartDate ='';
@@ -428,7 +449,7 @@
             + "&stuempNo=" + searchDoor.stuempNo + "&factoryId=" + searchDoor.factoryId
             + "&syncStatus=" + searchDoor.syncStatus +
             "&pageNo=" + pageno + "&pageSize=" + pagesize + "&operFlag=" + searchDoor.operFlag
-            + "&buildingname=" + searchDoor.buildingname+"&regionname=" +searchDoor.regionname;
+            + "&buildingid=" + searchDoor.buildingid+"&regionid=" +searchDoor.regionid;
         var token=$("meta[name='_csrf_token']").attr("value");
         $.ajax({
             type: "POST",
@@ -472,7 +493,7 @@
             "&doorName=" + searchDoor.doorName + "&custName=" + searchDoor.custName
             + "&stuempNo=" + searchDoor.stuempNo + "&factoryId=" + searchDoor.factoryId
             + "&syncStatus=" + searchDoor.syncStatus + "&operFlag=" + searchDoor.operFlag
-            + "&buildingname=" + searchDoor.buildingname+"&regionname="+searchDoor.regionname;
+            + "&buildingid=" + searchDoor.buildingid+"&regionid="+searchDoor.regionid;
 //        window.location.href
         var uri = encodeURI(url);
         window.open(uri);
@@ -506,6 +527,28 @@
         }
     }
 
+    function getRegionBuilding(_self,value){
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("/ncmgr/getRegionBuilding?regionid=" + value),
+            success: function (ret) {
+                var bList = [];
+                var rB = ret.reBuilding;
+                if (rB!=null) {
+                    for (var j = 0; j < rB.length; j++) {
+                        bList.push({
+                            value: rB[j]["buildingid"],
+                            label: rB[j]["buildingname"]
+                        });
+                    }
+                }
+
+                _self.buildings = bList;
+            }
+        })
+    }
+
     function refreshThisTable(){
         $("#qrybtn").click();
     }
diff --git a/src/main/resources/templates/query/tdoorstream.html b/src/main/resources/templates/query/tdoorstream.html
index 81d4f23..a3427e1 100644
--- a/src/main/resources/templates/query/tdoorstream.html
+++ b/src/main/resources/templates/query/tdoorstream.html
@@ -42,18 +42,29 @@
                         <el-input v-model="tdoorstream.custname" style="width:193px"></el-input>
                     </el-col>
                     <el-col :span="8">
-                        <label class="control-label "
-                               style="margin-right:10px;font-size: 14px;width:80px">楼栋:
-                        </label>
-                        <el-input v-model="tdoorstream.buildingname" style="width:193px"></el-input>
+                        <el-form-item label="区域">
+                            <el-select v-model="searchDoorForm.regionid" placeholder="请选择">
+                                <el-option
+                                        v-for="regionid in regions"
+                                        :key="regionid.value"
+                                        :label="regionid.label"
+                                        :value="regionid.value">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
                     </el-col>
 
-
                     <el-col :span="8">
-                        <label class="control-label "
-                               style="margin-right:10px;font-size: 14px;width:80px">区域:
-                        </label>
-                        <el-input v-model="tdoorstream.regionname" style="width:193px"></el-input>
+                        <el-form-item label="楼栋">
+                            <el-select v-model="searchDoorForm.buildingid" placeholder="请选择">
+                                <el-option
+                                        v-for="buildingid in buildings"
+                                        :key="buildingid.value"
+                                        :label="buildingid.label"
+                                        :value="buildingid.value">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
                     </el-col>
                 </el-row>
                 <el-row style="margin-top:10px">
@@ -160,7 +171,6 @@
                     return time.getTime() <vue.starttransdate.getTime();
                 }
             },
-
             tlist:[],
             buildings:[],
             regions:[],
@@ -171,9 +181,9 @@
                 custname:'',
                 factoryid:'',
                 doorname:'',
-                buildingname:'',
+                buildingid:'',
                 dtlStatus:'all',
-                regionname:''
+                regionid:''
             },
         },
         methods : {
@@ -267,8 +277,8 @@
         var endtransdate = Formatdate(Uendtransdate);
         var stuempno = _self.tdoorstream.stuempno;
         var custname = _self.tdoorstream.custname;
-        var buildingname = _self.tdoorstream.buildingname;
-        var regionname   = _self.tdoorstream.regionname;
+        var buildingid = _self.tdoorstream.buildingid;
+        var regionid   = _self.tdoorstream.regionid;
         var doorname = _self.tdoorstream.doorname;
         var dtlStatus = _self.tdoorstream.dtlStatus;
         if(_self.totSize>2000){
@@ -277,7 +287,7 @@
         }
         //console.log(factoryid+stuempno);
         var	url =encodeURI( "/query/exportexcel?&startTranDate="+starttransdate+"&endTranDate="
-            +endtransdate+"&stuempno="+stuempno+"&custname="+custname+"&buildingname="+buildingname+"&regionname="+regionname+"&doorName="+doorname
+            +endtransdate+"&stuempno="+stuempno+"&custname="+custname+"&buildingid="+buildingid+"&regionid="+regionid+"&doorName="+doorname
             +"&streamstatus="+dtlStatus+"&factoryId="+factoryid)
         window.open(url);
 
@@ -289,17 +299,17 @@
         var endtransdate = Formatdate(Uendtransdate);
         var stuempno = _self.tdoorstream.stuempno;
         var custname = _self.tdoorstream.custname;
-        var buildingname = _self.tdoorstream.buildingname;
+        var buildingid = _self.tdoorstream.buildingid;
         var doorname = _self.tdoorstream.doorname;
-        var regionname = _self.tdoorstream.region;
+        var regionid = _self.tdoorstream.regionid;
         var dtlStatus = _self.tdoorstream.dtlStatus;
         //console.log(factoryid);
         $.ajax({
             type : "get",
             dataType : "json",
             url : encodeURI("/query/getSearchDoorStreamList?&startTranDate="+starttransdate+"&endTranDate="+endtransdate+
-                "&stuempno="+stuempno+"&custname="+custname+"&buildingname="+buildingname+"&doorName="+doorname+"&streamstatus="+dtlStatus+
-                "&factoryId="+factoryid +"&pageNo="+pageno+"&pageSize="+pagesize+"&regionname="+regionname),
+                "&stuempno="+stuempno+"&custname="+custname+"&buildingid="+buildingid+"&doorName="+doorname+"&streamstatus="+dtlStatus+
+                "&factoryId="+factoryid +"&pageNo="+pageno+"&pageSize="+pagesize+"&regionid="+regionid),
             success : function(ret) {
                 //	console.log(ret);
                 _self.totSize = ret.tDoordtlInfo.totalCount;