diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
index e21492d..8c5d6fd 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/TransDtlRevertController.java
@@ -3,6 +3,7 @@
 
 import com.google.gson.Gson;
 import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.framework.domain.TOperator;
 import com.supwisdom.dlpay.framework.domain.TShopSettlement;
 import com.supwisdom.dlpay.framework.util.DateUtil;
 import com.supwisdom.dlpay.framework.util.PageResult;
@@ -15,6 +16,8 @@
 import com.supwisdom.dlpay.restaurant.util.RestaurantConstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
@@ -58,7 +61,8 @@
                                              @RequestParam("limit") Integer pageSize,
                                              @RequestParam(value = "custname", required = false) String custname,
                                              @RequestParam(value = "accdate", required = false) String accdate,
-                                             @RequestParam(value = "billno", required = false) String billno) {
+                                             @RequestParam(value = "billno", required = false) String billno,
+                                             @AuthenticationPrincipal UserDetails operUser) {
         try {
             if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
             if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
@@ -69,6 +73,8 @@
                 bean.setAccdate(DateUtil.unParseToDateFormat(accdate));
 
             }
+            TOperator operator=(TOperator)operUser;
+            bean.setOpercode(operator.getOpercode());
             bean.setCustname(custname);
             bean.setBillno(billno);
             bean.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
index 0d64ceb..54f012a 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
@@ -34,10 +34,7 @@
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import javax.persistence.Query;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import javax.persistence.criteria.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigInteger;
@@ -188,6 +185,24 @@
                 if (!StringUtil.isEmpty(param.getStatus())) {
                     list.add(cb.equal(root.get("status").as(String.class), param.getStatus()));
                 }
+                if(!StringUtil.isEmpty(param.getOpercode())){
+                    TOperatorQueryLimit limit = operatorQueryLimitDao.findByOpercode(param.getOpercode());
+
+                    if (null != limit) {
+                        List<Integer> devlist = deviceDao.getIdByDevgroupid(limit.getDevgroupid());
+                        if (StringUtil.isEmpty(devlist)) {
+                            devlist.add(0);
+                        }
+                        Path<Object> path = root.get("termid");//定义查询的字段
+                        CriteriaBuilder.In<Object> in = cb.in(path);
+                        for (int i = 0; i <devlist.size() ; i++) {
+                            in.value(devlist.get(i));//存入值
+                        }
+                        list.add(cb.and(in));
+                    }
+
+                }
+
                 if (null != param.getTermid()) {
                     list.add(cb.like(root.get("termid").as(String.class), param.getTermid().toString()));
                 }
