diff --git a/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java b/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java
index d74e4366..40ba9000 100644
--- a/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java
+++ b/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java
@@ -128,6 +128,14 @@ public interface Constants {
     /**
      * 设备维修
      */
+    // 维修任务状态
+    String REPAIR_STATUS_NEW = "401"; // 新建/待维修
+    String REPAIR_STATUS_DOING = "501"; // 维修中
+    String REPAIR_STATUS_WAIT = "502"; // 维修等待
+    String REPAIR_STATUS_CLOSE = "302"; // 关闭
+    String REPAIR_STATUS_COMPLETE = "301"; // 维修完成
+    String REPAIR_STATUS_CONFIRM = "601"; // 报修单确认
+
     // 纠正预防-根本原因
     String PRIMARY_BURN_IN = "BI"; //部件老化
     String REASON_BREAK_DOWN = "BD"; //正常损坏
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/dto/LabelPrintDto.java b/common/src/main/java/com/foreverwin/mesnac/common/dto/LabelPrintDto.java
index e9a55742..81798a82 100644
--- a/common/src/main/java/com/foreverwin/mesnac/common/dto/LabelPrintDto.java
+++ b/common/src/main/java/com/foreverwin/mesnac/common/dto/LabelPrintDto.java
@@ -25,6 +25,8 @@ public class LabelPrintDto implements Serializable {
     private String supplier;
     //批次号
     private String batch;
+    // 物料条码
+    private String label;
 
     //在制品标签参数
     //工作指令
@@ -104,6 +106,14 @@ public class LabelPrintDto implements Serializable {
         this.batch = batch;
     }
 
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
     public String getWorkOrder() {
         return workOrder;
     }
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java b/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java
index 1110e9c9..d061af62 100644
--- a/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java
+++ b/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java
@@ -20,7 +20,7 @@ import java.util.Map;
 @Repository
 public interface ProdReadyTaskMapper extends BaseMapper<ProdReadyTask> {
 
-    List<ProdReadyTask> getTaskList(@Param("entity")ProdReadyTask prodReadyTask, @Param("locale") String locale);
+    List<ProdReadyTask> getTaskList(@Param("entity")ProdReadyTask prodReadyTask, @Param("locale") String locale,@Param("admin") Integer admin,@Param("user") String user);
 
     ProdReadyTask loadProExecute(@Param("site")String site,  @Param("taskBo")String taskBo, @Param("locale") String language);
 
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java
index 5bba7756..d88b0af9 100644
--- a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java
+++ b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java
@@ -23,6 +23,8 @@ import com.foreverwin.mesnac.common.util.ActiveMQUtil;
 import com.foreverwin.mesnac.common.util.DateUtil;
 import com.foreverwin.mesnac.common.util.StringUtil;
 import com.foreverwin.mesnac.meapi.dto.BomComponentDto;
+import com.foreverwin.mesnac.meapi.dto.RouterStepDto;
+import com.foreverwin.mesnac.meapi.mapper.UserGroupMapper;
 import com.foreverwin.mesnac.meapi.mapper.WorkCenterMapper;
 import com.foreverwin.mesnac.meapi.model.*;
 import com.foreverwin.mesnac.meapi.service.*;
@@ -76,12 +78,18 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
     @Autowired
     private ResrceService resrceService;
     @Autowired
+    private RouterService routerService;
+    @Autowired
+    private RouterStepService routerStepService;
+    @Autowired
     private ProdReadyTaskDetailService prodReadyTaskDetailService;
     @Autowired
     private SfcDispatchCommonService sfcDispatchCommonService;
     @Autowired
     private BomComponentService bomComponentService;
     @Autowired
+    private UserGroupMapper userGroupMapper;
+    @Autowired
     private WorkCenterMapper workCenterMapper;
     @Autowired
     private CustomFieldsService customFieldsService;
@@ -254,7 +262,10 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
 
     @Override
     public List<ProdReadyTask> getTaskList(ProdReadyTask prodReadyTask) {
-        return prodReadyTaskMapper.getTaskList(prodReadyTask, LocaleContextHolder.getLocale().getLanguage());
+        String user = CommonMethods.getUser();
+        String site = CommonMethods.getSite();
+        Integer admin = userGroupMapper.getUserGroupByUser(HandleEnum.USER.getHandle(site, user), new UserGroupBOHandle(site, "ADMINISTRATORS").getValue());
+        return prodReadyTaskMapper.getTaskList(prodReadyTask, LocaleContextHolder.getLocale().getLanguage(),admin,user);
     }
 
     @Override
@@ -380,7 +391,21 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
             String workOrder = customFieldsService.getCustomFieldsValue(sfcServiceById.getShopOrderBo(), "WORK_ORDER");
             labelPrintDto.setWorkOrder(workOrder);
             labelPrintDto.setBlankingSize(sfcDispatchDto.getBlankingSize());
-            labelPrintDto.setOperation(sfcDispatchDto.getOperation());
+            //下道工序
+            Router router = routerService.getRouterBySfcBo(HandleEnum.SFC.getHandle(site, sfcServiceById.getSfc()));
+            int seq = 0;
+            List<RouterStepDto> stepOperationList = routerStepService.findRouterOperationByRouterBo(site, router.getHandle());
+            for (int i = 0; i < stepOperationList.size(); i++) {
+                RouterStepDto stepOperation = stepOperationList.get(i);
+                if (stepOperation.getStepId().equals(prodReadyTask.getStepId())) {
+                    seq = i;
+                }
+            }
+            if (seq != stepOperationList.size()-1) {
+                RouterStepDto stepOperation = stepOperationList.get(seq + 1);
+                labelPrintDto.setOperation(stepOperation.getOperationDesc());
+
+            }
             labelPrintDtoList.add(labelPrintDto);
             printData = JSON.toJSONString(labelPrintDtoList);
             //打印记录
diff --git a/common/src/main/resources/mapper/ProdReadyTaskMapper.xml b/common/src/main/resources/mapper/ProdReadyTaskMapper.xml
index 662c74e7..e0d8ccc8 100644
--- a/common/src/main/resources/mapper/ProdReadyTaskMapper.xml
+++ b/common/src/main/resources/mapper/ProdReadyTaskMapper.xml
@@ -637,6 +637,7 @@
         LEFT JOIN ITEM_T ITT ON ITT.ITEM_BO = I.HANDLE AND ITT.LOCALE =#{locale}
         JOIN RESRCE RES ON RES.RESRCE = zprt.RESRCE AND RES.SITE = zprt.SITE
         WHERE ZPRT.SITE=#{entity.site}
+        <if test="admin == 0"> AND ZSD.EMPLOYEE LIKE '%${user}%'   </if>
         <if test="entity.workCenter!=null and entity.workCenter!='' "> AND ZPRT.WORK_CENTER=#{entity.workCenter}</if>
         <if test="entity.resrce!=null and entity.resrce!='' "> AND ZPRT.RESRCE=#{entity.resrce}</if>
         <if test="entity.dispatchNo!=null and entity.dispatchNo!='' "> AND ZSD.DISPATCH_NO=#{entity.dispatchNo}</if>
diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/ItemBatchController.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/ItemBatchController.java
index 4270fdc0..69b4277c 100644
--- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/ItemBatchController.java
+++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/ItemBatchController.java
@@ -1,24 +1,24 @@
 package com.foreverwin.mesnac.dispatch.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.foreverwin.mesnac.common.erp.ZprodordconfStruIn;
 import com.foreverwin.mesnac.common.erp.ZprodordconfStruOut;
 import com.foreverwin.mesnac.common.erp.holders.TableOfZprodordconfStruInHolder;
 import com.foreverwin.mesnac.common.erp.holders.TableOfZprodordconfStruOutHolder;
 import com.foreverwin.mesnac.common.util.ERPAPI;
-import com.foreverwin.modular.core.util.R;
-import com.foreverwin.modular.core.util.FrontPage;
+import com.foreverwin.mesnac.dispatch.model.ItemBatch;
+import com.foreverwin.mesnac.dispatch.service.ItemBatchService;
 import com.foreverwin.modular.core.util.CommonMethods;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.foreverwin.modular.core.util.FrontPage;
+import com.foreverwin.modular.core.util.R;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import com.foreverwin.mesnac.dispatch.service.ItemBatchService;
-import com.foreverwin.mesnac.dispatch.model.ItemBatch;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
-import java.util.List;
 
 /**
  *
@@ -32,6 +32,14 @@ public class ItemBatchController {
     @Autowired
     public ItemBatchService itemBatchService;
 
+    @ResponseBody
+    @GetMapping("/getItemBatch")
+    public R getItemBatch(ItemBatch itemBatch){
+        QueryWrapper<ItemBatch> queryWrapper=new QueryWrapper<>();
+        itemBatch.setSite(CommonMethods.getSite());
+        queryWrapper.setEntity(itemBatch);
+        return R.ok(itemBatchService.list(queryWrapper));
+    }
     /**
      * 分页查询数据
      *
diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SurplusReturnServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SurplusReturnServiceImpl.java
index f476f625..349015b1 100644
--- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SurplusReturnServiceImpl.java
+++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SurplusReturnServiceImpl.java
@@ -216,9 +216,11 @@ public class SurplusReturnServiceImpl extends ServiceImpl<SurplusReturnMapper, S
         labelPrintDto.setItemDescription(inventoryModel.getDescription());
         labelPrintDto.setSupplier(dataAttr);
         labelPrintDto.setBatch(surplusInventory);
+        labelPrintDto.setLabel(surplusInventory);
 
         printLog.setPrintParam(JSON.toJSONString(labelPrintDto));
         printLog.setInventory(surplusInventory);
+
         printLog.setItemBo(inventoryModel.getItemBo());
         printLog.setCreateUser(user);
         printLog.setCreatedDateTime(dateTime);
diff --git a/equip/src/main/java/com/foreverwin/mesnac/equip/dto/ResourceInspectTaskDto.java b/equip/src/main/java/com/foreverwin/mesnac/equip/dto/ResourceInspectTaskDto.java
index 5adea033..17124e2a 100644
--- a/equip/src/main/java/com/foreverwin/mesnac/equip/dto/ResourceInspectTaskDto.java
+++ b/equip/src/main/java/com/foreverwin/mesnac/equip/dto/ResourceInspectTaskDto.java
@@ -52,6 +52,8 @@ public class ResourceInspectTaskDto implements Serializable {
     private LocalDateTime actualCompleteDate;
     /**执行人**/
     private String executor;
+    /**执行人**/
+    private String executorName;
     /**备注**/
     private String remark;
     /**检索时间段的开始时间**/
@@ -88,6 +90,16 @@ public class ResourceInspectTaskDto implements Serializable {
     private List<ResourceInspectTaskParam> taskItemDetailList;
     /**消耗备品**/
     private List<ResourceInspectTaskSpare> spareList;
+    /**用户名称**/
+    private String fullName;
+
+    public String getFullName() {
+        return fullName;
+    }
+
+    public void setFullName(String fullName) {
+        this.fullName = fullName;
+    }
 
     public Integer getItemSeq() {
         return itemSeq;
@@ -324,6 +336,14 @@ public class ResourceInspectTaskDto implements Serializable {
         this.executor = executor;
     }
 
+    public String getExecutorName() {
+        return executorName;
+    }
+
+    public void setExecutorName(String executorName) {
+        this.executorName = executorName;
+    }
+
     public String getRemark() {
         return remark;
     }
diff --git a/equip/src/main/java/com/foreverwin/mesnac/equip/model/ResourceRepairTask.java b/equip/src/main/java/com/foreverwin/mesnac/equip/model/ResourceRepairTask.java
index ea5734e0..4870d081 100644
--- a/equip/src/main/java/com/foreverwin/mesnac/equip/model/ResourceRepairTask.java
+++ b/equip/src/main/java/com/foreverwin/mesnac/equip/model/ResourceRepairTask.java
@@ -297,7 +297,19 @@ public class ResourceRepairTask extends Model<ResourceRepairTask> {
     */
    @TableField(exist = false)
    private Integer seq;
+   /**
+    * 提报人名称
+    */
+   @TableField(exist = false)
+   private String reportUserName;
 
+   public String getReportUserName() {
+      return reportUserName;
+   }
+
+   public void setReportUserName(String reportUserName) {
+      this.reportUserName = reportUserName;
+   }
 
    public List<ResourceInspectTaskSpare> getSpareList() {
       return spareList;
diff --git a/equip/src/main/java/com/foreverwin/mesnac/equip/service/impl/ResourceRepairTaskServiceImpl.java b/equip/src/main/java/com/foreverwin/mesnac/equip/service/impl/ResourceRepairTaskServiceImpl.java
index 7cb7608f..e33fb29d 100644
--- a/equip/src/main/java/com/foreverwin/mesnac/equip/service/impl/ResourceRepairTaskServiceImpl.java
+++ b/equip/src/main/java/com/foreverwin/mesnac/equip/service/impl/ResourceRepairTaskServiceImpl.java
@@ -5,6 +5,7 @@ import com.foreverwin.mesnac.common.enums.HandleEnum;
 import com.foreverwin.mesnac.common.helper.NextNumberHelper;
 import com.foreverwin.mesnac.equip.model.ResourceInspectTaskSpare;
 import com.foreverwin.mesnac.equip.service.ResourceInspectTaskSpareService;
+import com.foreverwin.mesnac.meapi.dto.NcCodeDto;
 import com.foreverwin.mesnac.meapi.model.NcCode;
 import com.foreverwin.mesnac.meapi.model.NwaUser;
 import com.foreverwin.mesnac.meapi.service.NcCodeService;
@@ -94,16 +95,14 @@ public class ResourceRepairTaskServiceImpl extends ServiceImpl<ResourceRepairTas
                     throw BusinessException.build("不良代码错误!!!");
                 }
             }
+            List<NcCodeDto> ncCodeDescriptionByNcCode = ncCodeService.findNcCodeDescriptionByNcCode(ncCodeNo);
+            StringBuffer ncCodeDescription = new StringBuffer("");
+            for (NcCodeDto ncCode:ncCodeDescriptionByNcCode) {
+                ncCodeDescription.append(ncCode.getDescription()).append(";");
+            }
+            resourceRepairTask.setOther(ncCodeDescription.toString());
         }
 
-       /* Collection<String> collection = new ArrayList<>();
-        for (int i = 0; i < ncSplit.length; i++) {
-            collection.add(HandleEnum.NC_CODE.getHandle(site,ncSplit[i]));
-        }
-        Collection<NcCode> ncCodes = ncCodeService.listByIds(collection);
-        if ( ncCodes.size() != ncSplit.length ){
-            throw BusinessException.build("不良代码错误!!!");
-        }*/
         // 维修单号、维修HANDLE
         List<String> nextNumber = nextNumberHelper.getNextNumber(site, Constants.RESOURCE_REPAIR_TASK, 1);
         resourceRepairTask.setRepairNo(nextNumber.get(0));
diff --git a/equip/src/main/resources/mapper/ResourceInspectTaskMapper.xml b/equip/src/main/resources/mapper/ResourceInspectTaskMapper.xml
index 8543588c..c630b32d 100644
--- a/equip/src/main/resources/mapper/ResourceInspectTaskMapper.xml
+++ b/equip/src/main/resources/mapper/ResourceInspectTaskMapper.xml
@@ -643,11 +643,12 @@
 
     <!--自定义sql:模糊查询检验任务所有字段、车间、设备名称等字段-->
     <select id="findResourceInspectTaskList" resultType="com.foreverwin.mesnac.equip.dto.ResourceInspectTaskDto">
-        SELECT DISTINCT RIK.* ,RIP.PLAN_NO AS PLAN_NO ,
+        SELECT DISTINCT RIK.* , ZNU.FULL_NAME, RIP.PLAN_NO AS PLAN_NO ,
         R.RESRCE AS RESOURCE_NO ,R.DESCRIPTION AS RESOURCE_DESCRIPTION ,
         RTR.RESOURCE_TYPE_BO ,RT.RESOURCE_TYPE AS RESOURCE_TYPE_NO ,RT.DESCRIPTION AS RESOURCE_TYPE_DESCRIPTION ,
         WCT.DESCRIPTION AS WORK_CENTER
         FROM Z_RESOURCE_INSPECT_TASK RIK
+        LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = RIK.EXECUTOR
         LEFT JOIN Z_INSPECT_PLAN_USER_GROUP ZG ON ZG.RESOURCE_INSPECT_PLAN_BO = RIK.RESOURCE_INSPECT_PLAN_BO
         LEFT JOIN USER_GROUP_MEMBER UGM ON UGM.USER_GROUP_BO = ZG.USER_GROUP_BO
         LEFT JOIN Z_RESOURCE_INSPECT_PLAN RIP ON RIK.RESOURCE_INSPECT_PLAN_BO = RIP.HANDLE
diff --git a/equip/src/main/resources/mapper/ResourceRepairTaskMapper.xml b/equip/src/main/resources/mapper/ResourceRepairTaskMapper.xml
index 442e923a..c04fa8b6 100644
--- a/equip/src/main/resources/mapper/ResourceRepairTaskMapper.xml
+++ b/equip/src/main/resources/mapper/ResourceRepairTaskMapper.xml
@@ -882,11 +882,12 @@
     <!--自定义sql-->
         <!--批量获取维修任务-->
     <select id="findResourceRepairTaskList" resultType="com.foreverwin.mesnac.equip.model.ResourceRepairTask">
-        SELECT DISTINCT RRT.*,R.DESCRIPTION AS RESOURCE_DESCRIPTION,R.RESRCE AS RESOURCE_NO,
+        SELECT DISTINCT RRT.*, ZNU.FULL_NAME AS REPORT_USER_NAME, R.DESCRIPTION AS RESOURCE_DESCRIPTION,R.RESRCE AS RESOURCE_NO,
         WCMA.WORK_CENTER_BO AS WORK_CENTER_BO,
         WCT.DESCRIPTION AS WORK_CENTER_DESCRIPTION
         FROM
         WIP.Z_RESOURCE_REPAIR_TASK RRT
+        LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = RRT.REPORT_USER
         INNER JOIN WIP.RESRCE R ON RRT.SITE = R.SITE AND R.RESRCE = RRT.RESOURCE_NO
         LEFT JOIN WIP.WORK_CENTER_MEMBER WCM ON WCM.WORK_CENTER_OR_RESOURCE_GBO = R.HANDLE
         LEFT JOIN WIP.WORK_CENTER_MEMBER WCMA ON WCMA.WORK_CENTER_OR_RESOURCE_GBO = WCM.WORK_CENTER_BO
diff --git a/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java b/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java
index d0dbe19b..f0582580 100644
--- a/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java
+++ b/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java
@@ -1,7 +1,6 @@
 package com.foreverwin.mesnac.integration.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.foreverwin.mesnac.common.constant.Constants;
 import com.foreverwin.mesnac.common.constant.CustomFieldConstant;
 import com.foreverwin.mesnac.common.dto.LabelPrintDto;
@@ -22,6 +21,7 @@ import com.sap.me.common.MaterialType;
 import com.sap.me.common.ObjectReference;
 import com.sap.me.common.ProcurementType;
 import com.sap.me.demand.*;
+import com.sap.me.productdefinition.RouterStep;
 import com.sap.me.productdefinition.*;
 import com.sap.me.production.ChangeProductionServiceInterface;
 import com.visiprise.globalization.DateGlobalizationServiceInterface;
@@ -877,7 +877,9 @@ public class InterfaceServiceImpl implements InterfaceService {
             labelPrintDto.setItem(item);
             labelPrintDto.setItemDescription(itemModel.getDescription());
             labelPrintDto.setSupplier(supplier);
-            labelPrintDto.setBatch(inventory);
+            //labelPrintDto.setBatch(inventory);
+            labelPrintDto.setBatch(batch);
+            labelPrintDto.setLabel(inventory);
             labelPrintDtoList.add(labelPrintDto);
 
 
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcCodeController.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcCodeController.java
index 951fc9b2..b55e1422 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcCodeController.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcCodeController.java
@@ -149,6 +149,17 @@ public class NcCodeController {
     public R findNcCodeByNcGroup(NcGroup ncGroup){
         return R.ok(ncCodeService.findNcCodeByNcGroup(ncGroup));
     }
+
+    /**
+     * 根据不合格代码组查询不合格代码
+     * @param ncGroup
+     * @return
+     */
+    @GetMapping("/findNcCodeByNcGroupList")
+    public R findNcCodeByNcGroupList(String ncGroup){
+        return R.ok(ncCodeService.findNcCodeByNcGroupList(ncGroup));
+    }
+
 }
 
 
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcGroupController.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcGroupController.java
index 4b3dff76..8f911cc0 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcGroupController.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/NcGroupController.java
@@ -32,6 +32,23 @@ public class NcGroupController {
         result = ncGroupService.selectPageByOperation(frontPage.getPagePlus(), frontPage.getGlobalQuery(),operation);
         return R.ok(result);
     }
+
+    /**
+     * 根据工序查询不良代码组,不分页
+     * @param operation
+     * @return
+     */
+    @ResponseBody
+    @GetMapping("/selectPageByOperationNoPage")
+    public R selectPageByOperationNoPage(String operation){
+        List<NcGroup> result;
+        try{
+            result = ncGroupService.selectPageByOperationNoPage(operation);
+        }catch (Exception e){
+            return R.failed(e.getMessage());
+        }
+        return R.ok(result);
+    }
     /**
     * 根据id查询
     *
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/RouterStepController.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/RouterStepController.java
new file mode 100644
index 00000000..5d335779
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/RouterStepController.java
@@ -0,0 +1,135 @@
+package com.foreverwin.mesnac.meapi.controller;
+
+import com.foreverwin.modular.core.util.R;
+import com.foreverwin.modular.core.util.FrontPage;
+import com.foreverwin.modular.core.util.CommonMethods;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import com.foreverwin.mesnac.meapi.service.RouterStepService;
+import com.foreverwin.mesnac.meapi.model.RouterStep;
+import java.util.List;
+
+/**
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+@RestController
+@RequestMapping("/ROUTER-STEP")
+public class RouterStepController {
+
+    @Autowired
+    public RouterStepService routerStepService;
+
+    /**
+    * 根据id查询
+    *
+    * @param id 主键
+    * @return
+    */
+    @ResponseBody
+    @GetMapping("/{id:.+}")
+    public R getRouterStepById(@PathVariable String id) {
+        return R.ok( routerStepService.getById(id));
+    }
+
+    /**
+     * 查询所有数据
+     *
+     * @return
+     */
+    @ResponseBody
+    @GetMapping("")
+    public R getRouterStepList(RouterStep routerStep){
+        List<RouterStep> result;
+        QueryWrapper<RouterStep> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(routerStep);
+        result = routerStepService.list(queryWrapper);
+        return R.ok(result);
+    }
+
+    /**
+     * 分页查询数据
+     *
+     * @param frontPage  分页信息
+     * @return
+     */
+    @ResponseBody
+    @GetMapping("/page")
+    public R page(FrontPage<RouterStep> frontPage, RouterStep routerStep){
+        IPage result;
+        QueryWrapper<RouterStep> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(routerStep);
+        if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) {
+            //TODO modify global query
+            queryWrapper.lambda().and(wrapper -> wrapper
+                .like(RouterStep::getHandle, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getRouterBo, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getStepId, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getDescription, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getRework, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getQueueDecisionType, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getRouterCompGbo, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getReportingStep, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getReportingCenterBo, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getTabularStepType, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getScrapReportingStep, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getIsLastReportingStep, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getErpSequence, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getErpControlKeyBo, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getErpWorkCenterBo, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getErpInspectionComplete, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getErpOperation, frontPage.getGlobalQuery())
+                .or().like(RouterStep::getOperationActivityId, frontPage.getGlobalQuery())
+    );
+        }
+        result = routerStepService.page(frontPage.getPagePlus(), queryWrapper);
+        return R.ok(result);
+    }
+
+    /**
+     * 新增
+     * @param routerStep  传递的实体
+     * @return  null 失败  实体成功
+     */
+    @PostMapping
+    public R save(@RequestBody RouterStep routerStep) {
+        return R.ok(routerStepService.save(routerStep));
+    }
+
+    /**
+     * 修改
+     * @param routerStep  传递的实体
+     * @return  null 失败  实体成功
+     */
+    @PutMapping
+    public R updateById(@RequestBody RouterStep routerStep) {
+        return R.ok(routerStepService.updateById(routerStep));
+    }
+
+    /**
+     * 根据id删除对象
+     * @param id  实体ID
+     * @return 0 失败  1 成功
+     */
+    @ResponseBody
+    @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}")
+    public R removeById(@PathVariable("id") String id){
+        return R.ok(routerStepService.removeById(id));
+    }
+
+    /**
+     * 批量删除对象
+     * @param ids 实体集合ID
+     * @return  0 失败  1 成功
+     */
+    @ResponseBody
+    @RequestMapping(method = RequestMethod.POST, value = "/delete-batch")
+    public R removeByIds(List<String> ids){
+        return R.ok(routerStepService.removeByIds(ids));
+    }
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/dto/RouterStepDto.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/dto/RouterStepDto.java
new file mode 100644
index 00000000..dcb43d5a
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/dto/RouterStepDto.java
@@ -0,0 +1,33 @@
+package com.foreverwin.mesnac.meapi.dto;
+
+import com.foreverwin.mesnac.meapi.model.RouterStep;
+
+public class RouterStepDto extends RouterStep {
+   private String operation;
+   private String operationBo;
+   private String operationDesc;
+
+   public String getOperation() {
+      return operation;
+   }
+
+   public void setOperation(String operation) {
+      this.operation = operation;
+   }
+
+   public String getOperationBo() {
+      return operationBo;
+   }
+
+   public void setOperationBo(String operationBo) {
+      this.operationBo = operationBo;
+   }
+
+   public String getOperationDesc() {
+      return operationDesc;
+   }
+
+   public void setOperationDesc(String operationDesc) {
+      this.operationDesc = operationDesc;
+   }
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcCodeMapper.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcCodeMapper.java
index 2a2bae51..ecedb734 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcCodeMapper.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcCodeMapper.java
@@ -49,4 +49,6 @@ public interface NcCodeMapper extends BaseMapper<NcCode> {
 
 
     List<NcCodeDto> findNcCodeDescriptionByNcCode(@Param("site")String site, @Param("locale")String locale, @Param("ncCode")String[] ncCode);
+
+    List<NcCodeDto> findNcCodeByNcGroupList(@Param("site")String site, @Param("locale")String locale, @Param("ncGroup")String[] ncGroup);
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcGroupMapper.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcGroupMapper.java
index 68be48f3..091e52e1 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcGroupMapper.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/NcGroupMapper.java
@@ -24,4 +24,6 @@ public interface NcGroupMapper extends BaseMapper<NcGroup> {
     IPage selectPageByOperation(Page<NcGroup> frontPage, @Param("site") String site, @Param("operationBO") String operationBO,@Param("globalQuery") String globalQuery);
 
     List<NcGroup> findNgGroupByOperationBo(@Param("operation") Operation operation);
+
+    List<NcGroup> selectPageByOperation(@Param("site") String site, @Param("operationBO") String operationBO, @Param("globalQuery") Object o);
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/RouterStepMapper.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/RouterStepMapper.java
new file mode 100644
index 00000000..53cef2df
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/RouterStepMapper.java
@@ -0,0 +1,23 @@
+package com.foreverwin.mesnac.meapi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.foreverwin.mesnac.meapi.dto.RouterStepDto;
+import com.foreverwin.mesnac.meapi.model.RouterStep;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+@Repository
+public interface RouterStepMapper extends BaseMapper<RouterStep> {
+
+    List<RouterStepDto> findRouterOperationByRouterBo(@Param("site") String site, @Param("routerBo") String routerBO, @Param("locale")String locale);
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/UserGroupMapper.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/UserGroupMapper.java
index b6259730..2fe80980 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/UserGroupMapper.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/UserGroupMapper.java
@@ -26,4 +26,5 @@ public interface UserGroupMapper extends BaseMapper<UserGroup> {
      UserGroup getCustomFieldByGroup(@Param("site")String site,
                                      @Param("userGroup")String userGroup);
 
+     Integer getUserGroupByUser(@Param("userBO")String userBO,@Param("userGroupBO")String userGroupBO);
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/RouterStep.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/RouterStep.java
new file mode 100644
index 00000000..28884a2a
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/RouterStep.java
@@ -0,0 +1,284 @@
+package com.foreverwin.mesnac.meapi.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+
+@TableName("ROUTER_STEP")
+
+public class RouterStep extends Model<RouterStep> {
+
+    private static final long serialVersionUID = 1L;
+
+   @TableField("HANDLE")
+   private String handle;
+   @TableField("ROUTER_BO")
+   private String routerBo;
+   @TableField("STEP_ID")
+   private String stepId;
+   @TableField("DESCRIPTION")
+   private String description;
+   @TableField("REWORK")
+   private String rework;
+   @TableField("QUEUE_DECISION_TYPE")
+   private String queueDecisionType;
+   @TableField("ROUTER_COMP_GBO")
+   private String routerCompGbo;
+   @TableField("REPORTING_STEP")
+   private String reportingStep;
+   @TableField("SEQUENCE")
+   private Long sequence;
+   @TableField("REPORTING_CENTER_BO")
+   private String reportingCenterBo;
+   @TableField("TABULAR_STEP_TYPE")
+   private String tabularStepType;
+   @TableField("SCRAP_REPORTING_STEP")
+   private String scrapReportingStep;
+   @TableField("IS_LAST_REPORTING_STEP")
+   private String isLastReportingStep;
+   @TableField("ERP_SEQUENCE")
+   private String erpSequence;
+   @TableField("ERP_CONTROL_KEY_BO")
+   private String erpControlKeyBo;
+   @TableField("ERP_WORK_CENTER_BO")
+   private String erpWorkCenterBo;
+   @TableField("ERP_INSPECTION_COMPLETE")
+   private String erpInspectionComplete;
+   @TableField("ERP_OPERATION")
+   private String erpOperation;
+   @TableField("OPERATION_ACTIVITY_ID")
+   private String operationActivityId;
+
+
+   public String getHandle() {
+      return handle;
+   }
+
+   public void setHandle(String handle) {
+      this.handle = handle;
+   }
+
+   public String getRouterBo() {
+      return routerBo;
+   }
+
+   public void setRouterBo(String routerBo) {
+      this.routerBo = routerBo;
+   }
+
+   public String getStepId() {
+      return stepId;
+   }
+
+   public void setStepId(String stepId) {
+      this.stepId = stepId;
+   }
+
+   public String getDescription() {
+      return description;
+   }
+
+   public void setDescription(String description) {
+      this.description = description;
+   }
+
+   public String getRework() {
+      return rework;
+   }
+
+   public void setRework(String rework) {
+      this.rework = rework;
+   }
+
+   public String getQueueDecisionType() {
+      return queueDecisionType;
+   }
+
+   public void setQueueDecisionType(String queueDecisionType) {
+      this.queueDecisionType = queueDecisionType;
+   }
+
+   public String getRouterCompGbo() {
+      return routerCompGbo;
+   }
+
+   public void setRouterCompGbo(String routerCompGbo) {
+      this.routerCompGbo = routerCompGbo;
+   }
+
+   public String getReportingStep() {
+      return reportingStep;
+   }
+
+   public void setReportingStep(String reportingStep) {
+      this.reportingStep = reportingStep;
+   }
+
+   public Long getSequence() {
+      return sequence;
+   }
+
+   public void setSequence(Long sequence) {
+      this.sequence = sequence;
+   }
+
+   public String getReportingCenterBo() {
+      return reportingCenterBo;
+   }
+
+   public void setReportingCenterBo(String reportingCenterBo) {
+      this.reportingCenterBo = reportingCenterBo;
+   }
+
+   public String getTabularStepType() {
+      return tabularStepType;
+   }
+
+   public void setTabularStepType(String tabularStepType) {
+      this.tabularStepType = tabularStepType;
+   }
+
+   public String getScrapReportingStep() {
+      return scrapReportingStep;
+   }
+
+   public void setScrapReportingStep(String scrapReportingStep) {
+      this.scrapReportingStep = scrapReportingStep;
+   }
+
+   public String getIsLastReportingStep() {
+      return isLastReportingStep;
+   }
+
+   public void setIsLastReportingStep(String isLastReportingStep) {
+      this.isLastReportingStep = isLastReportingStep;
+   }
+
+   public String getErpSequence() {
+      return erpSequence;
+   }
+
+   public void setErpSequence(String erpSequence) {
+      this.erpSequence = erpSequence;
+   }
+
+   public String getErpControlKeyBo() {
+      return erpControlKeyBo;
+   }
+
+   public void setErpControlKeyBo(String erpControlKeyBo) {
+      this.erpControlKeyBo = erpControlKeyBo;
+   }
+
+   public String getErpWorkCenterBo() {
+      return erpWorkCenterBo;
+   }
+
+   public void setErpWorkCenterBo(String erpWorkCenterBo) {
+      this.erpWorkCenterBo = erpWorkCenterBo;
+   }
+
+   public String getErpInspectionComplete() {
+      return erpInspectionComplete;
+   }
+
+   public void setErpInspectionComplete(String erpInspectionComplete) {
+      this.erpInspectionComplete = erpInspectionComplete;
+   }
+
+   public String getErpOperation() {
+      return erpOperation;
+   }
+
+   public void setErpOperation(String erpOperation) {
+      this.erpOperation = erpOperation;
+   }
+
+   public String getOperationActivityId() {
+      return operationActivityId;
+   }
+
+   public void setOperationActivityId(String operationActivityId) {
+      this.operationActivityId = operationActivityId;
+   }
+
+public static final String HANDLE = "HANDLE";
+
+public static final String ROUTER_BO = "ROUTER_BO";
+
+public static final String STEP_ID = "STEP_ID";
+
+public static final String DESCRIPTION = "DESCRIPTION";
+
+public static final String REWORK = "REWORK";
+
+public static final String QUEUE_DECISION_TYPE = "QUEUE_DECISION_TYPE";
+
+public static final String ROUTER_COMP_GBO = "ROUTER_COMP_GBO";
+
+public static final String REPORTING_STEP = "REPORTING_STEP";
+
+public static final String SEQUENCE = "SEQUENCE";
+
+public static final String REPORTING_CENTER_BO = "REPORTING_CENTER_BO";
+
+public static final String TABULAR_STEP_TYPE = "TABULAR_STEP_TYPE";
+
+public static final String SCRAP_REPORTING_STEP = "SCRAP_REPORTING_STEP";
+
+public static final String IS_LAST_REPORTING_STEP = "IS_LAST_REPORTING_STEP";
+
+public static final String ERP_SEQUENCE = "ERP_SEQUENCE";
+
+public static final String ERP_CONTROL_KEY_BO = "ERP_CONTROL_KEY_BO";
+
+public static final String ERP_WORK_CENTER_BO = "ERP_WORK_CENTER_BO";
+
+public static final String ERP_INSPECTION_COMPLETE = "ERP_INSPECTION_COMPLETE";
+
+public static final String ERP_OPERATION = "ERP_OPERATION";
+
+public static final String OPERATION_ACTIVITY_ID = "OPERATION_ACTIVITY_ID";
+
+
+   @Override
+   protected Serializable pkVal() {
+      return this.handle;
+   }
+
+   @Override
+   public String toString() {
+      return "RouterStep{" +
+         "handle = " + handle +
+         ", routerBo = " + routerBo +
+         ", stepId = " + stepId +
+         ", description = " + description +
+         ", rework = " + rework +
+         ", queueDecisionType = " + queueDecisionType +
+         ", routerCompGbo = " + routerCompGbo +
+         ", reportingStep = " + reportingStep +
+         ", sequence = " + sequence +
+         ", reportingCenterBo = " + reportingCenterBo +
+         ", tabularStepType = " + tabularStepType +
+         ", scrapReportingStep = " + scrapReportingStep +
+         ", isLastReportingStep = " + isLastReportingStep +
+         ", erpSequence = " + erpSequence +
+         ", erpControlKeyBo = " + erpControlKeyBo +
+         ", erpWorkCenterBo = " + erpWorkCenterBo +
+         ", erpInspectionComplete = " + erpInspectionComplete +
+         ", erpOperation = " + erpOperation +
+         ", operationActivityId = " + operationActivityId +
+         "}";
+   }
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcCodeService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcCodeService.java
index a0beafd4..356127f7 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcCodeService.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcCodeService.java
@@ -38,4 +38,6 @@ public interface NcCodeService extends IService<NcCode> {
     List<NcCode> findNcCodeByNcGroup(NcGroup ncGroup);
 
     List<NcCodeDto> findNcCodeDescriptionByNcCode(String ncCode);
+
+    List<NcCodeDto> findNcCodeByNcGroupList(String ncGroup);
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcGroupService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcGroupService.java
index a4891d13..4079b0f3 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcGroupService.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/NcGroupService.java
@@ -30,5 +30,8 @@ public interface NcGroupService extends IService<NcGroup> {
 
     IPage selectPageByOperation(Page<NcGroup> pagePlus, String globalQuery, String operation);
 
+
     List<NcGroup> findNgGroupByOperationBo(Operation operation);
+
+    List<NcGroup> selectPageByOperationNoPage(String operation);
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/RouterStepService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/RouterStepService.java
new file mode 100644
index 00000000..33fbb581
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/RouterStepService.java
@@ -0,0 +1,31 @@
+package com.foreverwin.mesnac.meapi.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.foreverwin.mesnac.meapi.dto.RouterStepDto;
+import com.foreverwin.mesnac.meapi.model.RouterStep;
+import com.foreverwin.modular.core.util.FrontPage;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+public interface RouterStepService extends IService<RouterStep> {
+
+    /**
+     *  分页查询
+     * @param frontPage
+     * @return
+     */
+    IPage<RouterStep> selectPage(FrontPage<RouterStep> frontPage, RouterStep routerStep);
+
+    List<RouterStep> selectList(RouterStep routerStep);
+
+    List<RouterStepDto> findRouterOperationByRouterBo(String site, String handle);
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/UserGroupService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/UserGroupService.java
index e5f1a6ba..dfcf201a 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/UserGroupService.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/UserGroupService.java
@@ -25,4 +25,6 @@ public interface UserGroupService extends IService<UserGroup> {
     IPage<UserGroup> selectPage(FrontPage<UserGroup> frontPage, UserGroup userGroup);
 
     List<UserGroup> selectList(UserGroup userGroup);
+
+    Integer getUserGroupByUser(String userBO,String userGroupBO);
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java
index b9d18b3c..b088a713 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java
@@ -91,5 +91,14 @@ public class NcCodeServiceImpl extends ServiceImpl<NcCodeMapper, NcCode> impleme
         return ncCodeMapper.findNcCodeDescriptionByNcCode(site,locale,split);
     }
 
+    @Override
+    public List<NcCodeDto> findNcCodeByNcGroupList(String ncCode) {
+        String site = CommonMethods.getSite();
+        String locale = LocaleContextHolder.getLocale().getLanguage();
+        String[] split = ncCode.split(",");
+
+        return ncCodeMapper.findNcCodeByNcGroupList(site,locale,split);
+    }
+
 
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcGroupServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcGroupServiceImpl.java
index 147ef90f..15e96f72 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcGroupServiceImpl.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcGroupServiceImpl.java
@@ -70,4 +70,14 @@ public class NcGroupServiceImpl extends ServiceImpl<NcGroupMapper, NcGroup> impl
         return ncGroupMapper.findNgGroupByOperationBo(operation);
     }
 
+    @Override
+    public List<NcGroup> selectPageByOperationNoPage(String operation) {
+        String site = CommonMethods.getSite();
+        if (StringUtils.isBlank(operation)) {
+            throw new BaseException("工序不能为空");
+        }
+        String operationBO = new OperationBOHandle(site, operation, "#").getValue();
+        return ncGroupMapper.selectPageByOperation(site, operationBO, null);
+    }
+
 }
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/RouterStepServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/RouterStepServiceImpl.java
new file mode 100644
index 00000000..a9477ff9
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/RouterStepServiceImpl.java
@@ -0,0 +1,53 @@
+package com.foreverwin.mesnac.meapi.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.foreverwin.mesnac.meapi.dto.RouterStepDto;
+import com.foreverwin.mesnac.meapi.mapper.RouterStepMapper;
+import com.foreverwin.mesnac.meapi.model.RouterStep;
+import com.foreverwin.mesnac.meapi.service.RouterStepService;
+import com.foreverwin.modular.core.util.FrontPage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.i18n.LocaleContextHolder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RouterStepServiceImpl extends ServiceImpl<RouterStepMapper, RouterStep> implements RouterStepService {
+
+
+    @Autowired
+    private RouterStepMapper routerStepMapper;
+
+    @Override
+    public IPage<RouterStep> selectPage(FrontPage<RouterStep> frontPage, RouterStep routerStep) {
+        QueryWrapper<RouterStep> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(routerStep);
+        return super.page(frontPage.getPagePlus(), queryWrapper);
+    }
+
+    @Override
+    public List<RouterStep> selectList(RouterStep routerStep) {
+        QueryWrapper<RouterStep> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(routerStep);
+        return super.list(queryWrapper);
+    }
+
+    @Override
+    public List<RouterStepDto> findRouterOperationByRouterBo(String site, String routerBO) {
+        return routerStepMapper.findRouterOperationByRouterBo( site,  routerBO,  LocaleContextHolder.getLocale().getLanguage());
+    }
+
+
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/UserGroupServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/UserGroupServiceImpl.java
index ddb7b841..4207fb3d 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/UserGroupServiceImpl.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/UserGroupServiceImpl.java
@@ -12,9 +12,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author robert
@@ -42,5 +43,9 @@ public class UserGroupServiceImpl extends ServiceImpl<UserGroupMapper, UserGroup
         return super.list(queryWrapper);
     }
 
+    @Override
+    public Integer getUserGroupByUser(String userBO, String userGroupBO) {
+        return userGroupMapper.getUserGroupByUser(userBO,userGroupBO);
+    }
 
 }
\ No newline at end of file
diff --git a/meapi/src/main/resources/mapper/NcCodeMapper.xml b/meapi/src/main/resources/mapper/NcCodeMapper.xml
index 172a573a..ec09cf91 100644
--- a/meapi/src/main/resources/mapper/NcCodeMapper.xml
+++ b/meapi/src/main/resources/mapper/NcCodeMapper.xml
@@ -438,4 +438,19 @@
             AND NC.STATUS_BO = 'StatusBO:' || #{site} || ',101'
         </where>
     </select>
+
+    <select id="findNcCodeByNcGroupList" resultMap="ncCodeDto">
+        SELECT NC.NC_CODE NC_CODE, NCT.DESCRIPTION DESCRIPTION,NG.NC_GROUP NG_GROUP,NG.DESCRIPTION NG_DESCRIPTION
+        FROM NC_CODE NC
+        LEFT JOIN NC_CODE_T NCT ON NC.HANDLE = NCT.NC_CODE_BO AND NCT.LOCALE = #{locale}
+        LEFT JOIN NC_GROUP_MEMBER NGM ON NGM.NC_CODE_OR_GROUP_GBO = NC.HANDLE
+        LEFT JOIN NC_GROUP NG ON NG.HANDLE = NGM.NC_GROUP_BO
+        <where>
+            NC.SITE = #{site} AND NG.NC_GROUP IN
+            <foreach collection="ncGroup" open="(" close=")" item="item" separator=",">
+                UPPER(#{item})
+            </foreach>
+        </where>
+    </select>
+
 </mapper>
diff --git a/meapi/src/main/resources/mapper/RouterStepMapper.xml b/meapi/src/main/resources/mapper/RouterStepMapper.xml
new file mode 100644
index 00000000..d32fa1fd
--- /dev/null
+++ b/meapi/src/main/resources/mapper/RouterStepMapper.xml
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.foreverwin.mesnac.meapi.mapper.RouterStepMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.foreverwin.mesnac.meapi.model.RouterStep">
+        <result column="HANDLE" property="handle" />
+        <result column="ROUTER_BO" property="routerBo" />
+        <result column="STEP_ID" property="stepId" />
+        <result column="DESCRIPTION" property="description" />
+        <result column="REWORK" property="rework" />
+        <result column="QUEUE_DECISION_TYPE" property="queueDecisionType" />
+        <result column="ROUTER_COMP_GBO" property="routerCompGbo" />
+        <result column="REPORTING_STEP" property="reportingStep" />
+        <result column="SEQUENCE" property="sequence" />
+        <result column="REPORTING_CENTER_BO" property="reportingCenterBo" />
+        <result column="TABULAR_STEP_TYPE" property="tabularStepType" />
+        <result column="SCRAP_REPORTING_STEP" property="scrapReportingStep" />
+        <result column="IS_LAST_REPORTING_STEP" property="isLastReportingStep" />
+        <result column="ERP_SEQUENCE" property="erpSequence" />
+        <result column="ERP_CONTROL_KEY_BO" property="erpControlKeyBo" />
+        <result column="ERP_WORK_CENTER_BO" property="erpWorkCenterBo" />
+        <result column="ERP_INSPECTION_COMPLETE" property="erpInspectionComplete" />
+        <result column="ERP_OPERATION" property="erpOperation" />
+        <result column="OPERATION_ACTIVITY_ID" property="operationActivityId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        HANDLE, ROUTER_BO, STEP_ID, DESCRIPTION, REWORK, QUEUE_DECISION_TYPE, ROUTER_COMP_GBO, REPORTING_STEP, SEQUENCE, REPORTING_CENTER_BO, TABULAR_STEP_TYPE, SCRAP_REPORTING_STEP, IS_LAST_REPORTING_STEP, ERP_SEQUENCE, ERP_CONTROL_KEY_BO, ERP_WORK_CENTER_BO, ERP_INSPECTION_COMPLETE, ERP_OPERATION, OPERATION_ACTIVITY_ID
+    </sql>
+
+    <!-- BaseMapper标准查询/修改/删除 -->
+
+    <select id="selectByMap" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"></include>
+        FROM ROUTER_STEP
+        <if test="cm!=null and !cm.isEmpty">
+            <where>
+                <foreach collection="cm.keys" item="k" separator="AND">
+                    <if test="cm[k] != null">
+                        ${k} = #{cm[${k}]}
+                    </if>
+                </foreach>
+            </where>
+        </if>
+    </select>
+
+
+    <select id="selectOne" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"></include> FROM ROUTER_STEP
+        <where>
+            <if test="ew.entity.handle!=null">
+              HANDLE=#{ew.handle}
+            </if>
+            <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+            <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+            <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+            <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+            <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+            <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+            <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+            <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+            <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+            <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+            <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+            <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+            <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+            <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+            <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+            <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+            <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+            <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+        </where>
+    </select>
+
+    <select id="selectCount" resultType="Integer">
+        SELECT COUNT(1) FROM ROUTER_STEP
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                <if test="ew.entity.handle!=null">
+                    HANDLE=#{ew.entity.handle}
+                </if>
+                <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectList" resultMap="BaseResultMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM ROUTER_STEP
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                    <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                    <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                    <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                    <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                    <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                    <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                    <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                    <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                    <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                    <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                    <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                    <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                    <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                    <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                    <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectMaps" resultType="HashMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM ROUTER_STEP
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                    <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                    <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                    <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                    <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                    <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                    <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                    <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                    <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                    <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                    <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                    <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                    <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                    <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                    <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                    <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectObjs" resultType="Object">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM ROUTER_STEP
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                    <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                    <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                    <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                    <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                    <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                    <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                    <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                    <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                    <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                    <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                    <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                    <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                    <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                    <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                    <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectPage" resultMap="BaseResultMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM ROUTER_STEP
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                    <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                    <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                    <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                    <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                    <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                    <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                    <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                    <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                    <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                    <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                    <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                    <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                    <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                    <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                    <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectMapsPage" resultType="HashMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM ROUTER_STEP
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                    <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                    <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                    <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                    <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                    <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                    <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                    <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                    <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                    <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                    <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                    <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                    <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                    <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                    <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                    <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <insert id="insert" parameterType="com.foreverwin.mesnac.meapi.model.RouterStep">
+        INSERT INTO ROUTER_STEP
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            HANDLE,
+            <if test="routerBo!=null">ROUTER_BO,</if>
+            <if test="stepId!=null">STEP_ID,</if>
+            <if test="description!=null">DESCRIPTION,</if>
+            <if test="rework!=null">REWORK,</if>
+            <if test="queueDecisionType!=null">QUEUE_DECISION_TYPE,</if>
+            <if test="routerCompGbo!=null">ROUTER_COMP_GBO,</if>
+            <if test="reportingStep!=null">REPORTING_STEP,</if>
+            <if test="sequence!=null">SEQUENCE,</if>
+            <if test="reportingCenterBo!=null">REPORTING_CENTER_BO,</if>
+            <if test="tabularStepType!=null">TABULAR_STEP_TYPE,</if>
+            <if test="scrapReportingStep!=null">SCRAP_REPORTING_STEP,</if>
+            <if test="isLastReportingStep!=null">IS_LAST_REPORTING_STEP,</if>
+            <if test="erpSequence!=null">ERP_SEQUENCE,</if>
+            <if test="erpControlKeyBo!=null">ERP_CONTROL_KEY_BO,</if>
+            <if test="erpWorkCenterBo!=null">ERP_WORK_CENTER_BO,</if>
+            <if test="erpInspectionComplete!=null">ERP_INSPECTION_COMPLETE,</if>
+            <if test="erpOperation!=null">ERP_OPERATION,</if>
+            <if test="operationActivityId!=null">OPERATION_ACTIVITY_ID,</if>
+        </trim> VALUES
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            #{handle},
+            <if test="routerBo!=null">#{routerBo},</if>
+            <if test="stepId!=null">#{stepId},</if>
+            <if test="description!=null">#{description},</if>
+            <if test="rework!=null">#{rework},</if>
+            <if test="queueDecisionType!=null">#{queueDecisionType},</if>
+            <if test="routerCompGbo!=null">#{routerCompGbo},</if>
+            <if test="reportingStep!=null">#{reportingStep},</if>
+            <if test="sequence!=null">#{sequence},</if>
+            <if test="reportingCenterBo!=null">#{reportingCenterBo},</if>
+            <if test="tabularStepType!=null">#{tabularStepType},</if>
+            <if test="scrapReportingStep!=null">#{scrapReportingStep},</if>
+            <if test="isLastReportingStep!=null">#{isLastReportingStep},</if>
+            <if test="erpSequence!=null">#{erpSequence},</if>
+            <if test="erpControlKeyBo!=null">#{erpControlKeyBo},</if>
+            <if test="erpWorkCenterBo!=null">#{erpWorkCenterBo},</if>
+            <if test="erpInspectionComplete!=null">#{erpInspectionComplete},</if>
+            <if test="erpOperation!=null">#{erpOperation},</if>
+            <if test="operationActivityId!=null">#{operationActivityId},</if>
+        </trim>
+    </insert>
+
+    <insert id="insertAllColumn" parameterType="com.foreverwin.mesnac.meapi.model.RouterStep">
+        INSERT INTO ROUTER_STEP
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <include refid="Base_Column_List"></include>
+        </trim> VALUES
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            #{handle},
+            #{routerBo},
+            #{stepId},
+            #{description},
+            #{rework},
+            #{queueDecisionType},
+            #{routerCompGbo},
+            #{reportingStep},
+            #{sequence},
+            #{reportingCenterBo},
+            #{tabularStepType},
+            #{scrapReportingStep},
+            #{isLastReportingStep},
+            #{erpSequence},
+            #{erpControlKeyBo},
+            #{erpWorkCenterBo},
+            #{erpInspectionComplete},
+            #{erpOperation},
+            #{operationActivityId},
+        </trim>
+    </insert>
+
+
+
+
+
+
+    <update id="update">
+        UPDATE ROUTER_STEP <trim prefix="SET" suffixOverrides=",">
+        <if test="et.handle!=null">HANDLE=#{et.handle},</if>
+        <if test="et.routerBo!=null">ROUTER_BO=#{et.routerBo},</if>
+        <if test="et.stepId!=null">STEP_ID=#{et.stepId},</if>
+        <if test="et.description!=null">DESCRIPTION=#{et.description},</if>
+        <if test="et.rework!=null">REWORK=#{et.rework},</if>
+        <if test="et.queueDecisionType!=null">QUEUE_DECISION_TYPE=#{et.queueDecisionType},</if>
+        <if test="et.routerCompGbo!=null">ROUTER_COMP_GBO=#{et.routerCompGbo},</if>
+        <if test="et.reportingStep!=null">REPORTING_STEP=#{et.reportingStep},</if>
+        <if test="et.sequence!=null">SEQUENCE=#{et.sequence},</if>
+        <if test="et.reportingCenterBo!=null">REPORTING_CENTER_BO=#{et.reportingCenterBo},</if>
+        <if test="et.tabularStepType!=null">TABULAR_STEP_TYPE=#{et.tabularStepType},</if>
+        <if test="et.scrapReportingStep!=null">SCRAP_REPORTING_STEP=#{et.scrapReportingStep},</if>
+        <if test="et.isLastReportingStep!=null">IS_LAST_REPORTING_STEP=#{et.isLastReportingStep},</if>
+        <if test="et.erpSequence!=null">ERP_SEQUENCE=#{et.erpSequence},</if>
+        <if test="et.erpControlKeyBo!=null">ERP_CONTROL_KEY_BO=#{et.erpControlKeyBo},</if>
+        <if test="et.erpWorkCenterBo!=null">ERP_WORK_CENTER_BO=#{et.erpWorkCenterBo},</if>
+        <if test="et.erpInspectionComplete!=null">ERP_INSPECTION_COMPLETE=#{et.erpInspectionComplete},</if>
+        <if test="et.erpOperation!=null">ERP_OPERATION=#{et.erpOperation},</if>
+        <if test="et.operationActivityId!=null">OPERATION_ACTIVITY_ID=#{et.operationActivityId},</if>
+    </trim>
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    HANDLE=#{ew.entity.handle}
+                    <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                    <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                    <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                    <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                    <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                    <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                    <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                    <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                    <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                    <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                    <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                    <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                    <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                    <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                    <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                    <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </update>
+
+
+    <delete id="deleteByMap">
+        DELETE FROM ROUTER_STEP
+        <if test="cm!=null and !cm.isEmpty">
+            <where>
+                <foreach collection="cm.keys" item="k" separator="AND">
+                    <if test="cm[k] != null">
+                        ${k} = #{cm[${k}]}
+                    </if>
+                </foreach>
+            </where>
+        </if>
+    </delete>
+
+    <delete id="delete">
+        DELETE FROM ROUTER_STEP
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.routerBo!=null"> AND ROUTER_BO=#{ew.entity.routerBo}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.description!=null"> AND DESCRIPTION=#{ew.entity.description}</if>
+                    <if test="ew.entity.rework!=null"> AND REWORK=#{ew.entity.rework}</if>
+                    <if test="ew.entity.queueDecisionType!=null"> AND QUEUE_DECISION_TYPE=#{ew.entity.queueDecisionType}</if>
+                    <if test="ew.entity.routerCompGbo!=null"> AND ROUTER_COMP_GBO=#{ew.entity.routerCompGbo}</if>
+                    <if test="ew.entity.reportingStep!=null"> AND REPORTING_STEP=#{ew.entity.reportingStep}</if>
+                    <if test="ew.entity.sequence!=null"> AND SEQUENCE=#{ew.entity.sequence}</if>
+                    <if test="ew.entity.reportingCenterBo!=null"> AND REPORTING_CENTER_BO=#{ew.entity.reportingCenterBo}</if>
+                    <if test="ew.entity.tabularStepType!=null"> AND TABULAR_STEP_TYPE=#{ew.entity.tabularStepType}</if>
+                    <if test="ew.entity.scrapReportingStep!=null"> AND SCRAP_REPORTING_STEP=#{ew.entity.scrapReportingStep}</if>
+                    <if test="ew.entity.isLastReportingStep!=null"> AND IS_LAST_REPORTING_STEP=#{ew.entity.isLastReportingStep}</if>
+                    <if test="ew.entity.erpSequence!=null"> AND ERP_SEQUENCE=#{ew.entity.erpSequence}</if>
+                    <if test="ew.entity.erpControlKeyBo!=null"> AND ERP_CONTROL_KEY_BO=#{ew.entity.erpControlKeyBo}</if>
+                    <if test="ew.entity.erpWorkCenterBo!=null"> AND ERP_WORK_CENTER_BO=#{ew.entity.erpWorkCenterBo}</if>
+                    <if test="ew.entity.erpInspectionComplete!=null"> AND ERP_INSPECTION_COMPLETE=#{ew.entity.erpInspectionComplete}</if>
+                    <if test="ew.entity.erpOperation!=null"> AND ERP_OPERATION=#{ew.entity.erpOperation}</if>
+                    <if test="ew.entity.operationActivityId!=null"> AND OPERATION_ACTIVITY_ID=#{ew.entity.operationActivityId}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </delete>
+
+    <!-- BaseMapper标准查询/修改/删除 -->
+    <select id="findRouterOperationByRouterBo" resultType="com.foreverwin.mesnac.meapi.dto.RouterStepDto">
+        SELECT
+            STEP.STEP_ID ,
+            STEP."SEQUENCE",
+            STEP.REPORTING_CENTER_BO,
+            STEP.ERP_OPERATION ,
+            OP.HANDLE AS OPERATION_BO,
+            OP.OPERATION ,
+            OPT.DESCRIPTION OPERATION_DESC
+        FROM ROUTER R
+        JOIN ROUTER_STEP STEP ON R.HANDLE = STEP.ROUTER_BO
+        JOIN ROUTER_OPERATION RO ON STEP.HANDLE = RO.ROUTER_STEP_BO
+        JOIN OPERATION OP ON 'OperationBO:' || #{site} || ',' || OP.OPERATION  || ',#' = RO.OPERATION_BO AND OP.CURRENT_REVISION = 'true'
+        JOIN OPERATION_T OPT ON OP.HANDLE = OPT.OPERATION_BO AND OPT.LOCALE = #{locale}
+        WHERE R.HANDLE = #{routerBo}
+              AND OP.SITE = #{site}
+        ORDER BY STEP."SEQUENCE"
+    </select>
+
+</mapper>
diff --git a/meapi/src/main/resources/mapper/UserGroupMapper.xml b/meapi/src/main/resources/mapper/UserGroupMapper.xml
index d960bee9..0b471f77 100644
--- a/meapi/src/main/resources/mapper/UserGroupMapper.xml
+++ b/meapi/src/main/resources/mapper/UserGroupMapper.xml
@@ -358,4 +358,9 @@
         LEFT JOIN CUSTOM_FIELDS CF2 ON CF2.HANDLE = UG.HANDLE AND CF2."ATTRIBUTE" = 'MESSAGE_NOTICE_TIME'
         WHERE UG.USER_GROUP = #{userGroup} AND UG.SITE = #{site}
     </select>
+
+    <select id="getUserGroupByUser" resultType="Integer">
+        SELECT COUNT(HANDLE)  FROM USER_GROUP_MEMBER ugm
+        WHERE  ugm.USER_OR_GROUP_GBO=#{userBO} AND USER_GROUP_BO=#{userGroupBO}
+    </select>
 </mapper>
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/controller/AccessoryLogController.java b/production/src/main/java/com/foreverwin/mesnac/production/controller/AccessoryLogController.java
new file mode 100644
index 00000000..6113085f
--- /dev/null
+++ b/production/src/main/java/com/foreverwin/mesnac/production/controller/AccessoryLogController.java
@@ -0,0 +1,128 @@
+package com.foreverwin.mesnac.production.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.foreverwin.mesnac.production.model.AccessoryLog;
+import com.foreverwin.mesnac.production.service.AccessoryLogService;
+import com.foreverwin.modular.core.util.FrontPage;
+import com.foreverwin.modular.core.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+@RestController
+@RequestMapping("/Z-ACCESSORY-LOG")
+public class AccessoryLogController {
+
+    @Autowired
+    public AccessoryLogService accessoryLogService;
+
+    /**
+    * 根据id查询
+    *
+    * @param id 主键
+    * @return
+    */
+    @ResponseBody
+    @GetMapping("/{id:.+}")
+    public R getAccessoryLogById(@PathVariable String id) {
+        return R.ok( accessoryLogService.getById(id));
+    }
+
+    /**
+     * 查询所有数据
+     *
+     * @return
+     */
+    @ResponseBody
+    @GetMapping("")
+    public R getAccessoryLogList(AccessoryLog accessoryLog){
+        List<AccessoryLog> result;
+        QueryWrapper<AccessoryLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(accessoryLog);
+        result = accessoryLogService.list(queryWrapper);
+        return R.ok(result);
+    }
+
+    /**
+     * 分页查询数据
+     *
+     * @param frontPage  分页信息
+     * @return
+     */
+    @ResponseBody
+    @GetMapping("/page")
+    public R page(FrontPage<AccessoryLog> frontPage, AccessoryLog accessoryLog){
+        IPage result;
+        QueryWrapper<AccessoryLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(accessoryLog);
+        if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) {
+            //TODO modify global query
+            queryWrapper.lambda().and(wrapper -> wrapper
+                .like(AccessoryLog::getHandle, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getSite, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getWorkCenter, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getShopOrder, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getSfc, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getOperation, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getStepId, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getResrce, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getLabel, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getBatch, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getItem, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getRevision, frontPage.getGlobalQuery())
+                .or().like(AccessoryLog::getCreateUser, frontPage.getGlobalQuery())
+    );
+        }
+        result = accessoryLogService.page(frontPage.getPagePlus(), queryWrapper);
+        return R.ok(result);
+    }
+
+    /**
+     * 新增
+     * @param accessoryLog  传递的实体
+     * @return  null 失败  实体成功
+     */
+    @PostMapping
+    public R save(@RequestBody AccessoryLog accessoryLog) {
+        return R.ok(accessoryLogService.save(accessoryLog));
+    }
+
+    /**
+     * 修改
+     * @param accessoryLog  传递的实体
+     * @return  null 失败  实体成功
+     */
+    @PutMapping
+    public R updateById(@RequestBody AccessoryLog accessoryLog) {
+        return R.ok(accessoryLogService.updateById(accessoryLog));
+    }
+
+    /**
+     * 根据id删除对象
+     * @param id  实体ID
+     * @return 0 失败  1 成功
+     */
+    @ResponseBody
+    @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}")
+    public R removeById(@PathVariable("id") String id){
+        return R.ok(accessoryLogService.removeById(id));
+    }
+
+    /**
+     * 批量删除对象
+     * @param ids 实体集合ID
+     * @return  0 失败  1 成功
+     */
+    @ResponseBody
+    @RequestMapping(method = RequestMethod.POST, value = "/delete-batch")
+    public R removeByIds(List<String> ids){
+        return R.ok(accessoryLogService.removeByIds(ids));
+    }
+}
\ No newline at end of file
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/mapper/AccessoryLogMapper.java b/production/src/main/java/com/foreverwin/mesnac/production/mapper/AccessoryLogMapper.java
new file mode 100644
index 00000000..980b27ce
--- /dev/null
+++ b/production/src/main/java/com/foreverwin/mesnac/production/mapper/AccessoryLogMapper.java
@@ -0,0 +1,18 @@
+package com.foreverwin.mesnac.production.mapper;
+
+import com.foreverwin.mesnac.production.model.AccessoryLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 辅料使用记录表 Mapper 接口
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+@Repository
+public interface AccessoryLogMapper extends BaseMapper<AccessoryLog> {
+
+}
\ No newline at end of file
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/model/AccessoryLog.java b/production/src/main/java/com/foreverwin/mesnac/production/model/AccessoryLog.java
new file mode 100644
index 00000000..a6f19ad3
--- /dev/null
+++ b/production/src/main/java/com/foreverwin/mesnac/production/model/AccessoryLog.java
@@ -0,0 +1,280 @@
+package com.foreverwin.mesnac.production.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 辅料使用记录表
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+
+@TableName("Z_ACCESSORY_LOG")
+
+public class AccessoryLog extends Model<AccessoryLog> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+   @TableId(value = "HANDLE", type = IdType.INPUT)
+   private String handle;
+    /**
+     * 站点
+     */
+   @TableField("SITE")
+   private String site;
+    /**
+     * 车间
+     */
+   @TableField("WORK_CENTER")
+   private String workCenter;
+    /**
+     * 工单
+     */
+   @TableField("SHOP_ORDER")
+   private String shopOrder;
+    /**
+     * 产品条码
+     */
+   @TableField("SFC")
+   private String sfc;
+    /**
+     * 工序
+     */
+   @TableField("OPERATION")
+   private String operation;
+    /**
+     * 步骤
+     */
+   @TableField("STEP_ID")
+   private String stepId;
+    /**
+     * 资源
+     */
+   @TableField("RESRCE")
+   private String resrce;
+    /**
+     * 标签
+     */
+   @TableField("LABEL")
+   private String label;
+    /**
+     * 批次
+     */
+   @TableField("BATCH")
+   private String batch;
+    /**
+     * 物料
+     */
+   @TableField("ITEM")
+   private String item;
+    /**
+     * 物料版本
+     */
+   @TableField("REVISION")
+   private String revision;
+    /**
+     * 使用数量
+     */
+   @TableField("QTY")
+   private Double qty;
+    /**
+     * 创建人
+     */
+   @TableField("CREATE_USER")
+   private String createUser;
+    /**
+     * 创建时间
+     */
+   @TableField("CREATED_DATE_TIME")
+   private LocalDateTime createdDateTime;
+
+
+   public String getHandle() {
+      return handle;
+   }
+
+   public void setHandle(String handle) {
+      this.handle = handle;
+   }
+
+   public String getSite() {
+      return site;
+   }
+
+   public void setSite(String site) {
+      this.site = site;
+   }
+
+   public String getWorkCenter() {
+      return workCenter;
+   }
+
+   public void setWorkCenter(String workCenter) {
+      this.workCenter = workCenter;
+   }
+
+   public String getShopOrder() {
+      return shopOrder;
+   }
+
+   public void setShopOrder(String shopOrder) {
+      this.shopOrder = shopOrder;
+   }
+
+   public String getSfc() {
+      return sfc;
+   }
+
+   public void setSfc(String sfc) {
+      this.sfc = sfc;
+   }
+
+   public String getOperation() {
+      return operation;
+   }
+
+   public void setOperation(String operation) {
+      this.operation = operation;
+   }
+
+   public String getStepId() {
+      return stepId;
+   }
+
+   public void setStepId(String stepId) {
+      this.stepId = stepId;
+   }
+
+   public String getResrce() {
+      return resrce;
+   }
+
+   public void setResrce(String resrce) {
+      this.resrce = resrce;
+   }
+
+   public String getLabel() {
+      return label;
+   }
+
+   public void setLabel(String label) {
+      this.label = label;
+   }
+
+   public String getBatch() {
+      return batch;
+   }
+
+   public void setBatch(String batch) {
+      this.batch = batch;
+   }
+
+   public String getItem() {
+      return item;
+   }
+
+   public void setItem(String item) {
+      this.item = item;
+   }
+
+   public String getRevision() {
+      return revision;
+   }
+
+   public void setRevision(String revision) {
+      this.revision = revision;
+   }
+
+   public Double getQty() {
+      return qty;
+   }
+
+   public void setQty(Double qty) {
+      this.qty = qty;
+   }
+
+   public String getCreateUser() {
+      return createUser;
+   }
+
+   public void setCreateUser(String createUser) {
+      this.createUser = createUser;
+   }
+
+   public LocalDateTime getCreatedDateTime() {
+      return createdDateTime;
+   }
+
+   public void setCreatedDateTime(LocalDateTime createdDateTime) {
+      this.createdDateTime = createdDateTime;
+   }
+
+public static final String HANDLE = "HANDLE";
+
+public static final String SITE = "SITE";
+
+public static final String WORK_CENTER = "WORK_CENTER";
+
+public static final String SHOP_ORDER = "SHOP_ORDER";
+
+public static final String SFC = "SFC";
+
+public static final String OPERATION = "OPERATION";
+
+public static final String STEP_ID = "STEP_ID";
+
+public static final String RESRCE = "RESRCE";
+
+public static final String LABEL = "LABEL";
+
+public static final String BATCH = "BATCH";
+
+public static final String ITEM = "ITEM";
+
+public static final String REVISION = "REVISION";
+
+public static final String QTY = "QTY";
+
+public static final String CREATE_USER = "CREATE_USER";
+
+public static final String CREATED_DATE_TIME = "CREATED_DATE_TIME";
+
+
+   @Override
+   protected Serializable pkVal() {
+      return this.handle;
+   }
+
+   @Override
+   public String toString() {
+      return "AccessoryLog{" +
+         "handle = " + handle +
+         ", site = " + site +
+         ", workCenter = " + workCenter +
+         ", shopOrder = " + shopOrder +
+         ", sfc = " + sfc +
+         ", operation = " + operation +
+         ", stepId = " + stepId +
+         ", resrce = " + resrce +
+         ", label = " + label +
+         ", batch = " + batch +
+         ", item = " + item +
+         ", revision = " + revision +
+         ", qty = " + qty +
+         ", createUser = " + createUser +
+         ", createdDateTime = " + createdDateTime +
+         "}";
+   }
+}
\ No newline at end of file
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/AccessoryLogService.java b/production/src/main/java/com/foreverwin/mesnac/production/service/AccessoryLogService.java
new file mode 100644
index 00000000..d2da0aaa
--- /dev/null
+++ b/production/src/main/java/com/foreverwin/mesnac/production/service/AccessoryLogService.java
@@ -0,0 +1,28 @@
+package com.foreverwin.mesnac.production.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.foreverwin.mesnac.production.model.AccessoryLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.foreverwin.modular.core.util.FrontPage;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 辅料使用记录表 服务类
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+public interface AccessoryLogService extends IService<AccessoryLog> {
+
+    /**
+     *  分页查询
+     * @param frontPage
+     * @return
+     */
+    IPage<AccessoryLog> selectPage(FrontPage<AccessoryLog> frontPage, AccessoryLog accessoryLog);
+
+    List<AccessoryLog> selectList(AccessoryLog accessoryLog);
+}
\ No newline at end of file
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/AccessoryLogServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/AccessoryLogServiceImpl.java
new file mode 100644
index 00000000..4df573e1
--- /dev/null
+++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/AccessoryLogServiceImpl.java
@@ -0,0 +1,46 @@
+package com.foreverwin.mesnac.production.service.impl;
+
+import com.foreverwin.modular.core.util.FrontPage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.foreverwin.mesnac.production.model.AccessoryLog;
+import com.foreverwin.mesnac.production.mapper.AccessoryLogMapper;
+import com.foreverwin.mesnac.production.service.AccessoryLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+/**
+ * <p>
+ * 辅料使用记录表 服务实现类
+ * </p>
+ *
+ * @author Philip
+ * @since 2021-08-12
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class AccessoryLogServiceImpl extends ServiceImpl<AccessoryLogMapper, AccessoryLog> implements AccessoryLogService {
+
+
+    @Autowired
+    private AccessoryLogMapper accessoryLogMapper;
+
+    @Override
+    public IPage<AccessoryLog> selectPage(FrontPage<AccessoryLog> frontPage, AccessoryLog accessoryLog) {
+        QueryWrapper<AccessoryLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(accessoryLog);
+        return super.page(frontPage.getPagePlus(), queryWrapper);
+    }
+
+    @Override
+    public List<AccessoryLog> selectList(AccessoryLog accessoryLog) {
+        QueryWrapper<AccessoryLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(accessoryLog);
+        return super.list(queryWrapper);
+    }
+
+
+}
\ No newline at end of file
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java
index dd317a3e..e6fe607c 100644
--- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java
+++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java
@@ -88,6 +88,9 @@ public class CutterLogServiceImpl extends ServiceImpl<CutterLogMapper, CutterLog
         String shopOrder = (String)sfcData.get("SHOP_ORDER");
         String item = (String)sfcData.get("ITEM");
         String workShopBo = commonService.getWorkShopBo(HandleEnum.RESOURCE.getHandle(site, resrce));
+        if (StringUtil.isBlank(workShopBo)) {
+            throw new BaseException("资源 " + resrce + " 未匹配到车间");
+        }
         String workShop = StringUtil.trimHandle(workShopBo);
         if(list==null||list.size()<1){
             throw new BaseException("刀具列表不能为空");
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java
index 0fb83bc6..1f9e1c00 100644
--- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java
+++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java
@@ -332,7 +332,7 @@ public class PodTemplateServiceImpl implements PodTemplateService {
             }
         }
         //报工
-        //sendErp(postMapList);
+        sendErp(postMapList);
     }
 
     public void materialConsumption(String site, String operation, String sfcBo, String stepId, String resource) {
@@ -468,7 +468,7 @@ public class PodTemplateServiceImpl implements PodTemplateService {
         struOut.setAufnr("");
         struOut.setVornr("");
         struOut.setAueru("1");
-        struOut.setLmnga(new BigDecimal(1));
+        struOut.setLmnga(BigDecimal.ZERO);
         struOut.setRet("");
         struOut.setMsg("");
         outs[0] = struOut;
diff --git a/production/src/main/resources/mapper/AccessoryLogMapper.xml b/production/src/main/resources/mapper/AccessoryLogMapper.xml
new file mode 100644
index 00000000..d1c7e4ab
--- /dev/null
+++ b/production/src/main/resources/mapper/AccessoryLogMapper.xml
@@ -0,0 +1,482 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.foreverwin.mesnac.production.mapper.AccessoryLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.foreverwin.mesnac.production.model.AccessoryLog">
+        <id column="HANDLE" property="handle" />
+        <result column="SITE" property="site" />
+        <result column="WORK_CENTER" property="workCenter" />
+        <result column="SHOP_ORDER" property="shopOrder" />
+        <result column="SFC" property="sfc" />
+        <result column="OPERATION" property="operation" />
+        <result column="STEP_ID" property="stepId" />
+        <result column="RESRCE" property="resrce" />
+        <result column="LABEL" property="label" />
+        <result column="BATCH" property="batch" />
+        <result column="ITEM" property="item" />
+        <result column="REVISION" property="revision" />
+        <result column="QTY" property="qty" />
+        <result column="CREATE_USER" property="createUser" />
+        <result column="CREATED_DATE_TIME" property="createdDateTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        HANDLE, SITE, WORK_CENTER, SHOP_ORDER, SFC, OPERATION, STEP_ID, RESRCE, LABEL, BATCH, ITEM, REVISION, QTY, CREATE_USER, CREATED_DATE_TIME
+    </sql>
+
+    <!-- BaseMapper标准查询/修改/删除 -->
+    <select id="selectById" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"></include> FROM Z_ACCESSORY_LOG WHERE HANDLE=#{handle}
+    </select>
+
+    <select id="selectByMap" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"></include>
+        FROM Z_ACCESSORY_LOG
+        <if test="cm!=null and !cm.isEmpty">
+            <where>
+                <foreach collection="cm.keys" item="k" separator="AND">
+                    <if test="cm[k] != null">
+                        ${k} = #{cm[${k}]}
+                    </if>
+                </foreach>
+            </where>
+        </if>
+    </select>
+
+    <select id="selectBatchIds" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"></include>
+        FROM Z_ACCESSORY_LOG WHERE HANDLE IN (
+        <foreach item="item" index="index" collection="coll" separator=",">#{item}
+        </foreach>)
+    </select>
+
+    <select id="selectOne" resultMap="BaseResultMap">
+        SELECT <include refid="Base_Column_List"></include> FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew.entity.handle!=null">
+              HANDLE=#{ew.handle}
+            </if>
+            <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+            <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+            <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+            <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+            <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+            <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+            <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+            <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+            <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+            <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+            <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+            <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+            <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+            <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+        </where>
+    </select>
+
+    <select id="selectCount" resultType="Integer">
+        SELECT COUNT(1) FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                <if test="ew.entity.handle!=null">
+                    HANDLE=#{ew.entity.handle}
+                </if>
+                <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectList" resultMap="BaseResultMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                    <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                    <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                    <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                    <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                    <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                    <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                    <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                    <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                    <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                    <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                    <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectMaps" resultType="HashMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                    <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                    <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                    <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                    <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                    <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                    <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                    <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                    <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                    <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                    <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                    <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectObjs" resultType="Object">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                    <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                    <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                    <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                    <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                    <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                    <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                    <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                    <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                    <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                    <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                    <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectPage" resultMap="BaseResultMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                    <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                    <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                    <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                    <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                    <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                    <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                    <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                    <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                    <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                    <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                    <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <select id="selectMapsPage" resultType="HashMap">
+        SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                    <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                    <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                    <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                    <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                    <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                    <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                    <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                    <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                    <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                    <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                    <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </select>
+
+    <insert id="insert" parameterType="com.foreverwin.mesnac.production.model.AccessoryLog">
+        INSERT INTO Z_ACCESSORY_LOG
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            HANDLE,
+            <if test="site!=null">SITE,</if>
+            <if test="workCenter!=null">WORK_CENTER,</if>
+            <if test="shopOrder!=null">SHOP_ORDER,</if>
+            <if test="sfc!=null">SFC,</if>
+            <if test="operation!=null">OPERATION,</if>
+            <if test="stepId!=null">STEP_ID,</if>
+            <if test="resrce!=null">RESRCE,</if>
+            <if test="label!=null">LABEL,</if>
+            <if test="batch!=null">BATCH,</if>
+            <if test="item!=null">ITEM,</if>
+            <if test="revision!=null">REVISION,</if>
+            <if test="qty!=null">QTY,</if>
+            <if test="createUser!=null">CREATE_USER,</if>
+            <if test="createdDateTime!=null">CREATED_DATE_TIME,</if>
+        </trim> VALUES
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            #{handle},
+            <if test="site!=null">#{site},</if>
+            <if test="workCenter!=null">#{workCenter},</if>
+            <if test="shopOrder!=null">#{shopOrder},</if>
+            <if test="sfc!=null">#{sfc},</if>
+            <if test="operation!=null">#{operation},</if>
+            <if test="stepId!=null">#{stepId},</if>
+            <if test="resrce!=null">#{resrce},</if>
+            <if test="label!=null">#{label},</if>
+            <if test="batch!=null">#{batch},</if>
+            <if test="item!=null">#{item},</if>
+            <if test="revision!=null">#{revision},</if>
+            <if test="qty!=null">#{qty},</if>
+            <if test="createUser!=null">#{createUser},</if>
+            <if test="createdDateTime!=null">#{createdDateTime},</if>
+        </trim>
+    </insert>
+
+    <insert id="insertAllColumn" parameterType="com.foreverwin.mesnac.production.model.AccessoryLog">
+        INSERT INTO Z_ACCESSORY_LOG
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <include refid="Base_Column_List"></include>
+        </trim> VALUES
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            #{handle},
+            #{site},
+            #{workCenter},
+            #{shopOrder},
+            #{sfc},
+            #{operation},
+            #{stepId},
+            #{resrce},
+            #{label},
+            #{batch},
+            #{item},
+            #{revision},
+            #{qty},
+            #{createUser},
+            #{createdDateTime},
+        </trim>
+    </insert>
+
+
+    <update id="updateById">
+        UPDATE Z_ACCESSORY_LOG <trim prefix="SET" suffixOverrides=",">
+        <if test="et.site!=null">SITE=#{et.site},</if>
+        <if test="et.workCenter!=null">WORK_CENTER=#{et.workCenter},</if>
+        <if test="et.shopOrder!=null">SHOP_ORDER=#{et.shopOrder},</if>
+        <if test="et.sfc!=null">SFC=#{et.sfc},</if>
+        <if test="et.operation!=null">OPERATION=#{et.operation},</if>
+        <if test="et.stepId!=null">STEP_ID=#{et.stepId},</if>
+        <if test="et.resrce!=null">RESRCE=#{et.resrce},</if>
+        <if test="et.label!=null">LABEL=#{et.label},</if>
+        <if test="et.batch!=null">BATCH=#{et.batch},</if>
+        <if test="et.item!=null">ITEM=#{et.item},</if>
+        <if test="et.revision!=null">REVISION=#{et.revision},</if>
+        <if test="et.qty!=null">QTY=#{et.qty},</if>
+        <if test="et.createUser!=null">CREATE_USER=#{et.createUser},</if>
+        <if test="et.createdDateTime!=null">CREATED_DATE_TIME=#{et.createdDateTime},</if>
+        </trim> WHERE HANDLE=#{et.handle} <if test="et instanceof java.util.Map"><if test="et.MP_OPTLOCK_VERSION_ORIGINAL!=null">and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}</if></if>
+    </update>
+
+
+    <update id="updateAllColumnById">
+        UPDATE Z_ACCESSORY_LOG <trim prefix="SET" suffixOverrides=",">
+        SITE=#{et.site},
+        WORK_CENTER=#{et.workCenter},
+        SHOP_ORDER=#{et.shopOrder},
+        SFC=#{et.sfc},
+        OPERATION=#{et.operation},
+        STEP_ID=#{et.stepId},
+        RESRCE=#{et.resrce},
+        LABEL=#{et.label},
+        BATCH=#{et.batch},
+        ITEM=#{et.item},
+        REVISION=#{et.revision},
+        QTY=#{et.qty},
+        CREATE_USER=#{et.createUser},
+        CREATED_DATE_TIME=#{et.createdDateTime},
+     </trim> WHERE HANDLE=#{et.handle} <if test="et instanceof java.util.Map"><if test="et.MP_OPTLOCK_VERSION_ORIGINAL!=null">and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}</if></if>
+    </update>
+
+
+    <update id="update">
+        UPDATE Z_ACCESSORY_LOG <trim prefix="SET" suffixOverrides=",">
+        <if test="et.site!=null">SITE=#{et.site},</if>
+        <if test="et.workCenter!=null">WORK_CENTER=#{et.workCenter},</if>
+        <if test="et.shopOrder!=null">SHOP_ORDER=#{et.shopOrder},</if>
+        <if test="et.sfc!=null">SFC=#{et.sfc},</if>
+        <if test="et.operation!=null">OPERATION=#{et.operation},</if>
+        <if test="et.stepId!=null">STEP_ID=#{et.stepId},</if>
+        <if test="et.resrce!=null">RESRCE=#{et.resrce},</if>
+        <if test="et.label!=null">LABEL=#{et.label},</if>
+        <if test="et.batch!=null">BATCH=#{et.batch},</if>
+        <if test="et.item!=null">ITEM=#{et.item},</if>
+        <if test="et.revision!=null">REVISION=#{et.revision},</if>
+        <if test="et.qty!=null">QTY=#{et.qty},</if>
+        <if test="et.createUser!=null">CREATE_USER=#{et.createUser},</if>
+        <if test="et.createdDateTime!=null">CREATED_DATE_TIME=#{et.createdDateTime},</if>
+    </trim>
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    HANDLE=#{ew.entity.handle}
+                    <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                    <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                    <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                    <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                    <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                    <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                    <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                    <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                    <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                    <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                    <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                    <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </update>
+
+    <delete id="deleteById">
+        DELETE FROM Z_ACCESSORY_LOG WHERE HANDLE=#{handle}
+    </delete>
+
+    <delete id="deleteByMap">
+        DELETE FROM Z_ACCESSORY_LOG
+        <if test="cm!=null and !cm.isEmpty">
+            <where>
+                <foreach collection="cm.keys" item="k" separator="AND">
+                    <if test="cm[k] != null">
+                        ${k} = #{cm[${k}]}
+                    </if>
+                </foreach>
+            </where>
+        </if>
+    </delete>
+
+    <delete id="delete">
+        DELETE FROM Z_ACCESSORY_LOG
+        <where>
+            <if test="ew!=null">
+                <if test="ew.entity!=null">
+                    <if test="ew.entity.handle!=null">
+                        HANDLE=#{ew.entity.handle}
+                    </if>
+                    <if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
+                    <if test="ew.entity.workCenter!=null"> AND WORK_CENTER=#{ew.entity.workCenter}</if>
+                    <if test="ew.entity.shopOrder!=null"> AND SHOP_ORDER=#{ew.entity.shopOrder}</if>
+                    <if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
+                    <if test="ew.entity.operation!=null"> AND OPERATION=#{ew.entity.operation}</if>
+                    <if test="ew.entity.stepId!=null"> AND STEP_ID=#{ew.entity.stepId}</if>
+                    <if test="ew.entity.resrce!=null"> AND RESRCE=#{ew.entity.resrce}</if>
+                    <if test="ew.entity.label!=null"> AND LABEL=#{ew.entity.label}</if>
+                    <if test="ew.entity.batch!=null"> AND BATCH=#{ew.entity.batch}</if>
+                    <if test="ew.entity.item!=null"> AND ITEM=#{ew.entity.item}</if>
+                    <if test="ew.entity.revision!=null"> AND REVISION=#{ew.entity.revision}</if>
+                    <if test="ew.entity.qty!=null"> AND QTY=#{ew.entity.qty}</if>
+                    <if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
+                    <if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
+                </if>
+                <if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
+                    ${ew.sqlSegment}
+                </if>
+            </if>
+        </where>
+        <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
+            ${ew.sqlSegment}
+        </if>
+    </delete>
+
+    <delete id="deleteBatchIds">
+        DELETE FROM Z_ACCESSORY_LOG WHERE HANDLE IN (
+        <foreach item="item" index="index" collection="coll" separator=",">#{item}
+        </foreach>)
+    </delete>
+    <!-- BaseMapper标准查询/修改/删除 -->
+
+</mapper>