diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
index ed3772c..cb78882 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
@@ -74,7 +74,7 @@
             searchBean.setPageSize(pageSize);
             searchBean.setDeptcode(deptcode);
             searchBean.setCusttypeid(custtypeid);
-            PageResult<CustomerShowBean> bean= customerService.getCustomerPage(searchBean);
+            PageResult<CustomerShowBean> bean= customerService.getCustomerPage(searchBean,"page");
 
             return bean;
         } catch (Exception e) {
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/CustomerService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/CustomerService.java
index 5f2af6b..38729c8 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/CustomerService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/CustomerService.java
@@ -22,7 +22,7 @@
 
 public interface CustomerService {
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
-    PageResult<CustomerShowBean> getCustomerPage(CustomerSearchBean param);
+    PageResult<CustomerShowBean> getCustomerPage(CustomerSearchBean param,String type);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
     TCustomer getCustomerByCustid(String custid);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
index 10c69a9..dd1e83d 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
@@ -52,7 +52,7 @@
     private EntityManager entityManager;
 
     @Override
-    public PageResult<CustomerShowBean> getCustomerPage(CustomerSearchBean param) {
+    public PageResult<CustomerShowBean> getCustomerPage(CustomerSearchBean param,String type ) {
 
         StringBuffer querySql = new StringBuffer("select t.cardno,c.custid,c.custname,c.inputdate,gg.discnt,d.deptcode,d.deptname,p.custtypename, " +
                 "t.bankcardno,t.cardphyid,c.phone,c.custtype,c.checkstatus,t.status from tb_customer c " +
@@ -112,12 +112,15 @@
         query.setMaxResults(param.getPageSize()); //分页显示
         query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(CustomerShowBean.class));
         List<CustomerShowBean> list = query.getResultList();
-        if(null!=list){
-           for(CustomerShowBean bean:list){
-               bean.setCustname(DataUtil.dataDesensitization(bean.getCustname(),1));
-               bean.setCardno(DataUtil.dataDesensitization(bean.getCardno(),4));
-           }
+        if("page".equals(type)){
+            if(null!=list){
+                for(CustomerShowBean bean:list){
+                    bean.setCustname(DataUtil.dataDesensitization(bean.getCustname(),1));
+                    bean.setCardno(DataUtil.dataDesensitization(bean.getCardno(),4));
+                }
+            }
         }
+
         BigInteger count = (BigInteger) countQuery.getSingleResult();
         return new PageResult<>(count.longValue(), list);
     }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java b/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
index dbff687..9d1b64d 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
@@ -68,7 +68,7 @@
             CustomerSearchBean searchBean = new CustomerSearchBean();
             searchBean.setCheckstatus(RestaurantConstant.STATUS_CHECKSTATUS_UNCHECK);
 
-            List<CustomerShowBean> dtls = customerService.getCustomerPage(searchBean).getData();
+            List<CustomerShowBean> dtls = customerService.getCustomerPage(searchBean,"notpage").getData();
             logger.debug("正同步" + dtls.size() + "名人员");
             if (dtls.size() > 0) {
                 for (CustomerShowBean dtl : dtls) {
