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 ae97d3c..cd6ed89 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
@@ -758,7 +758,7 @@
                 String time = grp.getRectime();
                 Date date;
                 String hms = "000000";
-                if (time != null) {
+                if (time != null && !time.equals("")) {
                     if (time.length() == 14) {
                         date = _ymdhms.parse(time);
                         grp.setRectime(ymdhms.format(date));
@@ -772,7 +772,7 @@
                 }
 
                 time = grp.getSynctime();
-                if (time != null) {
+                if (time != null && !time.equals("")) {
                     if (time.length() == 14) {
                         date = _ymdhms.parse(time);
                         grp.setSynctime(ymdhms.format(date));
@@ -917,7 +917,7 @@
                 String time = grp.getRectime();
                 Date date;
                 String hms = "000000";
-                if (time != null) {
+                if (time != null && !time.equals("")) {
                     if (time.length() == 14) {
                         date = _ymdhms.parse(time);
                         grp.setRectime(ymdhms.format(date));
@@ -931,7 +931,7 @@
                 }
 
                 time = grp.getSynctime();
-                if (time != null) {
+                if (time != null && !time.equals("")) {
                     if (time.length() == 14) {
                         date = _ymdhms.parse(time);
                         grp.setSynctime(ymdhms.format(date));
@@ -1058,7 +1058,7 @@
                 String time = grp.getRectime();
                 Date date;
                 String hms = "000000";
-                if (time != null) {
+                if (time != null && !time.equals("")) {
                     if (time.length() == 14) {
                         date = _ymdhms.parse(time);
                         grp.setRectime(ymdhms.format(date));
@@ -1072,7 +1072,7 @@
                 }
 
                 time = grp.getSynctime();
-                if (time != null) {
+                if (time != null && !time.equals("")) {
                     if (time.length() == 14) {
                         date = _ymdhms.parse(time);
                         grp.setSynctime(ymdhms.format(date));
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 16a9e71..3b1120f 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
@@ -339,9 +339,23 @@
         Map map = new HashMap();
         String message = "";
         try {
+            boolean flag = ncService.getDevWeekByDevid(devid);
+            if (flag==true){
+                message = "该设备已绑定时间周！";
+                map.put("message", message);
+                return map;
+            }
             TNcDevice dev = ncService.getDevInfoByDevid(devid);
             if(dev!=null){
                 RedisUtil.del("ncdev_" + dev.getDevphyid() + "_" + dev.getDevno());
+                if (dev.getDevtype().equals("C")){
+                    List<TNcDevice> listByfDevid = ncService.getDevListByfDevid(dev.getDeviceid());
+                    if (listByfDevid!=null && listByfDevid.size()>0){
+                        message = "该控制器设备已绑定读头！";
+                        map.put("message", message);
+                        return map;
+                    }
+                }
             }
 
             ncService.delDevById(devid);
@@ -367,7 +381,7 @@
     @RequestMapping(value = "/listClean", method = {RequestMethod.GET})
     @ResponseBody
     public Map listClean(@RequestParam(value = "devid") int devid,
-                         HttpServletRequest request, HttpServletResponse response){
+                         HttpServletRequest request, HttpServletResponse response,@AuthenticationPrincipal TOperator operUser){
         Map map = new HashMap();
         String message="";
         try{
@@ -382,6 +396,7 @@
                 tNcCardlist.setCardno("");
                 tNcCardlist.setCardphyid("FFFFFFFF");
                 tNcCardlist.setClosedate("20991231");
+                tNcCardlist.setOperid(operUser.getOperid());
                 tNcCardlist.setDeviceid(devid);
                 //清除名单专用标志
                 tNcCardlist.setOperflag("C");
diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDevWeekDao.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDevWeekDao.java
index 117cf82..31473d9 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDevWeekDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDevWeekDao.java
@@ -19,4 +19,6 @@
     public boolean saveDevWeek(TNcDevweek devweek);
 
     public List<TNcDevweek> findChosenDev(int weekId);
+
+    public boolean getDevWeekByDevid(int devid);
 }
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 f93e3a8..88def09 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -41,6 +41,8 @@
 
     public TNcDevice getDevInfoByDevid(int devid);
 
+    public List<TNcDevice> getDevListByfDevid(int devid);
+
     public boolean delDevById(int devid);
 
     public List<TNcDevice> findAllNcDevices();
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 a48280a..c2ece1e 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
@@ -151,4 +151,22 @@
         List<TNcDevweek> list = query.getResultList();
         return list;
     }
+
+    @Transactional
+    @Override
+    public boolean getDevWeekByDevid(int devid) {
+        boolean flag = false;
+        String sql = "select count(*) from T_nc_devweek where devid = ?1";
+        Query query = entityManager.createNativeQuery(sql);
+        query.setParameter(1, devid);
+        List list = query.getResultList();
+        int cnt = 0;
+        if (list!=null && list.size()>0){
+            cnt = Integer.parseInt(list.get(0).toString());
+        }
+        if (cnt>0){
+            flag = true;
+        }
+        return flag;
+    }
 }
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 bd7e2a5..1a71ffd 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
@@ -407,6 +407,16 @@
 
     @Transactional
     @Override
+    public List<TNcDevice> getDevListByfDevid(int devid) {
+        String sql = "select bean from TNcDevice bean where bean.fdevid  = :fdevid";
+        TypedQuery<TNcDevice> query = entityManager.createQuery(sql, TNcDevice.class);
+        query.setParameter("fdevid", devid);
+        List<TNcDevice> list = query.getResultList();
+        return list;
+    }
+
+    @Transactional
+    @Override
     public boolean delDevById(int devid) {
         boolean flag=false;
         try {
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 b82c288..98d3680 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -60,9 +60,15 @@
     //根据设备编号获取设备及父设备信息
     public TNcDevice getDevInfoByDevid(int devid);
 
+    //根据控制器设备编号获取其读头设备列表
+    public List<TNcDevice> getDevListByfDevid(int devid);
+
     //根据设备编号删除设备
     public void delDevById(int devid);
 
+    //根据设备编号查询是否绑定时间周
+    public boolean getDevWeekByDevid(int devid);
+
     //设备名单清空(获取清空所用名单)
     public TNcCardlist getCleanList(int devid);
 
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 60efa27..7b01829 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
@@ -116,11 +116,21 @@
     }
 
     @Override
+    public List<TNcDevice> getDevListByfDevid(int devid) {
+        return ncDeviceDao.getDevListByfDevid(devid);
+    }
+
+    @Override
     public void delDevById(int devid) {
         ncDeviceDao.delDevById(devid);
     }
 
     @Override
+    public boolean getDevWeekByDevid(int devid) {
+        return ncDevWeekDao.getDevWeekByDevid(devid);
+    }
+
+    @Override
     public TNcCardlist getCleanList(int devid) {
         return ncCardListDao.getCleanList(devid);
     }
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 0d217ff..ef75b27 100644
--- a/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
+++ b/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
@@ -98,12 +98,9 @@
      * @param endTranDate
      * @param startTranTime
      * @param endTranTime
-     * @param stuempno
      * @param custname
      * @param buildingid
      * @param regionid
-     * @param doorName
-     * @param factoryId
      * @param streamstatus
      */
     @ResponseBody
diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java
index c32afe9..a1a8f79 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java
@@ -153,7 +153,7 @@
     @Transactional
     @Override
     public TBuilding getBuildingById(String buildingid) {
-        String sql = "select bean from TBuilding bean where bean.flag='A' and bean.buildingid=:buildingid";
+        String sql = "select bean from TBuilding bean where  bean.buildingid=:buildingid";
         TypedQuery<TBuilding> query = entityManager.createQuery(sql, TBuilding.class);
         query.setParameter("buildingid" , buildingid);
         List<TBuilding> list = query.getResultList();
@@ -166,7 +166,7 @@
     @Transactional
     @Override
     public TBuilding getBuildingByName(String buildingname) {
-        String sql = "select bean from TBuilding bean where bean.flag='A' and bean.buildingname=:buildingname";
+        String sql = "select bean from TBuilding bean where  bean.buildingname=:buildingname";
         TypedQuery<TBuilding> query = entityManager.createQuery(sql, TBuilding.class);
         query.setParameter("buildingname", buildingname);
         List<TBuilding> list = query.getResultList();
@@ -192,7 +192,7 @@
     @Transactional
     @Override
     public TBuilding getBuildingByNameAndId(String buildingname, String buildingid) {
-        String sql = "select bean from TBuilding bean where bean.flag='A' and bean.buildingname=:buildingname and bean.buildingid <> :buildingid ";
+        String sql = "select bean from TBuilding bean where bean.buildingname=:buildingname and bean.buildingid <> :buildingid ";
         TypedQuery<TBuilding> query = entityManager.createQuery(sql, TBuilding.class);
         query.setParameter("buildingname" ,buildingname );
         query.setParameter("buildingid" ,buildingid );
diff --git a/src/main/resources/templates/ncmgr/nc_devweek.html b/src/main/resources/templates/ncmgr/nc_devweek.html
index 3d520c2..0861b36 100644
--- a/src/main/resources/templates/ncmgr/nc_devweek.html
+++ b/src/main/resources/templates/ncmgr/nc_devweek.html
@@ -405,7 +405,7 @@
 
 <style lang="scss">
     .el-checkbox-group.el-transfer-panel__list{
-        height:365px;
+        height:277px;
     }
 
     .el-dialog {
diff --git a/src/main/resources/templates/query/tdoorstream.html b/src/main/resources/templates/query/tdoorstream.html
index 7d1ea6c..e705d98 100644
--- a/src/main/resources/templates/query/tdoorstream.html
+++ b/src/main/resources/templates/query/tdoorstream.html
@@ -171,7 +171,12 @@
             },
             pickerOptions1: {
                 disabledDate:function(time) {
-                    return time.getTime() <tdoorstream_vue.starttransdate.getTime();
+                    if(tdoorstream_vue.starttransdate !=''){
+
+                        return time.getTime() < tdoorstream_vue.starttransdate.getTime();
+                    }else {
+                        return time.getTime() > Date.now();
+                    }
                 }
             },
             tlist:[],
@@ -180,6 +185,7 @@
             dtlstatus:[],
             currentRow : null,
             tdoorstream : {
+
                 cardno:'',
                 custname:'',
                 devname:'',
@@ -222,6 +228,7 @@
                 this.loading=true;
                 this.pagesize = 10;
                 this.currPage = 1;
+
                 tdoorstream_commonQuery(this,this.starttransdate,this.endtransdate,  this.currPage,this.pageSize);
                 //console.log(this.currentRow);
             },
@@ -244,8 +251,6 @@
         created : function() {
             this.loading=true;
             var _self = this;
-            var starttransdate = tdoorstream_Formatdate(_self.starttransdate);
-            var endtransdate =tdoorstream_Formatdate(_self.endtransdate);
 
             $.ajax({
                 type : "get",
@@ -293,6 +298,8 @@
         }
 
     })
+
+
     function tdoorstream_downloadExcel(_self, Ustarttransdate,Uendtransdate) {
         var factoryid = _self.tdoorstream.factoryid;
         if(factoryid==''){
@@ -321,6 +328,8 @@
     function tdoorstream_commonQuery(_self, Ustarttransdate,Uendtransdate,pageno, pagesize) {
         var starttransdate = tdoorstream_Formatdate(Ustarttransdate);
         var endtransdate = tdoorstream_Formatdate(Uendtransdate);
+
+
         var cardno = _self.tdoorstream.cardno;
         var custname = _self.tdoorstream.custname;
         var buildingid = _self.tdoorstream.buildingid;
@@ -331,7 +340,7 @@
         $.ajax({
             type : "get",
             dataType : "json",
-            url : encodeURI("[[@{/query/getSearchDoorStreamList?&startTranDate=}]]"+starttransdate+"&endTranDate="+endtransdate+
+            url : encodeURI("[[@{/query/getSearchDoorStreamList?startTranDate=}]]"+starttransdate+"&endTranDate="+endtransdate+
                 "&cardno="+cardno+"&custname="+custname+"&buildingid="+buildingid+"&devname="+devname+"&streamstatus="+dtlStatus+
                 "&pageNo="+pageno+"&pageSize="+pagesize+"&regionid="+regionid),
             success : function(ret) {
diff --git a/src/main/resources/templates/system/building.html b/src/main/resources/templates/system/building.html
index 9f7ab15..3fd4a33 100644
--- a/src/main/resources/templates/system/building.html
+++ b/src/main/resources/templates/system/building.html
@@ -108,7 +108,7 @@
                 <el-form ref="buildingDiaForm" :model="buildingDiaForm" :rules="rules" label-width="120px">
                     <el-form-item label="楼栋编号:" prop="buildingid">
                         <el-col :span="22">
-                            <el-input v-model="buildingDiaForm.buildingid" ></el-input>
+                            <el-input v-model="buildingDiaForm.buildingid" :disabled="buildingidDis"></el-input>
                         </el-col>
                     </el-form-item>
                     <el-form-item label="楼栋名称:" prop="buildingname">
@@ -158,6 +158,7 @@
             pageSize:10,
             totSize:0,
             currentRow: null,
+            buildingidDis:false,
             regionlist:[],
             regions:[],
             dialogFormVisible: false,
@@ -236,6 +237,7 @@
             editBuilding:function (buildingid) {
                 building_getFillData(this,buildingid);
                 this.dialogFormVisible = true;
+                this.buildingidDis = true;
                 this.buildingtitile="修改楼栋"
             },
             updform: function (row, column, cellValue) {
@@ -339,6 +341,7 @@
                     building_refreshThisTable();
                     _that.$refs[formName].resetFields();
                     _that.dialogFormVisible = false;
+                    _that.buildingidDis = false;
                 }
             }
         });
diff --git a/src/main/resources/templates/system/operator.html b/src/main/resources/templates/system/operator.html
index accad3a..3a663a5 100644
--- a/src/main/resources/templates/system/operator.html
+++ b/src/main/resources/templates/system/operator.html
@@ -666,7 +666,7 @@
 </script>
 <style lang="scss">
     .el-checkbox-group.el-transfer-panel__list{
-        height:365px;
+        height:277px;
     }
 
     .el-dialog {
