流水功能完善  以及 各功能添加区域判断调整
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 1cd837b..193273c 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
@@ -96,7 +96,8 @@
      * @param stuempNo

      * @param syncStatus

      * @param operFlag

-     * @param building

+     * @param buildingname

+     * @param regionname

      * @param allocatStartDate

      * @param allocatEndDate

      * @param pageNo

@@ -113,7 +114,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 = "building", required = false, defaultValue = "") String building,

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

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

                                  @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,

@@ -127,7 +129,7 @@
 

             Pagination pResult;

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

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

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

             map.put("PageResult", pResult);

             map.put("index", flag);

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

@@ -150,7 +152,8 @@
      * @param stuempNo

      * @param syncStatus

      * @param operFlag

-     * @param building

+     * @param buildingname

+     * @param regionname

      * @param allocatStartDate

      * @param allocatEndDate

      * @param operUser

@@ -163,7 +166,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 = "building", required = false, defaultValue = "") String building,

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

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

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

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

                          @AuthenticationPrincipal TOperator operUser) {

@@ -172,7 +176,7 @@
          */

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

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

-                doorName, custName, stuempNo, syncStatus, allopername, operFlag, building);

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

 

         /**

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

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/bean/TDoordtlInfo.java b/src/main/java/com/supwisdom/dlpay/mainservice/bean/TDoordtlInfo.java
index b49a994..c588233 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/bean/TDoordtlInfo.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/bean/TDoordtlInfo.java
@@ -2,9 +2,14 @@
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
 
+import javax.persistence.Entity;
+import javax.persistence.Id;
 import java.io.Serializable;
 
+@Entity
 public class TDoordtlInfo implements Serializable{
+	@Id
+	private String listid;
 	@Excel(name = "厂商名称")
 	private String factoryname;
 	@Excel(name = "设备编号")
@@ -17,9 +22,9 @@
 	private String custname;
 	@Excel(name = "楼栋",width = 30)
 	private String buildingname;
-	@Excel(name = "区域",width = 30)
+	@Excel(name = "区域")
 	private String regionname;
-	@Excel(name = "物理卡号")
+	@Excel(name = "物理卡号",width = 30)
 	private String cardphyid;
 	@Excel(name = "刷卡时间",databaseFormat = "yyyy-MM-dd",width = 20)
 	private String transdate;
@@ -30,6 +35,14 @@
 	@Excel(name = "采集时间",databaseFormat = "yyyy-MM-dd",width = 20)
 	private String coldate;
 
+	public String getListid() {
+		return listid;
+	}
+
+	public void setListid(String listid) {
+		this.listid = listid;
+	}
+
 	public String getDoorid() {
 		return doorid;
 	}
@@ -111,4 +124,20 @@
 	public void setColdate(String coldate) {
 		this.coldate = coldate;
 	}
+
+	public TDoordtlInfo(String listid, String factoryname, String doorid, String doorname, String stuempno, String custname, String buildingname, String regionname, String cardphyid, String transdate, String dtldesc, String status, String coldate) {
+		this.listid = listid;
+		this.factoryname = factoryname;
+		this.doorid = doorid;
+		this.doorname = doorname;
+		this.stuempno = stuempno;
+		this.custname = custname;
+		this.buildingname = buildingname;
+		this.regionname = regionname;
+		this.cardphyid = cardphyid;
+		this.transdate = transdate;
+		this.dtldesc = dtldesc;
+		this.status = status;
+		this.coldate = coldate;
+	}
 }
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 941cdb9..e2e1b60 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardListDao.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardListDao.java
@@ -8,10 +8,10 @@
 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 building, int pageNo, int pageSize);

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

 

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

-                                                    String doorName, String custName, String stuempNo, String syncStatus, List<String> opername, String operFlag, String building);

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

 

     public void updateDoorcardlstToNoWithIds(List<Long> listIds);

 }

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/DoordtlDao.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/DoordtlDao.java
new file mode 100644
index 0000000..35e75d8
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/DoordtlDao.java
@@ -0,0 +1,20 @@
+package com.supwisdom.dlpay.mainservice.dao;

+

+import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;

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

+

+import java.util.List;

+

+public interface DoordtlDao {

+    public List<TDoordtlInfo> findExportExcelDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno,

+                                                     String custname, String buildingname, String regionname, String doorName, String factoryId, String streamstatus);

+

+    public Pagination findSystemTDoordtl(

+            String startTranDate, String endTranDate,String startTranTime, String endTranTime,String stuempno,

+            String custname,String buildingname,String doorName,String factoryId,String streamstatus,int pageNo,int pageSize,String regionname);

+

+

+    public Pagination findAllTDoordtl(

+            String operid,String startTranDate, String endTranDate,String startTranTime, String endTranTime,String stuempno,

+            String custname,String buildingname,String doorName,String factoryId,String streamstatus,int pageNo,int pageSize,String regionname);

+}

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 722afdd..c081d4d 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
@@ -9,7 +9,6 @@
 import org.springframework.transaction.annotation.Transactional;

 

 import javax.persistence.EntityManager;

-import javax.persistence.NamedNativeQuery;

 import javax.persistence.PersistenceContext;

 import javax.persistence.Query;

 import java.text.SimpleDateFormat;

@@ -24,7 +23,7 @@
 

     @Transactional

     @Override

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

+    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) {

         try {

 

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

@@ -55,8 +54,18 @@
             if (!("all").equals(operFlag)) {

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

             }

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

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

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

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

+            }

+            if (!regionname.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  "

+                        + "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";

@@ -76,7 +85,7 @@
             }

 

 

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

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

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

                 query.setParameter("syncStatus", syncStatus);

             }

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

                 query.setParameter("operFlag", operFlag);

             }

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

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

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

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

+            }

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

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

             }

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

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

@@ -98,6 +110,17 @@
             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 = getAllCardListCount(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, operids, operFlag, buildingname, regionname);

+            page.setTotalCount(totalCount);

+

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

             SimpleDateFormat _ymdhms = new SimpleDateFormat("yyyyMMddHHmmss");

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

@@ -207,15 +230,7 @@
 

             }

 

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

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

-            query.setMaxResults(pageSize);

-            Pagination page = new Pagination();

-            page.setPageNo(pageNo);

-            page.setPageSize(pageSize);

             page.setList(tDoorcardlstInfos);

-            int totalCount = tDoorcardlstInfos.size();

-            page.setTotalCount(totalCount);

             return page;

         }catch (Exception e){

             e.printStackTrace();

@@ -223,9 +238,103 @@
         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){

+        try {

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

+                    "TDoordev d " +

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

+            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.operfalg =:operFlag";

+            }

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

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

+            }

+            if (!regionname.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  "

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

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

+            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(buildingname)) {

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

+            }

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

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

+            }

+            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 List<TDoorcardlstInfo> getAllCardListMap(String factoryId, String allocatStartDate, String allocatEndDate, String doorName, String custName, String stuempNo, String syncStatus, List<String> opername, String operFlag, String building) {

+    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) {

         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," +

@@ -255,8 +364,18 @@
             if (!("all").equals(operFlag)) {

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

             }

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

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

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

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

+            }

+            if (!regionname.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  "

+                        + "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";

@@ -275,7 +394,7 @@
             }

 

 

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

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

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

                 query.setParameter("syncStatus", syncStatus);

             }

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

                 query.setParameter("operFlag", operFlag);

             }

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

-                query.setParameter("buildingid", building);

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

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

+            }

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

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

             }

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

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

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/DoordtlDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/DoordtlDaoImpl.java
new file mode 100644
index 0000000..3323dc6
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/DoordtlDaoImpl.java
@@ -0,0 +1,416 @@
+package com.supwisdom.dlpay.mainservice.dao.impl;

+

+import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;

+import com.supwisdom.dlpay.mainservice.dao.DoordtlDao;

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

+import org.springframework.stereotype.Repository;

+import org.springframework.transaction.annotation.Transactional;

+

+import javax.persistence.EntityManager;

+import javax.persistence.PersistenceContext;

+import javax.persistence.Query;

+import java.util.List;

+

+@Repository

+public class DoordtlDaoImpl implements DoordtlDao {

+    @PersistenceContext

+    EntityManager entityManager;

+

+    @Transactional

+    @Override

+    public List<TDoordtlInfo> findExportExcelDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno, String custname, String buildingname, String regionname, String doorName, String factoryId, String streamstatus) {

+        try {

+            String queryString = "select a.dtldesc , c.factoryname,d.doorname,b.stuempno,b.custname,tb.buildingname,tr.regionname," +

+                    " to_char(to_date(a.transdate||a.transtime ,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as transdate, "

+                    + "case when a.status='0' then '失败' else '成功' end status,to_char(to_date(  a.coldate||a.coltime,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as coldate  " + "from  "

+                    + "t_doordtl a "

+                    + "left join t_customer b on a.custid=b.custid " + "left join "

+                    + "t_building tb on b.buildingid=tb.buildingid " + "left join  "

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

+                    + "t_doordev d  on a.doorid = d.doorid, " + "t_keys c " + "where a.factoryid=c.factoryid  ";

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

+                queryString += "  and a.transdate>=:startTranDate and a.transdate<=:endTranDate ";

+            }

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

+                queryString += "  and a.transtime>=:startTranTime and a.transtime<=:endTranTime ";

+            }

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

+                queryString += " and b.stuempno like :stuempno ";

+            }

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

+                queryString += " and b.custname like :custname ";

+            }

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

+                queryString += " and tb.buildingname like :buildingname ";

+            }

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

+                queryString += "and tr.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

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

+                        + "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 (!doorName.equals("")) {

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

+            }

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

+                queryString += " and c.factoryId =:factoryId ";

+            }

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

+                queryString += " and a.status =:streamstatus ";

+            }

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

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

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

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

+            }

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

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

+            List list = query.getResultList();

+            return list;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno, String custname, String buildingname, String doorName, String factoryId, String streamstatus, int pageNo, int pageSize, String regionname) {

+        String queryString = "select a.doorid, d.doorname,a.stuempno,a.custname,a.transdate||a.transtime transdate,tb.buildingname,tr.regionname, "

+                + "case when a.status='0' then '失败' else '成功' end status,a.coldate||a.coltime coldate,a.dtldesc,a.cardphyid  "

+                + "from t_doordtl a left join t_doordev d  on a.doorid = d.doorid "

+                + "left join t_building tb on a.buildingid=tb.buildingid "

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

+                + "where 1>0 ";

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

+            queryString += " and transdate between :startTranDate and :endTranDate ";

+        }

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

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

+        }

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

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

+        }

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

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

+        }

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

+            queryString += " and a.status =:streamstatus ";

+        }

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

+            queryString += " and tb.buildingname like :buildingname";

+        }

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

+            queryString += "and tr.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

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

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

+        }

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

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

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

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

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

+        }

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

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

+        }

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

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

+        }

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

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

+        }

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

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

+        }

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

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

+        }

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

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

+        }

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

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

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

+        List<TDoordtlInfo> list = query.getResultList();

+        page.setList(list);

+        int totalCount = getSystemCount(startTranDate, endTranDate, startTranTime, endTranTime, stuempno, custname,

+                buildingname, doorName, factoryId, streamstatus,regionname);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+

+

+

+    private int getSystemCount(String startTranDate, String endTranDate, String startTranTime, String endTranTime,

+                         String stuempno, String custname, String buildingname, String doorName,

+                         String factoryId, String streamstatus,String regionname) {

+        try {

+            String queryString = "select count(*) as cnt "

+                    + " from t_doordtl a "

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

+                    + "left join t_building tb on a.buildingid=tb.buildingid "

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

+                    + " where 1>0";

+

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

+                queryString += " and transdate between :startTranDate and :endTranDate ";

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

+                queryString += " and a.status =:streamstatus ";

+            }

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

+                queryString += " and tb.buildingname like :buildingname";

+            }

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

+                queryString += "and tr.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

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

+                        + "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(queryString);

+            query.setMaxResults(5);

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

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+			}

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

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

+            }

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

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

+            }

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

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

+            }

+            List list = query.getResultList();

+            int cnt = 0;

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

+                cnt = Integer.parseInt(list.get(0).toString());

+            }

+            return cnt;

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+        return 0;

+    }

+

+

+    @Transactional

+    @Override

+    public Pagination findAllTDoordtl(String operid, String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno, String custname, String buildingname, String doorName, String factoryId, String streamstatus, int pageNo, int pageSize, String regionname) {

+        try{

+            String queryString = "select a.doorid,d.doorname,a.stuempno,a.custname,a.transdate||a.transtime transdate,"

+                    + " case when a.status='0' then '失败' else '成功' end status,a.coldate||a.coltime coldate,a.dtldesc,a.cardphyid,tb.buildingname,tr.regionname "

+                    + " from t_doordtl a left join t_doordev d on a.doorid = d.doorid"

+                    + " left join t_operdevice od on a.doorid = od.deviceid"

+                    + "left join t_building tb on a.buildingid=tb.buildingid "

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

+                    + " where 1>0 and od.operid = :operid";

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

+                queryString += " and transdate between :startTranDate and :endTranDate ";

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

+                queryString += " and a.status =:streamstatus ";

+            }

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

+                queryString += " and tb.buildingname like :buildingname";

+            }

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

+                queryString += "and tr.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

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

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

+            }

+            queryString += " order by transdate DESC";

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

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

+

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

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

+            if(regionname.equals("")){

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

+            }

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

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

+            query.setMaxResults(pageSize);

+            Pagination page = new Pagination();

+            page.setPageNo(pageNo);

+            page.setPageSize(pageSize);

+            List<TDoordtlInfo> list = query.getResultList();

+            page.setList(list);

+            int totalCount = getAllCount(operid,startTranDate, endTranDate, startTranTime, endTranTime, stuempno, custname,

+                    buildingname, doorName, factoryId, streamstatus,regionname);

+            page.setTotalCount(totalCount);

+            return page;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return null;

+    }

+

+    private int getAllCount(String operid,String startTranDate, String endTranDate, String startTranTime, String endTranTime,

+                         String stuempno, String custname, String buildingname, String doorName,

+                         String factoryId, String streamstatus,String regionname) {

+        try {

+            String queryString = "select count(*) as cnt "

+                    + " from t_doordtl a "

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

+                    + " left join t_operdevice od on a.doorid = od.deviceid"

+                    + " left join t_building tb on a.buildingid=tb.buildingid "

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

+                    + " where 1>0 and od.operid = :operid";

+

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

+                queryString += " and transdate between :startTranDate and :endTranDate ";

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

+                queryString += " and a.status =:streamstatus ";

+            }

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

+                queryString += " and tb.buildingname like :buildingname";

+            }

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

+                queryString += "and tr.regionid in  "

+                        +"("

+                        + "with recursive tmp as  "

+                        + "("

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

+                        + "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(queryString);

+            query.setMaxResults(5);

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

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

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

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

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

+            }

+            List list = query.getResultList();

+            int cnt = 0;

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

+                cnt = Integer.parseInt(list.get(0).toString());

+            }

+            return cnt;

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+        return 0;

+    }

+}

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 e7955a3..feba2d1 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.mainservice.service;

 

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

+import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;

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

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

 

@@ -13,12 +14,25 @@
 

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

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

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

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

 

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

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

-                                                    String doorName, String custName, String stuempNo, String syncStatus, List<String> opername, String operFlag, String building);

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

 

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

     public void updateDoorcardlstToNoWithIds (List<Long> listIds);

+

+    //根据查询条件获取导出Excel数据

+    public List<TDoordtlInfo> findExportExcelDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno,

+                                                     String custname, String buildingname, String regionname, String doorName, String factoryId, String streamstatus);

+

+    //根据查询条件获取系统管理员流水数据

+    public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno,

+                                         String custname, String buildingname, String doorName, String factoryId, String streamstatus, int pageNo, int pageSize,String regionname);

+

+    //根据管理员id和查询条件获取相应流水数据

+    public Pagination findAllTDoordtl(

+            String operid,String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno,

+            String custname, String buildingname, String doorName, String factoryId, String streamstatus, int pageNo, int pageSize,String regionname);

 }

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 f9f4633..e286cd3 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
@@ -1,7 +1,9 @@
 package com.supwisdom.dlpay.mainservice.service.impl;

 

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

+import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;

 import com.supwisdom.dlpay.mainservice.dao.CardListDao;

+import com.supwisdom.dlpay.mainservice.dao.DoordtlDao;

 import com.supwisdom.dlpay.mainservice.dao.KeyDao;

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

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

@@ -17,6 +19,8 @@
     KeyDao keyDao;

     @Autowired

     CardListDao cardListDao;

+    @Autowired

+    DoordtlDao doordtlDao;

 

     @Override

     public List<TKey> getAllKeys() throws Exception {

@@ -24,17 +28,32 @@
     }

 

     @Override

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

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

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

     }

 

     @Override

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

-        return cardListDao.getAllCardListMap(factoryId, allocatStartDate, allocatEndDate, doorName, custName, stuempNo, syncStatus, opername, operFlag, building);

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

     }

 

     @Override

     public void updateDoorcardlstToNoWithIds(List<Long> listIds) {

         cardListDao.updateDoorcardlstToNoWithIds(listIds);

     }

+

+    @Override

+    public List<TDoordtlInfo> findExportExcelDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno, String custname, String buildingname, String regionname, String doorName, String factoryId, String streamstatus) {

+        return doordtlDao.findExportExcelDoordtl(startTranDate, endTranDate, startTranTime, endTranTime, stuempno, custname, buildingname, regionname, doorName, factoryId, streamstatus);

+    }

+

+    @Override

+    public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno, String custname, String buildingname, String doorName, String factoryId, String streamstatus, int pageNo, int pageSize, String regionname) {

+        return doordtlDao.findSystemTDoordtl(startTranDate, endTranDate, startTranTime, endTranTime, stuempno, custname, buildingname, doorName, factoryId, streamstatus, pageNo, pageSize, regionname);

+    }

+

+    @Override

+    public Pagination findAllTDoordtl(String operid, String startTranDate, String endTranDate, String startTranTime, String endTranTime, String stuempno, String custname, String buildingname, String doorName, String factoryId, String streamstatus, int pageNo, int pageSize, String regionname) {

+        return null;

+    }

 }

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
index 98dd04d..f52684a 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
@@ -30,7 +30,7 @@
     private NcService ncService;

     @Autowired

     private SystemService systemService;

-

+    

     @RequestMapping("/devindex")

     public String devindex(ModelMap model) {

         return "ncmgr/nc_dev";

@@ -63,7 +63,8 @@
      * @param pageNo

      * @param pageSize

      * @param devname

-     * @param buildingid

+     * @param buildingname

+     * @param regionname

      * @param devtype

      * @return

      */

@@ -74,12 +75,13 @@
                            @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo,

                            @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,

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

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

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

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

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

         Map map = new HashMap();

         try{

             Pagination page = null;

-            page = ncService.getNcDeviceWithPage(devname, pageNo, pageSize, map, buildingid, devtype);

+            page = ncService.getNcDeviceWithPage(devname, pageNo, pageSize, map, buildingname,regionname, devtype);

             map.put("PageResult", page);

             List<TDictionaryId> dicts = systemService.findTDictionaryByType(8);

             map.put("dicts", dicts);

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
index dfd7458..ba92967 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -2,16 +2,19 @@
 

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

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

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

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

 

 import java.util.List;

 import java.util.Map;

 

 public interface NcDeviceDao {

-    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid, String devtype);

+    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingname,String regionname, String devtype);

 

     public List<TBuilding> getAllBuilding();

 

+    public List<TRegion> getAllRegion();

+

     public TBuilding getBuidingById(String id);

 

     public List<TNcDevice> getDevByType(String type);

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDevWeekDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDevWeekDaoImpl.java
index 7aaa0f1..a48280a 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDevWeekDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDevWeekDaoImpl.java
@@ -50,19 +50,44 @@
         if (weekid!=0) {

             query.setParameter("wid", weekid);

         }

-        List<TNcDevweek> list = query.getResultList();

+

         pageNo = pageNo <= 0 ? 1 : pageNo;

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

         query.setMaxResults(pageSize);

         Pagination page = new Pagination();

         page.setPageNo(pageNo);

         page.setPageSize(pageSize);

+        List<TNcDevweek> list = query.getResultList();

         page.setList(list);

-        int totalCount = list.size();

+        int totalCount = getNcDevWeekCount(weekid, devname);

         page.setTotalCount(totalCount);

         return page;

     }

 

+

+    private int getNcDevWeekCount(int weekid,String devname){

+        String sql = "select count(*) from T_Nc_Devweek  where 1>0 ";

+        if (!StringUtil.isEmpty(devname)) {

+            sql += " and devname like :devname ";

+        }

+        if (weekid!=0) {

+            sql+=" and weekid=:wid ";

+        }

+        Query query = entityManager.createNativeQuery(sql);

+        if (!StringUtil.isEmpty(devname)) {

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

+        }

+        if (weekid!=0) {

+            query.setParameter("wid", weekid);

+        }

+        int cnt = 0;

+        List list = query.getResultList();

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

     @Transactional

     @Override

     public void delDevWeekById(int devid, int weekid) {

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
index 12927b3..becafab 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
@@ -3,6 +3,7 @@
 import com.supwisdom.dlpay.ncmgr.dao.NcDeviceDao;

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

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

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

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

 import org.springframework.stereotype.Repository;

 import org.springframework.transaction.annotation.Transactional;

@@ -22,13 +23,26 @@
 

     @Transactional

     @Override

-    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid, String devtype) {

-        String sql ="select * from T_Nc_Device bean where 1>0 and operflag='A'";

+    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingname,String regionname, String devtype) {

+        String sql ="select * from T_Nc_Device bean "

+                +" left join t_building tb on bean.buildingid=tb.buildingid"

+                +" left join tb_region tr on tr.regionid=tb.regionid"

+                +" where 1>0 and operflag='A'";

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

             sql+="and devname like :devname ";

         }

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

-            sql+="and  buildingid = :buildingid ";

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

+            sql+="and  buildingname like :buildingname ";

+        }

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

+            sql += "and tr.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

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

+                    + "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(!devtype.equals("")){

             sql+="and  devtype = :devtype ";

@@ -39,25 +53,75 @@
         if(!devname.equals("")){

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

         }

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

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

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

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

         }

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

             query.setParameter("devtype", devtype);

         }

-        List<TNcDevice> list = query.getResultList();

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

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

+        }

         pageNo = pageNo <= 0 ? 1 : pageNo;

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

         query.setMaxResults(pageSize);

         Pagination page = new Pagination();

         page.setPageNo(pageNo);

         page.setPageSize(pageSize);

+        List<TNcDevice> list = query.getResultList();

         page.setList(list);

-        int totalCount = list.size();

+        int totalCount = getNcDeviceCount(devname, buildingname, regionname, devtype);

         page.setTotalCount(totalCount);

         return page;

     }

 

+    private int getNcDeviceCount(String devname, String buildingname,String regionname, String devtype){

+        String sql ="select count(bean.deviceid) from T_Nc_Device bean "

+                +" left join t_building tb on bean.buildingid=tb.buildingid"

+                +" left join tb_region tr on tr.regionid=tb.regionid"

+                +" where 1>0 and operflag='A'";

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

+            sql+="and devname like :devname ";

+        }

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

+            sql+="and  buildingname like :buildingname ";

+        }

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

+            sql += "and tr.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

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

+                    + "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(!devtype.equals("")){

+            sql+="and  devtype = :devtype ";

+        }

+        Query query = entityManager.createNativeQuery(sql);

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

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

+        }

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

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

+        }

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

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

+        }

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

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

+        }

+        List list = query.getResultList();

+        int cnt = 0;

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

+

+

     @Transactional

     @Override

     public List<TBuilding> getAllBuilding() {

@@ -67,6 +131,16 @@
         return list;

     }

 

+    @Transactional

+    @Override

+    public List<TRegion> getAllRegion() {

+        String sql = " select b FROM TRegion b WHERE b.flag=1 ";

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

+        List<TRegion> list = query.getResultList();

+        return list;

+    }

+

+    @Transactional

     @Override

     public TBuilding getBuidingById(String id) {

         String sql = "select b from TBuilding b where b.flag='A' and b.buildingid=:buildingid";

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeDaoImpl.java
index 7be59b3..23c7563 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeDaoImpl.java
@@ -29,20 +29,40 @@
         if (!timename.equals("")){

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

         }

-        List<TNcTime> list = query.getResultList();

+

         pageNo = pageNo <= 0 ? 1 : pageNo;

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

         query.setMaxResults(pageSize);

         Pagination page = new Pagination();

         page.setPageNo(pageNo);

         page.setPageSize(pageSize);

+        List<TNcTime> list = query.getResultList();

         page.setList(list);

-        int totalCount = list.size();

+        int totalCount = getNcTimeCount(timename);

         page.setTotalCount(totalCount);

         return page;

 

     }

 

+    private int getNcTimeCount(String timename){

+        String sql = "select count(bean.timeid) from TNcTime bean where 1>0";

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

+            sql+=" and bean.timename like :timename ";

+        }

+        Query query = entityManager.createQuery(sql);

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

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

+        }

+        List list = query.getResultList();

+        int cnt=0;

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+

+    }

+

+

     @Transactional

     @Override

     public List<String> getTimegrpIdById(int id) {

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeGrpDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeGrpDaoImpl.java
index 3d9e931..c0b3e60 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeGrpDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcTimeGrpDaoImpl.java
@@ -29,19 +29,36 @@
         if (!timename.isEmpty()){

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

         }

-        List<TNcTimegrp> list = query.getResultList();

         pageNo = pageNo <= 0 ? 1 : pageNo;

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

         query.setMaxResults(pageSize);

         Pagination page = new Pagination();

         page.setPageNo(pageNo);

         page.setPageSize(pageSize);

+        List<TNcTimegrp> list = query.getResultList();

         page.setList(list);

-        int totalCount = list.size();

+        int totalCount = getNcTimeGrpCount(timename);

         page.setTotalCount(totalCount);

         return page;

     }

 

+    private int getNcTimeGrpCount(String timename){

+        String sql = "select count(bean.timegrpid) from TNcTimegrp bean where 1>0 ";

+        if (!timename.isEmpty()){

+            sql+=" and bean.timegrpname like :timename ";

+        }

+        Query query = entityManager.createQuery(sql);

+        if (!timename.isEmpty()){

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

+        }

+        int cnt = 0;

+        List list = query.getResultList();

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

     @Transactional

     @Override

     public TNcTimegrp findByTimeGrpId(int id) {

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcWeekTimeDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcWeekTimeDaoImpl.java
index ee9c8a8..9ab6d71 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcWeekTimeDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcWeekTimeDaoImpl.java
@@ -29,19 +29,37 @@
         if (!StringUtil.isEmpty(time)){

             query.setParameter("timename", "%"+time+"%");

         }

-        List<TNcWeektime> list = query.getResultList();

+

         pageNo = pageNo <= 0 ? 1 : pageNo;

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

         query.setMaxResults(pageSize);

         Pagination page = new Pagination();

         page.setPageNo(pageNo);

         page.setPageSize(pageSize);

+        List<TNcWeektime> list = query.getResultList();

         page.setList(list);

-        int totalCount = list.size();

+        int totalCount = getNcWeekTimeCount(time);

         page.setTotalCount(totalCount);

         return page;

     }

 

+    private int getNcWeekTimeCount(String time){

+        String sql = "select count(bean.weekid) from TNcWeektime bean where 1>0 and bean.adddelflag=1 ";

+        if (!StringUtil.isEmpty(time)){

+            sql +=" and bean.weekname like :timename ";

+        }

+        Query query = entityManager.createQuery(sql);

+        if (!StringUtil.isEmpty(time)){

+            query.setParameter("timename", "%"+time+"%");

+        }

+        int cnt = 0;

+        List list = query.getResultList();

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

     @Transactional

     @Override

     public TNcWeektime findByWeekTimeId(int id) {

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java
index 41ee916..26c89bc 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java
@@ -20,6 +20,7 @@
 	private String updtime;
 	private String flag;
 	private String buildingdesc;
+	private String regionid;
 
 	// Constructors
 
@@ -34,13 +35,14 @@
 
 	/** full constructor */
 	public TBuilding(String buildingid, String buildingname, String synctime,
-                     String updtime, String flag, String buildingdesc) {
+                     String updtime, String flag, String buildingdesc,String regionid) {
 		this.buildingid = buildingid;
 		this.buildingname = buildingname;
 		this.synctime = synctime;
 		this.updtime = updtime;
 		this.flag = flag;
 		this.buildingdesc = buildingdesc;
+		this.regionid = regionid;
 	}
 
 	// Property accessors
@@ -99,4 +101,12 @@
 		this.buildingdesc = buildingdesc;
 	}
 
+	@Column(name="REGIONID",length = 32)
+	public String getRegionid() {
+		return regionid;
+	}
+
+	public void setRegionid(String regionid) {
+		this.regionid = regionid;
+	}
 }
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TRegion.java b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TRegion.java
new file mode 100644
index 0000000..66edb0f
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TRegion.java
@@ -0,0 +1,94 @@
+package com.supwisdom.dlpay.ncmgr.domain;

+

+import javax.persistence.Column;

+import javax.persistence.Entity;

+import javax.persistence.Id;

+import javax.persistence.Table;

+import java.io.Serializable;

+

+@Entity

+@Table(name = "TB_REGION")

+public class TRegion implements Serializable {

+

+    private String regionid;

+    private String address;

+    private Integer level;

+    private String parentid;

+    private String regionname;

+    private String remarks;

+    private String parentname;

+    private Integer flag;

+

+    @Id

+    @Column(name = "REGIONID", unique = true, nullable = false, length = 32)

+    public String getRegionid() {

+        return regionid;

+    }

+

+    public void setRegionid(String regionid) {

+        this.regionid = regionid;

+    }

+

+    @Column(name = "ADDRESS", length = 255)

+    public String getAddress() {

+        return address;

+    }

+

+    public void setAddress(String address) {

+        this.address = address;

+    }

+

+    @Column(name = "LEVEL", length = 32)

+    public Integer getLevel() {

+        return level;

+    }

+

+    public void setLevel(Integer level) {

+        this.level = level;

+    }

+

+    @Column(name = "PARENTID", length = 32)

+    public String getParentid() {

+        return parentid;

+    }

+

+    public void setParentid(String parentid) {

+        this.parentid = parentid;

+    }

+

+    @Column(name = "REGIONNAME", length = 200)

+    public String getRegionname() {

+        return regionname;

+    }

+

+    public void setRegionname(String regionname) {

+        this.regionname = regionname;

+    }

+

+    @Column(name = "REMARKS", length = 255)

+    public String getRemarks() {

+        return remarks;

+    }

+

+    public void setRemarks(String remarks) {

+        this.remarks = remarks;

+    }

+

+    @Column(name = "PARENTNAME", length = 200)

+    public String getParentname() {

+        return parentname;

+    }

+

+    public void setParentname(String parentname) {

+        this.parentname = parentname;

+    }

+

+    @Column(name = "FLAG", length = 32)

+    public Integer getFlag() {

+        return flag;

+    }

+

+    public void setFlag(Integer flag) {

+        this.flag = flag;

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
index 12b48f6..378138d 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -8,11 +8,14 @@
 

 public interface NcService {

     //根据查询条件分页获取所有设备

-    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingid, String devtype);

+    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingname,String regionname, String devtype);

 

     //获取所有楼栋信息

     public List<TBuilding> getAllBuilding();

 

+    //获取所有区域信息

+    public List<TRegion> getAllRegion();

+

     //根据楼栋id获取楼栋信息

     public TBuilding getBuidingById(String id);

 

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
index bf5eb5b..9aea87b 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
@@ -27,8 +27,8 @@
 

 

     @Override

-    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingid, String devtype) {

-        Pagination page = ncDeviceDao.getNcDeviceWithPage(devname, pageNo, pageSize, buildingid, devtype);

+    public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingname,String regionname, String devtype) {

+        Pagination page = ncDeviceDao.getNcDeviceWithPage(devname, pageNo, pageSize, buildingname,regionname, devtype);

         map.put("devPage", page);

         return page;

     }

@@ -39,6 +39,11 @@
     }

 

     @Override

+    public List<TRegion> getAllRegion() {

+        return ncDeviceDao.getAllRegion();

+    }

+

+    @Override

     public TBuilding getBuidingById(String id) {

         return ncDeviceDao.getBuidingById(id);

     }

diff --git a/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java b/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
index 413fd5b..f152630 100644
--- a/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
+++ b/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
@@ -1,7 +1,201 @@
 package com.supwisdom.dlpay.query.controller;

 

+import cn.afterturn.easypoi.entity.vo.NormalExcelConstants;

+import cn.afterturn.easypoi.excel.entity.ExportParams;

+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.mainservice.bean.TDoordtlInfo;

+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.domain.TRegion;

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

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

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

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

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

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

 import org.springframework.stereotype.Controller;

+import org.springframework.ui.ModelMap;

+import org.springframework.web.bind.annotation.RequestMapping;

+import org.springframework.web.bind.annotation.RequestParam;

+import org.springframework.web.bind.annotation.ResponseBody;

 

-@Controller("/query")

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+import java.io.UnsupportedEncodingException;

+import java.text.SimpleDateFormat;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+

+@Controller

+@RequestMapping("/query")

 public class QueryController {

+

+    @Autowired

+    WebInterfaceService webInterfaceService;

+

+    @Autowired

+    SystemService systemService;

+

+    @Autowired

+    NcService ncService;

+

+    @RequestMapping("/tdoorstream")

+    public String tdoorstream(ModelMap model){

+        return "query/tdoorstream";

+    }

+

+    /**

+     * 填充流水查询列表

+     * @return

+     * @throws Exception

+     */

+    @ResponseBody

+    @RequestMapping(value = "/getSearchFactoryIdList")

+    public Map getSearchFactoryIdList() throws Exception {

+        Map map = new HashMap<>();

+        //所有厂商

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

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

+        //流水状态

+        List<TDictionaryId> dtlStatus = systemService.findTDictionaryByType(20);

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

+        return map;

+    }

+

+

+    /**

+     * 获取需Excel导出流水数据

+     * @param request

+     * @param response

+     * @param startTranDate

+     * @param endTranDate

+     * @param startTranTime

+     * @param endTranTime

+     * @param stuempno

+     * @param custname

+     * @param buildingname

+     * @param regionname

+     * @param doorName

+     * @param factoryId

+     * @param streamstatus

+     */

+    @ResponseBody

+    @RequestMapping(value = "/exportexcel")

+    public void exportexcel(HttpServletRequest request, HttpServletResponse response,

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

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

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

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

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

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

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

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

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

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

+                            @RequestParam(value = "streamstatus", required = false, defaultValue = "all") String streamstatus) {

+        Map map = new HashMap();

+        try {

+            if (startTranDate.equals("Invalid date")) {

+                startTranDate = "";

+                endTranDate = "";

+                startTranTime = "";

+                endTranTime = "";

+            }

+            /**

+             * 1. 查询数据

+             */

+            // final int max_field = 9;

+            // 保存表字段

+            List<TDoordtlInfo> tDoordtlInfos = webInterfaceService.findExportExcelDoordtl(startTranDate, endTranDate, startTranTime,

+                    endTranTime, stuempno, custname, buildingname,regionname, doorName, factoryId, streamstatus);

+            /**

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

+             */

+            ExportParams params = new ExportParams("设备流水列表", "设备流水", ExcelType.XSSF);

+//		params.setFreezeCol(2);

+            map.put(NormalExcelConstants.DATA_LIST, tDoordtlInfos);//设置值

+            map.put(NormalExcelConstants.PARAMS, params);//设置属性

+            map.put(NormalExcelConstants.CLASS, TDoordtlInfo.class);

+            map.put(NormalExcelConstants.FILE_NAME, "设备流水名单");

+            PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);

+

+        } catch (Exception e) {

+            e.printStackTrace();

+            map.put("result", "导出excel文件失败");

+        }

+    }

+

+    /**

+     * 获取流水信息

+     * @param map

+     * @param request

+     * @param startTranDate

+     * @param endTranDate

+     * @param startTranTime

+     * @param endTranTime

+     * @param stuempno

+     * @param custname

+     * @param buildingname

+     * @param doorName

+     * @param factoryId

+     * @param streamstatus

+     * @param pageNo

+     * @param pageSize

+     * @param regionname

+     * @param operUser

+     * @return

+     * @throws UnsupportedEncodingException

+     */

+    @ResponseBody

+    @RequestMapping(value = "/getSearchDoorStreamList")

+    public Map getSearchDoorStreamList( HttpServletRequest request,

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

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

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

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

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

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

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

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

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

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

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

+                                          @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,

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

+                                          @AuthenticationPrincipal TOperator operUser)

+            throws UnsupportedEncodingException {

+        Map map = new HashMap();

+        SimpleDateFormat ymd = new SimpleDateFormat("yyyyMMdd");

+        boolean index = true;

+        if (factoryId.equals("") || factoryId == null) {

+            factoryId = "all";

+        }

+        try {

+            if (startTranDate.equals("Invalid date")) {

+                startTranDate = "";

+                endTranDate = "";

+                startTranTime = "";

+                endTranTime = "";

+            }

+            Pagination tDoordtlInfo = new Pagination();

+            if (operUser.getOpertype().equals("S")){

+                tDoordtlInfo = webInterfaceService.findSystemTDoordtl(startTranDate, endTranDate, startTranTime,

+                        endTranTime, stuempno, custname, buildingname, doorName, factoryId, streamstatus, pageNo, pageSize,regionname);

+            }else {

+                tDoordtlInfo = webInterfaceService.findAllTDoordtl(operUser.getOperid(), startTranDate, endTranDate, startTranTime,

+                        endTranTime, stuempno, custname, buildingname, doorName, factoryId, streamstatus, pageNo, pageSize, regionname);

+            }

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

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

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+        return map;

+    }

+

+

 }

diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
index 12b7613..3efac1b 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
@@ -29,14 +29,6 @@
         return "system/role/index";
     }
 
-    @RequestMapping("/query/tdoorstream")
-    public String tdoorstream(ModelMap model){
-        return "query/tdoorstream";
-    }
-
-
-
-
 
     @GetMapping("/role/list")
     //@PreAuthorize("hasPermission('/role/index','')")
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
index b42f074..a12b97d 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -36,6 +36,16 @@
         return "system/queue";

     }

 

+    @RequestMapping("/regionindex")

+    public String regionindex(){

+        return "system/region";

+    }

+

+    @RequestMapping("/buildingindex")

+    public String buildingindex(){

+        return "system/building";

+    }

+

     /**

      * 获取字典列表

      * @param dicttype

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
index de3ec24..5887a6a 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
@@ -43,19 +43,43 @@
         if(!dictcaption.equals("")){

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

         }

-        List<TDictionary> list = query.getResultList();

+

         pageNo = pageNo <= 0 ? 1 : pageNo;

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

         query.setMaxResults(pageSize);

         Pagination page = new Pagination();

         page.setPageNo(pageNo);

         page.setPageSize(pageSize);

+        List<TDictionary> list = query.getResultList();

         page.setList(list);

-        int totalCount = list.size();

+        int totalCount = findDictionaryCount(dicttype, dictcaption);

         page.setTotalCount(totalCount);

         return page;

     }

 

+    private int findDictionaryCount(String dicttype, String dictcaption){

+        String sql = "select count(*) from t_dictionary where 1>0 ";

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

+            sql+="and t.dicttype=:dicttype ";

+        }

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

+            sql+="and  t.dictcaption like :dictcaption ";

+        }

+        Query query = entityManager.createNativeQuery(sql);

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

+            query.setParameter("dicttype", Integer.parseInt(dicttype));

+        }

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

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

+        }

+        int cnt = 0;

+        List list = query.getResultList();

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

     @Transactional

     @Override

     public List<DictionaryType> findDictionaryType() {

diff --git a/src/main/resources/templates/doorlist/searchDoorlist.html b/src/main/resources/templates/doorlist/searchDoorlist.html
index 15c1d41..b874920 100644
--- a/src/main/resources/templates/doorlist/searchDoorlist.html
+++ b/src/main/resources/templates/doorlist/searchDoorlist.html
@@ -25,13 +25,13 @@
                     </el-col>
 
                     <el-col :span="8">
-                        <el-form-item label="厂商">
-                            <el-select v-model="searchDoorForm.factoryId" placeholder="请选择">
+                        <el-form-item label="名单状态">
+                            <el-select v-model="searchDoorForm.syncStatus" placeholder="请选择">
                                 <el-option
-                                        v-for="fid in factoryIds"
-                                        :key="fid.value"
-                                        :label="fid.label"
-                                        :value="fid.value">
+                                        v-for="status in syncStatus"
+                                        :key="status.value"
+                                        :label="status.label"
+                                        :value="status.value">
                                 </el-option>
                             </el-select>
                         </el-form-item>
@@ -74,28 +74,20 @@
                             </el-select>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="名单状态">
-                            <el-select v-model="searchDoorForm.syncStatus" placeholder="请选择">
-                                <el-option
-                                        v-for="status in syncStatus"
-                                        :key="status.value"
-                                        :label="status.label"
-                                        :value="status.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
+
                     <el-col :span="8">
                         <el-form-item label="楼栋">
-                            <el-select v-model="searchDoorForm.building" placeholder="请选择">
-                                <el-option
-                                        v-for="building in buildings"
-                                        :key="building.value"
-                                        :label="building.label"
-                                        :value="building.value">
-                                </el-option>
-                            </el-select>
+                            <el-input v-model="searchDoorForm.buildingname" placeholder="楼栋名称">
+                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            </el-input>
+                        </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>
                     </el-col>
                 </el-row>
@@ -260,12 +252,12 @@
                 stuempNo: '',
                 syncStatus: '',
                 operFlag: '',
-                building: '',
+                buildingname: '',
+                regionname:''
             },
             factoryIds: [],
             syncStatus: [],
             operFlag: [],
-            buildings: [],
             selectList:[],
             dialogFormVisible: false,
             dlgAllotDevVisible: false,
@@ -370,7 +362,7 @@
                             label: operDict[i]["dictcaption"]
                         })
                     }
-                    var buildings = [];
+                    /*var buildings = [];
                     var building = data.buildings;
                     buildings.push({
                         value: "",
@@ -381,15 +373,15 @@
                             value: building[i]["buildingid"],
                             label: building[i]["buildingname"]
                         })
-                    }
+                    }*/
                     vue.factoryIds = factoryList;
                     vue.syncStatus = syncDicts;
                     vue.operFlag = operDicts;
-                    vue.buildings = buildings;
+                    //vue.buildings = buildings;
                     vue.searchDoorForm.factoryId = 'all';
                     vue.searchDoorForm.syncStatus = 'all';
                     vue.searchDoorForm.operFlag = 'all';
-                    vue.searchDoorForm.building = '';
+                    //vue.searchDoorForm.building = '';
                 }
             })
             this.searchDoorForm.allocatStartDate ='';
@@ -436,7 +428,7 @@
             + "&stuempNo=" + searchDoor.stuempNo + "&factoryId=" + searchDoor.factoryId
             + "&syncStatus=" + searchDoor.syncStatus +
             "&pageNo=" + pageno + "&pageSize=" + pagesize + "&operFlag=" + searchDoor.operFlag
-            + "&building=" + searchDoor.building;
+            + "&buildingname=" + searchDoor.buildingname+"&regionname=" +searchDoor.regionname;
         var token=$("meta[name='_csrf_token']").attr("value");
         $.ajax({
             type: "POST",
@@ -480,7 +472,7 @@
             "&doorName=" + searchDoor.doorName + "&custName=" + searchDoor.custName
             + "&stuempNo=" + searchDoor.stuempNo + "&factoryId=" + searchDoor.factoryId
             + "&syncStatus=" + searchDoor.syncStatus + "&operFlag=" + searchDoor.operFlag
-            + "&building=" + searchDoor.building;
+            + "&buildingname=" + searchDoor.buildingname+"&regionname="+searchDoor.regionname;
 //        window.location.href
         var uri = encodeURI(url);
         window.open(uri);
diff --git a/src/main/resources/templates/ncmgr/nc_dev.html b/src/main/resources/templates/ncmgr/nc_dev.html
index f4983e2..b94c176 100644
--- a/src/main/resources/templates/ncmgr/nc_dev.html
+++ b/src/main/resources/templates/ncmgr/nc_dev.html
@@ -41,22 +41,26 @@
                 </div>
                 <div class="col-md-3" >
                     <div class="form-group">
-                        <label class="control-label col-md-6 col-sm-12 col-xs-12" style="font-size: 14px;">设备所在楼栋:</span>
+                        <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">所在区域:</span>
                         </label>
-                        <div class="col-md-6 col-sm-12 col-xs-12">
-                            <el-select v-model="devform.buildingname" style="width: 140px" filterable placeholder="请选择">
-                                <el-option
-                                        v-for="building in buildings"
-                                        :key="building.value"
-                                        :label="building.label"
-                                        :value="building.value">
-                                </el-option>
-                            </el-select>
+                        <div class="col-md-8 col-sm-12 col-xs-12">
+                            <el-input v-model="devform.regionname" id="regionname"></el-input>
                         </div>
                     </div>
                 </div>
 
-                <div class="col-md-3" style="padding-left: 50px">
+                <div class="col-md-3" >
+                    <div class="form-group">
+                        <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">所在楼栋:</span>
+                        </label>
+                        <div class="col-md-8 col-sm-12 col-xs-12">
+                            <el-input v-model="devform.buildingname" id="buildingname"></el-input>
+                        </div>
+                    </div>
+                </div>
+
+
+                <div class="col-md-12" style="padding-left: 905px">
                     <div class="form-group">
                         <button type="button" class="btn btn-info" @click="query" id="qrybtn">查 询</button>
                         <button class="btn btn-primary" type="button" @click="addDev">添加设备</button>
@@ -108,6 +112,11 @@
                             width="140">
                     </el-table-column>
                     <el-table-column
+                            prop="regionname"
+                            label="设备所属区域"
+                            width="140">
+                    </el-table-column>
+                    <el-table-column
                             prop="ip"
                             label="IP"
                             width="150">
@@ -308,7 +317,8 @@
             devform: {
                 devname: '',
                 buildingname: '',
-                devtype: ''
+                devtype: '',
+                regionname:''
             },
             checkvisible: true,
             continueadd: true,
@@ -497,7 +507,7 @@
                     var rows = [];
                     rows.push({
                         value: '',
-                        label: "全部"
+                        label: ""
                     });
                     for (var i = 0; i < ut.length; i++) {
                         rows.push({
@@ -540,7 +550,7 @@
         $.ajax({
             type: "get",
             dataType: "json",
-            url: encodeURI("/ncmgr/loadDevList?devname=" + rolename.devname + "&pageNo=" + pageno + "&pageSize=" + pagesize + "&buildingid=" + rolename.buildingname + "&devtype=" + rolename.devtype),
+            url: encodeURI("/ncmgr/loadDevList?devname=" + rolename.devname + "&pageNo=" + pageno + "&pageSize=" + pagesize + "&buildingname=" + rolename.buildingname + "&devtype=" + rolename.devtype+"&regionname="+rolename.regionname),
             success: function (ret) {
                 _self.totSize = ret.PageResult.totalCount;
                 _self.tableData = ret.PageResult.list;
diff --git a/src/main/resources/templates/query/tdoorstream.html b/src/main/resources/templates/query/tdoorstream.html
index 583ac64..81d4f23 100644
--- a/src/main/resources/templates/query/tdoorstream.html
+++ b/src/main/resources/templates/query/tdoorstream.html
@@ -43,22 +43,17 @@
                     </el-col>
                     <el-col :span="8">
                         <label class="control-label "
-                               style="margin-right:10px;font-size: 14px;width:80px">楼栋:</span>
+                               style="margin-right:10px;font-size: 14px;width:80px">楼栋:
                         </label>
-                        <el-select style="width:193px"
-                                   v-model="tdoorstream.building" placeholder="请选择" >
-                            <el-option v-for="item in buildings"
-                                       :key="item.value" :label="item.label" :value="item.value">
-                            </el-option>
-                        </el-select>
+                        <el-input v-model="tdoorstream.buildingname" style="width:193px"></el-input>
                     </el-col>
 
 
                     <el-col :span="8">
                         <label class="control-label "
-                               style="margin-right:10px;font-size: 14px;width:80px">设备名称:
+                               style="margin-right:10px;font-size: 14px;width:80px">区域:
                         </label>
-                        <el-input v-model="tdoorstream.doorname" style="width:193px"></el-input>
+                        <el-input v-model="tdoorstream.regionname" style="width:193px"></el-input>
                     </el-col>
                 </el-row>
                 <el-row style="margin-top:10px">
@@ -76,13 +71,9 @@
 
                     <el-col :span="8">
                         <label class="control-label "
-                               style="margin-right:10px;font-size: 14px;width:80px">区域:</span>
+                               style="margin-right:10px;font-size: 14px;width:80px">设备名称:
                         </label>
-                        <el-select style="width:193px" v-model="tdoorstream.region" placeholder="请选择" >
-                            <el-option v-for="item in regions"
-                                       :key="item.value" :label="item.label" :value="item.value">
-                            </el-option>
-                        </el-select>
+                        <el-input v-model="tdoorstream.doorname" style="width:193px"></el-input>
                     </el-col>
 
                     <el-col :span="8" >
@@ -179,11 +170,10 @@
                 stuempno:'',
                 custname:'',
                 factoryid:'',
-                deptfullname:'',
                 doorname:'',
-                building:'',
+                buildingname:'',
                 dtlStatus:'all',
-                region:''
+                regionname:''
             },
         },
         methods : {
@@ -262,36 +252,6 @@
                     }
                     _self.dtlstatus = dtllist;
 
-                    var ut=ret.buildings;
-                    var rows = [];
-                    rows.push({
-                        value:'',
-                        label:"全部"
-                    });
-                    for ( var i = 0; i < ut.length; i++) {
-                        rows.push({
-                            value:ut[i].buildingid,
-                            label:ut[i].buildingname
-                        });
-                    }
-                    vue.usetypes=rows;
-                    vue.tdoorstream.usetype='';
-
-                    var rg=ret.regions;
-                    var rgion = [];
-                    rgion.push({
-                        value:'',
-                        label:"全部"
-                    });
-                    for (var j = 0; j < rg.length; j++){
-                        rgion.push({
-                            value:rg[j].regionid,
-                            label:rg[j].regionname
-                        });
-                    }
-                    vue.regions=rgion;
-                    vue.tdoorstream.region='';
-
                     _self.loading=false;
                 }
             })
@@ -307,7 +267,8 @@
         var endtransdate = Formatdate(Uendtransdate);
         var stuempno = _self.tdoorstream.stuempno;
         var custname = _self.tdoorstream.custname;
-        var deptname = _self.tdoorstream.deptfullname;
+        var buildingname = _self.tdoorstream.buildingname;
+        var regionname   = _self.tdoorstream.regionname;
         var doorname = _self.tdoorstream.doorname;
         var dtlStatus = _self.tdoorstream.dtlStatus;
         if(_self.totSize>2000){
@@ -316,7 +277,7 @@
         }
         //console.log(factoryid+stuempno);
         var	url =encodeURI( "/query/exportexcel?&startTranDate="+starttransdate+"&endTranDate="
-            +endtransdate+"&stuempno="+stuempno+"&custname="+custname+"&deptname="+deptname+"&doorName="+doorname
+            +endtransdate+"&stuempno="+stuempno+"&custname="+custname+"&buildingname="+buildingname+"&regionname="+regionname+"&doorName="+doorname
             +"&streamstatus="+dtlStatus+"&factoryId="+factoryid)
         window.open(url);
 
@@ -328,17 +289,17 @@
         var endtransdate = Formatdate(Uendtransdate);
         var stuempno = _self.tdoorstream.stuempno;
         var custname = _self.tdoorstream.custname;
-        var deptname = _self.tdoorstream.deptfullname;
+        var buildingname = _self.tdoorstream.buildingname;
         var doorname = _self.tdoorstream.doorname;
-        var usetype = _self.tdoorstream.usetype;
+        var regionname = _self.tdoorstream.region;
         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+"&deptname="+deptname+"&doorName="+doorname+"&streamstatus="+dtlStatus+
-                "&factoryId="+factoryid +"&pageNo="+pageno+"&pageSize="+pagesize+"&usetype="+usetype),
+                "&stuempno="+stuempno+"&custname="+custname+"&buildingname="+buildingname+"&doorName="+doorname+"&streamstatus="+dtlStatus+
+                "&factoryId="+factoryid +"&pageNo="+pageno+"&pageSize="+pagesize+"&regionname="+regionname),
             success : function(ret) {
                 //	console.log(ret);
                 _self.totSize = ret.tDoordtlInfo.totalCount;