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 4dfdb96..ee1b19b 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
@@ -845,7 +845,7 @@
                         String timeid = timeIdArray[i];
                         tmpi++;
                         //listid++;
-                        TNcCardlist cardlist = doorlistMgrService.getNcCardlist(dev.getDeviceid(), card.getCardphyid(), timeid);
+                        TNcCardlist cardlist = doorlistMgrService.getNcCardlistByCardno(dev.getDeviceid(), card.getCardno(), timeid);//由物理卡号查询改为市民卡号
                         if (cardlist != null) {
                             cardlist.setOperflag("A");
                             cardlist.setOperid(operUser.getOperid());
diff --git a/src/main/java/com/supwisdom/dlpay/doorlist/service/DoorlistMgrService.java b/src/main/java/com/supwisdom/dlpay/doorlist/service/DoorlistMgrService.java
index ce0fda5..fd2473a 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/service/DoorlistMgrService.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/service/DoorlistMgrService.java
@@ -13,6 +13,10 @@
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public TNcCardlist getNcCardlist(int deviceid,String cardphyid,String timeid);
 
+    //根据设备编号和市民卡号和时间周id获取名单
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+    public TNcCardlist getNcCardlistByCardno(int deviceid,String cardno,String timeid);
+
     //批量保存设备名单
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public boolean batchSaveCardList(List<TNcCardlist> tNcCardlists);
diff --git a/src/main/java/com/supwisdom/dlpay/doorlist/service/impl/DoorlistMgrServiceImpl.java b/src/main/java/com/supwisdom/dlpay/doorlist/service/impl/DoorlistMgrServiceImpl.java
index e676a2b..16634e7 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/service/impl/DoorlistMgrServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/service/impl/DoorlistMgrServiceImpl.java
@@ -27,6 +27,11 @@
         return ncCardListDao.getNcCardlist(deviceid, cardphyid, timeid);
     }
 
+    @Override
+    public TNcCardlist getNcCardlistByCardno(int deviceid, String cardno, String timeid) {
+        return null;
+    }
+
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     @Override
     public boolean batchSaveCardList(List<TNcCardlist> tNcCardlists) {
diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcCardListDao.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcCardListDao.java
index c651d27..86dd489 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcCardListDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcCardListDao.java
@@ -17,6 +17,8 @@
 
     public TNcCardlist getNcCardlist(int deviceid,String cardphyid,String timeid);
 
+    public TNcCardlist getNcCardlistByCardno(int deviceid,String cardno,String timeid);
+
     public Pagination getSystemCardList(String devname, String custname, String cardno, String syncstatus, String regionid, String allocatStartDate, String allocatEndDate,
                                         String operflag, int pageNo, int pageSize);
 
diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
index 25e9b3f..bce43ee 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
@@ -87,6 +87,22 @@
 
     @Transactional
     @Override
+    public TNcCardlist getNcCardlistByCardno(int deviceid, String cardno, String timeid) {
+        String sql = "select lst from TNcCardlist as lst,TNcAllottime as t where lst.listid=t.id.listid and" +
+                " lst.deviceid=:deviceid and lst.cardno=:cardno and t.id.timeid=:timeid order by lst.listid desc";
+        TypedQuery<TNcCardlist> query = entityManager.createQuery(sql, TNcCardlist.class);
+        query.setParameter("deviceid", deviceid);
+        query.setParameter("cardno", cardno);
+        query.setParameter("timeid", timeid);
+        List<TNcCardlist> list = query.getResultList();
+        if (list!=null && list.size()>0){
+            return list.get(0);
+        }
+        return null;
+    }
+
+    @Transactional
+    @Override
     public Pagination getSystemCardList(String devname, String custname, String cardno, String syncflag, String regionid, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize) {
         String sql = "select a.listid,c.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncflag,a.operflag,a.rectime,a.synctime " +
                 " from t_nc_cardlist a left join tb_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +
