From 03b5b8a480fb201e288486299eb385a00d2aac66 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 13 十月 2025 09:25:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/ycawdasrs-2' into ycawdasrs-2

---
 src/main/java/com/zy/asrs/entity/param/CombParam.java                     |    3 
 src/main/resources/mapper/asrs/WaitPakinMapper.xml                        |    0 
 src/main/resources/license.lic2                                           |    3 
 src/main/java/com/zy/third/entity/ExdDepartment.java                      |   70 
 src/main/resources/mapper/third/ExdMaterialMapper.xml                     |   43 
 .idea/misc.xml                                                            |    2 
 src/main/java/com/zy/asrs/task/ErrorStockScheduler.java                   |    2 
 src/main/java/com/zy/third/service/impl/ExdOutstockSourceServiceImpl.java |   18 
 src/main/resources/mapper/asrs/ApiMapper.xml                              |    0 
 src/main/resources/mapper/asrs/LocMastMapper.xml                          |    0 
 src/main/resources/mapper/asrs/ManLocDetlMapper.xml                       |    0 
 src/main/java/com/zy/third/task/handler/BaseDataHandler.java              |   82 
 src/main/resources/mapper/asrs/TagMapper.xml                              |    0 
 src/main/resources/mapper/third/ExdOutstockSourceMapper.xml               |   67 
 src/main/resources/mapper/asrs/HostMapper.xml                             |    0 
 src/main/resources/mapper/asrs/ConfigMapper.xml                           |    0 
 src/main/java/com/zy/asrs/service/LocDetlService.java                     |    4 
 src/main/java/com/zy/third/service/impl/ExdInstockSourceServiceImpl.java  |   18 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java               |  110 
 src/main/java/com/zy/third/service/impl/ExdSupplierServiceImpl.java       |   18 
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java                     |    4 
 src/main/java/com/zy/third/service/ExdOutstockSourceService.java          |   13 
 src/main/resources/mapper/asrs/WrkDetlLogMapper.xml                       |    0 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java                    |   13 
 src/main/resources/mapper/asrs/DocLogMapper.xml                           |    0 
 src/main/resources/mapper/asrs/RolePermissionMapper.xml                   |    0 
 src/main/java/com/zy/third/service/impl/ExdDepartmentServiceImpl.java     |   18 
 src/main/java/com/zy/third/service/ExdOutstockTargetService.java          |   13 
 src/main/resources/mapper/asrs/LicenseInfosMapper.xml                     |    0 
 src/main/java/com/zy/third/service/impl/ExdMaterialServiceImpl.java       |   18 
 src/main/resources/mapper/asrs/BasCrnErrorMapper.xml                      |    0 
 src/main/webapp/static/js/order/outAll.js                                 |  392 ++++
 src/main/webapp/views/order/outAll.html                                   |  314 +++
 src/main/java/com/zy/asrs/task/AutoAssignAGVTasks.java                    |   10 
 src/main/java/com/zy/third/mapper/ExdInstockSourceMapper.java             |   21 
 src/main/resources/mapper/asrs/BasCrnStatusMapper.xml                     |    0 
 src/main/resources/mapper/asrs/UserLoginMapper.xml                        |    0 
 src/main/java/com/zy/third/service/ExdMaterialService.java                |   13 
 src/main/java/com/zy/common/web/BaseController.java                       |    6 
 src/main/java/com/zy/third/entity/ExdMaterial.java                        |   75 
 src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java                |    4 
 src/main/resources/mapper/asrs/OrderDetlMapper.xml                        |   19 
 src/main/resources/mapper/asrs/WaitPakinLogMapper.xml                     |    0 
 src/main/resources/mapper/asrs/RequestLogMapper.xml                       |    0 
 src/main/resources/mapper/asrs/ResourceMapper.xml                         |    0 
 src/main/resources/mapper/asrs/PackMapper.xml                             |    0 
 src/main/java/com/zy/third/task/OrderScheduler.java                       |   99 +
 src/main/java/com/zy/asrs/mapper/MatMapper.java                           |    2 
 src/main/java/com/zy/third/mapper/ExdInstockTargetMapper.java             |   15 
 src/main/resources/mapper/asrs/BasPlcerrorMapper.xml                      |    0 
 src/main/java/com/zy/common/model/DetlDto.java                            |    6 
 src/main/java/com/zy/asrs/controller/OutController.java                   |   82 
 src/main/java/com/zy/asrs/service/MobileService.java                      |    2 
 src/main/java/com/zy/third/entity/ExdOutstockSource.java                  |  193 ++
 src/main/resources/mapper/asrs/MatMapper.xml                              |    4 
 src/main/java/com/zy/third/entity/ExdOutstockTarget.java                  |  228 ++
 src/main/java/com/zy/third/entity/ExdUser.java                            |   65 
 src/main/java/com/zy/asrs/task/OverYearLogScheduler.java                  |    2 
 src/main/resources/mapper/asrs/WrkMastMapper.xml                          |    0 
 src/main/resources/mapper/asrs/ViewInOutMapper.xml                        |    0 
 src/main/java/com/zy/third/service/ExdInstockSourceService.java           |   13 
 src/main/resources/mapper/asrs/LocDetlMapper.xml                          |   89 +
 src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java      |   38 
 src/main/resources/mapper/third/ExdSupplierMapper.xml                     |   24 
 src/main/resources/mapper/third/ExdOutstockTargetMapper.xml               |   64 
 src/main/java/com/zy/third/service/ExdInstockTargetService.java           |   13 
 src/main/resources/mapper/asrs/BasErrLogMapper.xml                        |    0 
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java              |  155 -
 src/main/resources/mapper/asrs/ApiLogMapper.xml                           |    0 
 src/main/resources/application.yml                                        |   11 
 src/main/resources/mapper/asrs/RoleMapper.xml                             |    0 
 src/main/resources/mapper/third/ExdUserMapper.xml                         |   33 
 src/main/resources/mapper/third/ExdCustomerMapper.xml                     |   24 
 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java                       |    4 
 src/main/java/com/zy/third/mapper/ExdOutstockTargetMapper.java            |   15 
 src/main/java/com/zy/third/service/impl/ExdCustomerServiceImpl.java       |   18 
 src/main/resources/mapper/asrs/RowLastnoMapper.xml                        |    0 
 src/main/resources/mapper/third/ExdInstockTargetMapper.xml                |   60 
 src/main/java/com/zy/third/mapper/ExdSupplierMapper.java                  |   15 
 src/main/java/com/zy/third/task/BaseDataScheduler.java                    |   95 +
 src/main/resources/mapper/asrs/BasWrkStatusMapper.xml                     |    0 
 src/main/resources/mapper/asrs/DocTypeMapper.xml                          |    0 
 src/main/java/com/zy/third/entity/ExdSupplier.java                        |   70 
 src/main/java/com/zy/common/config/ds/DynamicDataSource.java              |   11 
 src/main/java/com/zy/third/mapper/ExdDepartmentMapper.java                |   15 
 src/main/resources/mapper/asrs/BasWhsMapper.xml                           |    0 
 src/main/java/com/zy/common/config/ds/SecondaryDataSourceConfig.java      |   46 
 src/main/java/com/zy/third/task/handler/OrderHandler.java                 |  236 ++
 src/main/resources/mapper/asrs/OrderSettleMapper.xml                      |    0 
 src/main/resources/mapper/asrs/BasDevpMapper.xml                          |    0 
 src/main/java/com/zy/asrs/service/OrderDetlService.java                   |    4 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java               |  302 ++-
 src/main/java/com/zy/asrs/controller/MatController.java                   |    1 
 src/main/java/com/zy/third/entity/ExdEmp.java                             |   70 
 src/main/java/com/zy/asrs/service/MatService.java                         |    2 
 src/main/java/com/zy/asrs/task/NotifyLogScheduler.java                    |    2 
 src/main/java/com/zy/common/config/ds/PrimaryDataSourceConfig.java        |   40 
 src/main/resources/mapper/asrs/WrkLastnoMapper.xml                        |    0 
 src/main/java/com/zy/common/config/ds/DataSourceType.java                 |   32 
 src/main/resources/mapper/asrs/TrayCodeMapper.xml                         |    0 
 src/main/resources/mapper/asrs/SaasLogMapper.xml                          |    0 
 src/main/java/com/zy/asrs/task/WorkMastScheduler.java                     |    4 
 src/main/resources/mapper/asrs/BasWrkIotypeMapper.xml                     |    0 
 src/main/resources/mapper/asrs/WrkMastLogMapper.xml                       |    0 
 src/main/resources/mapper/asrs/LocCheckMapper.xml                         |    0 
 src/main/resources/mapper/asrs/OperateLogMapper.xml                       |    0 
 src/main/java/com/zy/third/service/ExdUserService.java                    |   13 
 src/main/resources/mapper/asrs/BasCrnpMapper.xml                          |    0 
 src/main/webapp/views/user/user.html                                      |   12 
 src/main/java/com/zy/third/service/impl/ExdUserServiceImpl.java           |   18 
 src/main/resources/mapper/asrs/StkPlcmMapper.xml                          |    0 
 src/main/java/com/zy/third/service/ExdCustomerService.java                |   13 
 src/main/java/com/zy/third/service/ExdDepartmentService.java              |   13 
 src/main/java/com/zy/third/service/ExdSupplierService.java                |   13 
 src/main/java/com/zy/third/mapper/ExdCustomerMapper.java                  |   15 
 src/main/resources/license.lic                                            |    0 
 src/main/java/com/zy/common/config/ds/DataSourceConfig.java               |   54 
 src/main/java/com/zy/third/mapper/ExdUserMapper.java                      |   18 
 src/main/resources/mapper/asrs/ViewStayTimeMapper.xml                     |    0 
 src/main/resources/mapper/asrs/AdjDetlMapper.xml                          |    0 
 src/main/resources/mapper/asrs/StaDescMapper.xml                          |    0 
 src/main/resources/mapper/asrs/PermissionMapper.xml                       |    0 
 src/main/resources/mapper/asrs/RoleResourceMapper.xml                     |    0 
 src/main/java/com/zy/third/mapper/ExdOutstockSourceMapper.java            |   21 
 src/main/java/com/zy/third/service/impl/ExdEmpServiceImpl.java            |   18 
 src/main/java/com/zy/third/entity/ExdCustomer.java                        |   70 
 src/main/java/com/zy/asrs/controller/WorkController.java                  |    4 
 src/main/java/com/zy/asrs/task/PlcLogScheduler.java                       |    2 
 src/main/resources/mapper/asrs/BasCrnOptMapper.xml                        |    0 
 src/main/java/com/zy/third/entity/ExdInstockTarget.java                   |  223 ++
 src/main/java/com/zy/third/entity/ExdInstockSource.java                   |  183 ++
 src/main/java/com/zy/third/service/impl/ExdInstockTargetServiceImpl.java  |   18 
 src/main/webapp/static/js/order/out.js                                    |    4 
 src/main/java/com/zy/asrs/task/CheckDeepScheduler.java                    |    2 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java             |   93 
 src/main/java/com/zy/third/entity/ExdvYanbu.java                          |  201 ++
 src/main/java/com/zy/third/service/impl/ExdOutstockTargetServiceImpl.java |   18 
 src/main/java/com/zy/third/service/ExdEmpService.java                     |   13 
 src/main/webapp/static/js/user/user.js                                    |    2 
 src/main/resources/com/zy/third/mapper/ExdvYanbuMapper.xml                |   14 
 src/main/resources/mapper/asrs/BasLocStsMapper.xml                        |    0 
 src/main/resources/mapper/third/ExdInstockSourceMapper.xml                |   64 
 src/main/java/com/zy/asrs/service/WorkService.java                        |   12 
 src/main/resources/mapper/asrs/WrkDetlMapper.xml                          |    0 
 src/main/java/com/zy/third/mapper/ExdMaterialMapper.java                  |   22 
 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java            |    5 
 src/main/resources/mapper/third/ExdDepartmentMapper.xml                   |   24 
 src/main/resources/mapper/third/ExdEmpMapper.xml                          |   24 
 src/main/java/com/zy/asrs/controller/MobileController.java                |  408 ++--
 src/main/java/com/zy/third/mapper/ExdEmpMapper.java                       |   15 
 src/main/java/com/zy/common/config/ds/DataSourceAop.java                  |   27 
 src/main/resources/mapper/asrs/ViewStockUseMapper.xml                     |    0 
 src/main/resources/mapper/asrs/ViewWorkInMapper.xml                       |    0 
 src/main/resources/mapper/asrs/NodeMapper.xml                             |    0 
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java          |   24 
 src/main/java/com/zy/asrs/task/WorkLogScheduler.java                      |    2 
 src/main/resources/mapper/asrs/OrderMapper.xml                            |    2 
 src/main/resources/mapper/asrs/UserMapper.xml                             |    0 
 158 files changed, 4,771 insertions(+), 490 deletions(-)

diff --git a/.idea/misc.xml b/.idea/misc.xml
index afca537..1035788 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -14,7 +14,7 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index 41e0df1..e179e04 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -108,6 +108,7 @@
         return R.ok(matService.selectOne(new EntityWrapper<Mat>().eq("matnr", matnr)));
     }
 
+
     @RequestMapping(value = "/mat/list/auth")
     @ManagerAuth
     public R list(@RequestParam(defaultValue = "1") Integer curr,
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index aaf62cd..d16713a 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -3,12 +3,11 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.R;
-import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
@@ -16,13 +15,13 @@
 import com.zy.asrs.entity.result.MobileAdjustResult;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
-import com.zy.common.model.LocDto;
-import com.zy.common.model.TaskDto;
 import com.zy.common.model.WrkDto;
 import com.zy.common.utils.HttpHandler;
 import com.zy.common.web.BaseController;
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
+import com.zy.third.entity.ExdvYanbu;
+import com.zy.third.mapper.ExdMaterialMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -40,7 +39,7 @@
 @Slf4j
 @RestController
 @RequestMapping("mobile")
-public class MobileController extends BaseController  {
+public class MobileController extends BaseController {
 
     @Autowired
     private MobileService mobileService;
@@ -80,21 +79,24 @@
     @Autowired
     private ConfigService configService;
 
+    @Autowired
+    private ExdMaterialMapper exdMaterialMapper;
+
     // 鍟嗗搧涓婃灦
     @RequestMapping("/mat/onSale/auth")
     @ManagerAuth
-    public R matOnSale(@RequestBody CombParam combParam){
+    public R matOnSale(@RequestBody CombParam combParam) {
         mobileService.onSale(combParam);
         return R.ok("涓婃灦鎴愬姛");
     }
+
     // 鍟嗗搧涓嬫灦
     @RequestMapping("/mat/offSale/auth")
     //@ManagerAuth
-    public R matOffSale(@RequestBody OffSaleParam offSaleParam){
+    public R matOffSale(@RequestBody OffSaleParam offSaleParam) {
         mobileService.offSale(offSaleParam);
         return R.ok("涓嬫灦鎴愬姛");
     }
-
 
 
     // 缁勬墭 ----------------------------------------------------------------------------------------------------
@@ -105,7 +107,7 @@
      */
     @RequestMapping("/order/search/orderNo/auth")
     @ManagerAuth
-    public R orderSearchByBarcode(@RequestParam String orderNo){
+    public R orderSearchByBarcode(@RequestParam String orderNo) {
         Order order = orderService.selectByNo(orderNo);
         if (order == null) {
             return R.ok();
@@ -126,14 +128,14 @@
 
     @RequestMapping("/comb/auth")
     @ManagerAuth(memo = "缁勬墭")
-    public R comb(@RequestBody CombParam combParam){
-        mobileService.comb(combParam, getUserId());
+    public R comb(@RequestBody CombParam combParam) {
+        mobileService.comb(combParam, getUserId(), getUser().getEmail());
         return R.ok("缁勬墭鎴愬姛");
     }
 
     @RequestMapping("/pack/get/auth")
     @ManagerAuth
-    public R packGet(@RequestParam String barcode){
+    public R packGet(@RequestParam String barcode) {
         Pack pack = packService.selectByBarcode(barcode);
         if (pack == null) {
             return R.ok();
@@ -146,7 +148,7 @@
 
     @RequestMapping("/pack/comb/auth")
     @ManagerAuth(memo = "涓嬬嚎缁勬墭")
-    public R packComb(@RequestBody CombParam combParam){
+    public R packComb(@RequestBody CombParam combParam) {
         mobileService.packComb(combParam, getUserId());
         return R.ok("缁勬墭鎴愬姛");
     }
@@ -159,7 +161,7 @@
     @Deprecated
     public R pakoutQuery(@RequestParam(required = false) String barcode,
                          @RequestParam(required = false) Integer staNo,
-                         @RequestParam(required = false) String matnr){
+                         @RequestParam(required = false) String matnr) {
         if (Cools.isEmpty(barcode) && Cools.isEmpty(matnr)) {
             return R.ok();
         }
@@ -183,7 +185,7 @@
      */
     @RequestMapping("/pakout/confirm/barcode/auth")
     @ManagerAuth
-    public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode){
+    public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode) {
         if (Cools.isEmpty(barcode)) {
             return R.ok();
         }
@@ -200,7 +202,7 @@
     // 鏍规嵁搴撲綅鐮佸拰鍟嗗搧鐮佹悳绱㈠晢鍝�
     @RequestMapping("/mat/find/auth")
     public R find(@RequestParam(required = false) String locNo
-            , @RequestParam(required = false) String matnr){
+            , @RequestParam(required = false) String matnr) {
         //List<ManLocDetl> manLocDetls = manLocDetlMapper.selectItem0(locNo, matnr);
         ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(locNo, matnr);
         return R.ok(manLocDetl);
@@ -213,7 +215,7 @@
     @RequestMapping("/pakout/confirm/pick/auth")
     @ManagerAuth
     public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo
-                                , @RequestParam(required = false) String matnr){
+            , @RequestParam(required = false) String matnr) {
         if (Cools.isEmpty(wrkNo)) {
             return R.ok();
         }
@@ -279,9 +281,9 @@
                 for (WrkDetl wrkDetl : dto.getWrkDetls()) {
                     wrkDetlService.updateInspect(wrkDetl.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                 }
-                if(wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) {
+                if (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) {
                     wrkMast.setWrkSts(34L);//涓嬫灦瀹屾垚绛夊緟鍥炲簱
-                }else {
+                } else {
                     wrkMast.setWrkSts(15L);
                 }
                 wrkMastService.updateById(wrkMast);
@@ -340,7 +342,7 @@
 
     @RequestMapping("/adjust/auth")
     @ManagerAuth(memo = "鐩樼偣")
-    public R adjust(@RequestBody MobileAdjustParam combParam){
+    public R adjust(@RequestBody MobileAdjustParam combParam) {
         mobileService.adjust(combParam, getUserId());
         return R.ok("鐩樼偣鎴愬姛");
     }
@@ -348,10 +350,10 @@
     @PostMapping("/order/out/pakout/auth")
     @ManagerAuth(memo = "璁㈠崟鍑哄簱")
     public synchronized R pakoutByOrder(@RequestBody JSONObject param) {
-        if(!param.containsKey("staNo") || !param.containsKey("orderNo")){
+        if (!param.containsKey("staNo") || !param.containsKey("orderNo")) {
             return R.parse(BaseRes.PARAM);
         }
-        mobileService.pakoutByOrder(param,getUserId());
+        mobileService.pakoutByOrder(param, getUserId());
         return R.ok("鍑哄簱鎴愬姛");
     }
 
@@ -359,38 +361,39 @@
 
     /**
      * 琛ョ┖鏉�   鍖哄煙鍒扮偣
+     *
      * @param locNo 鐩爣绔欑偣
      * @param size  鎵樼洏澶у皬 1锛氬皬鎵樼洏  2锛氬ぇ鎵樼洏
      * @return
      */
     @RequestMapping("/FillEmptyPallets")
     public synchronized R FillEmptyPallets(@RequestParam(required = false) String locNo
-            ,@RequestParam(required = false) String size){
+            , @RequestParam(required = false) String size) {
         if (Cools.isEmpty(locNo) || Cools.isEmpty(size)) {
             return R.error("绔欑偣鎴栬�呭ぇ灏忎笉鑳戒负绌�");
 
         }
         //绌烘墭鐩樼紦鍐插尯 灏忥細E8  澶э細E9
-        String rStaNo ="E8";
-        if(size.equals("2")){
+        String rStaNo = "E8";
+        if (size.equals("2")) {
             rStaNo = "E9";
         }
-        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
+        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
         rcsParam.put("taskType", "PF-FMR-COMMON");
-        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
-        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
-        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
+        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
+        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
+        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
         t1.put("seq", 0);
-        t1.put("type","ZONE");
+        t1.put("type", "ZONE");
         t1.put("code", rStaNo);
-        t1.put("autoStart",0);
-        t1.put("operation","COLLECT");
+        t1.put("autoStart", 0);
+        t1.put("operation", "COLLECT");
 
         t2.put("seq", 0);
-        t2.put("type","SITE");
+        t2.put("type", "SITE");
         t2.put("code", locNo);
-        t2.put("autoStart",0);
-        t2.put("operation","DELIVERY");
+        t2.put("autoStart", 0);
+        t2.put("operation", "DELIVERY");
 
         targetRoutes.add(t1);
         targetRoutes.add(t2);
@@ -398,18 +401,18 @@
         rcsParam.put("initPriority", 100);
 
 
-        String response ="";
-        Boolean bool =false;
+        String response = "";
+        Boolean bool = false;
         String msg = "";
-        HashMap<String,Object> map = new HashMap<>();
+        HashMap<String, Object> map = new HashMap<>();
         Date date = new Date();
-        String time = date.getTime()+"";
+        String time = date.getTime() + "";
 
         map.put("X-LR-REQUEST-ID", time);
         try {
             log.info("wms娲惧彂鎼繍浠诲姟缁橝GV鎼繍={}", rcsParam);
             response = new HttpHandler.Builder()
-                     .setHeaders(map)
+                    .setHeaders(map)
                     .setUri(url)
                     .setHttps(true)
                     .setPath(attrcs)
@@ -417,10 +420,10 @@
                     .build()
                     .doPostCloseSSL();
             JSONObject jsonObject = JSON.parseObject(response);
-            if(jsonObject.getString("code").equals("SUCCESS")){
+            if (jsonObject.getString("code").equals("SUCCESS")) {
                 bool = true;
-            }else{
-                msg=jsonObject.getString("message");
+            } else {
+                msg = jsonObject.getString("message");
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -436,9 +439,9 @@
             );
         }
 
-        if(bool){
+        if (bool) {
             return R.ok();
-        }else {
+        } else {
             return R.error(msg);
         }
 
@@ -446,22 +449,44 @@
 
     /**
      * 绌烘墭鐩樺洖搴�
+     *
      * @param sourceStaNo 鍘熺珯鐐�
-     * @param barcode  鎵樼洏澶у皬 1锛氬皬鎵樼洏  2锛氬ぇ鎵樼洏  鐩爣鍖烘垨鑰呭贩閬�
+     * @param barcode     鎵樼洏澶у皬 1锛氬皬鎵樼洏  2锛氬ぇ鎵樼洏  鐩爣鍖烘垨鑰呭贩閬�
      * @return
      */
     @RequestMapping("/FillEmptyPalletsStack")
     public synchronized R FillEmptyPalletsStack(@RequestParam(required = false) String sourceStaNo
-            ,@RequestParam(required = false) String barcode){
+            , @RequestParam(required = false) String barcode) {
         if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(barcode)) {
             return R.error("绔欑偣鎴栬�呭ぇ灏忎笉鑳戒负绌�");
 
         }
         //绌烘墭鐩樼紦鍐插尯 灏忥細E8  澶э細E9
+        String rStaNo = "E8";
+        if (barcode.substring(0, 1).equals("9")) {
         String rStaNo ="E8";
         String type ="ZONE"; //鍖哄煙
         if(barcode.substring(0,1).equals("9")){
             rStaNo = "E9";
+        }
+        String type = "ZONE"; //鍖哄煙
+        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoE").eq("status", "1"));
+        if (config != null) {
+            type = "STACK"; //宸烽亾
+            if (Cools.isEmpty(config.getValue())) {
+                rStaNo = rStaNo + "01";
+                config.setValue("2");
+            } else if (config.getValue().equals("1")) {
+                rStaNo = rStaNo + "01";
+                config.setValue("2");
+            } else if (config.getValue().equals("2")) {
+                rStaNo = rStaNo + "02";
+                config.setValue("3");
+            } else if (config.getValue().equals("3")) {
+                rStaNo = rStaNo + "03";
+                config.setValue("1");
+            }
+            configService.updateById(config);
         }else{
             Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoE").eq("status", "1"));
 
@@ -484,24 +509,22 @@
             }
         }
 
-
-
-        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
+        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
         rcsParam.put("taskType", "PF-FMR-COMMON");
-        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
-        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
-        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
+        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
+        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
+        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
         t1.put("seq", 0);
-        t1.put("type","SITE");
+        t1.put("type", "SITE");
         t1.put("code", sourceStaNo);
-        t1.put("autoStart",0);
-        t1.put("operation","COLLECT");
+        t1.put("autoStart", 0);
+        t1.put("operation", "COLLECT");
 
         t2.put("seq", 0);
-        t2.put("type",type);
+        t2.put("type", type);
         t2.put("code", rStaNo);
-        t2.put("autoStart",0);
-        t2.put("operation","DELIVERY");
+        t2.put("autoStart", 0);
+        t2.put("operation", "DELIVERY");
 
         targetRoutes.add(t1);
         targetRoutes.add(t2);
@@ -509,12 +532,12 @@
         rcsParam.put("initPriority", 100);
 
 
-        String response ="";
-        Boolean bool =false;
+        String response = "";
+        Boolean bool = false;
         String msg = "";
-        HashMap<String,Object> map = new HashMap<>();
+        HashMap<String, Object> map = new HashMap<>();
         Date date = new Date();
-        String time = date.getTime()+"";
+        String time = date.getTime() + "";
 
         map.put("X-LR-REQUEST-ID", time);
         try {
@@ -528,10 +551,10 @@
                     .build()
                     .doPostCloseSSL();
             JSONObject jsonObject = JSON.parseObject(response);
-            if(jsonObject.getString("code").equals("SUCCESS")){
+            if (jsonObject.getString("code").equals("SUCCESS")) {
                 bool = true;
-            }else{
-                msg=jsonObject.getString("message");
+            } else {
+                msg = jsonObject.getString("message");
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -547,9 +570,9 @@
             );
         }
 
-        if(bool){
+        if (bool) {
             return R.ok();
-        }else {
+        } else {
             return R.error(msg);
         }
 
@@ -558,39 +581,40 @@
 
     /**
      * 鎵ц绉诲簱浠诲姟--鐐瑰埌鐐�
+     *
      * @param sourceStaNo
      * @param staNo
      * @return
      */
     @RequestMapping("/SITESITEAGVMove")
     public synchronized R SITESITEAGVMove(@RequestParam(required = false) String sourceStaNo
-            ,@RequestParam(required = false) String staNo
-            ,@RequestParam(required = false) String taskNo){
+            , @RequestParam(required = false) String staNo
+            , @RequestParam(required = false) String taskNo) {
         if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
             return R.error("婧愮珯鐐瑰拰鐩爣绔欑偣涓嶈兘涓虹┖");
 
         }
 
-        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
+        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
         rcsParam.put("taskType", "PF-FMR-COMMON");
-        if(!Cools.isEmpty(taskNo)){
+        if (!Cools.isEmpty(taskNo)) {
             rcsParam.put("robotTaskCode", taskNo);
         }
 
-        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
-        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
-        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
+        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
+        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
+        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
         t1.put("seq", 0);
-        t1.put("type","SITE");
+        t1.put("type", "SITE");
         t1.put("code", sourceStaNo);
-        t1.put("autoStart",0);
-        t1.put("operation","COLLECT");
+        t1.put("autoStart", 0);
+        t1.put("operation", "COLLECT");
 
         t2.put("seq", 0);
-        t2.put("type","SITE");
+        t2.put("type", "SITE");
         t2.put("code", staNo);
-        t2.put("autoStart",0);
-        t2.put("operation","DELIVERY");
+        t2.put("autoStart", 0);
+        t2.put("operation", "DELIVERY");
 
         targetRoutes.add(t1);
         targetRoutes.add(t2);
@@ -598,12 +622,12 @@
         rcsParam.put("initPriority", 100);
 
 
-        String response ="";
-        Boolean bool =false;
+        String response = "";
+        Boolean bool = false;
         String msg = "";
-        HashMap<String,Object> map = new HashMap<>();
+        HashMap<String, Object> map = new HashMap<>();
         Date date = new Date();
-        String time = date.getTime()+"";
+        String time = date.getTime() + "";
 
         map.put("X-LR-REQUEST-ID", time);
         try {
@@ -617,10 +641,10 @@
                     .build()
                     .doPostCloseSSL();
             JSONObject jsonObject = JSON.parseObject(response);
-            if(jsonObject.getString("code").equals("SUCCESS")){
+            if (jsonObject.getString("code").equals("SUCCESS")) {
                 bool = true;
-            }else{
-                msg=jsonObject.getString("message");
+            } else {
+                msg = jsonObject.getString("message");
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -636,9 +660,9 @@
             );
         }
 
-        if(bool){
+        if (bool) {
             return R.ok();
-        }else {
+        } else {
             return R.error(msg);
         }
 
@@ -646,38 +670,39 @@
 
     /**
      * 鎵ц绉诲簱浠诲姟--鐐瑰埌鍖哄煙
+     *
      * @param sourceStaNo
      * @param staNo
      * @return
      */
     @RequestMapping("/SITEZONEAGVMove")
     public synchronized R SITEZONEAGVMove(@RequestParam(required = false) String sourceStaNo
-            ,@RequestParam(required = false) String staNo
-            ,@RequestParam(required = false) String taskNo){
+            , @RequestParam(required = false) String staNo
+            , @RequestParam(required = false) String taskNo) {
         if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
             return R.error("婧愮珯鐐瑰拰鐩爣绔欑偣涓嶈兘涓虹┖");
 
         }
-        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
+        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
         rcsParam.put("taskType", "PF-FMR-COMMON");
-        if(!Cools.isEmpty(taskNo)){
+        if (!Cools.isEmpty(taskNo)) {
             rcsParam.put("robotTaskCode", taskNo);
         }
 
-        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
-        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
-        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
+        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
+        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
+        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
         t1.put("seq", 0);
-        t1.put("type","SITE");
+        t1.put("type", "SITE");
         t1.put("code", sourceStaNo);
-        t1.put("autoStart",0);
-        t1.put("operation","COLLECT");
+        t1.put("autoStart", 0);
+        t1.put("operation", "COLLECT");
 
         t2.put("seq", 0);
-        t2.put("type","ZONE");
+        t2.put("type", "ZONE");
         t2.put("code", staNo);
-        t2.put("autoStart",0);
-        t2.put("operation","DELIVERY");
+        t2.put("autoStart", 0);
+        t2.put("operation", "DELIVERY");
 
         targetRoutes.add(t1);
         targetRoutes.add(t2);
@@ -685,12 +710,12 @@
         rcsParam.put("initPriority", 100);
 
 
-        String response ="";
-        Boolean bool =false;
+        String response = "";
+        Boolean bool = false;
         String msg = "";
-        HashMap<String,Object> map = new HashMap<>();
+        HashMap<String, Object> map = new HashMap<>();
         Date date = new Date();
-        String time = date.getTime()+"";
+        String time = date.getTime() + "";
 
         map.put("X-LR-REQUEST-ID", time);
         try {
@@ -704,10 +729,10 @@
                     .build()
                     .doPostCloseSSL();
             JSONObject jsonObject = JSON.parseObject(response);
-            if(jsonObject.getString("code").equals("SUCCESS")){
+            if (jsonObject.getString("code").equals("SUCCESS")) {
                 bool = true;
-            }else{
-                msg=jsonObject.getString("message");
+            } else {
+                msg = jsonObject.getString("message");
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -723,9 +748,9 @@
             );
         }
 
-        if(bool){
+        if (bool) {
             return R.ok();
-        }else {
+        } else {
             return R.error(msg);
         }
 
@@ -733,38 +758,39 @@
 
     /**
      * 鎵ц绉诲簱浠诲姟--鍖哄煙鍒扮偣
+     *
      * @param sourceStaNo
      * @param staNo
      * @return
      */
     @RequestMapping("/ZONESITEAGVMove")
     public synchronized R ZONESITEAGVMove(@RequestParam(required = false) String sourceStaNo
-            ,@RequestParam(required = false) String staNo
-            ,@RequestParam(required = false) String taskNo){
+            , @RequestParam(required = false) String staNo
+            , @RequestParam(required = false) String taskNo) {
         if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
             return R.error("婧愮珯鐐瑰拰鐩爣绔欑偣涓嶈兘涓虹┖");
 
         }
-        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
+        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
         rcsParam.put("taskType", "PF-FMR-COMMON");
-        if(!Cools.isEmpty(taskNo)){
+        if (!Cools.isEmpty(taskNo)) {
             rcsParam.put("robotTaskCode", taskNo);
         }
 
-        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
-        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
-        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
+        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
+        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
+        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
         t1.put("seq", 0);
-        t1.put("type","ZONE");
+        t1.put("type", "ZONE");
         t1.put("code", sourceStaNo);
-        t1.put("autoStart",0);
-        t1.put("operation","COLLECT");
+        t1.put("autoStart", 0);
+        t1.put("operation", "COLLECT");
 
         t2.put("seq", 0);
-        t2.put("type","SITE");
+        t2.put("type", "SITE");
         t2.put("code", staNo);
-        t2.put("autoStart",0);
-        t2.put("operation","DELIVERY");
+        t2.put("autoStart", 0);
+        t2.put("operation", "DELIVERY");
 
         targetRoutes.add(t1);
         targetRoutes.add(t2);
@@ -772,12 +798,12 @@
         rcsParam.put("initPriority", 100);
 
 
-        String response ="";
-        Boolean bool =false;
+        String response = "";
+        Boolean bool = false;
         String msg = "";
-        HashMap<String,Object> map = new HashMap<>();
+        HashMap<String, Object> map = new HashMap<>();
         Date date = new Date();
-        String time = date.getTime()+"";
+        String time = date.getTime() + "";
 
         map.put("X-LR-REQUEST-ID", time);
         try {
@@ -791,10 +817,10 @@
                     .build()
                     .doPostCloseSSL();
             JSONObject jsonObject = JSON.parseObject(response);
-            if(jsonObject.getString("code").equals("SUCCESS")){
+            if (jsonObject.getString("code").equals("SUCCESS")) {
                 bool = true;
-            }else{
-                msg=jsonObject.getString("message");
+            } else {
+                msg = jsonObject.getString("message");
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -810,9 +836,9 @@
             );
         }
 
-        if(bool){
+        if (bool) {
             return R.ok();
-        }else {
+        } else {
             return R.error(msg);
         }
 
@@ -820,54 +846,55 @@
 
     /**
      * AGV绔欑偣缁戝畾鍜岃В缁�
-     * @param sourceStaNo   //绔欑偣
-     * @param barcodeType   //鎵樼洏鐮�
-     * @param invoke        //BIND涓虹粦瀹�    UNBIND涓鸿В缁�
+     *
+     * @param sourceStaNo //绔欑偣
+     * @param barcodeType //鎵樼洏鐮�
+     * @param invoke      //BIND涓虹粦瀹�    UNBIND涓鸿В缁�
      * @return
      */
     @RequestMapping("/siteBindAndUnbind")
     public synchronized R siteBindAndUnbind(@RequestParam(required = false) String sourceStaNo
-            ,@RequestParam(required = false) String barcodeType
-            ,@RequestParam(required = false) String invoke){
+            , @RequestParam(required = false) String barcodeType
+            , @RequestParam(required = false) String invoke) {
         if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(barcodeType)) {
             return R.error("绔欑偣鍜屾墭鐩樼被鍨嬩笉鑳戒负绌�");
 
         }
-        if(barcodeType.substring(0,1).equals("8")){
-            barcodeType="11";
-        }else if(barcodeType.substring(0,1).equals("9")){
-            barcodeType="21";
+        if (barcodeType.substring(0, 1).equals("8")) {
+            barcodeType = "11";
+        } else if (barcodeType.substring(0, 1).equals("9")) {
+            barcodeType = "21";
         }
-        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
+        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
         rcsParam.put("slotCategory", "SITE");
         rcsParam.put("slotCode", sourceStaNo);
         rcsParam.put("carrierCategory", "PALLET");
         rcsParam.put("carrierType", barcodeType);//11涓哄皬鎵樼洏   21涓哄ぇ鎵樼洏
-if(sourceStaNo.equals("101")){
-    rcsParam.put("carrierDir","0");
-}else  if(sourceStaNo.equals("R01")||sourceStaNo.equals("R03")){
-    rcsParam.put("carrierDir","-90");
+        if (sourceStaNo.equals("101")) {
+            rcsParam.put("carrierDir", "0");
+        } else if (sourceStaNo.equals("R01") || sourceStaNo.equals("R03")) {
+            rcsParam.put("carrierDir", "-90");
 
-    }else  if(sourceStaNo.equals("R02")){
-    rcsParam.put("carrierDir","90");
-}else {
-    rcsParam.put("carrierDir","180");
-}
+        } else if (sourceStaNo.equals("R02")) {
+            rcsParam.put("carrierDir", "90");
+        } else {
+            rcsParam.put("carrierDir", "180");
+        }
 
         rcsParam.put("temporary", "");
         rcsParam.put("invoke", invoke);
 
 
-        String response ="";
-        Boolean bool =false;
+        String response = "";
+        Boolean bool = false;
         String msg = "";
-        HashMap<String,Object> map = new HashMap<>();
+        HashMap<String, Object> map = new HashMap<>();
         Date date = new Date();
-        String time = date.getTime()+"";
+        String time = date.getTime() + "";
 
         map.put("X-LR-REQUEST-ID", time);
         try {
-            log.info("WMS瀹屾垚"+invoke+"agv绔欑偣={},涓婃姤鍙傛暟涓�={}",sourceStaNo,rcsParam);
+            log.info("WMS瀹屾垚" + invoke + "agv绔欑偣={},涓婃姤鍙傛暟涓�={}", sourceStaNo, rcsParam);
             response = new HttpHandler.Builder()
                     .setHeaders(map)
                     .setUri(url)
@@ -877,16 +904,16 @@
                     .build()
                     .doPostCloseSSL();
             JSONObject jsonObject = JSON.parseObject(response);
-            if(jsonObject.getString("code").equals("SUCCESS")){
+            if (jsonObject.getString("code").equals("SUCCESS")) {
                 bool = true;
-            }else{
-                msg=jsonObject.getString("message");
+            } else {
+                msg = jsonObject.getString("message");
             }
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("WMS瀹屾垚"+invoke+"agv绔欑偣澶辫触={}", response);
+            log.error("WMS瀹屾垚" + invoke + "agv绔欑偣澶辫触={}", response);
         } finally {
-            apiLogService.save("WMS瀹屾垚"+invoke+"agv绔欑偣"+sourceStaNo
+            apiLogService.save("WMS瀹屾垚" + invoke + "agv绔欑偣" + sourceStaNo
                     , url + siteBindAndUnbing
                     , null
                     , "127.0.0.1"
@@ -896,9 +923,9 @@
             );
         }
 
-        if(bool){
+        if (bool) {
             return R.ok();
-        }else {
+        } else {
             return R.error(msg);
         }
 
@@ -906,36 +933,37 @@
 
     /**
      * 绌烘澘鍥炲簱鎴栬�呮嫞鏂欏洖搴�
+     *
      * @param sourceStaNo
      * @param staNo
      * @return
      */
     @RequestMapping("/AGVStartReturn")
     public synchronized R AGVStartReturn(@RequestParam(required = false) String sourceStaNo
-            ,@RequestParam(required = false) String staNo
-            ,@RequestParam(required = false) String taskNo){
+            , @RequestParam(required = false) String staNo
+            , @RequestParam(required = false) String taskNo) {
         if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
             return R.error("婧愮珯鐐瑰拰鎵樼洏鐮佷笉鑳戒负绌�");
 
         }
 
-        R r=R.ok();
+        R r = R.ok();
 
-        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", staNo).in("io_type",103,105,107));
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", staNo).in("io_type", 103, 105, 107));
         if (wrkMast == null) {
-            r=FillEmptyPalletsStack(sourceStaNo,staNo);
-        }else {
-            if (wrkMast.getWrkSts()>30){
+            r = FillEmptyPalletsStack(sourceStaNo, staNo);
+        } else {
+            if (wrkMast.getWrkSts() > 30) {
                 return R.error("璇ユ墭鐩�={},娌℃湁涓嬫灦锛岃涓嬫灦鍚庡啀鍥炲簱锛侊紒锛�");
             }
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).in("io_type",101,103,105,107).lt("wrk_sts", 33));
-            if (!Cools.isEmpty(wrkMasts)){
-                return R.error(wrkMast.getCrnNo()+"鍫嗗灈鏈�,鏈夊嚭搴撲换鍔★紝绂佹鍥炲簱锛侊紒锛�");
+            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).in("io_type", 101, 103, 105, 107).lt("wrk_sts", 33));
+            if (!Cools.isEmpty(wrkMasts)) {
+                return R.error(wrkMast.getCrnNo() + "鍫嗗灈鏈�,鏈夊嚭搴撲换鍔★紝绂佹鍥炲簱锛侊紒锛�");
             }
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             String format = sdf.format(new Date());
-            String s = format+"-" + wrkMast.getWrkNo() + "-" + wrkMast.getBarcode();
-            r=SITESITEAGVMove(sourceStaNo,wrkMast.getStaNo$(),s);
+            String s = format + "-" + wrkMast.getWrkNo() + "-" + wrkMast.getBarcode();
+            r = SITESITEAGVMove(sourceStaNo, wrkMast.getStaNo$(), s);
             if (r.get("code").equals(200)) {
                 wrkMast.setPdcType(s);
                 /**
@@ -955,16 +983,38 @@
 
     /**
      * 鑾峰彇浠撳簱
+     *
      * @return
      */
     @RequestMapping("/ck")
     @PostMapping
-    public R AGVStartReturn(){
-        List<String> list=new ArrayList<>();
+    public R AGVStartReturn() {
+        List<String> list = new ArrayList<>();
         list.add("鍗婃垚鍝佷粨搴�");
         list.add("鎴愬搧浠撳簱");
         return R.ok(list);
     }
 
 
+    @RequestMapping(value = "/mat/tiaoma/auth")
+    @ManagerAuth
+    public R find(@RequestParam("barcode") String barcode) {
+        ExdvYanbu barcode1 = exdMaterialMapper.getBacode(barcode);
+        if (barcode1 == null) {
+            return R.error("鎵规瀵瑰簲鐨勯獙甯冩暟鎹笉瀛樺湪");
+        }
+        return R.ok(barcode1);
+    }
+
+    @RequestMapping(value = "/getOrderNo/auth")
+    @ManagerAuth
+    public R findOrderNo(@RequestParam("orderNo") String orderNo) {
+        Page<Order> orderPage = orderService.selectPage(new Page<>(0, 10), new EntityWrapper<Order>().like("order_no", "%" + orderNo + "%"));
+        List<String> objects = new ArrayList<>();
+        for (Order record : orderPage.getRecords()) {
+            objects.add(record.getOrderNo());
+        }
+        return R.ok(objects);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index d82af4e..820b5fd 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -4,7 +4,6 @@
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.R;
-import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.service.*;
@@ -63,7 +62,9 @@
 
         for (OrderDetl orderDetl : orderDetls) {
             double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
-            if (issued <= 0.0D) { continue; }
+            if (issued <= 0.0D) {
+                continue;
+            }
             List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
             for (LocDetl locDetl : locDetls) {
                 if (issued > 0) {
@@ -113,7 +114,9 @@
         List<TaskDto> taskDtos = new ArrayList<>();
         // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
         for (LocDto locDto : locDtos) {
-            if (locDto.isLack()) { continue; }
+            if (locDto.isLack()) {
+                continue;
+            }
             TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
             if (TaskDto.has(taskDtos, taskDto)) {
                 TaskDto dto = TaskDto.find(taskDtos, taskDto);
@@ -125,7 +128,78 @@
         }
         // -----------------------------------------------------------------------------------------------
         for (TaskDto taskDto : taskDtos) {
-            workService.stockOut(null, taskDto, getUserId(), taskDto.getStaNo());
+            workService.stockOut(null, taskDto, getUser(), taskDto.getStaNo());
+        }
+        return R.ok();
+    }
+
+
+    @PostMapping("/out/pakout2/preview/auth")
+    @ManagerAuth
+    public R pakoutPreview2(@RequestBody List<Long> ids) {
+        if (Cools.isEmpty(ids)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids);
+        List<LocDto> locDtos = new ArrayList<>();
+
+        Set<String> exist = new HashSet<>();
+
+        for (OrderDetl orderDetl : orderDetls) {
+
+            List<LocDetl> locDetls = locDetlService.queryStockAll(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
+            for (LocDetl locDetl : locDetls) {
+                LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), locDetl.getAnfme());
+                List<String> staNos = new ArrayList<>();
+                staNos.add("C1");
+                staNos.add("C2");
+                staNos.add("C3");
+                locDto.setStaNos(staNos);
+                locDtos.add(locDto);
+                exist.add(locDetl.getLocNo());
+            }
+        }
+        return R.ok().add(locDtos);
+    }
+
+    @PostMapping("/out/pakout2/auth")
+    @ManagerAuth(memo = "璁㈠崟鍑哄簱")
+    public synchronized R pakout2(@RequestBody List<LocDto> locDtos) throws InterruptedException {
+        if (Cools.isEmpty(locDtos)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        boolean lack = true;
+        for (LocDto locDto : locDtos) {
+            if (!locDto.isLack()) {
+                lack = false;
+                break;
+            }
+        }
+        if (lack) {
+            return R.error("搴撳瓨涓嶈冻");
+        }
+
+        Thread.sleep(1000L);
+
+
+        List<TaskDto> taskDtos = new ArrayList<>();
+        // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+        for (LocDto locDto : locDtos) {
+            if (locDto.isLack()) {
+                continue;
+            }
+            TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
+            if (TaskDto.has(taskDtos, taskDto)) {
+                TaskDto dto = TaskDto.find(taskDtos, taskDto);
+                assert dto != null;
+                dto.getLocDtos().addAll(taskDto.getLocDtos());
+            } else {
+                taskDtos.add(taskDto);
+            }
+        }
+        // -----------------------------------------------------------------------------------------------
+        for (TaskDto taskDto : taskDtos) {
+            workService.stockOutCheckAnfme(null, taskDto, getUser(), taskDto.getStaNo());
         }
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index bd09690..5d86b36 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -86,7 +86,7 @@
     @RequestMapping("/plate/out/start")
     @ManagerAuth(memo = "鍑哄簱浣滀笟")
     public R fullStoreTakeStart(@RequestBody StockOutParam param) {
-        workService.startupFullTakeStore(param, getUserId());
+        workService.startupFullTakeStore(param, getUser());
         return R.ok("鍑哄簱鍚姩鎴愬姛");
     }
 
@@ -106,7 +106,7 @@
     @RequestMapping("/locCheck/out/start")
     @ManagerAuth(memo = "鐩樼偣鍑哄簱")
     public R locCheckOutStart(@RequestBody StockOutParam param) {
-        workService.locCheckOut(param, getUserId());
+        workService.locCheckOut(param, getUser());
         return R.ok("鍑哄簱鍚姩鎴愬姛");
     }
 
diff --git a/src/main/java/com/zy/asrs/entity/param/CombParam.java b/src/main/java/com/zy/asrs/entity/param/CombParam.java
index 466f65a..94ce9f9 100644
--- a/src/main/java/com/zy/asrs/entity/param/CombParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -27,6 +27,9 @@
 
     private String ck;
 
+    private boolean type = false;
+
+
     //agv鐘舵��
     /**
      * 0锛氭棤闇�璋冪敤AGV
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index ab14d4c..ffe02c6 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -56,6 +56,10 @@
 
     List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos);
 
+
+    List<LocDetl> queryStockAll(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos);
+
+
     List<LocDetl> queryStockOther(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos,@Param("locNo")String locNo);
 
 
diff --git a/src/main/java/com/zy/asrs/mapper/MatMapper.java b/src/main/java/com/zy/asrs/mapper/MatMapper.java
index 056df9f..d5a6687 100644
--- a/src/main/java/com/zy/asrs/mapper/MatMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/MatMapper.java
@@ -17,4 +17,6 @@
 
     Mat selectByMatnr(@Param("matnr")String matnr);
 
+    Mat selectBySku(@Param("sku")String sku);
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index b67806c..a5a2736 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -35,6 +35,10 @@
 
     int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty);
 
+
+    int increaseWorkQty2(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty, @Param("color")String color);
+
+
     int increaseWorkQtytest(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("anfme")Double anfme);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java
index ce05fcb..9a1fee0e 100644
--- a/src/main/java/com/zy/asrs/service/LocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -46,6 +46,10 @@
 
     List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos);
 
+
+    List<LocDetl> queryStockAll(String matnr, String batch, String orderNo, Set<String> locNos);
+
+
     List<LocDetl> queryStockOther(String matnr, String batch, String orderNo, Set<String> locNos,String locNo);
 
 
diff --git a/src/main/java/com/zy/asrs/service/MatService.java b/src/main/java/com/zy/asrs/service/MatService.java
index faa1370..a643044 100644
--- a/src/main/java/com/zy/asrs/service/MatService.java
+++ b/src/main/java/com/zy/asrs/service/MatService.java
@@ -10,4 +10,6 @@
 
     Mat selectByMatnr(String matnr);
 
+    Mat selectBySku(String sku);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 6172647..5af2226 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -15,7 +15,7 @@
     /**
      * 缁勬墭
      */
-    void comb(CombParam param, Long userId);
+    void comb(CombParam param, Long userId, String fxId);
 
     /**
      * 涓婃灦
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index ede8c56..d82c544 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -38,5 +38,9 @@
      */
     boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty);
 
+
+    boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color);
+
+
     boolean increaseWorkQtytest(String orderNo, String matnr, String batch, Double anfme);
 }
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index cc6b4eb..d63c4e6 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -10,6 +10,7 @@
 import com.zy.common.model.StartupDto;
 import com.zy.common.model.TaskDto;
 import com.zy.common.model.enums.IoWorkType;
+import com.zy.system.entity.User;
 
 import java.util.List;
 
@@ -24,7 +25,7 @@
     /**
      * 鍑哄簱浣滀笟
      */
-    void startupFullTakeStore(StockOutParam param, Long userId);
+    void startupFullTakeStore(StockOutParam param, User userId);
 
     /**
      * 鍑哄簱浣滀笟
@@ -32,9 +33,12 @@
      * @param locDetls 寰呭嚭搴撶墿鏂�
      * @param ioType 鍏ュ嚭搴撶被鍨�
      */
-    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String agvStaNo);
+    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, User user,String agvStaNo);
 
-    void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,String agvStaNo);
+    void stockOut(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo);
+
+    void stockOutCheckAnfme(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo);
+
 
     /**
      * 绌烘澘鍏ュ簱
@@ -50,7 +54,7 @@
     /**
      * 鐩樼偣鍑哄簱
      */
-    void locCheckOut(StockOutParam param, Long userId);
+    void locCheckOut(StockOutParam param, User userId);
 
     /**
      * 搴撲綅绉昏浆
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index 59bd94e..c5b95e0 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -82,6 +82,11 @@
     }
 
     @Override
+    public List<LocDetl> queryStockAll(String matnr, String batch, String orderNo, Set<String> locNos) {
+        return this.baseMapper.queryStockAll(matnr, batch, orderNo, locNos);
+    }
+
+    @Override
     public List<LocDetl> queryStockOther(String matnr, String batch, String orderNo, Set<String> locNos,String locNo) {
         return this.baseMapper.queryStockOther(matnr, batch, orderNo, locNos,locNo);
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
index 0165023..7be7345 100644
--- a/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
@@ -21,5 +21,9 @@
         return this.baseMapper.selectByMatnr(matnr);
     }
 
+    @Override
+    public Mat selectBySku(String matnr) {
+        return this.baseMapper.selectBySku(matnr);
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 6cf5d08..c7dd5c4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,7 +4,10 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.*;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CombParam;
@@ -14,7 +17,6 @@
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
-import com.zy.common.CodeRes;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
@@ -78,7 +80,7 @@
 
     @Override
     @Transactional
-    public void comb(CombParam param, Long userId) {
+    public void comb(CombParam param, Long userId, String fxId) {
         if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
             throw new CoolException(BaseRes.PARAM);
         }
@@ -88,12 +90,12 @@
             throw new CoolException(param.getBarcode() + "鏁版嵁缁勬墭妗d腑宸插瓨鍦�");
         }
 
-        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
-        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
+        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()));
 //        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())
 //                                            .last(" wrk_no IN ( SELECT wrk_no FROM asr_wrk_mast WHERE wrk_sts != 15 )"));
 
-        if (countLoc > 0 ) {
+        if (countLoc > 0) {
             throw new CoolException("搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
         }
         if (countWrk > 0) {
@@ -103,12 +105,12 @@
         Date now = new Date();
 
         //杩涜鎵瑰彿绛涢�夛紝鎵瑰彿鍙兘鍞竴
-        Set<String> batchs=new  HashSet<>();
-        List<String> strings=new  ArrayList<>();
+        Set<String> batchs = new HashSet<>();
+        List<String> strings = new ArrayList<>();
 
 
-        for(CombParam.CombMat mat : param.getCombMats()){
-            if(Cools.isEmpty(mat.getBatch())){
+        for (CombParam.CombMat mat : param.getCombMats()) {
+            if (Cools.isEmpty(mat.getBatch())) {
                 continue;
             }
             batchs.add(mat.getBatch());
@@ -116,14 +118,14 @@
             WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("batch", mat.getBatch()));
             WrkDetl batch = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("batch", mat.getBatch()));
             LocDetl batch1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", mat.getBatch()));
-            if(!Cools.isEmpty(batch)||!Cools.isEmpty(batch1)||!Cools.isEmpty(waitPakin)){
-                throw new CoolException("璇ョ墿鏂欐壒鍙�"+mat.getBatch()+"宸插湪鍏ュ簱閫氱煡妗c�佷换鍔℃槑缁嗗拰搴撳瓨涓瓨鍦�");
+            if (!Cools.isEmpty(batch) || !Cools.isEmpty(batch1) || !Cools.isEmpty(waitPakin)) {
+                throw new CoolException("璇ョ墿鏂欐壒鍙�" + mat.getBatch() + "宸插湪鍏ュ簱閫氱煡妗c�佷换鍔℃槑缁嗗拰搴撳瓨涓瓨鍦�");
             }
         }
-        if(batchs.size()<strings.size()){
+        if (batchs.size() < strings.size()) {
             throw new CoolException("鏈夐噸澶嶇殑鐗╂枡鎵瑰彿");
         }
-        int i =1;
+        int i = 1;
         // 鏃犲崟缁勬墭
         if (Cools.isEmpty(param.getOrderNo())) {
 
@@ -143,7 +145,7 @@
 
             for (DetlDto detlDto : detlDtos) {
                 Mat mat = matService.selectByMatnr(detlDto.getMatnr());
-                if (Cools.isEmpty(detlDto.getBatch())){
+                if (Cools.isEmpty(detlDto.getBatch())) {
                     detlDto.setBatch("");
                 }
                 if (Cools.isEmpty(mat)) {
@@ -161,7 +163,8 @@
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
                 waitPakin.setBrand(param.getCk());//浠撳簱
-                if(i==1){
+                waitPakin.setInspect(param.isType() ? 1 : 0);
+                if (i == 1) {
 //                0锛氫笉闇�瑕佽ˉ绌烘墭鐩�
 //                1锛氬皬鎵樼洏
 //                2锛氬ぇ鎵樼洏
@@ -179,11 +182,11 @@
                     waitPakin.setSuppCode(param.getBarcode());
                 }
                 i++;
-            if (!waitPakinService.insert(waitPakin)) {
+                if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
             }
-        // 鍏宠仈缁勬墭
+            // 鍏宠仈缁勬墭
         } else {
             Order order = orderService.selectByNo(param.getOrderNo());
             if (order.getSettle() > 2) {
@@ -199,7 +202,7 @@
                     throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
                 }
                 // 淇敼璁㈠崟浣滀笟鏁伴噺
-                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+                if (!orderDetlService.increaseWorkQty2(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme(), fxId)) {
                     throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
                 }
 
@@ -229,7 +232,9 @@
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
-                if(i==1){
+                waitPakin.setBrand(param.getCk());//浠撳簱
+                waitPakin.setInspect(param.isType() ? 1 : 0);
+                if (i == 1) {
 //                0锛氫笉闇�瑕佽ˉ绌烘墭鐩�
 //                1锛氬皬鎵樼洏
 //                2锛氬ぇ鎵樼洏
@@ -268,15 +273,15 @@
         }
 
         // 鑾峰彇鍟嗗搧鍒楄〃
-        for(CombParam.CombMat combMat : param.getCombMats()){
+        for (CombParam.CombMat combMat : param.getCombMats()) {
             Mat mat = matService.selectByMatnr(combMat.getMatnr());
-            if (Cools.isEmpty(mat)){
+            if (Cools.isEmpty(mat)) {
                 throw new CoolException(combMat.getMatnr() + ":鍟嗗搧妗f涓嶅瓨鍦紒");
             }
-            if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme()==0){
+            if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme() == 0) {
                 throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鏁伴噺鏈夎锛�");
             }
-            if (Cools.isEmpty(combMat.getBatch())){
+            if (Cools.isEmpty(combMat.getBatch())) {
 //                throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鎵瑰彿鏈夎锛�");
             }
             ManLocDetl manLocDetl = new ManLocDetl();
@@ -297,16 +302,16 @@
     @Override
     public void offSale(OffSaleParam offSaleParam) {
         ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
-        if (Cools.isEmpty(manLocDetl)){
+        if (Cools.isEmpty(manLocDetl)) {
             throw new CoolException("鏃犳鍟嗗搧锛�");
         }
         double anfme = manLocDetl.getAnfme() - offSaleParam.getAnfme();
         if (anfme < 0) {
             throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�");
-        } else if (anfme == 0){
+        } else if (anfme == 0) {
             manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
         }
-        manLocDetlMapper.updateAnfme0(anfme,manLocDetl.getNodeId());
+        manLocDetlMapper.updateAnfme0(anfme, manLocDetl.getNodeId());
     }
 
     // 鏌ユ壘鍟嗗搧
@@ -365,7 +370,9 @@
 
         // 娣诲姞鏄庣粏
         for (WrkDetl wrkDetl : list) {
-            if (wrkDetl.getAnfme() == 0.0D) { continue; }
+            if (wrkDetl.getAnfme() == 0.0D) {
+                continue;
+            }
             // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
             String orderNo = wrkDetl.getOrderNo();
             Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
@@ -381,7 +388,7 @@
         }
 
         // 淇敼鐩樼偣浠诲姟涓绘。鐘舵��
-        wrkMast.setFullPlt(wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).size() != 0?"Y":"N");
+        wrkMast.setFullPlt(wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).size() != 0 ? "Y" : "N");
         wrkMast.setModiTime(now);
         wrkMast.setModiUser(userId);
         if (!wrkMastService.updateById(wrkMast)) {
@@ -458,10 +465,10 @@
                     if (jsonObject.getInteger("code").equals(200)) {
                         success = true;
                     } else if (jsonObject.getInteger("code").equals(500)) {
-                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
+                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
                         throw new CoolException(jsonObject.getString("msg"));
                     } else {
-                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
+                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
                         throw new CoolException("涓婃姤mes绯荤粺澶辫触");
                     }
                 } catch (Exception e) {
@@ -479,7 +486,9 @@
                                 response,
                                 success
                         );
-                    } catch (Exception e) { log.error("", e); }
+                    } catch (Exception e) {
+                        log.error("", e);
+                    }
                 }
 
             }
@@ -556,19 +565,19 @@
         BasDevp sta = basDevpService.checkSiteStatus(staNo);
         //鏍规嵁璁㈠崟鍙风敓鎴愬嚭搴撲换鍔″伐浣滄。
         Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo));
-        if (order.getSettle() != 1 && order.getSettle() != 2){
+        if (order.getSettle() != 1 && order.getSettle() != 2) {
             throw new CoolException("璇ヨ鍗曞凡澶勭悊");
         }
 
         List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
         Date now = new Date();
-        for(OrderDetl orderDetl : orderDetls){
+        for (OrderDetl orderDetl : orderDetls) {
             //鏌ヨ鎵�鏈夊簱浣嶇姸鎬佷负F鐨勫簱浣嶄俊鎭�
-            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null);
+            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, null);
             if (locDetls.size() == 0) {
                 throw new CoolException("搴撳瓨涓病鏈夎鐗╂枡");
             }
-            for(LocDetl locDetl : locDetls){
+            for (LocDetl locDetl : locDetls) {
                 //濡傛灉璇ュ簱浣嶅嚭搴撹矾绾挎墍鐢ㄧ殑鍫嗗灈鏈簅ut_enable涓嶄负Y,璺宠繃璇ュ惊鐜�
                 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                         .eq("loc_no", locDetl.getLocNo()));
@@ -577,13 +586,13 @@
                 }
                 BasCrnp crn_no = basCrnpService.selectOne(new EntityWrapper<BasCrnp>()
                         .eq("crn_no", locMast.getCrnNo()));
-                if (Cools.isEmpty(crn_no) || !crn_no.getOutEnable().equals("Y")){
+                if (Cools.isEmpty(crn_no) || !crn_no.getOutEnable().equals("Y")) {
                     continue;
                 }
 
                 //鍙嚭搴撴暟閲� = 璁㈠崟鏁伴噺 - 浣滀笟涓暟閲�
                 Double outQty = orderDetl.getAnfme() - orderDetl.getWorkQty();
-                if(outQty <= 0){
+                if (outQty <= 0) {
                     break;
                 }
                 // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
@@ -595,18 +604,18 @@
                 order.setSettle(2L);
                 order.setUpdateBy(userId);
                 order.setUpdateTime(now);
-                if(!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))){
+                if (!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))) {
                     throw new CoolException("鏇存柊璁㈠崟鐘舵�佸け璐�");
                 }
                 orderDetl.setWorkQty(orderDetl.getWorkQty() + curOutQty);
                 orderDetl.setUpdateBy(userId);
                 orderDetl.setUpdateTime(now);
                 Wrapper wrapper = new EntityWrapper<OrderDetl>().eq("order_no", orderNo)
-                        .eq("matnr",orderDetl.getMatnr());
-                if(!Cools.isEmpty(orderDetl.getBatch())){
+                        .eq("matnr", orderDetl.getMatnr());
+                if (!Cools.isEmpty(orderDetl.getBatch())) {
                     wrapper.eq("batch", orderDetl.getBatch());
                 }
-                if(!orderDetlService.update(orderDetl, wrapper)){
+                if (!orderDetlService.update(orderDetl, wrapper)) {
                     throw new CoolException("鏇存柊璁㈠崟鏄庣粏澶辫触");
                 }
             }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 3e98ae8..dd11979 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -2,11 +2,11 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
-import com.core.common.Cools;
-import com.zy.asrs.mapper.OrderDetlMapper;
-import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.service.OrderDetlService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.service.OrderDetlService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -80,6 +80,7 @@
 
     /**
      * 鍏ュ嚭搴撲换鍔$敓鎴愭椂锛屾洿鏂板崟鎹〃涓綔涓氭暟閲�
+     *
      * @param orderId
      * @param matnr
      * @param batch
@@ -93,6 +94,21 @@
 
     /**
      * 鍏ュ嚭搴撲换鍔$敓鎴愭椂锛屾洿鏂板崟鎹〃涓綔涓氭暟閲�
+     *
+     * @param orderId
+     * @param matnr
+     * @param batch
+     * @param workQty
+     * @return
+     */
+    @Override
+    public boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color) {
+        return this.baseMapper.increaseWorkQty2(orderId, matnr, batch, workQty, color) > 0;
+    }
+
+    /**
+     * 鍏ュ嚭搴撲换鍔$敓鎴愭椂锛屾洿鏂板崟鎹〃涓綔涓氭暟閲�
+     *
      * @param orderNo
      * @param matnr
      * @param batch
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 7e7c2ad..5d07400 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -20,6 +20,7 @@
 import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
 import com.zy.common.web.WcsController;
+import com.zy.system.entity.User;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -136,27 +137,27 @@
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
         sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)){
+        if (!basDevpService.updateById(sourceStaNo)) {
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")){
+        if (locMast.getLocSts().equals("O")) {
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
             locMast.setModiUser(userId);
             locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)){
+            if (!locMastService.updateById(locMast)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         return dto.getLocNo();
     }
 
     @Override
     @Transactional
-    public void startupFullTakeStore(StockOutParam param, Long userId) {
+    public void startupFullTakeStore(StockOutParam param, User userId) {
         String agvStaNo = param.getOutSite();
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
@@ -169,7 +170,7 @@
         if (!locDetlDtos.isEmpty()) {
 
             // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
-            stockOut(null, locDetlDtos, null, userId,agvStaNo);
+            stockOut(null, locDetlDtos, null, userId, agvStaNo);
         } else {
             throw new CoolException("搴撳瓨涓嶅瓨鍦�");
         }
@@ -177,7 +178,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId,String agvStaNo) {
+    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, User user, String agvStaNo) {
         Date now = new Date();
         // 鍚堝苟鍚岀被椤�
         Set<String> locNos = new HashSet<>();
@@ -210,17 +211,17 @@
             LocMast locMast = locMastService.selectById(dto.getLocNo());
 
             if (Cools.isEmpty(locMast)) {
-                throw new CoolException(dto.getLocNo()+"搴撲綅涓嶅瓨鍦�");
+                throw new CoolException(dto.getLocNo() + "搴撲綅涓嶅瓨鍦�");
             }
-            if(!locMast.getLocSts().equals("F")){
-                throw new CoolException(dto.getLocNo()+"鎵樼洏闈炲湪搴撶姸鎬�");
+            if (!locMast.getLocSts().equals("F")) {
+                throw new CoolException(dto.getLocNo() + "鎵樼洏闈炲湪搴撶姸鎬�");
             }
             Integer outSta = 0;
-            if(locMast.getCrnNo()==1){
+            if (locMast.getCrnNo() == 1) {
                 outSta = 105;
-            }else if(locMast.getCrnNo()==2){
+            } else if (locMast.getCrnNo() == 2) {
                 outSta = 103;
-            }else if(locMast.getCrnNo()==3){
+            } else if (locMast.getCrnNo() == 3) {
                 outSta = 101;
             }
 
@@ -250,28 +251,30 @@
             wrkMast.setEmptyMk("N"); // 绌烘澘
             wrkMast.setLinkMis("N");
             wrkMast.setBarcode(locMast.getBarcode());
-            wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeUser(user.getId()); // 鎿嶄綔浜哄憳鏁版嵁
             wrkMast.setAppeTime(now);
-            wrkMast.setModiUser(userId);
+            wrkMast.setModiUser(user.getId());
             wrkMast.setModiTime(now);
             wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo);
             if (!wrkMastService.insert(wrkMast)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
             }
             // 鐢熸垚宸ヤ綔妗f槑缁�
             for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
-                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
+                    continue;
+                }
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.sync(detlDto.getLocDetl());
                 wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
                 wrkDetl.setWrkNo(workNo);
                 wrkDetl.setIoTime(now);
-                Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
+                Double anfme = ioType == 101 ? detlDto.getLocDetl().getAnfme() : detlDto.getCount();
                 wrkDetl.setAnfme(anfme); // 鏁伴噺
                 wrkDetl.setAppeTime(now);
-                wrkDetl.setAppeUser(userId);
+                wrkDetl.setAppeUser(user.getId());
                 wrkDetl.setModiTime(now);
-                wrkDetl.setModiUser(userId);
+                wrkDetl.setModiUser(user.getId());
                 if (!wrkDetlService.insert(wrkDetl)) {
                     throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }
@@ -279,11 +282,11 @@
             // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
             locMast = locMastService.selectById(dto.getLocNo());
             if (locMast.getLocSts().equals("F")) {
-                locMast.setLocSts(ioType==101?"R":"P");
-                locMast.setModiUser(userId);
+                locMast.setLocSts(ioType == 101 ? "R" : "P");
+                locMast.setModiUser(user.getId());
                 locMast.setModiTime(now);
                 if (!locMastService.updateById(locMast)) {
-                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + dto.getLocNo());
                 }
             } else {
                 throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
@@ -293,7 +296,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,String agvStaNo) {
+    public void stockOut(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo) {
         Date now = new Date();
         List<LocDto> locDtos = taskDto.getLocDtos();
         for (LocDto locDto : locDtos) {
@@ -306,15 +309,15 @@
         // 鑾峰彇璺緞
         int ioType = taskDto.isAll() ? 101 : 103;
         Integer outSta = 0;
-        if(locMast.getCrnNo()==1){
+        if (locMast.getCrnNo() == 1) {
             outSta = 106;
-        }else if(locMast.getCrnNo()==2){
+        } else if (locMast.getCrnNo() == 2) {
             outSta = 104;
-        }else if(locMast.getCrnNo()==3){
+        } else if (locMast.getCrnNo() == 3) {
             outSta = 102;
         }
 
-        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(),outSta);
+        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), outSta);
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
         // 鐢熸垚宸ヤ綔妗�
@@ -334,22 +337,24 @@
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("N");
         wrkMast.setBarcode(locMast.getBarcode());
-        wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeUser(user.getId()); // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
-        wrkMast.setModiUser(userId);
+        wrkMast.setModiUser(user.getId());
         wrkMast.setModiTime(now);
         wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo);
         if (!wrkMastService.insert(wrkMast)) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
         }
         // 鐢熸垚宸ヤ綔妗f槑缁�
         for (LocDto locDto : taskDto.getLocDtos()) {
-            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+                continue;
+            }
             OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
             if (orderDetl == null) {
                 orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
             }
-            Mat mat=matService.selectOne(new EntityWrapper<Mat>().eq("matnr",locDto.getMatnr()));
+            Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr()));
             WrkDetl wrkDetl = new WrkDetl();
             wrkDetl.sync(orderDetl);
             wrkDetl.setZpallet(wrkMast.getBarcode());
@@ -360,31 +365,144 @@
             wrkDetl.setModel(mat.getModel());
             wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
             wrkDetl.setAppeTime(now);
-            wrkDetl.setAppeUser(userId);
+            wrkDetl.setAppeUser(user.getId());
             wrkDetl.setModiTime(now);
-            wrkDetl.setModiUser(userId);
+            wrkDetl.setModiUser(user.getId());
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
             }
             // 淇敼璁㈠崟鏄庣粏
-            if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+            if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(), user.getEmail())) {
                 throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
             }
-            orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+            orderService.updateSettle(orderDetl.getOrderId(), 2L, user.getId());
         }
         // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
         locMast = locMastService.selectById(taskDto.getLocNo());
         if (locMast.getLocSts().equals("F")) {
-            locMast.setLocSts(ioType==101?"R":"P");
-            locMast.setModiUser(userId);
+            locMast.setLocSts(ioType == 101 ? "R" : "P");
+            locMast.setModiUser(user.getId());
             locMast.setModiTime(now);
             if (!locMastService.updateById(locMast)) {
-                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
+                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
             }
         } else {
             throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+
+    @Override
+    @Transactional
+    public void stockOutCheckAnfme(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo) {
+        Date now = new Date();
+        List<LocDto> locDtos = taskDto.getLocDtos();
+        for (LocDto locDto : locDtos) {
+            if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+                throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+            }
+        }
+        // 鑾峰彇搴撲綅
+        LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+        for (LocDto locDto : taskDto.getLocDtos()) {
+            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+                continue;
+            }
+            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+            if (orderDetl == null) {
+                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+            }
+            if (orderDetl.getAnfme() - orderDetl.getWorkQty() == 0) {
+                return;
+            }
+
+        }
+
+        // 鑾峰彇璺緞
+        int ioType = taskDto.isAll() ? 101 : 103;
+        Integer outSta = 0;
+        if (locMast.getCrnNo() == 1) {
+            outSta = 106;
+        } else if (locMast.getCrnNo() == 2) {
+            outSta = 104;
+        } else if (locMast.getCrnNo() == 3) {
+            outSta = 102;
+        }
+
+        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), outSta);
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+        wrkMast.setCrnNo(locMast.getCrnNo());
+        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("N");
+        wrkMast.setBarcode(locMast.getBarcode());
+        wrkMast.setAppeUser(user.getId()); // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(user.getId());
+        wrkMast.setModiTime(now);
+        wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo);
+        if (!wrkMastService.insert(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        for (LocDto locDto : taskDto.getLocDtos()) {
+            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+                continue;
+            }
+            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+            if (orderDetl == null) {
+                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+            }
+            Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr()));
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(orderDetl);
+            wrkDetl.setZpallet(wrkMast.getBarcode());
+            wrkDetl.setIoTime(now);
+            wrkDetl.setWrkNo(workNo);
+            wrkDetl.setBatch(locDto.getBatch());
+            wrkDetl.setOrderNo(locDto.getOrderNo());
+            wrkDetl.setModel(mat.getModel());
+            wrkDetl.setAnfme(locDto.getAnfme() > (orderDetl.getAnfme() - orderDetl.getWorkQty()) ? (orderDetl.getAnfme() - orderDetl.getWorkQty()) : locDto.getAnfme()); // 鏁伴噺
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setAppeUser(user.getId());
+            wrkDetl.setModiTime(now);
+            wrkDetl.setModiUser(user.getId());
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
+            // 淇敼璁㈠崟鏄庣粏
+            if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), wrkDetl.getAnfme(), user.getEmail())) {
+                throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+            }
+            orderService.updateSettle(orderDetl.getOrderId(), 2L, user.getId());
+        }
+        // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+        locMast = locMastService.selectById(taskDto.getLocNo());
+        if (locMast.getLocSts().equals("F")) {
+            locMast.setLocSts(ioType == 101 ? "R" : "P");
+            locMast.setModiUser(user.getId());
+            locMast.setModiTime(now);
+            if (!locMastService.updateById(locMast)) {
+                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
+            }
+        } else {
+            throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+        }
+    }
+
 
     @Override
     @Transactional
@@ -426,20 +544,20 @@
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
         sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)){
+        if (!basDevpService.updateById(sourceStaNo)) {
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")){
+        if (locMast.getLocSts().equals("O")) {
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
             locMast.setModiUser(userId);
             locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)){
+            if (!locMastService.updateById(locMast)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         return dto.getLocNo();
     }
@@ -456,10 +574,10 @@
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(locNo);
             if (Cools.isEmpty(locMast)) {
-                throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+                throw new CoolException(locNo + "搴撲綅涓嶅瓨鍦�");
             }
-            if(!locMast.getLocSts().equals("D")){
-                throw new CoolException(locNo+"鎵樼洏闈炲湪搴撶姸鎬�");
+            if (!locMast.getLocSts().equals("D")) {
+                throw new CoolException(locNo + "鎵樼洏闈炲湪搴撶姸鎬�");
             }
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
@@ -497,7 +615,7 @@
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
             }
             // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
-            if (locMast.getLocSts().equals("D")){
+            if (locMast.getLocSts().equals("D")) {
                 locMast.setLocSts("R");
                 locMast.setModiUser(userId);
                 locMast.setModiTime(now);
@@ -510,7 +628,7 @@
 
     @Override
     @Transactional
-    public void locCheckOut(StockOutParam param, Long userId) {
+    public void locCheckOut(StockOutParam param, User userId) {
 
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
@@ -522,7 +640,7 @@
         }
         if (!locDetlDtos.isEmpty()) {
             // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
-            stockOut(null, locDetlDtos, IoWorkType.CHECK_OUT, userId,null);
+            stockOut(null, locDetlDtos, IoWorkType.CHECK_OUT, userId, null);
         } else {
             throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
         }
@@ -533,11 +651,11 @@
     public void locMove(String sourceLocNo, String locNo, Long userId) {
         LocMast sourceLoc = locMastService.selectById(sourceLocNo);
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
-        if (Cools.isEmpty(sourceLoc)){
+        if (Cools.isEmpty(sourceLoc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
         LocMast loc = locMastService.selectById(locNo);
-        if (Cools.isEmpty(loc)){
+        if (Cools.isEmpty(loc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
         if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
@@ -556,10 +674,10 @@
         wrkMast.setCrnNo(sourceLoc.getCrnNo());
         wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
         wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-        wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
+        wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
         wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setLinkMis("N");
         wrkMast.setAppeUser(userId);
@@ -590,11 +708,11 @@
             sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
             sourceLoc.setModiUser(userId);
             sourceLoc.setModiTime(now);
-            if (!locMastService.updateById(sourceLoc)){
+            if (!locMastService.updateById(sourceLoc)) {
                 throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
             }
         } else {
-            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocSts$());
         }
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocSts().equals("O")) {
@@ -605,7 +723,7 @@
                 throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
         }
     }
 
@@ -613,16 +731,16 @@
     @Transactional
     public void completeWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
             wrkMast.setWrkSts(4L);
-        // 鍑哄簱
+            // 鍑哄簱
         } else if (wrkMast.getWrkSts() > 10) {
             wrkMast.setWrkSts(14L);
         }
@@ -663,7 +781,9 @@
             Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
             while (iterator1.hasNext()) {
                 LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
-                if (adjust.getCount() == 0) { continue; }
+                if (adjust.getCount() == 0) {
+                    continue;
+                }
                 if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
                     if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
@@ -712,7 +832,9 @@
 
         // 娣诲姞搴撳瓨
         for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
-            if (adjust.getCount() == 0.0D) { continue; }
+            if (adjust.getCount() == 0.0D) {
+                continue;
+            }
             Mat mat = matService.selectByMatnr(adjust.getMatnr());
             LocDetl locDetl = new LocDetl();
             locDetl.sync(mat);
@@ -764,8 +886,8 @@
     public void cancelWrkMast(String workNo, Long userId) {
         Date now = new Date();
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
@@ -779,29 +901,29 @@
                 // 搴撲綅杞Щ锛氭簮搴撲綅
                 LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
                 if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
                 }
-                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F");
+                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
                 locMast.setModiTime(now);
                 locMast.setModiUser(userId);
                 locMastService.updateById(locMast);
             }
-        // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
         } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
             locNo = wrkMast.getSourceLocNo();
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
                 locSts = "F";
-            // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 110) {
                 locSts = "D";
-            // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 11) {
-                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
+                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
                 // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
                 LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                 if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo());
                 }
                 locMast.setLocSts("O");
                 locMast.setModiTime(now);
@@ -813,9 +935,9 @@
         }
 
         //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
-        if(wrkMast.getIoType() == 1) {
-            List<WaitPakin> waitPakins=waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
-            for (WaitPakin waitPakin:waitPakins){
+        if (wrkMast.getIoType() == 1) {
+            List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+            for (WaitPakin waitPakin : waitPakins) {
                 if (!Cools.isEmpty(waitPakin)) {
                     waitPakin.setIoStatus("N");
                     waitPakin.setLocNo("");
@@ -828,7 +950,7 @@
         }
 
         //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
-        if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
+        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
             for (WrkDetl wrkDetl : wrkDetls) {
                 //瀛楃涓蹭笉涓虹┖
@@ -839,20 +961,20 @@
 
                     //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
                     boolean flag = true;
-                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
-                    for(OrderDetl orderDetl : orderDetls){
-                        if(orderDetl.getWorkQty() > 0){
+                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo()));
+                    for (OrderDetl orderDetl : orderDetls) {
+                        if (orderDetl.getWorkQty() > 0) {
                             flag = false;
                         }
                     }
-                    if(flag){
-                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
-                        if(!Cools.isEmpty(order) && order.getSettle()==2){
+                    if (flag) {
+                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo()));
+                        if (!Cools.isEmpty(order) && order.getSettle() == 2) {
                             order.setSettle(1L);
                             order.setUpdateBy(userId);
                             order.setUpdateTime(now);
                         }
-                        if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
+                        if (!orderService.update(order, new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo()))) {
                             throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
                         }
                     }
@@ -899,7 +1021,7 @@
         // 淇敼搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(locNo);
         if (Cools.isEmpty(locMast)) {
-            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
         }
         locMast.setLocSts(locSts);
         locMast.setModiTime(now);
@@ -914,8 +1036,8 @@
     @Transactional
     public void pickWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         // 鍏ュ嚭搴撶被鍨嬪垽鏂�
         if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
@@ -993,7 +1115,7 @@
         // 鐩爣搴撲綅
         LocMast targetLoc = null;
 
-        for (int curRow = rowLastno.getsRow(); curRow<=rowLastno.geteRow(); curRow++) {
+        for (int curRow = rowLastno.getsRow(); curRow <= rowLastno.geteRow(); curRow++) {
 
             if (Utils.isShallowLoc(slaveProperties, curRow)) {
                 Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
@@ -1052,15 +1174,15 @@
             throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
         }
         // 淇敼搴撲綅鐘舵�� O ===>>> S
-        if (targetLoc.getLocSts().equals("O")){
+        if (targetLoc.getLocSts().equals("O")) {
             targetLoc.setLocSts("S"); // S.鍏ュ簱棰勭害
             targetLoc.setModiUser(userId);
             targetLoc.setModiTime(now);
-            if (!locMastService.updateById(targetLoc)){
+            if (!locMastService.updateById(targetLoc)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(targetLoc.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(targetLoc.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         // 绂佺敤寮傚父搴撲綅
 //        locMast.setLocSts("X"); // X.绂佺敤
diff --git a/src/main/java/com/zy/asrs/task/AutoAssignAGVTasks.java b/src/main/java/com/zy/asrs/task/AutoAssignAGVTasks.java
index 6452017..ca91d38 100644
--- a/src/main/java/com/zy/asrs/task/AutoAssignAGVTasks.java
+++ b/src/main/java/com/zy/asrs/task/AutoAssignAGVTasks.java
@@ -30,7 +30,7 @@
  */
 @Component
 public class AutoAssignAGVTasks {
-    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
+    private static final Logger log = LoggerFactory.getLogger(AutoAssignAGVTasks.class);
 
     @Autowired
     private WaitPakinService waitPakinService;
@@ -51,7 +51,7 @@
      * 鑷姩娲惧彂鍏ュ簱浠诲姟缁橝GV
      */
     @Scheduled(cron = "0/3 * * * * ? ")
-    private synchronized void execute(){
+    public synchronized void execute(){
         /**
          * agv鐘舵��
          * be_batch
@@ -174,7 +174,7 @@
      * 鑷姩娲惧彂琛ョ┖鏉夸换鍔$粰AGV
      */
     @Scheduled(cron = "0/3 * * * * ? ")
-    private synchronized void autoFillEmptyPallets(){
+    public synchronized void autoFillEmptyPallets(){
         /**
          * 璇ュ瓧娈垫槸缁勬墭鍏ュ簱鑷姩鍑哄彂琛ョ┖鎵樼洏鏍囪
          * item_num
@@ -220,7 +220,7 @@
      * 鑷姩娲惧彂鍑哄簱浠诲姟缁檃gv鎼繍
      */
     @Scheduled(cron = "0/3 * * * * ? ")
-    private synchronized void autoOut(){
+    public synchronized void autoOut(){
         List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 30));
         if (wrkMasts.isEmpty()) {
             return;
@@ -265,7 +265,7 @@
      * 鍏ュ簱浠诲姟鑷姩瑙g粦agv绔欑偣
      */
     @Scheduled(cron = "0/3 * * * * ? ")
-    private synchronized void UnbindTheSite(){
+    public synchronized void UnbindTheSite(){
         List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                 .in("io_type",1,53)
                 .ge("wrk_sts", 2)
diff --git a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java b/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
index db1adb8..addb2f7 100644
--- a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
+++ b/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
@@ -47,7 +47,7 @@
      * 灏嗕袱涓繁搴撲綅鍚堝苟涓烘繁娴呭簱浣�,鐗╂枡鍙风浉鍚岋紝婧愬簱浣嶅叆搴撴棩鏈熸棭浜庣洰鏍囧簱浣嶅搴旀繁搴撲綅鍏ュ簱鏃ユ湡锛屽簱浣嶇姸鎬侀兘涓篎
      */
     @Scheduled(cron = "0/30 * * * * ?")
-    private void execute() throws ParseException {
+    public void execute() throws ParseException {
         if (!confirmDeep) return;
 
         ReturnT<String> result = checkDeepHandler.start();
diff --git a/src/main/java/com/zy/asrs/task/ErrorStockScheduler.java b/src/main/java/com/zy/asrs/task/ErrorStockScheduler.java
index 917cfc4..4d79614 100644
--- a/src/main/java/com/zy/asrs/task/ErrorStockScheduler.java
+++ b/src/main/java/com/zy/asrs/task/ErrorStockScheduler.java
@@ -20,7 +20,7 @@
     private ErrorStockHandler errorStockHandler;
 
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
+    public void execute(){
         ReturnT<String> returnT = errorStockHandler.start();
         if (!returnT.isSuccess()) {
             log.error(returnT.getMsg());
diff --git a/src/main/java/com/zy/asrs/task/NotifyLogScheduler.java b/src/main/java/com/zy/asrs/task/NotifyLogScheduler.java
index 93799d9..c69354e 100644
--- a/src/main/java/com/zy/asrs/task/NotifyLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/NotifyLogScheduler.java
@@ -20,7 +20,7 @@
     private NotifyLogHandler notifyLogHandler;
 
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
+    public void execute(){
         ReturnT<String> returnT = notifyLogHandler.start();
         if (!returnT.isSuccess()) {
             log.error(returnT.getMsg());
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 61004e9..c0954cd 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -38,16 +38,21 @@
         }
     }
 
-//    @Scheduled(cron = "0/5 * * * * ? ")
+    @Scheduled(cron = "0/5 * * * * ? ")
     @Async("orderThreadPool")
     public void completeAndReport(){
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
             List<Order> orders = orderService.selectComplete();
             for (Order order : orders) {
-                ReturnT<String> result = orderSyncHandler.start(order);
-                if (!result.isSuccess()) {
-                    log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+                try {
+                    ReturnT<String> result = orderSyncHandler.start(order);
+                    if (!result.isSuccess()) {
+                        log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                    log.error("鍗曟嵁[orderNo={}]涓婃姤erp鎶ラ敊", order.getOrderNo());
                 }
             }
         }
diff --git a/src/main/java/com/zy/asrs/task/OverYearLogScheduler.java b/src/main/java/com/zy/asrs/task/OverYearLogScheduler.java
index 95a8a29..60387eb 100644
--- a/src/main/java/com/zy/asrs/task/OverYearLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OverYearLogScheduler.java
@@ -20,7 +20,7 @@
     private OverYearLogHandler overYearLogHandler;
 
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
+    public void execute(){
         ReturnT<String> returnT = overYearLogHandler.start();
         if (!returnT.isSuccess()) {
             log.error(returnT.getMsg());
diff --git a/src/main/java/com/zy/asrs/task/PlcLogScheduler.java b/src/main/java/com/zy/asrs/task/PlcLogScheduler.java
index 708392f..57517fe 100644
--- a/src/main/java/com/zy/asrs/task/PlcLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/PlcLogScheduler.java
@@ -20,7 +20,7 @@
     private PlcLogHandler plcLogHandler;
 
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
+    public void execute(){
         ReturnT<String> returnT = plcLogHandler.start();
         if (!returnT.isSuccess()) {
             log.error(returnT.getMsg());
diff --git a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
index 06a0624..ee29a50 100644
--- a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -24,7 +24,7 @@
     private WrkMastService wrkMastService;
 
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
+    public void execute(){
         List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData();
         if (wrkMasts.isEmpty()) {
             return;
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index 36ce070..5453129 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -28,7 +28,7 @@
     private WorkMastHandler workMastHandler;
 
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
+    public void execute(){
         List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
         if (wrkMasts.isEmpty()) {
             return;
@@ -48,7 +48,7 @@
 
     //鎷f枡浠诲姟澶勭悊
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void jl(){
+    public void jl(){
         List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                 .eq("io_type",103)
                 .eq("wrk_sts",14L)
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index 43b50b1..4bf9fec 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,8 +1,5 @@
 package com.zy.asrs.task.handler;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.DocType;
@@ -14,16 +11,16 @@
 import com.zy.asrs.service.OrderService;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
-import com.zy.common.constant.MesConstant;
-import com.zy.common.model.MesPakinParam;
-import com.zy.common.model.MesPakoutParam;
-import com.zy.common.utils.HttpHandler;
+import com.zy.third.entity.ExdInstockTarget;
+import com.zy.third.entity.ExdOutstockTarget;
+import com.zy.third.service.ExdInstockTargetService;
+import com.zy.third.service.ExdOutstockTargetService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -33,8 +30,7 @@
 @Service
 public class OrderSyncHandler extends AbstractHandler<String> {
 
-    @Autowired
-    private JdbcTemplate jdbcTemplate;
+
     @Autowired
     private OrderService orderService;
     @Autowired
@@ -44,6 +40,13 @@
     @Autowired
     private DocTypeService docTypeService;
 
+    @Autowired
+    private ExdInstockTargetService exdInstockTargetService;
+
+
+    @Autowired
+    private ExdOutstockTargetService exdOutstockTargetService;
+
     @Transactional
     public ReturnT<String> start(Order order) {
         DocType docType = docTypeService.selectById(order.getDocType());
@@ -51,107 +54,53 @@
             return SUCCESS;
         }
         List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
+        if (orderDetls.isEmpty()){
+            return SUCCESS;
+        }
         // 鍏ュ簱瀹屾垚涓婃姤
         if (docType.getPakin() == 1) {
-            MesPakinParam pakinParam = new MesPakinParam();
-            pakinParam.setPakinTime(DateUtils.convert(order.getUpdateTime()));
-            pakinParam.setLgortFrom("5008");
-            pakinParam.setLgortTo("5006");
+            ExdInstockTarget exdInstockTarge = null;
             for (OrderDetl orderDetl : orderDetls) {
-                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
-                pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
+                exdInstockTarge = new ExdInstockTarget();
+                exdInstockTarge.setFinterid(orderDetl.getDeadWarn());
+                exdInstockTarge.setFbillno(orderDetl.getOrderNo());
+                exdInstockTarge.setFtrantype(order.getDocType().intValue());
+                exdInstockTarge.setFdate(DateUtils.convert(order.getOrderTime()));
+                exdInstockTarge.setFrob(orderDetl.getInspect());
+                exdInstockTarge.setFuserid(Integer.getInteger(orderDetl.getColor()));
+                exdInstockTarge.setWritetime(new Date());
+                exdInstockTarge.setWritor("WMS");
+                exdInstockTarge.setStatus(0);
+                exdInstockTargetService.insert(exdInstockTarge);
             }
-            String response = "";
-            boolean success = false;
-            try {
-                response = new HttpHandler.Builder()
-                        .setUri(MesConstant.URL)
-                        .setPath(MesConstant.PAKIN_URL)
-                        .setJson(JSON.toJSONString(pakinParam))
-                        .build()
-                        .doPost();
-                JSONObject jsonObject = JSON.parseObject(response);
-                if (jsonObject.getInteger("code").equals(200)) {
-                    success = true;
-                    // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
-                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-                    }
-                } else {
-                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response);
-                    throw new CoolException("涓婃姤mes绯荤粺澶辫触");
-                }
-            } catch (Exception e) {
-                log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg(e.getMessage());
-            } finally {
-                try {
-                    // 淇濆瓨鎺ュ彛鏃ュ織
-                    apiLogService.save(
-                            "鎴愬搧搴撳叆搴撲笂鎶�",
-                            MesConstant.URL + MesConstant.PAKIN_URL,
-                            null,
-                            "127.0.0.1",
-                            JSON.toJSONString(pakinParam),
-                            response,
-                            success
-                    );
-                } catch (Exception e) { log.error("", e); }
+            if (!orderService.updateSettle(order.getId(), 6L, null)) {
+                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
             }
-        }
-        // 鍑哄簱瀹屾垚涓婃姤
-        if (docType.getPakout() == 1) {
-            MesPakoutParam pakoutParam = new MesPakoutParam();
-            pakoutParam.setTag(!order.getDocType$().equalsIgnoreCase("鎵嬪姩鍑哄簱鍗�"));
-            pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime()));
-            pakoutParam.setLgortFrom("5006");
-            pakoutParam.setLgortTo("1111");
-            if (!pakoutParam.isTag()) {
-                pakoutParam.setKunnr("C1000");
-            }
-            pakoutParam.setOrderNo(order.getOrderNo());
+        } else if (docType.getPakout() == 1) {
+            // 鍑哄簱瀹屾垚涓婃姤
+            ExdOutstockTarget exdOutstockTarget = null;
             for (OrderDetl orderDetl : orderDetls) {
-                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
-                pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
-            }
-            String response = "";
-            boolean success = false;
-            try {
-                response = new HttpHandler.Builder()
-                        .setUri(MesConstant.URL)
-                        .setPath(MesConstant.PAKOUT_URL)
-                        .setJson(JSON.toJSONString(pakoutParam))
-                        .build()
-                        .doPost();
-                JSONObject jsonObject = JSON.parseObject(response);
-                if (jsonObject.getInteger("code").equals(200)) {
-                    success = true;
-                    // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
-                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-                    }
+                exdOutstockTarget = new ExdOutstockTarget();
+                exdOutstockTarget.setFinterid(orderDetl.getDeadWarn());
+                exdOutstockTarget.setFbillno(orderDetl.getOrderNo());
+                if (order.getDocType() == 42) {
+                    exdOutstockTarget.setFtrantype(41);
+                } else if (order.getDocType() == 21) {
+                    exdOutstockTarget.setFtrantype(81);
                 } else {
-                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKOUT_URL, JSON.toJSONString(pakoutParam), response);
-                    throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+                    exdOutstockTarget.setFtrantype(order.getDocType().intValue());
                 }
-            } catch (Exception e) {
-                log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg(e.getMessage());
-            } finally {
-                try {
-                    // 淇濆瓨鎺ュ彛鏃ュ織
-                    apiLogService.save(
-                            "鎴愬搧搴撳嚭搴撲笂鎶�",
-                            MesConstant.URL + MesConstant.PAKOUT_URL,
-                            null,
-                            "127.0.0.1",
-                            JSON.toJSONString(pakoutParam),
-                            response,
-                            success
-                    );
-                } catch (Exception e) { log.error("", e); }
+                exdOutstockTarget.setFdate(DateUtils.convert(order.getOrderTime()));
+                exdOutstockTarget.setFrob(orderDetl.getInspect());
+                exdOutstockTarget.setFuserid(Integer.getInteger(orderDetl.getColor()));
+                exdOutstockTarget.setWritetime(new Date());
+                exdOutstockTarget.setWritor("WMS");
+                exdOutstockTarget.setStatus(0);
+                exdOutstockTargetService.insert(exdOutstockTarget);
+
+            }
+            if (!orderService.updateSettle(order.getId(), 6L, null)) {
+                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
             }
         }
         return SUCCESS;
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index b575820..b156340 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -6,6 +6,10 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.third.entity.ExdInstockTarget;
+import com.zy.third.entity.ExdvYanbu;
+import com.zy.third.mapper.ExdMaterialMapper;
+import com.zy.third.service.ExdInstockTargetService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,18 +40,25 @@
     @Autowired
     private OrderDetlService orderDetlService;
 
+    @Autowired
+    private ExdInstockTargetService exdInstockTargetService;
+
+    @Autowired
+    private ExdMaterialMapper exdMaterialMapper;
+
+    @Transactional
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
         if (wrkMast.getWrkSts() == 4) {
             return doIn(wrkMast);
-        // 14.鍑哄簱瀹屾垚
-        } else  if (wrkMast.getWrkSts() == 14) {
+            // 14.鍑哄簱瀹屾垚
+        } else if (wrkMast.getWrkSts() == 14) {
             return doOut(wrkMast);
         }
         return SUCCESS;
     }
 
-    private ReturnT<String> doIn(WrkMast wrkMast){
+    private ReturnT<String> doIn(WrkMast wrkMast) {
         Date now = new Date();
         LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
         try {
@@ -116,22 +127,25 @@
 
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
                         OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
-                        if(orderDetl==null){
-                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+                        if (orderDetl == null) {
+                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                         }
                         try {
-                            if(!Cools.isEmpty(orderDetl)){
-                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
+                            if (!Cools.isEmpty(orderDetl)) {
+                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
 //                                    exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                 }
                             }
-                        } catch (Exception ignore){}
+                        } catch (Exception ignore) {
+                        }
 
                     }
+                    // 鍐欏叆涓棿琛ㄦ暟鎹�
+                    write(wrkMast, wrkDetls);
                     // 淇敼搴撲綅鐘舵�� S ====>> F
                     if (locMast.getLocSts().equals("S")) {
                         locMast.setLocSts("F");
@@ -167,20 +181,21 @@
 
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
                         OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
-                        if(orderDetl==null){
-                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+                        if (orderDetl == null) {
+                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                         }
                         try {
-                            if(!Cools.isEmpty(orderDetl)){
-                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
+                            if (!Cools.isEmpty(orderDetl)) {
+                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
 //                                    exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                 }
                             }
-                        } catch (Exception ignore){}
+                        } catch (Exception ignore) {
+                        }
 
                     }
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
@@ -206,7 +221,7 @@
                         return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                     }
                     // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
-                    for (WrkDetl wrkDetl:wrkDetls54) {
+                    for (WrkDetl wrkDetl : wrkDetls54) {
 
                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                         if (null != locDetl) {
@@ -254,7 +269,7 @@
                     }
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
-                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y")?"F":"D");
+                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D");
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
@@ -323,7 +338,7 @@
         return SUCCESS;
     }
 
-    private ReturnT<String> doOut(WrkMast wrkMast){
+    private ReturnT<String> doOut(WrkMast wrkMast) {
         Date now = new Date();
         LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
         try {
@@ -350,20 +365,21 @@
                     for (WrkDetl wrkDetl : wrkDetls101) {
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
                         OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
-                        if(orderDetl==null){
-                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+                        if (orderDetl == null) {
+                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                         }
                         try {
-                            if(!Cools.isEmpty(orderDetl)){
-                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
+                            if (!Cools.isEmpty(orderDetl)) {
+                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
 //                                    exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                 }
                             }
-                        } catch (Exception ignore){}
+                        } catch (Exception ignore) {
+                        }
                     }
                     // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
                     if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
@@ -402,10 +418,10 @@
                 default:
                     break;
             }
-            if(Cools.isEmpty(wrkMast.getMemo())){
+            if (Cools.isEmpty(wrkMast.getMemo())) {
                 // 淇敼宸ヤ綔涓绘。鐘舵��
                 wrkMast.setWrkSts(15L);
-            }else {
+            } else {
                 wrkMast.setWrkSts(30L);
             }
 
@@ -424,4 +440,46 @@
         return SUCCESS;
     }
 
+
+    private void write(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
+        ExdInstockTarget exdInstockTarge;
+        int i = -1;
+        for (WrkDetl wrkDetl : wrkDetls) {
+            if (Cools.isEmpty(wrkDetl.getOrderNo()) && !Cools.isEmpty(wrkDetl.getInspect()) && wrkDetl.getInspect() == 1) {
+                continue;
+            }
+            ExdvYanbu bacode = exdMaterialMapper.getBacode(wrkDetl.getBatch());
+            exdInstockTarge = new ExdInstockTarget();
+            exdInstockTarge.setFtrantype(21);
+            exdInstockTarge.setFdate(new Date());
+            exdInstockTarge.setFrob(1);
+
+            exdInstockTarge.setFqty(wrkDetl.getAnfme());
+            exdInstockTarge.setFbatchno(bacode.getBatchno());
+            exdInstockTarge.setFsourcebillno(bacode.getIcmono());
+            exdInstockTarge.setFsourcetrantype(85);
+
+            exdInstockTarge.setFentryid(i);
+            exdInstockTarge.setFsmanagerid(Integer.valueOf(wrkDetl.getColor()));
+            exdInstockTarge.setFfmanagerid(Integer.valueOf(wrkDetl.getColor()));
+            exdInstockTarge.setFbillerid(Integer.valueOf(wrkDetl.getColor()));
+            exdInstockTarge.setFitemid(Integer.parseInt(wrkDetl.getSku()));
+
+            exdInstockTarge.setFsourceentryid(i);
+            exdInstockTarge.setFdcspid(wrkMast.getLocNo());
+            exdInstockTarge.setFdcstockid(wrkDetl.getBrand());
+
+            exdInstockTarge.setBarcode(wrkDetl.getBatch());
+            exdInstockTarge.setGross(bacode.getGross());
+            exdInstockTarge.setWidth(bacode.getWidth());
+            exdInstockTarge.setDefects(bacode.getDefects());
+            exdInstockTarge.setBackcode(bacode.getBackcode());
+            exdInstockTarge.setWritetime(new Date());
+            exdInstockTarge.setWritor("WMS");
+            exdInstockTarge.setStatus(0);
+            exdInstockTargetService.insert(exdInstockTarge);
+            i++;
+        }
+    }
+
 }
diff --git a/src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java b/src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java
new file mode 100644
index 0000000..d8b8519
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java
@@ -0,0 +1,38 @@
+package com.zy.common.config.ds;
+
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.jdbc.datasource.AbstractDataSource;
+import org.springframework.util.Assert;
+
+import javax.sql.DataSource;
+import java.util.Map;
+
+public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean {
+    //澶氭暟鎹簮map闆嗗悎
+    private Map<Object, Object> targetDataSources;
+    //榛樿鏁版嵁婧�
+    private Object defaultTargetDataSource;
+    //鍏跺疄灏辨槸targetDataSources锛屽悗闈㈢殑afterPropertiesSet锛堬級鏂规硶浼氬皢targetDataSources璧嬪�肩粰resolvedDataSources
+    private Map<Object, DataSource> resolvedDataSources;
+    private DataSource resolvedDefaultDataSource;
+
+    public void setTargetDataSources(Map<Object, Object> targetDataSources) {
+        this.targetDataSources = targetDataSources;
+    }
+
+    protected DataSource determineTargetDataSource() {
+        Assert.notNull(this.resolvedDataSources, "DataSource router not initialized");
+        Object lookupKey = this.determineCurrentLookupKey();
+        DataSource dataSource = (DataSource) this.resolvedDataSources.get(lookupKey);
+        if (dataSource == null && ( lookupKey == null)) {
+            dataSource = this.resolvedDefaultDataSource;
+        }
+        if (dataSource == null) {
+            throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]");
+        } else {
+            return dataSource;
+        }
+    }
+
+    protected abstract Object determineCurrentLookupKey();
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/common/config/ds/DataSourceAop.java b/src/main/java/com/zy/common/config/ds/DataSourceAop.java
new file mode 100644
index 0000000..9b23cf2
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/DataSourceAop.java
@@ -0,0 +1,27 @@
+package com.zy.common.config.ds;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.stereotype.Component;
+
+@Aspect
+@Component
+public class DataSourceAop {
+    @Before("execution(* com.zy.asrs..*(..))")
+    public void setDataSource2test01() {
+        //System.err.println("test01涓氬姟");
+        DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST01);
+    }
+
+    @Before("execution(* com.zy.system..*(..))")
+    public void setDataSource2test012() {
+        //System.err.println("test01涓氬姟");
+        DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST01);
+    }
+
+    @Before("execution(* com.zy.third..*(..))")
+    public void setDataSource2test02() {
+        //System.err.println("test02涓氬姟");
+        DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST02);
+    }
+}
diff --git a/src/main/java/com/zy/common/config/ds/DataSourceConfig.java b/src/main/java/com/zy/common/config/ds/DataSourceConfig.java
new file mode 100644
index 0000000..e0cd18e
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/DataSourceConfig.java
@@ -0,0 +1,54 @@
+package com.zy.common.config.ds;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+
+
+@Configuration
+public class DataSourceConfig {
+
+    @Value("${other.datasource.jdbc-url}")
+    private String url;
+    @Value("${other.datasource.username}")
+    private String username;
+    @Value("${other.datasource.password}")
+    private String password;
+    @Value("${other.datasource.driver-class-name}")
+    private String driverClassName;
+
+    // 涓绘暟鎹簮
+    @Bean(name = "dataSource")
+    @Primary
+    @ConfigurationProperties(prefix = "spring.datasource")
+    public DataSource primaryDataSource() {
+        return DataSourceBuilder.create().build();
+    }
+
+    // 娆℃暟鎹簮
+    @Bean(name = "slaveDataSource")
+    public DataSource secondaryDataSource() {
+        HikariConfig config = new HikariConfig();
+        config.setJdbcUrl(url);
+        config.setUsername(username);
+        config.setPassword(password);
+        config.setDriverClassName(driverClassName);
+        config.setInitializationFailTimeout(0L);
+        return new HikariDataSource( config);
+//        return DataSourceBuilder.create()
+//                .driverClassName(driverClassName)
+//                .url(url)
+//                .username(username)
+//                .password(password)
+//                .build();
+
+    }
+
+}
diff --git a/src/main/java/com/zy/common/config/ds/DataSourceType.java b/src/main/java/com/zy/common/config/ds/DataSourceType.java
new file mode 100644
index 0000000..57ce62b
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/DataSourceType.java
@@ -0,0 +1,32 @@
+package com.zy.common.config.ds;
+
+public class DataSourceType {
+
+    public enum DataBaseType {
+        TEST01, TEST02
+    }
+
+    // 浣跨敤ThreadLocal淇濊瘉绾跨▼瀹夊叏
+    private static final ThreadLocal<DataBaseType> TYPE = new ThreadLocal<DataBaseType>();
+
+    // 寰�褰撳墠绾跨▼閲岃缃暟鎹簮绫诲瀷
+    public static void setDataBaseType(DataBaseType dataBaseType) {
+        if (dataBaseType == null) {
+            throw new NullPointerException();
+        }
+        //System.err.println("[灏嗗綋鍓嶆暟鎹簮鏀逛负]锛�" + dataBaseType);
+        TYPE.set(dataBaseType);
+    }
+
+    // 鑾峰彇鏁版嵁婧愮被鍨�
+    public static DataBaseType getDataBaseType() {
+        DataBaseType dataBaseType = TYPE.get() == null ? DataBaseType.TEST01 : TYPE.get();
+        //System.err.println("[鑾峰彇褰撳墠鏁版嵁婧愮殑绫诲瀷涓篯锛�" + dataBaseType);
+        return dataBaseType;
+    }
+
+    // 娓呯┖鏁版嵁绫诲瀷
+    public static void clearDataBaseType() {
+        TYPE.remove();
+    }
+}
diff --git a/src/main/java/com/zy/common/config/ds/DynamicDataSource.java b/src/main/java/com/zy/common/config/ds/DynamicDataSource.java
new file mode 100644
index 0000000..a0e228c
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/DynamicDataSource.java
@@ -0,0 +1,11 @@
+package com.zy.common.config.ds;
+
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+public class DynamicDataSource  extends AbstractRoutingDataSource {
+    @Override
+    protected Object determineCurrentLookupKey() {
+        DataSourceType.DataBaseType dataBaseType = DataSourceType.getDataBaseType();
+        return dataBaseType;
+    }
+}
diff --git a/src/main/java/com/zy/common/config/ds/PrimaryDataSourceConfig.java b/src/main/java/com/zy/common/config/ds/PrimaryDataSourceConfig.java
new file mode 100644
index 0000000..16b482c
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/PrimaryDataSourceConfig.java
@@ -0,0 +1,40 @@
+package com.zy.common.config.ds;
+
+import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
+import org.apache.ibatis.plugin.Interceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(basePackages = {"com.zy.asrs.mapper", "com.zy.system.mapper"}, sqlSessionFactoryRef = "primarySqlSessionFactory")
+public class PrimaryDataSourceConfig {
+
+    @Bean(name = "primarySqlSessionFactory")
+    @Primary
+    public MybatisSqlSessionFactoryBean primarySqlSessionFactory(@Qualifier("dataSource") DataSource dataSource, PaginationInterceptor paginationInterceptor) throws Exception {
+        MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
+        sessionFactory.setDataSource(dataSource);
+        // 璁剧疆MyBatis鐨凪apper XML鏂囦欢璺緞
+        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
+                .getResources("classpath:mapper/asrs/*.xml"));
+        Interceptor[] interceptors = new Interceptor[]{paginationInterceptor};
+        sessionFactory.setPlugins(interceptors);
+        return sessionFactory;
+    }
+
+    @Bean(name = "transactionManager")
+    @Primary
+    public DataSourceTransactionManager primaryTransactionManager(@Qualifier("dataSource") DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/common/config/ds/SecondaryDataSourceConfig.java b/src/main/java/com/zy/common/config/ds/SecondaryDataSourceConfig.java
new file mode 100644
index 0000000..095c284
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/SecondaryDataSourceConfig.java
@@ -0,0 +1,46 @@
+package com.zy.common.config.ds;
+
+import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(basePackages = "com.zy.third.mapper", sqlSessionFactoryRef = "secondarySqlSessionFactory")
+public class SecondaryDataSourceConfig {
+
+    @Bean(name = "secondarySqlSessionFactory")
+    public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource, PaginationInterceptor paginationInterceptor) throws Exception {
+        try {
+            MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
+            sessionFactory.setDataSource(dataSource);
+            // 璁剧疆MyBatis鐨凪apper XML鏂囦欢璺緞
+            sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
+                    .getResources("classpath:mapper/third/*.xml"));
+            Interceptor[] interceptors = new Interceptor[]{paginationInterceptor};
+            sessionFactory.setPlugins(interceptors);
+            return sessionFactory.getObject();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+
+    @Bean(name = "secondaryTransactionManager")
+    public DataSourceTransactionManager secondaryTransactionManager(@Qualifier("slaveDataSource") DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index 650e884..fd70a61 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -4,6 +4,7 @@
 import com.zy.asrs.entity.OrderDetl;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
@@ -21,6 +22,11 @@
 
     private Double anfme;
 
+    private Integer frob;
+
+    private Integer FInterID;
+
+
     public DetlDto() {
     }
 
diff --git a/src/main/java/com/zy/common/web/BaseController.java b/src/main/java/com/zy/common/web/BaseController.java
index 995c3d9..8fb721f 100644
--- a/src/main/java/com/zy/common/web/BaseController.java
+++ b/src/main/java/com/zy/common/web/BaseController.java
@@ -75,6 +75,12 @@
     protected User getUser(){
         User user = userService.selectById(getUserId());
         if (null == user) {
+            if (getUserId() == 9527){
+                user = new User();
+                user.setId(9527L);
+                user.setUsername("super");
+                return user ;
+            }
             throw new CoolException(BaseRes.DENIED);
         }
         return user;
diff --git a/src/main/java/com/zy/third/entity/ExdCustomer.java b/src/main/java/com/zy/third/entity/ExdCustomer.java
new file mode 100644
index 0000000..3789324
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdCustomer.java
@@ -0,0 +1,70 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Customer
+ */
+@TableName(value ="Exd_Customer")
+@Data
+public class ExdCustomer implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String fnumber;
+
+    /**
+     * 
+     */
+    private String fname;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdDepartment.java b/src/main/java/com/zy/third/entity/ExdDepartment.java
new file mode 100644
index 0000000..3902122
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdDepartment.java
@@ -0,0 +1,70 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Department
+ */
+@TableName(value ="Exd_Department")
+@Data
+public class ExdDepartment implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String fnumber;
+
+    /**
+     * 
+     */
+    private String fname;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdEmp.java b/src/main/java/com/zy/third/entity/ExdEmp.java
new file mode 100644
index 0000000..3a51334
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdEmp.java
@@ -0,0 +1,70 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Emp
+ */
+@TableName(value ="Exd_Emp")
+@Data
+public class ExdEmp implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String fnumber;
+
+    /**
+     * 
+     */
+    private String fname;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdInstockSource.java b/src/main/java/com/zy/third/entity/ExdInstockSource.java
new file mode 100644
index 0000000..640366d
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdInstockSource.java
@@ -0,0 +1,183 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Instock_Source
+ */
+@TableName(value ="Exd_Instock_Source")
+@Data
+public class ExdInstockSource implements Serializable {
+    /**
+     * 
+     */
+    @TableId(value = "ID", type = IdType.AUTO)
+    private String ID;
+
+    /**
+     * 
+     */
+    private Integer finterid;
+
+    /**
+     * 
+     */
+    private String fbillno;
+
+    /**
+     * 
+     */
+    private Integer ftrantype;
+
+    /**
+     * 
+     */
+    private Date fdate;
+
+    /**
+     * 
+     */
+    private Integer frob;
+
+    /**
+     * 
+     */
+    private Integer fdeptid;
+
+    /**
+     * 
+     */
+    private Integer fsupplyid;
+
+    /**
+     * 
+     */
+    private Integer fbillerid;
+
+    /**
+     * 
+     */
+    private Integer fentryid;
+
+    /**
+     * 
+     */
+    private Integer fitemid;
+
+    /**
+     * 
+     */
+    private Double fqty;
+
+    /**
+     * 
+     */
+    private Double fprice;
+
+    /**
+     * 
+     */
+    private String fbatchno;
+
+    /**
+     * 
+     */
+    private Integer funitid;
+
+    /**
+     * 
+     */
+    private String fsourcebillno;
+
+    /**
+     * 
+     */
+    private Integer fsourceentryid;
+
+    /**
+     * 
+     */
+    private Integer fsourceinterid;
+
+    /**
+     * 
+     */
+    private Integer fsourcetrantype;
+
+    /**
+     * 
+     */
+    private Integer fdcspid;
+
+    /**
+     * 
+     */
+    private Integer fdcstockid;
+
+    /**
+     * 
+     */
+    private String forderbillno;
+
+    /**
+     * 
+     */
+    private Integer forderentryid;
+
+    /**
+     * 
+     */
+    private Integer forderinterid;
+
+    /**
+     * 
+     */
+    private Integer fplanmode;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdInstockTarget.java b/src/main/java/com/zy/third/entity/ExdInstockTarget.java
new file mode 100644
index 0000000..b63a482
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdInstockTarget.java
@@ -0,0 +1,223 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Instock_Target
+ */
+@TableName(value ="Exd_Instock_Target")
+@Data
+public class ExdInstockTarget implements Serializable {
+    /**
+     * 
+     */
+    @TableId(value = "ID", type = IdType.AUTO)
+    private String ID;
+
+    /**
+     * 
+     */
+    private Integer finterid;
+
+    /**
+     * 
+     */
+    private String fbillno;
+
+    /**
+     * 
+     */
+    private Integer ftrantype;
+
+    /**
+     * 
+     */
+    private Date fdate;
+
+    /**
+     * 
+     */
+    private Integer frob;
+
+    /**
+     * 
+     */
+    private Integer fuserid;
+
+    /**
+     * 
+     */
+    private Integer fdeptid;
+
+    /**
+     * 
+     */
+    private Integer fsupplyid;
+
+    /**
+     * 
+     */
+    private Integer fbillerid;
+
+    /**
+     * 
+     */
+    private Integer ffmanagerid;
+
+    /**
+     * 
+     */
+    private Integer fsmanagerid;
+
+    /**
+     * 
+     */
+    private Integer fentryid;
+
+    /**
+     * 
+     */
+    private Integer fitemid;
+
+    /**
+     * 
+     */
+    private Double fqty;
+
+    /**
+     * 
+     */
+    private Double fprice;
+
+    /**
+     * 
+     */
+    private String fbatchno;
+
+    /**
+     * 
+     */
+    private Integer funitid;
+
+    /**
+     * 
+     */
+    private String fsourcebillno;
+
+    /**
+     * 
+     */
+    private Integer fsourceentryid;
+
+    /**
+     * 
+     */
+    private Integer fsourceinterid;
+
+    /**
+     * 
+     */
+    private Integer fsourcetrantype;
+
+    /**
+     * 
+     */
+    private String fdcspid;
+
+    /**
+     * 
+     */
+    private String fdcstockid;
+
+    /**
+     * 
+     */
+    private String forderbillno;
+
+    /**
+     * 
+     */
+    private Integer forderentryid;
+
+    /**
+     * 
+     */
+    private Integer forderinterid;
+
+    /**
+     * 
+     */
+    private Integer fplanmode;
+
+    /**
+     * 
+     */
+    private String barcode;
+
+    /**
+     * 
+     */
+    private Double gross;
+
+    /**
+     * 
+     */
+    private Double width;
+
+    /**
+     * 
+     */
+    private Integer defects;
+
+    /**
+     * 
+     */
+    private String backcode;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdMaterial.java b/src/main/java/com/zy/third/entity/ExdMaterial.java
new file mode 100644
index 0000000..8c3a54a
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdMaterial.java
@@ -0,0 +1,75 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Material
+ */
+@TableName(value ="Exd_Material")
+@Data
+public class ExdMaterial implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String fnumber;
+
+    /**
+     * 
+     */
+    private String fname;
+
+    /**
+     * 
+     */
+    private String fmodel;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdOutstockSource.java b/src/main/java/com/zy/third/entity/ExdOutstockSource.java
new file mode 100644
index 0000000..caee837
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdOutstockSource.java
@@ -0,0 +1,193 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Outstock_Source
+ */
+@TableName(value ="Exd_Outstock_Source")
+@Data
+public class ExdOutstockSource implements Serializable {
+    /**
+     * 
+     */
+    @TableId(value = "ID", type = IdType.AUTO)
+    private String ID;
+
+    /**
+     * 
+     */
+    private Integer finterid;
+
+    /**
+     * 
+     */
+    private String fbillno;
+
+    /**
+     * 
+     */
+    private Integer ftrantype;
+
+    /**
+     * 
+     */
+    private Date fdate;
+
+    /**
+     * 
+     */
+    private Integer frob;
+
+    /**
+     * 
+     */
+    private Integer fdeptid;
+
+    /**
+     * 
+     */
+    private Integer fsupplyid;
+
+    /**
+     * 
+     */
+    private Integer fbillerid;
+
+    /**
+     * 
+     */
+    private Integer fentryid;
+
+    /**
+     * 
+     */
+    private Integer fitemid;
+
+    /**
+     * 
+     */
+    private Double fqty;
+
+    /**
+     * 
+     */
+    private Double fprice;
+
+    /**
+     * 
+     */
+    private String fbatchno;
+
+    /**
+     * 
+     */
+    private Integer funitid;
+
+    /**
+     * 
+     */
+    private String fsourcebillno;
+
+    /**
+     * 
+     */
+    private Integer fsourceentryid;
+
+    /**
+     * 
+     */
+    private Integer fsourceinterid;
+
+    /**
+     * 
+     */
+    private Integer fsourcetrantype;
+
+    /**
+     * 
+     */
+    private Integer fdcspid;
+
+    /**
+     * 
+     */
+    private Integer fdcstockid;
+
+    /**
+     * 
+     */
+    private Integer fscspid;
+
+    /**
+     * 
+     */
+    private Integer fscstockid;
+
+    /**
+     * 
+     */
+    private String forderbillno;
+
+    /**
+     * 
+     */
+    private Integer forderentryid;
+
+    /**
+     * 
+     */
+    private Integer forderinterid;
+
+    /**
+     * 
+     */
+    private Integer fplanmode;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdOutstockTarget.java b/src/main/java/com/zy/third/entity/ExdOutstockTarget.java
new file mode 100644
index 0000000..a9c0b47
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdOutstockTarget.java
@@ -0,0 +1,228 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Outstock_Target
+ */
+@TableName(value ="Exd_Outstock_Target")
+@Data
+public class ExdOutstockTarget implements Serializable {
+    /**
+     * 
+     */
+    @TableId(value = "ID", type = IdType.AUTO)
+    private String ID;
+
+    /**
+     * 
+     */
+    private Integer finterid;
+
+    /**
+     * 
+     */
+    private String fbillno;
+
+    /**
+     * 
+     */
+    private Integer ftrantype;
+
+    /**
+     * 
+     */
+    private Date fdate;
+
+    /**
+     * 
+     */
+    private Integer frob;
+
+    /**
+     * 
+     */
+    private Integer fuserid;
+
+    /**
+     * 
+     */
+    private Integer fdeptid;
+
+    /**
+     * 
+     */
+    private Integer fsupplyid;
+
+    /**
+     * 
+     */
+    private Integer fbillerid;
+
+    /**
+     * 
+     */
+    private Integer fentryid;
+
+    /**
+     * 
+     */
+    private Integer fitemid;
+
+    /**
+     * 
+     */
+    private Double fqtymust;
+
+    /**
+     * 
+     */
+    private Double fqty;
+
+    /**
+     * 
+     */
+    private Double fprice;
+
+    /**
+     * 
+     */
+    private String fbatchno;
+
+    /**
+     * 
+     */
+    private Integer funitid;
+
+    /**
+     * 
+     */
+    private String fsourcebillno;
+
+    /**
+     * 
+     */
+    private Integer fsourceentryid;
+
+    /**
+     * 
+     */
+    private Integer fsourceinterid;
+
+    /**
+     * 
+     */
+    private Integer fsourcetrantype;
+
+    /**
+     * 
+     */
+    private Integer fdcspid;
+
+    /**
+     * 
+     */
+    private Integer fdcstockid;
+
+    /**
+     * 
+     */
+    private Integer fscspid;
+
+    /**
+     * 
+     */
+    private Integer fscstockid;
+
+    /**
+     * 
+     */
+    private String forderbillno;
+
+    /**
+     * 
+     */
+    private Integer forderentryid;
+
+    /**
+     * 
+     */
+    private Integer forderinterid;
+
+    /**
+     * 
+     */
+    private Integer fplanmode;
+
+    /**
+     * 
+     */
+    private String barcode;
+
+    /**
+     * 
+     */
+    private BigDecimal gross;
+
+    /**
+     * 
+     */
+    private BigDecimal width;
+
+    /**
+     * 
+     */
+    private BigDecimal defects;
+
+    /**
+     * 
+     */
+    private String backcode;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdSupplier.java b/src/main/java/com/zy/third/entity/ExdSupplier.java
new file mode 100644
index 0000000..99d7eab
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdSupplier.java
@@ -0,0 +1,70 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_Supplier
+ */
+@TableName(value ="Exd_Supplier")
+@Data
+public class ExdSupplier implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String fnumber;
+
+    /**
+     * 
+     */
+    private String fname;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdUser.java b/src/main/java/com/zy/third/entity/ExdUser.java
new file mode 100644
index 0000000..9cc0bb8
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdUser.java
@@ -0,0 +1,65 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName Exd_User
+ */
+@TableName(value ="Exd_User")
+@Data
+public class ExdUser implements Serializable {
+    /**
+     * 
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String name;
+
+    /**
+     * 
+     */
+    private Date writetime;
+
+    /**
+     * 
+     */
+    private String writor;
+
+    /**
+     * 
+     */
+    private Integer status;
+
+    /**
+     * 
+     */
+    private Date readtime;
+
+    /**
+     * 
+     */
+    private String reador;
+
+    /**
+     * 
+     */
+    private String writormsg;
+
+    /**
+     * 
+     */
+    private String readormsg;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/entity/ExdvYanbu.java b/src/main/java/com/zy/third/entity/ExdvYanbu.java
new file mode 100644
index 0000000..7028551
--- /dev/null
+++ b/src/main/java/com/zy/third/entity/ExdvYanbu.java
@@ -0,0 +1,201 @@
+package com.zy.third.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import lombok.Data;
+
+/**
+ * 
+ * @TableName ExdV_Yanbu
+ */
+@TableName(value ="ExdV_Yanbu")
+@Data
+public class ExdvYanbu implements Serializable {
+    /**
+     *
+     */
+    private String barcode;
+
+    /**
+     *
+     */
+    private BigDecimal qty;
+
+    /**
+     *
+     */
+    private String itemnumber;
+
+    /**
+     *
+     */
+    private String itemname;
+
+    /**
+     *
+     */
+    private String itemmodel;
+
+    /**
+     *
+     */
+    private String batchno;
+
+    /**
+     *
+     */
+    private String icmono;
+
+    /**
+     *
+     */
+    private String pono;
+
+    /**
+     *
+     */
+    private Double gross;
+
+    /**
+     *
+     */
+    private Double width;
+
+    /**
+     *
+     */
+    private Integer defects;
+
+    /**
+     *
+     */
+    private String cuspartno;
+
+    /**
+     *
+     */
+    private String supplierpartno;
+
+    /**
+     *
+     */
+    private String supplierno;
+
+    /**
+     *
+     */
+    private Date packdate;
+
+    /**
+     *
+     */
+    private String revision;
+
+    /**
+     *
+     */
+    private Date createdate;
+
+    /**
+     *
+     */
+    private Date readdate;
+
+    /**
+     *
+     */
+    private Integer status;
+
+    /**
+     *
+     */
+    private String parts;
+
+    /**
+     *
+     */
+    private String oemproject;
+
+    /**
+     *
+     */
+    private String qcempid;
+
+    /**
+     *
+     */
+    private String qcempname;
+
+    /**
+     *
+     */
+    private Date modifydate;
+
+    /**
+     *
+     */
+    private String backcode;
+
+    /**
+     *
+     */
+    private String qualitylevel;
+
+    /**
+     *
+     */
+    private String reserve01;
+
+    /**
+     *
+     */
+    private String reserve02;
+
+    /**
+     *
+     */
+    private String reserve03;
+
+    /**
+     *
+     */
+    private BigDecimal reserve04;
+
+    /**
+     *
+     */
+    private BigDecimal reserve05;
+
+    /**
+     *
+     */
+    private String qcempid2;
+
+    /**
+     *
+     */
+    private String qcempname2;
+
+    /**
+     *
+     */
+    private Date packendtime;
+
+    /**
+     *
+     */
+    private String qcempid3;
+
+    /**
+     *
+     */
+    private String qcempname3;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/third/mapper/ExdCustomerMapper.java b/src/main/java/com/zy/third/mapper/ExdCustomerMapper.java
new file mode 100644
index 0000000..eb0e405
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdCustomerMapper.java
@@ -0,0 +1,15 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdCustomer;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Customer銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdCustomer
+*/
+public interface ExdCustomerMapper extends BaseMapper<ExdCustomer> {
+
+
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdDepartmentMapper.java b/src/main/java/com/zy/third/mapper/ExdDepartmentMapper.java
new file mode 100644
index 0000000..96b6c5b
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdDepartmentMapper.java
@@ -0,0 +1,15 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdDepartment;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Department銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdDepartment
+*/
+public interface ExdDepartmentMapper extends BaseMapper<ExdDepartment> {
+
+
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdEmpMapper.java b/src/main/java/com/zy/third/mapper/ExdEmpMapper.java
new file mode 100644
index 0000000..c6c9b50
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdEmpMapper.java
@@ -0,0 +1,15 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdEmp;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Emp銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdEmp
+*/
+public interface ExdEmpMapper extends BaseMapper<ExdEmp> {
+
+
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdInstockSourceMapper.java b/src/main/java/com/zy/third/mapper/ExdInstockSourceMapper.java
new file mode 100644
index 0000000..d00a787
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdInstockSourceMapper.java
@@ -0,0 +1,21 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdInstockSource;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Instock_Source銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdInstockSource
+*/
+public interface ExdInstockSourceMapper extends BaseMapper<ExdInstockSource> {
+
+
+    List<String> listOrderNo();
+
+    List<ExdInstockSource> listAll(@Param("orderNo") String orderNo);
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdInstockTargetMapper.java b/src/main/java/com/zy/third/mapper/ExdInstockTargetMapper.java
new file mode 100644
index 0000000..eb26ef6
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdInstockTargetMapper.java
@@ -0,0 +1,15 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdInstockTarget;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Instock_Target銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdInstockTarget
+*/
+public interface ExdInstockTargetMapper extends BaseMapper<ExdInstockTarget> {
+
+
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdMaterialMapper.java b/src/main/java/com/zy/third/mapper/ExdMaterialMapper.java
new file mode 100644
index 0000000..acb9522
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdMaterialMapper.java
@@ -0,0 +1,22 @@
+package com.zy.third.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.third.entity.ExdMaterial;
+import com.zy.third.entity.ExdvYanbu;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author zc857
+ * @description 閽堝琛ㄣ�怑xd_Material銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-09-24 08:20:14
+ * @Entity com.zy.third.entity.ExdMaterial
+ */
+public interface ExdMaterialMapper extends BaseMapper<ExdMaterial> {
+
+    ExdvYanbu getBacode(@Param("barcode") String barcode);
+
+
+    List<ExdMaterial> listAll();
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdOutstockSourceMapper.java b/src/main/java/com/zy/third/mapper/ExdOutstockSourceMapper.java
new file mode 100644
index 0000000..6c0cd65
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdOutstockSourceMapper.java
@@ -0,0 +1,21 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdOutstockSource;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Outstock_Source銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdOutstockSource
+*/
+public interface ExdOutstockSourceMapper extends BaseMapper<ExdOutstockSource> {
+
+
+    List<String> listOrderNo();
+
+    List<ExdOutstockSource> listAll(@Param("orderNo") String orderNo);
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdOutstockTargetMapper.java b/src/main/java/com/zy/third/mapper/ExdOutstockTargetMapper.java
new file mode 100644
index 0000000..6f52910
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdOutstockTargetMapper.java
@@ -0,0 +1,15 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdOutstockTarget;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Outstock_Target銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdOutstockTarget
+*/
+public interface ExdOutstockTargetMapper extends BaseMapper<ExdOutstockTarget> {
+
+
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdSupplierMapper.java b/src/main/java/com/zy/third/mapper/ExdSupplierMapper.java
new file mode 100644
index 0000000..35fb2c6
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdSupplierMapper.java
@@ -0,0 +1,15 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdSupplier;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Supplier銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdSupplier
+*/
+public interface ExdSupplierMapper extends BaseMapper<ExdSupplier> {
+
+
+}
diff --git a/src/main/java/com/zy/third/mapper/ExdUserMapper.java b/src/main/java/com/zy/third/mapper/ExdUserMapper.java
new file mode 100644
index 0000000..0ae5fd3
--- /dev/null
+++ b/src/main/java/com/zy/third/mapper/ExdUserMapper.java
@@ -0,0 +1,18 @@
+package com.zy.third.mapper;
+
+import com.zy.third.entity.ExdUser;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_User銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 08:20:14
+* @Entity com.zy.third.entity.ExdUser
+*/
+public interface ExdUserMapper extends BaseMapper<ExdUser> {
+
+
+    List<ExdUser> listAll();
+}
diff --git a/src/main/java/com/zy/third/service/ExdCustomerService.java b/src/main/java/com/zy/third/service/ExdCustomerService.java
new file mode 100644
index 0000000..213c072
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdCustomerService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdCustomer;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Customer銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdCustomerService extends IService<ExdCustomer> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdDepartmentService.java b/src/main/java/com/zy/third/service/ExdDepartmentService.java
new file mode 100644
index 0000000..8ee2fe4
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdDepartmentService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdDepartment;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Department銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdDepartmentService extends IService<ExdDepartment> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdEmpService.java b/src/main/java/com/zy/third/service/ExdEmpService.java
new file mode 100644
index 0000000..69d57a7
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdEmpService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdEmp;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Emp銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdEmpService extends IService<ExdEmp> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdInstockSourceService.java b/src/main/java/com/zy/third/service/ExdInstockSourceService.java
new file mode 100644
index 0000000..487869d
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdInstockSourceService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdInstockSource;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Instock_Source銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdInstockSourceService extends IService<ExdInstockSource> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdInstockTargetService.java b/src/main/java/com/zy/third/service/ExdInstockTargetService.java
new file mode 100644
index 0000000..ba38e50
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdInstockTargetService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdInstockTarget;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Instock_Target銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdInstockTargetService extends IService<ExdInstockTarget> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdMaterialService.java b/src/main/java/com/zy/third/service/ExdMaterialService.java
new file mode 100644
index 0000000..5a21a4c
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdMaterialService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdMaterial;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Material銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdMaterialService extends IService<ExdMaterial> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdOutstockSourceService.java b/src/main/java/com/zy/third/service/ExdOutstockSourceService.java
new file mode 100644
index 0000000..2244417
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdOutstockSourceService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdOutstockSource;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Outstock_Source銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdOutstockSourceService extends IService<ExdOutstockSource> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdOutstockTargetService.java b/src/main/java/com/zy/third/service/ExdOutstockTargetService.java
new file mode 100644
index 0000000..ff5bd69
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdOutstockTargetService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdOutstockTarget;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Outstock_Target銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdOutstockTargetService extends IService<ExdOutstockTarget> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdSupplierService.java b/src/main/java/com/zy/third/service/ExdSupplierService.java
new file mode 100644
index 0000000..6c77611
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdSupplierService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdSupplier;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Supplier銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdSupplierService extends IService<ExdSupplier> {
+
+}
diff --git a/src/main/java/com/zy/third/service/ExdUserService.java b/src/main/java/com/zy/third/service/ExdUserService.java
new file mode 100644
index 0000000..f3e6b90
--- /dev/null
+++ b/src/main/java/com/zy/third/service/ExdUserService.java
@@ -0,0 +1,13 @@
+package com.zy.third.service;
+
+import com.zy.third.entity.ExdUser;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_User銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 08:20:14
+*/
+public interface ExdUserService extends IService<ExdUser> {
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdCustomerServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdCustomerServiceImpl.java
new file mode 100644
index 0000000..5fe7b5b
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdCustomerServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdCustomer;
+import com.zy.third.service.ExdCustomerService;
+import com.zy.third.mapper.ExdCustomerMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Customer銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdCustomerServiceImpl extends ServiceImpl<ExdCustomerMapper, ExdCustomer>
+implements ExdCustomerService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdDepartmentServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdDepartmentServiceImpl.java
new file mode 100644
index 0000000..b664a4a
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdDepartmentServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdDepartment;
+import com.zy.third.service.ExdDepartmentService;
+import com.zy.third.mapper.ExdDepartmentMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Department銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdDepartmentServiceImpl extends ServiceImpl<ExdDepartmentMapper, ExdDepartment>
+implements ExdDepartmentService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdEmpServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdEmpServiceImpl.java
new file mode 100644
index 0000000..7a188eb
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdEmpServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdEmp;
+import com.zy.third.service.ExdEmpService;
+import com.zy.third.mapper.ExdEmpMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Emp銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdEmpServiceImpl extends ServiceImpl<ExdEmpMapper, ExdEmp>
+implements ExdEmpService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdInstockSourceServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdInstockSourceServiceImpl.java
new file mode 100644
index 0000000..8f4618a
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdInstockSourceServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdInstockSource;
+import com.zy.third.service.ExdInstockSourceService;
+import com.zy.third.mapper.ExdInstockSourceMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Instock_Source銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdInstockSourceServiceImpl extends ServiceImpl<ExdInstockSourceMapper, ExdInstockSource>
+implements ExdInstockSourceService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdInstockTargetServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdInstockTargetServiceImpl.java
new file mode 100644
index 0000000..1e89a30
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdInstockTargetServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdInstockTarget;
+import com.zy.third.service.ExdInstockTargetService;
+import com.zy.third.mapper.ExdInstockTargetMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Instock_Target銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdInstockTargetServiceImpl extends ServiceImpl<ExdInstockTargetMapper, ExdInstockTarget>
+implements ExdInstockTargetService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdMaterialServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdMaterialServiceImpl.java
new file mode 100644
index 0000000..8fc4f44
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdMaterialServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdMaterial;
+import com.zy.third.service.ExdMaterialService;
+import com.zy.third.mapper.ExdMaterialMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Material銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdMaterialServiceImpl extends ServiceImpl<ExdMaterialMapper, ExdMaterial>
+implements ExdMaterialService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdOutstockSourceServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdOutstockSourceServiceImpl.java
new file mode 100644
index 0000000..3c0b896
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdOutstockSourceServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdOutstockSource;
+import com.zy.third.service.ExdOutstockSourceService;
+import com.zy.third.mapper.ExdOutstockSourceMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Outstock_Source銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdOutstockSourceServiceImpl extends ServiceImpl<ExdOutstockSourceMapper, ExdOutstockSource>
+implements ExdOutstockSourceService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdOutstockTargetServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdOutstockTargetServiceImpl.java
new file mode 100644
index 0000000..dd30c34
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdOutstockTargetServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdOutstockTarget;
+import com.zy.third.service.ExdOutstockTargetService;
+import com.zy.third.mapper.ExdOutstockTargetMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Outstock_Target銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdOutstockTargetServiceImpl extends ServiceImpl<ExdOutstockTargetMapper, ExdOutstockTarget>
+implements ExdOutstockTargetService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdSupplierServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdSupplierServiceImpl.java
new file mode 100644
index 0000000..5a8d71c
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdSupplierServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdSupplier;
+import com.zy.third.service.ExdSupplierService;
+import com.zy.third.mapper.ExdSupplierMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_Supplier銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdSupplierServiceImpl extends ServiceImpl<ExdSupplierMapper, ExdSupplier>
+implements ExdSupplierService{
+
+}
diff --git a/src/main/java/com/zy/third/service/impl/ExdUserServiceImpl.java b/src/main/java/com/zy/third/service/impl/ExdUserServiceImpl.java
new file mode 100644
index 0000000..7b00b52
--- /dev/null
+++ b/src/main/java/com/zy/third/service/impl/ExdUserServiceImpl.java
@@ -0,0 +1,18 @@
+package com.zy.third.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.third.entity.ExdUser;
+import com.zy.third.service.ExdUserService;
+import com.zy.third.mapper.ExdUserMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author zc857
+* @description 閽堝琛ㄣ�怑xd_User銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 08:20:14
+*/
+@Service
+public class ExdUserServiceImpl extends ServiceImpl<ExdUserMapper, ExdUser>
+implements ExdUserService{
+
+}
diff --git a/src/main/java/com/zy/third/task/BaseDataScheduler.java b/src/main/java/com/zy/third/task/BaseDataScheduler.java
new file mode 100644
index 0000000..2c984ea
--- /dev/null
+++ b/src/main/java/com/zy/third/task/BaseDataScheduler.java
@@ -0,0 +1,95 @@
+package com.zy.third.task;
+
+import com.zy.third.entity.ExdMaterial;
+import com.zy.third.entity.ExdUser;
+import com.zy.third.mapper.ExdMaterialMapper;
+import com.zy.third.mapper.ExdUserMapper;
+import com.zy.third.task.handler.BaseDataHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Component
+@Slf4j
+public class BaseDataScheduler {
+
+
+    @Autowired
+    private BaseDataHandler baseDataHandler;
+
+
+    @Autowired
+    private ExdUserMapper exdUserMapper;
+
+
+    @Autowired
+    private ExdMaterialMapper exdMaterialMapper;
+
+
+    /**
+     * 璇诲彇鐢ㄦ埛淇℃伅
+     */
+    @Scheduled(cron = "0/30 * * * * ? ")
+    public void readUser() {
+        log.info("璇诲彇鐢ㄦ埛淇℃伅");
+        List<ExdUser> exdUsers = exdUserMapper.listAll();
+        for (ExdUser exdUser : exdUsers) {
+            try {
+                if (baseDataHandler.readUser(exdUser).isSuccess()) {
+                    exdUser.setStatus(1);
+                } else {
+                    exdUser.setStatus(2);
+                }
+            } catch (Exception e) {
+                log.error("璇诲彇鐢ㄦ埛淇℃伅澶辫触锛歿},{}", exdUser, e.getMessage());
+                exdUser.setStatus(2);
+                exdUser.setReadormsg(e.getMessage());
+            } finally {
+                exdUser.setReadtime(new Date());
+                exdUserMapper.updateById(exdUser);
+            }
+
+        }
+
+    }
+
+
+    /**
+     * 璇诲彇鐗╂枡淇℃伅
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public void readMat() {
+        log.info("璇诲彇鐗╂枡淇℃伅");
+        List<ExdMaterial> exdMaterials = exdMaterialMapper.listAll();
+        for (ExdMaterial exdMaterial : exdMaterials) {
+            try {
+                if (baseDataHandler.readMat(exdMaterial).isSuccess()) {
+                    exdMaterial.setStatus(1);
+                } else {
+                    exdMaterial.setStatus(2);
+                }
+            } catch (Exception e) {
+                log.error("璇诲彇鐗╂枡淇℃伅澶辫触锛歿},{}", exdMaterial, e.getMessage());
+                exdMaterial.setStatus(2);
+                exdMaterial.setReadormsg(e.getMessage());
+            } finally {
+                exdMaterial.setReadtime(new Date());
+                exdMaterialMapper.updateById(exdMaterial);
+            }
+        }
+    }
+
+
+    /**
+     * 璇诲彇閮ㄩ棬淇℃伅
+     */
+    @Scheduled(cron = "0/30 * * * * ? ")
+    public void readDept() {
+        log.info("璇诲彇閮ㄩ棬淇℃伅");
+
+    }
+}
diff --git a/src/main/java/com/zy/third/task/OrderScheduler.java b/src/main/java/com/zy/third/task/OrderScheduler.java
new file mode 100644
index 0000000..77e3c3d
--- /dev/null
+++ b/src/main/java/com/zy/third/task/OrderScheduler.java
@@ -0,0 +1,99 @@
+package com.zy.third.task;
+
+import com.zy.third.entity.ExdInstockSource;
+import com.zy.third.entity.ExdOutstockSource;
+import com.zy.third.mapper.ExdInstockSourceMapper;
+import com.zy.third.mapper.ExdOutstockSourceMapper;
+import com.zy.third.task.handler.OrderHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Component
+@Slf4j
+public class OrderScheduler {
+
+
+    @Autowired
+    private OrderHandler orderHandler;
+
+    @Autowired
+    private ExdInstockSourceMapper exdInstockSourceMapper;
+
+
+    @Autowired
+    private ExdOutstockSourceMapper exdOutstockSourceMapper;
+
+
+    /**
+     * 璇诲彇鍏ュ簱鍗曟嵁
+     */
+    @Scheduled(cron = "0/10 * * * * ? ")
+    public void readInOrder() {
+        log.info("璇诲彇鍏ュ簱鍗曟嵁");
+        List<String> orderNos = exdInstockSourceMapper.listOrderNo();
+        for (String orderNo : orderNos) {
+            List<ExdInstockSource> exdInstockSources = exdInstockSourceMapper.listAll(orderNo);
+            try {
+                boolean success = orderHandler.readInOrder(exdInstockSources).isSuccess();
+                for (ExdInstockSource exdInstockSource : exdInstockSources) {
+                    if (success) {
+                        exdInstockSource.setReadtime(new Date());
+                        exdInstockSource.setStatus(1);
+                        exdInstockSourceMapper.updateById(exdInstockSource);
+                    } else {
+                        exdInstockSource.setReadtime(new Date());
+                        exdInstockSource.setStatus(2);
+                        exdInstockSourceMapper.updateById(exdInstockSource);
+                    }
+                }
+            } catch (Exception e) {
+                log.error("璇诲彇鍏ュ簱鍗曟嵁淇℃伅澶辫触锛歿},{}", exdInstockSources, e.getMessage());
+                for (ExdInstockSource exdInstockSource : exdInstockSources) {
+                    exdInstockSource.setReadormsg(e.getMessage());
+                    exdInstockSource.setStatus(2);
+                    exdInstockSourceMapper.updateById(exdInstockSource);
+                }
+            }
+        }
+    }
+
+    /**
+     * 璇诲彇鍑哄簱鍗曟嵁
+     */
+    @Scheduled(cron = "0/10 * * * * ? ")
+    public void readOutOrder() {
+        log.info("璇诲彇鍑哄簱鍗曟嵁");
+        List<String> orderNos = exdOutstockSourceMapper.listOrderNo();
+        for (String orderNo : orderNos) {
+            List<ExdOutstockSource> exdOutstockSources = exdOutstockSourceMapper.listAll(orderNo);
+            try {
+                boolean success = orderHandler.readOutOrder(exdOutstockSources).isSuccess();
+                for (ExdOutstockSource exdOutstockSource : exdOutstockSources) {
+                    if (success) {
+                        exdOutstockSource.setReadtime(new Date());
+                        exdOutstockSource.setStatus(1);
+                        exdOutstockSourceMapper.updateById(exdOutstockSource);
+                    } else {
+                        exdOutstockSource.setReadtime(new Date());
+                        exdOutstockSource.setStatus(2);
+                        exdOutstockSourceMapper.updateById(exdOutstockSource);
+                    }
+
+                }
+            } catch (Exception e) {
+                log.error("璇诲彇鍑哄簱鍗曟嵁淇℃伅澶辫触锛歿},{}", exdOutstockSources, e.getMessage());
+                for (ExdOutstockSource exdOutstockSource : exdOutstockSources) {
+                    exdOutstockSource.setStatus(2);
+                    exdOutstockSource.setReadormsg(e.getMessage());
+                    exdOutstockSourceMapper.updateById(exdOutstockSource);
+                }
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/third/task/handler/BaseDataHandler.java b/src/main/java/com/zy/third/task/handler/BaseDataHandler.java
new file mode 100644
index 0000000..18cf97b
--- /dev/null
+++ b/src/main/java/com/zy/third/task/handler/BaseDataHandler.java
@@ -0,0 +1,82 @@
+package com.zy.third.task.handler;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.Mat;
+import com.zy.asrs.service.MatService;
+import com.zy.asrs.service.TagService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import com.zy.third.entity.ExdMaterial;
+import com.zy.third.entity.ExdUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+@Component
+@Slf4j
+public class BaseDataHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private MatService matService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private TagService tagService;
+
+
+    @Transactional
+    public ReturnT<String> readUser(ExdUser exdUser) {
+        User user = userService.selectOne(new EntityWrapper<User>().eq("username", exdUser.getName()));
+        if (user == null) {
+            user = new User();
+            user.setUsername(exdUser.getName());
+            user.setNickname(exdUser.getName());
+            user.setMobile(exdUser.getName());
+            user.setEmail(exdUser.getId());
+            user.setRoleId(2L);
+            user.setCreateTime(new Date());
+            user.setStatus(1);
+            userService.insert(user);
+        }else {
+            user.setUsername(exdUser.getName());
+            user.setNickname(exdUser.getName());
+            user.setMobile(exdUser.getName());
+            user.setEmail(exdUser.getId());
+            userService.updateById(user);
+        }
+        return SUCCESS;
+    }
+
+
+    @Transactional
+    public ReturnT<String> readMat(ExdMaterial exdMaterial) {
+        Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", exdMaterial.getFnumber()));
+        if (mat == null) {
+            mat = new Mat();
+            mat.setMatnr(exdMaterial.getFnumber());
+            mat.setMaktx(exdMaterial.getFname());
+            mat.setSpecs(exdMaterial.getFmodel());
+            mat.setSku(exdMaterial.getId());
+            mat.setTagId(tagService.getTop().getId());
+            mat.setStatus(1);
+            mat.setCreateTime(new Date());
+            matService.insert(mat);
+        }else  {
+            mat.setMatnr(exdMaterial.getFnumber());
+            mat.setMaktx(exdMaterial.getFname());
+            mat.setSpecs(exdMaterial.getFmodel());
+            mat.setSku(exdMaterial.getId());
+            mat.setTagId(tagService.getTop().getId());
+            mat.setStatus(1);
+            matService.updateById(mat);
+        }
+        return SUCCESS;
+    }
+}
diff --git a/src/main/java/com/zy/third/task/handler/OrderHandler.java b/src/main/java/com/zy/third/task/handler/OrderHandler.java
new file mode 100644
index 0000000..27ec3ff
--- /dev/null
+++ b/src/main/java/com/zy/third/task/handler/OrderHandler.java
@@ -0,0 +1,236 @@
+package com.zy.third.task.handler;
+
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.SnowflakeIdWorker;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.Mat;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.service.DocTypeService;
+import com.zy.asrs.service.MatService;
+import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.model.DetlDto;
+import com.zy.third.entity.ExdInstockSource;
+import com.zy.third.entity.ExdOutstockSource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+@Slf4j
+public class OrderHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private OrderService orderService;
+
+
+    @Autowired
+    private OrderDetlService orderDetlService;
+
+    @Autowired
+    private DocTypeService docTypeService;
+
+    @Autowired
+    private SnowflakeIdWorker snowflakeIdWorker;
+
+
+    @Autowired
+    private MatService matService;
+
+
+    @Transactional
+    public ReturnT<String> readInOrder(List<ExdInstockSource> exdInstockSource) {
+        String fbillno = exdInstockSource.get(0).getFbillno();
+        Integer ftrantype = exdInstockSource.get(0).getFtrantype();
+        Order order = orderService.selectByNo(fbillno);
+        if (!Cools.isEmpty(order)) {
+            throw new CoolException(fbillno + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
+        }
+        DocType docType = docTypeService.selectById(ftrantype);
+        if (docType == null) {
+
+        }
+
+        Date now = new Date();
+        // 鍗曟嵁涓绘。
+        order = new Order(
+                String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                fbillno,    // 璁㈠崟缂栧彿
+                DateUtils.convert(exdInstockSource.get(0).getFdate()),    // 鍗曟嵁鏃ユ湡
+                docType.getDocId(),    // 鍗曟嵁绫诲瀷
+                null,    // 椤圭洰缂栧彿
+                null,    //
+                null,    // 璋冩嫧椤圭洰缂栧彿
+                null,    // 鍒濆绁ㄦ嵁鍙�
+                null,    // 绁ㄦ嵁鍙�
+                null,    // 瀹㈡埛缂栧彿
+                null,    // 瀹㈡埛
+                null,    // 鑱旂郴鏂瑰紡
+                null,    // 鎿嶄綔浜哄憳
+                null,    // 鍚堣閲戦
+                null,    // 浼樻儬鐜�
+                null,    // 浼樻儬閲戦
+                null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                null,    // 瀹炰粯閲戦
+                null,    // 浠樻绫诲瀷
+                null,    // 涓氬姟鍛�
+                null,    // 缁撶畻澶╂暟
+                null,    // 閭垂鏀粯绫诲瀷
+                null,    // 閭垂
+                null,    // 浠樻鏃堕棿
+                null,    // 鍙戣揣鏃堕棿
+                null,    // 鐗╂祦鍚嶇О
+                null,    // 鐗╂祦鍗曞彿
+                1L,    // 璁㈠崟鐘舵��
+                1,    // 鐘舵��
+                9527L,    // 娣诲姞浜哄憳
+                now,    // 娣诲姞鏃堕棿
+                9527L,    // 淇敼浜哄憳
+                now,    // 淇敼鏃堕棿
+                null    // 澶囨敞
+        );
+        if (!orderService.insert(order)) {
+            throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        // 鍗曟嵁鏄庣粏妗�
+        List<DetlDto> list = new ArrayList<>();
+        for (ExdInstockSource detail : exdInstockSource) {
+            DetlDto dto = new DetlDto(detail.getFitemid() + "", detail.getFbatchno(), detail.getFqty());
+            dto.setFrob(detail.getFrob());
+            dto.setFInterID(detail.getFinterid());
+            if (DetlDto.has(list, dto)) {
+                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
+                assert detlDto != null;
+                detlDto.setAnfme(detlDto.getAnfme() + detail.getFqty());
+            } else {
+                list.add(dto);
+            }
+        }
+        for (DetlDto detlDto : list) {
+            Mat mat = matService.selectBySku(detlDto.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+            }
+            OrderDetl orderDetl = new OrderDetl();
+            orderDetl.sync(mat);
+            orderDetl.setBatch(detlDto.getBatch());
+            orderDetl.setAnfme(detlDto.getAnfme());
+            orderDetl.setOrderId(order.getId());
+            orderDetl.setOrderNo(order.getOrderNo());
+            orderDetl.setCreateBy(9527L);
+            orderDetl.setCreateTime(now);
+            orderDetl.setUpdateBy(9527L);
+            orderDetl.setUpdateTime(now);
+            orderDetl.setStatus(1);
+            orderDetl.setQty(0.0D);
+            orderDetl.setDeadWarn(detlDto.getFInterID());
+            orderDetl.setInspect(detlDto.getFrob());
+            if (!orderDetlService.insert(orderDetl)) {
+                throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+        }
+        return SUCCESS;
+    }
+
+
+    @Transactional
+    public ReturnT<String> readOutOrder(List<ExdOutstockSource> exdOutstockSource) {
+        String fbillno = exdOutstockSource.get(0).getFbillno();
+        Integer ftrantype = exdOutstockSource.get(0).getFtrantype();
+        Order order = orderService.selectByNo(fbillno);
+        // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
+        if (!Cools.isEmpty(order)) {
+            if (order.getSettle() > 1L) {
+                throw new CoolException(fbillno + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+            }
+            orderService.remove(order.getId());
+        }
+        DocType docType = docTypeService.selectById(ftrantype);
+        Date now = new Date();
+        // 鍗曟嵁涓绘。
+        order = new Order(
+                String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                fbillno,    // 璁㈠崟缂栧彿
+                DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
+                docType.getDocId(),    // 鍗曟嵁绫诲瀷
+                null,    // 椤圭洰缂栧彿
+                null,    //
+                null,    // 璋冩嫧椤圭洰缂栧彿
+                null,    // 鍒濆绁ㄦ嵁鍙�
+                null,    // 绁ㄦ嵁鍙�
+                null,    // 瀹㈡埛缂栧彿
+                null,    // 瀹㈡埛
+                null,    // 鑱旂郴鏂瑰紡
+                null,    // 鎿嶄綔浜哄憳
+                null,    // 鍚堣閲戦
+                null,    // 浼樻儬鐜�
+                null,    // 浼樻儬閲戦
+                null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                null,    // 瀹炰粯閲戦
+                null,    // 浠樻绫诲瀷
+                null,    // 涓氬姟鍛�
+                null,    // 缁撶畻澶╂暟
+                null,    // 閭垂鏀粯绫诲瀷
+                null,    // 閭垂
+                null,    // 浠樻鏃堕棿
+                null,    // 鍙戣揣鏃堕棿
+                null,    // 鐗╂祦鍚嶇О
+                null,    // 鐗╂祦鍗曞彿
+                1L,    // 璁㈠崟鐘舵��
+                1,    // 鐘舵��
+                9527L,    // 娣诲姞浜哄憳
+                now,    // 娣诲姞鏃堕棿
+                9527L,    // 淇敼浜哄憳
+                now,    // 淇敼鏃堕棿
+                null    // 澶囨敞
+        );
+        if (!orderService.insert(order)) {
+            throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        // 鍗曟嵁鏄庣粏妗�
+        List<DetlDto> list = new ArrayList<>();
+        for (ExdOutstockSource detail : exdOutstockSource) {
+            DetlDto dto = new DetlDto(detail.getFitemid()+"", detail.getFbatchno(), detail.getFqty());
+            if (DetlDto.has(list, dto)) {
+                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
+                assert detlDto != null;
+                detlDto.setAnfme(detlDto.getAnfme() + detail.getFqty());
+            } else {
+                list.add(dto);
+            }
+        }
+        for (DetlDto detlDto : list) {
+            Mat mat = matService.selectBySku(detlDto.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+            }
+            OrderDetl orderDetl = new OrderDetl();
+            orderDetl.sync(mat);
+            orderDetl.setBatch(detlDto.getBatch());
+            orderDetl.setAnfme(detlDto.getAnfme());
+            orderDetl.setOrderId(order.getId());
+            orderDetl.setOrderNo(order.getOrderNo());
+            orderDetl.setCreateBy(9527L);
+            orderDetl.setCreateTime(now);
+            orderDetl.setUpdateBy(9527L);
+            orderDetl.setUpdateTime(now);
+            orderDetl.setStatus(1);
+            orderDetl.setQty(0.0D);
+            if (!orderDetlService.insert(orderDetl)) {
+                throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+        }
+        return SUCCESS;
+    }
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 684c1e5..925f638 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,8 +10,8 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://172.17.3.20:1433;databasename=ycawdasrs
-#    url: jdbc:sqlserver://127.0.0.1:1433;databasename=ycawdasrs
+    #jdbc-url: jdbc:sqlserver://172.17.3.20:1433;databasename=ycawdasrs
+    jdbc-url: jdbc:sqlserver://127.0.0.1:1433;databasename=ycawdasrs
     username: sa
     password: sa@123
   mvc:
@@ -31,10 +31,11 @@
     #    jdbc-url: jdbc:mysql://127.0.0.1:3306/wmsdata
     #    username: root
     #    password: root
+    #driver-class-name: com.mysql.cj.jdbc.Driver
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=ycawdasrs
-    username: liku
-    password: 123456
+    jdbc-url: jdbc:sqlserver://127.0.0.1:1433;databasename=wms_middle
+    username: sa
+    password: sa@123
 
 mybatis-plus:
   mapper-locations: classpath:mapper/*.xml 
diff --git a/src/main/resources/com/zy/third/mapper/ExdvYanbuMapper.xml b/src/main/resources/com/zy/third/mapper/ExdvYanbuMapper.xml
new file mode 100644
index 0000000..1e734e7
--- /dev/null
+++ b/src/main/resources/com/zy/third/mapper/ExdvYanbuMapper.xml
@@ -0,0 +1,14 @@
+<?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.zy.third.mapper.ExdvYanbuMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdvYanbu">
+            <result property="barcode" column="Barcode" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        Barcode
+    </sql>
+</mapper>
diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic
index 34c4b11..ce6bb35 100644
--- a/src/main/resources/license.lic
+++ b/src/main/resources/license.lic
Binary files differ
diff --git a/src/main/resources/license.lic2 b/src/main/resources/license.lic2
new file mode 100644
index 0000000..34c4b11
--- /dev/null
+++ b/src/main/resources/license.lic2
@@ -0,0 +1,3 @@
+�!�;蓧噐-C�>�?虵=��0+㈠x惮╖�[訾奔9}�
+雅瞿盫]揂w"鰺c趝|�=
&Y<�萍�'W~喈�;擻$�/H$犎B};厞.�,X:Y襋c:鎔�&J狦f皞謂��:6墡蔏绋\�-泰�78|�q徢攐Q�賑a崋歱賦QU汽膽�嶱o鴢$鼱峩+js�Vs�)vz!傖Q匹湬蚔砡u翸鵥"誼柄 櫸婢譴雬-�㎝�9M趷eA]��*-昪攏礠RO�5�kJB觫��5�駹_)i鰆�Q婥��*l慽z﹎N`}揄烄g$悅(��?�1騎}餃j脟�P奖im綕垓\竃�N邺m(寿"塪矪Xc�E累傿>欉[!QI:戉�2�t+Ykmd旔頺^袅.牙苺cH呖:mU$剼,齦悓躋e巕c岛さ謖錤*騐劓�$!B帚暈�}�Y#NQ攡�萇6�顱凭o[&sC	uD靪�(湙娙<V缹m濉Q濅^e吗巜焮�8騵蹕稃<紒嬀;L睙Y鬫粜埥b`�=`苭��.钥覶l�掫疫柩7Q厮�
+�Y8秹蛞[Y釁璏.w�8G臻h訃w扈o棑
瀪鬂蝆�%趀捈樰^��儑�)P吅,t摶珰f>彴簛D圖1t�,Wm閷�h嬉U!趢�;酱郥W�
\ No newline at end of file
diff --git a/src/main/resources/mapper/AdjDetlMapper.xml b/src/main/resources/mapper/asrs/AdjDetlMapper.xml
similarity index 100%
rename from src/main/resources/mapper/AdjDetlMapper.xml
rename to src/main/resources/mapper/asrs/AdjDetlMapper.xml
diff --git a/src/main/resources/mapper/ApiLogMapper.xml b/src/main/resources/mapper/asrs/ApiLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ApiLogMapper.xml
rename to src/main/resources/mapper/asrs/ApiLogMapper.xml
diff --git a/src/main/resources/mapper/ApiMapper.xml b/src/main/resources/mapper/asrs/ApiMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ApiMapper.xml
rename to src/main/resources/mapper/asrs/ApiMapper.xml
diff --git a/src/main/resources/mapper/BasCrnErrorMapper.xml b/src/main/resources/mapper/asrs/BasCrnErrorMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasCrnErrorMapper.xml
rename to src/main/resources/mapper/asrs/BasCrnErrorMapper.xml
diff --git a/src/main/resources/mapper/BasCrnOptMapper.xml b/src/main/resources/mapper/asrs/BasCrnOptMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasCrnOptMapper.xml
rename to src/main/resources/mapper/asrs/BasCrnOptMapper.xml
diff --git a/src/main/resources/mapper/BasCrnStatusMapper.xml b/src/main/resources/mapper/asrs/BasCrnStatusMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasCrnStatusMapper.xml
rename to src/main/resources/mapper/asrs/BasCrnStatusMapper.xml
diff --git a/src/main/resources/mapper/BasCrnpMapper.xml b/src/main/resources/mapper/asrs/BasCrnpMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasCrnpMapper.xml
rename to src/main/resources/mapper/asrs/BasCrnpMapper.xml
diff --git a/src/main/resources/mapper/BasDevpMapper.xml b/src/main/resources/mapper/asrs/BasDevpMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasDevpMapper.xml
rename to src/main/resources/mapper/asrs/BasDevpMapper.xml
diff --git a/src/main/resources/mapper/BasErrLogMapper.xml b/src/main/resources/mapper/asrs/BasErrLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasErrLogMapper.xml
rename to src/main/resources/mapper/asrs/BasErrLogMapper.xml
diff --git a/src/main/resources/mapper/BasLocStsMapper.xml b/src/main/resources/mapper/asrs/BasLocStsMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasLocStsMapper.xml
rename to src/main/resources/mapper/asrs/BasLocStsMapper.xml
diff --git a/src/main/resources/mapper/BasPlcerrorMapper.xml b/src/main/resources/mapper/asrs/BasPlcerrorMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasPlcerrorMapper.xml
rename to src/main/resources/mapper/asrs/BasPlcerrorMapper.xml
diff --git a/src/main/resources/mapper/BasWhsMapper.xml b/src/main/resources/mapper/asrs/BasWhsMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasWhsMapper.xml
rename to src/main/resources/mapper/asrs/BasWhsMapper.xml
diff --git a/src/main/resources/mapper/BasWrkIotypeMapper.xml b/src/main/resources/mapper/asrs/BasWrkIotypeMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasWrkIotypeMapper.xml
rename to src/main/resources/mapper/asrs/BasWrkIotypeMapper.xml
diff --git a/src/main/resources/mapper/BasWrkStatusMapper.xml b/src/main/resources/mapper/asrs/BasWrkStatusMapper.xml
similarity index 100%
rename from src/main/resources/mapper/BasWrkStatusMapper.xml
rename to src/main/resources/mapper/asrs/BasWrkStatusMapper.xml
diff --git a/src/main/resources/mapper/ConfigMapper.xml b/src/main/resources/mapper/asrs/ConfigMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ConfigMapper.xml
rename to src/main/resources/mapper/asrs/ConfigMapper.xml
diff --git a/src/main/resources/mapper/DocLogMapper.xml b/src/main/resources/mapper/asrs/DocLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/DocLogMapper.xml
rename to src/main/resources/mapper/asrs/DocLogMapper.xml
diff --git a/src/main/resources/mapper/DocTypeMapper.xml b/src/main/resources/mapper/asrs/DocTypeMapper.xml
similarity index 100%
rename from src/main/resources/mapper/DocTypeMapper.xml
rename to src/main/resources/mapper/asrs/DocTypeMapper.xml
diff --git a/src/main/resources/mapper/HostMapper.xml b/src/main/resources/mapper/asrs/HostMapper.xml
similarity index 100%
rename from src/main/resources/mapper/HostMapper.xml
rename to src/main/resources/mapper/asrs/HostMapper.xml
diff --git a/src/main/resources/mapper/LicenseInfosMapper.xml b/src/main/resources/mapper/asrs/LicenseInfosMapper.xml
similarity index 100%
rename from src/main/resources/mapper/LicenseInfosMapper.xml
rename to src/main/resources/mapper/asrs/LicenseInfosMapper.xml
diff --git a/src/main/resources/mapper/LocCheckMapper.xml b/src/main/resources/mapper/asrs/LocCheckMapper.xml
similarity index 100%
rename from src/main/resources/mapper/LocCheckMapper.xml
rename to src/main/resources/mapper/asrs/LocCheckMapper.xml
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/asrs/LocDetlMapper.xml
similarity index 77%
rename from src/main/resources/mapper/LocDetlMapper.xml
rename to src/main/resources/mapper/asrs/LocDetlMapper.xml
index b35811c..e3a03e4 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/asrs/LocDetlMapper.xml
@@ -231,7 +231,7 @@
         </if>
 
         order by
-        DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
+        a.batch asc, a.anfme
         desc,
         NEWID(),
         case
@@ -288,6 +288,93 @@
         desc
     </select>
 
+
+    <select id="queryStockAll" resultMap="BaseResultMap">
+        select a.*
+        from asr_loc_detl a
+        left join asr_loc_mast b on a.loc_no = b.loc_no
+        where 1=1
+        and b.loc_sts = 'F'
+        and a.matnr = #{matnr}
+        <!--        <choose>-->
+        <!--            <when test="batch != null and batch != ''">-->
+        <!--                and a.batch = #{batch}-->
+        <!--            </when>-->
+        <!--            <otherwise>-->
+        <!--                and (a.batch IS NULL OR a.batch = '')-->
+        <!--            </otherwise>-->
+        <!--        </choose>-->
+        <if test="batch != null and batch != ''">
+            and a.batch = #{batch}
+        </if>
+        <if test="orderNo != null and orderNo != ''">
+            and a.order_no = #{orderNo}
+        </if>
+
+        <if test="locNos != null and locNos.size > 0">
+            and b.loc_no not in
+            <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        order by
+        a.batch asc, a.anfme desc,
+        NEWID(),
+        case
+        when (left(a.loc_no, 2) = '01') then 0
+        when (left(a.loc_no, 2) = '02') then 1
+        when (left(a.loc_no, 2) = '03') then 1
+        when (left(a.loc_no, 2) = '04') then 0
+        when (left(a.loc_no, 2) = '05') then 0
+        when (left(a.loc_no, 2) = '06') then 1
+        when (left(a.loc_no, 2) = '07') then 1
+        when (left(a.loc_no, 2) = '08') then 0
+        when (left(a.loc_no, 2) = '09') then 0
+        when (left(a.loc_no, 2) = '10') then 1
+        when (left(a.loc_no, 2) = '11') then 1
+        when (left(a.loc_no, 2) = '12') then 0
+        when (left(a.loc_no, 2) = '13') then 0
+        when (left(a.loc_no, 2) = '14') then 1
+        when (left(a.loc_no, 2) = '15') then 1
+        when (left(a.loc_no, 2) = '16') then 0
+        when (left(a.loc_no, 2) = '17') then 0
+        when (left(a.loc_no, 2) = '18') then 1
+        when (left(a.loc_no, 2) = '19') then 1
+        when (left(a.loc_no, 2) = '20') then 0
+        when (left(a.loc_no, 2) = '21') then 0
+        when (left(a.loc_no, 2) = '22') then 1
+        when (left(a.loc_no, 2) = '23') then 1
+        when (left(a.loc_no, 2) = '24') then 0
+        when (left(a.loc_no, 2) = '25') then 0
+        when (left(a.loc_no, 2) = '26') then 1
+        when (left(a.loc_no, 2) = '27') then 1
+        when (left(a.loc_no, 2) = '28') then 0
+        when (left(a.loc_no, 2) = '29') then 0
+        when (left(a.loc_no, 2) = '30') then 1
+        when (left(a.loc_no, 2) = '31') then 1
+        when (left(a.loc_no, 2) = '32') then 0
+        when (left(a.loc_no, 2) = '33') then 0
+        when (left(a.loc_no, 2) = '34') then 1
+        when (left(a.loc_no, 2) = '35') then 1
+        when (left(a.loc_no, 2) = '36') then 0
+        when (left(a.loc_no, 2) = '37') then 0
+        when (left(a.loc_no, 2) = '38') then 1
+        when (left(a.loc_no, 2) = '39') then 1
+        when (left(a.loc_no, 2) = '40') then 0
+        when (left(a.loc_no, 2) = '41') then 0
+        when (left(a.loc_no, 2) = '42') then 1
+        when (left(a.loc_no, 2) = '43') then 1
+        when (left(a.loc_no, 2) = '44') then 0
+        when (left(a.loc_no, 2) = '45') then 0
+        when (left(a.loc_no, 2) = '46') then 1
+        when (left(a.loc_no, 2) = '47') then 1
+        when (left(a.loc_no, 2) = '48') then 0
+        else 0
+        end
+        desc
+    </select>
+
     <select id="queryStockAnfme" resultType="java.lang.Double">
         select sum(anfme) as count from man_loc_detl
         where 1=1
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/asrs/LocMastMapper.xml
similarity index 100%
rename from src/main/resources/mapper/LocMastMapper.xml
rename to src/main/resources/mapper/asrs/LocMastMapper.xml
diff --git a/src/main/resources/mapper/ManLocDetlMapper.xml b/src/main/resources/mapper/asrs/ManLocDetlMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ManLocDetlMapper.xml
rename to src/main/resources/mapper/asrs/ManLocDetlMapper.xml
diff --git a/src/main/resources/mapper/MatMapper.xml b/src/main/resources/mapper/asrs/MatMapper.xml
similarity index 96%
rename from src/main/resources/mapper/MatMapper.xml
rename to src/main/resources/mapper/asrs/MatMapper.xml
index a244da7..d573b4b 100644
--- a/src/main/resources/mapper/MatMapper.xml
+++ b/src/main/resources/mapper/asrs/MatMapper.xml
@@ -80,4 +80,8 @@
     <select id="selectByMatnr" resultMap="BaseResultMap">
         select top 1 * from man_mat where 1=1 and matnr = #{matnr}
     </select>
+
+    <select id="selectBySku" resultMap="BaseResultMap">
+        select top 1 * from man_mat where 1=1 and sku = #{sku}
+    </select>
 </mapper>
diff --git a/src/main/resources/mapper/NodeMapper.xml b/src/main/resources/mapper/asrs/NodeMapper.xml
similarity index 100%
rename from src/main/resources/mapper/NodeMapper.xml
rename to src/main/resources/mapper/asrs/NodeMapper.xml
diff --git a/src/main/resources/mapper/OperateLogMapper.xml b/src/main/resources/mapper/asrs/OperateLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/OperateLogMapper.xml
rename to src/main/resources/mapper/asrs/OperateLogMapper.xml
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/asrs/OrderDetlMapper.xml
similarity index 92%
rename from src/main/resources/mapper/OrderDetlMapper.xml
rename to src/main/resources/mapper/asrs/OrderDetlMapper.xml
index 25b6cf8..fe3f6a5 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/asrs/OrderDetlMapper.xml
@@ -200,4 +200,23 @@
         </choose>
     </update>
 
+    <update id="increaseWorkQty2">
+        update man_order_detl
+        set work_qty = work_qty + #{workQty}
+        where 1=1
+        and order_id = #{orderId}
+        and matnr = #{matnr}
+        <if test="color!=null and color!='' ">
+            and color = #{color}
+        </if>
+        <choose>
+            <when test="batch != null and batch != ''">
+                and batch = #{batch}
+            </when>
+            <otherwise>
+                and (batch IS NULL OR batch = '')
+            </otherwise>
+        </choose>
+    </update>
+
 </mapper>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/asrs/OrderMapper.xml
similarity index 98%
rename from src/main/resources/mapper/OrderMapper.xml
rename to src/main/resources/mapper/asrs/OrderMapper.xml
index 7f88f3c..db8816d 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/asrs/OrderMapper.xml
@@ -59,8 +59,6 @@
         where 1=1
         and settle = 4
         and status = 1
-        and doc_type!=18
-        and doc_type!=19
         order by create_time asc
     </select>
 
diff --git a/src/main/resources/mapper/OrderSettleMapper.xml b/src/main/resources/mapper/asrs/OrderSettleMapper.xml
similarity index 100%
rename from src/main/resources/mapper/OrderSettleMapper.xml
rename to src/main/resources/mapper/asrs/OrderSettleMapper.xml
diff --git a/src/main/resources/mapper/PackMapper.xml b/src/main/resources/mapper/asrs/PackMapper.xml
similarity index 100%
rename from src/main/resources/mapper/PackMapper.xml
rename to src/main/resources/mapper/asrs/PackMapper.xml
diff --git a/src/main/resources/mapper/PermissionMapper.xml b/src/main/resources/mapper/asrs/PermissionMapper.xml
similarity index 100%
rename from src/main/resources/mapper/PermissionMapper.xml
rename to src/main/resources/mapper/asrs/PermissionMapper.xml
diff --git a/src/main/resources/mapper/RequestLogMapper.xml b/src/main/resources/mapper/asrs/RequestLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/RequestLogMapper.xml
rename to src/main/resources/mapper/asrs/RequestLogMapper.xml
diff --git a/src/main/resources/mapper/ResourceMapper.xml b/src/main/resources/mapper/asrs/ResourceMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ResourceMapper.xml
rename to src/main/resources/mapper/asrs/ResourceMapper.xml
diff --git a/src/main/resources/mapper/RoleMapper.xml b/src/main/resources/mapper/asrs/RoleMapper.xml
similarity index 100%
rename from src/main/resources/mapper/RoleMapper.xml
rename to src/main/resources/mapper/asrs/RoleMapper.xml
diff --git a/src/main/resources/mapper/RolePermissionMapper.xml b/src/main/resources/mapper/asrs/RolePermissionMapper.xml
similarity index 100%
rename from src/main/resources/mapper/RolePermissionMapper.xml
rename to src/main/resources/mapper/asrs/RolePermissionMapper.xml
diff --git a/src/main/resources/mapper/RoleResourceMapper.xml b/src/main/resources/mapper/asrs/RoleResourceMapper.xml
similarity index 100%
rename from src/main/resources/mapper/RoleResourceMapper.xml
rename to src/main/resources/mapper/asrs/RoleResourceMapper.xml
diff --git a/src/main/resources/mapper/RowLastnoMapper.xml b/src/main/resources/mapper/asrs/RowLastnoMapper.xml
similarity index 100%
rename from src/main/resources/mapper/RowLastnoMapper.xml
rename to src/main/resources/mapper/asrs/RowLastnoMapper.xml
diff --git a/src/main/resources/mapper/SaasLogMapper.xml b/src/main/resources/mapper/asrs/SaasLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/SaasLogMapper.xml
rename to src/main/resources/mapper/asrs/SaasLogMapper.xml
diff --git a/src/main/resources/mapper/StaDescMapper.xml b/src/main/resources/mapper/asrs/StaDescMapper.xml
similarity index 100%
rename from src/main/resources/mapper/StaDescMapper.xml
rename to src/main/resources/mapper/asrs/StaDescMapper.xml
diff --git a/src/main/resources/mapper/StkPlcmMapper.xml b/src/main/resources/mapper/asrs/StkPlcmMapper.xml
similarity index 100%
rename from src/main/resources/mapper/StkPlcmMapper.xml
rename to src/main/resources/mapper/asrs/StkPlcmMapper.xml
diff --git a/src/main/resources/mapper/TagMapper.xml b/src/main/resources/mapper/asrs/TagMapper.xml
similarity index 100%
rename from src/main/resources/mapper/TagMapper.xml
rename to src/main/resources/mapper/asrs/TagMapper.xml
diff --git a/src/main/resources/mapper/TrayCodeMapper.xml b/src/main/resources/mapper/asrs/TrayCodeMapper.xml
similarity index 100%
rename from src/main/resources/mapper/TrayCodeMapper.xml
rename to src/main/resources/mapper/asrs/TrayCodeMapper.xml
diff --git a/src/main/resources/mapper/UserLoginMapper.xml b/src/main/resources/mapper/asrs/UserLoginMapper.xml
similarity index 100%
rename from src/main/resources/mapper/UserLoginMapper.xml
rename to src/main/resources/mapper/asrs/UserLoginMapper.xml
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/asrs/UserMapper.xml
similarity index 100%
rename from src/main/resources/mapper/UserMapper.xml
rename to src/main/resources/mapper/asrs/UserMapper.xml
diff --git a/src/main/resources/mapper/ViewInOutMapper.xml b/src/main/resources/mapper/asrs/ViewInOutMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ViewInOutMapper.xml
rename to src/main/resources/mapper/asrs/ViewInOutMapper.xml
diff --git a/src/main/resources/mapper/ViewStayTimeMapper.xml b/src/main/resources/mapper/asrs/ViewStayTimeMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ViewStayTimeMapper.xml
rename to src/main/resources/mapper/asrs/ViewStayTimeMapper.xml
diff --git a/src/main/resources/mapper/ViewStockUseMapper.xml b/src/main/resources/mapper/asrs/ViewStockUseMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ViewStockUseMapper.xml
rename to src/main/resources/mapper/asrs/ViewStockUseMapper.xml
diff --git a/src/main/resources/mapper/ViewWorkInMapper.xml b/src/main/resources/mapper/asrs/ViewWorkInMapper.xml
similarity index 100%
rename from src/main/resources/mapper/ViewWorkInMapper.xml
rename to src/main/resources/mapper/asrs/ViewWorkInMapper.xml
diff --git a/src/main/resources/mapper/WaitPakinLogMapper.xml b/src/main/resources/mapper/asrs/WaitPakinLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/WaitPakinLogMapper.xml
rename to src/main/resources/mapper/asrs/WaitPakinLogMapper.xml
diff --git a/src/main/resources/mapper/WaitPakinMapper.xml b/src/main/resources/mapper/asrs/WaitPakinMapper.xml
similarity index 100%
rename from src/main/resources/mapper/WaitPakinMapper.xml
rename to src/main/resources/mapper/asrs/WaitPakinMapper.xml
diff --git a/src/main/resources/mapper/WrkDetlLogMapper.xml b/src/main/resources/mapper/asrs/WrkDetlLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/WrkDetlLogMapper.xml
rename to src/main/resources/mapper/asrs/WrkDetlLogMapper.xml
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/asrs/WrkDetlMapper.xml
similarity index 100%
rename from src/main/resources/mapper/WrkDetlMapper.xml
rename to src/main/resources/mapper/asrs/WrkDetlMapper.xml
diff --git a/src/main/resources/mapper/WrkLastnoMapper.xml b/src/main/resources/mapper/asrs/WrkLastnoMapper.xml
similarity index 100%
rename from src/main/resources/mapper/WrkLastnoMapper.xml
rename to src/main/resources/mapper/asrs/WrkLastnoMapper.xml
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/asrs/WrkMastLogMapper.xml
similarity index 100%
rename from src/main/resources/mapper/WrkMastLogMapper.xml
rename to src/main/resources/mapper/asrs/WrkMastLogMapper.xml
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/asrs/WrkMastMapper.xml
similarity index 100%
rename from src/main/resources/mapper/WrkMastMapper.xml
rename to src/main/resources/mapper/asrs/WrkMastMapper.xml
diff --git a/src/main/resources/mapper/third/ExdCustomerMapper.xml b/src/main/resources/mapper/third/ExdCustomerMapper.xml
new file mode 100644
index 0000000..30d1709
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdCustomerMapper.xml
@@ -0,0 +1,24 @@
+<?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.zy.third.mapper.ExdCustomerMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdCustomer">
+            <id property="id" column="ID" />
+            <result property="fnumber" column="Fnumber" />
+            <result property="fname" column="Fname" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,Fnumber,Fname,WriteTime,Writor,Status,
+        ReadTime,Reador,WritorMsg,ReadorMsg
+    </sql>
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdDepartmentMapper.xml b/src/main/resources/mapper/third/ExdDepartmentMapper.xml
new file mode 100644
index 0000000..e8afdec
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdDepartmentMapper.xml
@@ -0,0 +1,24 @@
+<?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.zy.third.mapper.ExdDepartmentMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdDepartment">
+            <id property="id" column="ID" />
+            <result property="fnumber" column="Fnumber" />
+            <result property="fname" column="Fname" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,Fnumber,Fname,WriteTime,Writor,Status,
+        ReadTime,Reador,WritorMsg,ReadorMsg
+    </sql>
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdEmpMapper.xml b/src/main/resources/mapper/third/ExdEmpMapper.xml
new file mode 100644
index 0000000..203db63
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdEmpMapper.xml
@@ -0,0 +1,24 @@
+<?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.zy.third.mapper.ExdEmpMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdEmp">
+            <id property="id" column="ID" />
+            <result property="fnumber" column="Fnumber" />
+            <result property="fname" column="Fname" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,Fnumber,Fname,WriteTime,Writor,Status,
+        ReadTime,Reador,WritorMsg,ReadorMsg
+    </sql>
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdInstockSourceMapper.xml b/src/main/resources/mapper/third/ExdInstockSourceMapper.xml
new file mode 100644
index 0000000..7cf04df
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdInstockSourceMapper.xml
@@ -0,0 +1,64 @@
+<?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.zy.third.mapper.ExdInstockSourceMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdInstockSource">
+            <id property="ID" column="ID" />
+            <result property="finterid" column="FInterID" />
+            <result property="fbillno" column="FBillNo" />
+            <result property="ftrantype" column="FTranType" />
+            <result property="fdate" column="FDate" />
+            <result property="frob" column="FROB" />
+            <result property="fdeptid" column="FDeptID" />
+            <result property="fsupplyid" column="FSupplyID" />
+            <result property="fbillerid" column="FBillerID" />
+            <result property="fentryid" column="FEntryID" />
+            <result property="fitemid" column="FItemID" />
+            <result property="fqty" column="FQty" />
+            <result property="fprice" column="Fprice" />
+            <result property="fbatchno" column="FBatchNo" />
+            <result property="funitid" column="FUnitID" />
+            <result property="fsourcebillno" column="FSourceBillNo" />
+            <result property="fsourceentryid" column="FSourceEntryID" />
+            <result property="fsourceinterid" column="FSourceInterId" />
+            <result property="fsourcetrantype" column="FSourceTranType" />
+            <result property="fdcspid" column="FDCSPID" />
+            <result property="fdcstockid" column="FDCStockID" />
+            <result property="forderbillno" column="FOrderBillNo" />
+            <result property="forderentryid" column="FOrderEntryID" />
+            <result property="forderinterid" column="FOrderInterID" />
+            <result property="fplanmode" column="FPlanMode" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,FInterID,FBillNo,FTranType,FDate,FROB,
+        FDeptID,FSupplyID,FBillerID,FEntryID,FItemID,
+        FQty,Fprice,FBatchNo,FUnitID,FSourceBillNo,
+        FSourceEntryID,FSourceInterId,FSourceTranType,FDCSPID,FDCStockID,
+        FOrderBillNo,FOrderEntryID,FOrderInterID,FPlanMode,WriteTime,
+        Writor,Status,ReadTime,Reador,WritorMsg,
+        ReadorMsg
+    </sql>
+
+    <select id="listOrderNo" resultType="java.lang.String">
+        select distinct fbillno
+        from Exd_Instock_Source
+        where status = 0
+    </select>
+
+
+    <select id="listAll" resultType="com.zy.third.entity.ExdInstockSource">
+            select  * from Exd_Instock_Source where fbillno = #{orderNo}
+    </select>
+
+
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdInstockTargetMapper.xml b/src/main/resources/mapper/third/ExdInstockTargetMapper.xml
new file mode 100644
index 0000000..8445198
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdInstockTargetMapper.xml
@@ -0,0 +1,60 @@
+<?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.zy.third.mapper.ExdInstockTargetMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdInstockTarget">
+            <id property="ID" column="ID" />
+            <result property="finterid" column="FInterID" />
+            <result property="fbillno" column="FBillNo" />
+            <result property="ftrantype" column="FTranType" />
+            <result property="fdate" column="FDate" />
+            <result property="frob" column="FROB" />
+            <result property="fuserid" column="FUserID" />
+            <result property="fdeptid" column="FDeptID" />
+            <result property="fsupplyid" column="FSupplyID" />
+            <result property="fbillerid" column="FBillerID" />
+            <result property="ffmanagerid" column="FFManagerID" />
+            <result property="fsmanagerid" column="FSManagerID" />
+            <result property="fentryid" column="FEntryID" />
+            <result property="fitemid" column="FItemID" />
+            <result property="fqty" column="FQty" />
+            <result property="fprice" column="Fprice" />
+            <result property="fbatchno" column="FBatchNo" />
+            <result property="funitid" column="FUnitID" />
+            <result property="fsourcebillno" column="FSourceBillNo" />
+            <result property="fsourceentryid" column="FSourceEntryID" />
+            <result property="fsourceinterid" column="FSourceInterId" />
+            <result property="fsourcetrantype" column="FSourceTranType" />
+            <result property="fdcspid" column="FDCSPID" />
+            <result property="fdcstockid" column="FDCStockID" />
+            <result property="forderbillno" column="FOrderBillNo" />
+            <result property="forderentryid" column="FOrderEntryID" />
+            <result property="forderinterid" column="FOrderInterID" />
+            <result property="fplanmode" column="FPlanMode" />
+            <result property="barcode" column="Barcode" />
+            <result property="gross" column="Gross" />
+            <result property="width" column="Width" />
+            <result property="defects" column="Defects" />
+            <result property="backcode" column="BackCode" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,FInterID,FBillNo,FTranType,FDate,FROB,
+        FUserID,FDeptID,FSupplyID,FBillerID,FFManagerID,
+        FSManagerID,FEntryID,FItemID,FQty,Fprice,
+        FBatchNo,FUnitID,FSourceBillNo,FSourceEntryID,FSourceInterId,
+        FSourceTranType,FDCSPID,FDCStockID,FOrderBillNo,FOrderEntryID,
+        FOrderInterID,FPlanMode,Barcode,Gross,Width,
+        Defects,BackCode,WriteTime,Writor,Status,
+        ReadTime,Reador,WritorMsg,ReadorMsg
+    </sql>
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdMaterialMapper.xml b/src/main/resources/mapper/third/ExdMaterialMapper.xml
new file mode 100644
index 0000000..c0a1ed0
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdMaterialMapper.xml
@@ -0,0 +1,43 @@
+<?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.zy.third.mapper.ExdMaterialMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdMaterial">
+        <id property="id" column="ID"/>
+        <result property="fnumber" column="Fnumber"/>
+        <result property="fname" column="Fname"/>
+        <result property="fmodel" column="Fmodel"/>
+        <result property="writetime" column="WriteTime"/>
+        <result property="writor" column="Writor"/>
+        <result property="status" column="Status"/>
+        <result property="readtime" column="ReadTime"/>
+        <result property="reador" column="Reador"/>
+        <result property="writormsg" column="WritorMsg"/>
+        <result property="readormsg" column="ReadorMsg"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID
+        ,Fnumber,Fname,Fmodel,WriteTime,Writor,
+        Status,ReadTime,Reador,WritorMsg,ReadorMsg
+    </sql>
+    <select id="listAll" resultType="com.zy.third.entity.ExdMaterial">
+        select top 100 *
+        from Exd_Material
+        where status = 0
+    </select>
+
+    <select id="getBacode" resultType="com.zy.third.entity.ExdvYanbu" parameterType="string">
+        <!--
+                SELECT top 1 *
+        FROM [Textile].[trade].[TianfuQcResult]
+        where Barcode = #{barcode}
+        -->
+        SELECT top 1 *
+        FROM ExdV_Yanbu
+        where Barcode = #{barcode}
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdOutstockSourceMapper.xml b/src/main/resources/mapper/third/ExdOutstockSourceMapper.xml
new file mode 100644
index 0000000..9e9bb85
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdOutstockSourceMapper.xml
@@ -0,0 +1,67 @@
+<?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.zy.third.mapper.ExdOutstockSourceMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdOutstockSource">
+            <id property="ID" column="ID" />
+            <result property="finterid" column="FInterID" />
+            <result property="fbillno" column="FBillNo" />
+            <result property="ftrantype" column="FTranType" />
+            <result property="fdate" column="FDate" />
+            <result property="frob" column="FROB" />
+            <result property="fdeptid" column="FDeptID" />
+            <result property="fsupplyid" column="FSupplyID" />
+            <result property="fbillerid" column="FBillerID" />
+            <result property="fentryid" column="FEntryID" />
+            <result property="fitemid" column="FItemID" />
+            <result property="fqty" column="FQty" />
+            <result property="fprice" column="Fprice" />
+            <result property="fbatchno" column="FBatchNo" />
+            <result property="funitid" column="FUnitID" />
+            <result property="fsourcebillno" column="FSourceBillNo" />
+            <result property="fsourceentryid" column="FSourceEntryID" />
+            <result property="fsourceinterid" column="FSourceInterId" />
+            <result property="fsourcetrantype" column="FSourceTranType" />
+            <result property="fdcspid" column="FDCSPID" />
+            <result property="fdcstockid" column="FDCStockID" />
+            <result property="fscspid" column="FSCSPID" />
+            <result property="fscstockid" column="FSCStockID" />
+            <result property="forderbillno" column="FOrderBillNo" />
+            <result property="forderentryid" column="FOrderEntryID" />
+            <result property="forderinterid" column="FOrderInterID" />
+            <result property="fplanmode" column="FPlanMode" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,FInterID,FBillNo,FTranType,FDate,FROB,
+        FDeptID,FSupplyID,FBillerID,FEntryID,FItemID,
+        FQty,Fprice,FBatchNo,FUnitID,FSourceBillNo,
+        FSourceEntryID,FSourceInterId,FSourceTranType,FDCSPID,FDCStockID,
+        FSCSPID,FSCStockID,FOrderBillNo,FOrderEntryID,FOrderInterID,
+        FPlanMode,WriteTime,Writor,Status,ReadTime,
+        Reador,WritorMsg,ReadorMsg
+    </sql>
+
+
+    <select id="listOrderNo" resultType="java.lang.String">
+            select distinct fbillno
+            from Exd_Outstock_Source
+            where status = 0
+    </select>
+
+
+    <select id="listAll" resultType="com.zy.third.entity.ExdOutstockSource">
+            select * from Exd_Outstock_Source where fbillno = #{orderNo}
+    </select>
+
+
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdOutstockTargetMapper.xml b/src/main/resources/mapper/third/ExdOutstockTargetMapper.xml
new file mode 100644
index 0000000..91f4db8
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdOutstockTargetMapper.xml
@@ -0,0 +1,64 @@
+<?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.zy.third.mapper.ExdOutstockTargetMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdOutstockTarget">
+            <id property="ID" column="ID" />
+            <result property="finterid" column="FInterID" />
+            <result property="fbillno" column="FBillNo" />
+            <result property="ftrantype" column="FTranType" />
+            <result property="fdate" column="FDate" />
+            <result property="frob" column="FROB" />
+            <result property="fuserid" column="FUserID" />
+            <result property="fdeptid" column="FDeptID" />
+            <result property="fsupplyid" column="FSupplyID" />
+            <result property="fbillerid" column="FBillerID" />
+            <result property="fentryid" column="FEntryID" />
+            <result property="fitemid" column="FItemID" />
+            <result property="fqtymust" column="FQtyMust" />
+            <result property="fqty" column="FQty" />
+            <result property="fprice" column="Fprice" />
+            <result property="fbatchno" column="FBatchNo" />
+            <result property="funitid" column="FUnitID" />
+            <result property="fsourcebillno" column="FSourceBillNo" />
+            <result property="fsourceentryid" column="FSourceEntryID" />
+            <result property="fsourceinterid" column="FSourceInterId" />
+            <result property="fsourcetrantype" column="FSourceTranType" />
+            <result property="fdcspid" column="FDCSPID" />
+            <result property="fdcstockid" column="FDCStockID" />
+            <result property="fscspid" column="FSCSPID" />
+            <result property="fscstockid" column="FSCStockID" />
+            <result property="forderbillno" column="FOrderBillNo" />
+            <result property="forderentryid" column="FOrderEntryID" />
+            <result property="forderinterid" column="FOrderInterID" />
+            <result property="fplanmode" column="FPlanMode" />
+            <result property="barcode" column="Barcode" />
+            <result property="gross" column="Gross" />
+            <result property="width" column="Width" />
+            <result property="defects" column="Defects" />
+            <result property="backcode" column="BackCode" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,FInterID,FBillNo,FTranType,FDate,FROB,
+        FUserID,FDeptID,FSupplyID,FBillerID,FEntryID,
+        FItemID,FQtyMust,FQty,Fprice,FBatchNo,
+        FUnitID,FSourceBillNo,FSourceEntryID,FSourceInterId,FSourceTranType,
+        FDCSPID,FDCStockID,FSCSPID,FSCStockID,FOrderBillNo,
+        FOrderEntryID,FOrderInterID,FPlanMode,Barcode,Gross,
+        Width,Defects,BackCode,WriteTime,Writor,
+        Status,ReadTime,Reador,WritorMsg,ReadorMsg
+    </sql>
+
+
+
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdSupplierMapper.xml b/src/main/resources/mapper/third/ExdSupplierMapper.xml
new file mode 100644
index 0000000..3e819c6
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdSupplierMapper.xml
@@ -0,0 +1,24 @@
+<?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.zy.third.mapper.ExdSupplierMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdSupplier">
+            <id property="id" column="ID" />
+            <result property="fnumber" column="Fnumber" />
+            <result property="fname" column="Fname" />
+            <result property="writetime" column="WriteTime" />
+            <result property="writor" column="Writor" />
+            <result property="status" column="Status" />
+            <result property="readtime" column="ReadTime" />
+            <result property="reador" column="Reador" />
+            <result property="writormsg" column="WritorMsg" />
+            <result property="readormsg" column="ReadorMsg" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,Fnumber,Fname,WriteTime,Writor,Status,
+        ReadTime,Reador,WritorMsg,ReadorMsg
+    </sql>
+</mapper>
diff --git a/src/main/resources/mapper/third/ExdUserMapper.xml b/src/main/resources/mapper/third/ExdUserMapper.xml
new file mode 100644
index 0000000..61c5ea2
--- /dev/null
+++ b/src/main/resources/mapper/third/ExdUserMapper.xml
@@ -0,0 +1,33 @@
+<?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.zy.third.mapper.ExdUserMapper">
+
+    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdUser">
+        <id property="id" column="ID"/>
+        <result property="name" column="Name"/>
+        <result property="writetime" column="WriteTime"/>
+        <result property="writor" column="Writor"/>
+        <result property="status" column="Status"/>
+        <result property="readtime" column="ReadTime"/>
+        <result property="reador" column="Reador"/>
+        <result property="writormsg" column="WritorMsg"/>
+        <result property="readormsg" column="ReadorMsg"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID
+        ,Name,WriteTime,Writor,Status,ReadTime,
+        Reador,WritorMsg,ReadorMsg
+    </sql>
+
+
+    <select id="listAll" resultType="com.zy.third.entity.ExdUser">
+        select top 100 *
+        from Exd_User
+        where status = 0
+    </select>
+
+
+</mapper>
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index 86f2b28..fd261b8 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -179,7 +179,7 @@
                                 let data = tableCache[index];
                                 for (let i = 0; i<tableCache.length; i++) {
                                     if (tableCache[i].locNo === data.locNo) {
-                                        tableCache[i]['staNo'] = Number(obj.elem.value);
+                                        tableCache[i]['staNo'] = obj.elem.value;
                                     }
                                 }
                                 obj.othis.children().find("input").css("color", "blue");
@@ -229,7 +229,7 @@
                                         // 纭
                                         form.on('submit(staBatchSelectConfirm)', function (obj) {
                                             let loadIdx = layer.load(2);
-                                            let batchSta = Number(obj.field.batchSta);
+                                            let batchSta = obj.field.batchSta;
                                             let arr = [];
                                             for (let j = 0; j<stoPreTabData.length; j++) {
                                                 for (let i = 0; i<tableCache.length; i++) {
diff --git a/src/main/webapp/static/js/order/outAll.js b/src/main/webapp/static/js/order/outAll.js
new file mode 100644
index 0000000..98a3634
--- /dev/null
+++ b/src/main/webapp/static/js/order/outAll.js
@@ -0,0 +1,392 @@
+var pageCurr;
+var insTb2;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+    notice: 'notice/notice',
+}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect', 'tableMerge', 'tableX'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var util = layui.util;
+    var notice = layui.notice;
+    var treeTable = layui.treeTable;
+    var xmSelect = layui.xmSelect;
+    var tableMerge = layui.tableMerge;
+    var tableX = layui.tableX;
+
+    insTb2 = table.render({
+        elem: '#orderDetlTable',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/orderDetl/pakout/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#orderDetToolbar',
+        height: 'full-120',
+        where: {order_id: 9999999999},
+        cols: [[
+            {type: 'checkbox'}
+            ,{type: 'numbers', title: '#'}
+            ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl', width: 160}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜', width: 160}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200}
+            ,{field: 'batch', align: 'center',title: '搴忓垪鐮�'}
+            ,{field: 'specs', align: 'center',title: '瑙勬牸'}
+            // ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            // ,{field: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'}
+            ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
+            // ,{field: 'name', align: 'center',title: '鍚嶇О'}
+            // ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
+            ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
+            // ,{field: 'supplier', align: 'center',title: '渚涘簲鍟�'}
+            // ,{field: 'unitPrice', align: 'center',title: '鍗曚环'}
+            // ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�'}
+            // ,{field: 'count', align: 'center',title: '鏁伴噺'}
+            // ,{field: 'weight', align: 'center',title: '閲嶉噺'}
+            // ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            // ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    /* 琛ㄦ牸2鎼滅储 */
+    form.on('submit(sensorTbSearch)', function (data) {
+        insTb2.reload({where: data.field, page: {curr: 1}});
+        return false;
+    });
+
+    /* 琛ㄦ牸2澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+    table.on('toolbar(orderDetlTable)', function (obj) {
+
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        if (obj.event === 'pakoutPreview') { // 娣诲姞
+            if (checkStatus.length === 0) {
+                layer.msg('璇烽�夋嫨鑷冲皯涓�鏉″嚭搴撴槑缁�', {icon: 2});
+                return;
+            }
+            pakoutPreview(checkStatus.map(function (d) {
+                return d.id;
+            }));
+        } else if (obj.event === 'del') { // 鍒犻櫎
+            var checkRows = table.checkStatus('sensorTable');
+            if (checkRows.data.length === 0) {
+                layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                return;
+            }
+            var ids = checkRows.data.map(function (d) {
+                return d.id;
+            });
+            doDelSensor({ids: ids});
+        }
+    });
+
+    /* 琛ㄦ牸2宸ュ叿鏉$偣鍑讳簨浠� */
+    table.on('tool(orderDetlTable)', function (obj) {
+        console.log(obj);
+        var data = obj.data;
+        switch (obj.event) {
+            // 鍑哄簱
+            case 'pakoutPreview':
+                pakoutPreview([data.id])
+                break;
+        }
+    });
+
+    function pakoutPreview(ids) {
+        let loadIndex = layer.load(2);
+        console.log("1111")
+        $.ajax({
+            url: baseUrl + "/out/pakout2/preview/auth",
+            headers: {'token': localStorage.getItem('token')},
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify(ids),
+            method: 'POST',
+            success: function (res) {
+                layer.close(loadIndex);
+                var tableCache;
+                if (res.code === 200){
+                    layer.open({
+                        type: 1
+                        ,title: false
+                        ,closeBtn: false
+                        ,offset: '50px'
+                        ,area: ['1200px', '700px']
+                        ,shade: 0.5
+                        ,shadeClose: false
+                        ,btn: ['绔嬪嵆鍑哄簱', '绋嶅悗澶勭悊']
+                        ,btnAlign: 'c'
+                        ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                        ,content: $('#pakoutPreviewBox').html()
+                        ,success: function(layero, index){
+                            stoPreTabIdx = table.render({
+                                elem: '#stoPreTab',
+                                data: res.data,
+                                height: 520,
+                                page: false,
+                                limit: Number.MAX_VALUE,
+                                cellMinWidth: 100,
+                                cols: [[
+                                    // {type: 'checkbox', merge: ['orderNo']},
+                                    {field: 'orderNo', title: '鍗曟嵁缂栧彿', merge: true, align: 'center'},
+                                    {field: 'title', title: '鍟嗗搧', merge: true, align: 'center', width: 350},
+                                    {field: 'batch', title: '搴忓垪鐮�', align: 'center'},
+                                    {field: 'anfme', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                    {field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
+                                    {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
+                                    //{field: 'staState', title: '鐘舵��', align: 'center'},
+                                    {type: 'checkbox', merge: ['locNo']},
+                                ]],
+                                done: function (res) {
+                                    tableMerge.render(this);
+                                    $('.layui-table-body.layui-table-main').css("overflow", "auto");
+                                    tableCache = tableData = table.cache.stoPreTab;
+                                }
+                            });
+                            // 淇敼鍑哄簱绔�
+                            form.on('select(tbBasicTbStaNos)', function (obj) {
+                                let index  = obj.othis.parents('tr').attr("data-index");
+                                let data = tableCache[index];
+                                for (let i = 0; i<tableCache.length; i++) {
+                                    if (tableCache[i].locNo === data.locNo) {
+                                        tableCache[i]['staNo'] = obj.elem.value;
+                                    }
+                                }
+                                obj.othis.children().find("input").css("color", "blue");
+                                return false;
+                            });
+                            // 鎵归噺淇敼鍑哄簱绔�
+                            form.on('submit(batchModifySta)', function () {
+                                let stoPreTabData = layui.table.checkStatus('stoPreTab').data;
+                                if (stoPreTabData.length < 1) {
+                                    layer.msg("璇疯嚦灏戦�夋嫨涓�鏉′互涓婂悎骞舵暟鎹�", {icon: 7});
+                                    return false;
+                                }
+                                modifySta(stoPreTabData);
+                            });
+                            // 鎵归噺淇敼鍑哄簱绔� - 绔欑偣閫夋嫨
+                            function modifySta(stoPreTabData) {
+                                // 鍑哄簱绔欏彇浜ら泦
+                                let staBatchSelectVal = [];
+                                for(let i = 0; i<stoPreTabData.length; i++) {
+                                    let staNos = stoPreTabData[i].staNos;
+                                    if (staNos !== null) {
+                                        if (staBatchSelectVal.length === 0) {
+                                            staBatchSelectVal = staNos;
+                                        } else {
+                                            staBatchSelectVal = staBatchSelectVal.filter(val =>
+                                                {
+                                                    return new Set(staNos).has(val)
+                                                }
+                                            )
+                                        }
+                                    }
+                                }
+                                if (staBatchSelectVal.length === 0) {
+                                    layer.msg("鍑哄簱绔欐病鏈変氦闆嗭紝鏃犳硶鎵归噺淇敼", {icon: 2});
+                                    return;
+                                }
+                                admin.open({
+                                    type: 1,
+                                    area: '300px',
+                                    offset: 'auto',
+                                    title: '璇烽�夋嫨绔欑偣',
+                                    content: $('#staBatchSelectDialog').html(),
+                                    success: function (layero, ddIndex) {
+                                        // 娓叉煋涓嬫媺妗�
+                                        let template = Handlebars.compile($('#batchStaSelectTpl').html());
+                                        $('#batchSelectStaBox').html(template({list: staBatchSelectVal}));
+                                        // 纭
+                                        form.on('submit(staBatchSelectConfirm)', function (obj) {
+                                            let loadIdx = layer.load(2);
+                                            let batchSta = obj.field.batchSta;
+                                            let arr = [];
+                                            for (let j = 0; j<stoPreTabData.length; j++) {
+                                                for (let i = 0; i<tableCache.length; i++) {
+                                                    if (tableCache[i].orderNo === stoPreTabData[j].orderNo
+                                                        && tableCache[i].matnr === stoPreTabData[j].matnr
+                                                        && tableCache[i].locNo === stoPreTabData[j].locNo) {
+                                                        tableCache[i]['staNo'] = batchSta;
+                                                        arr.push(i);
+                                                    }
+                                                }
+                                            }
+                                            stoPreTabIdx.reload({data: tableCache});
+                                            arr.forEach(item => {
+                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .order-sta-select').val(batchSta);
+                                            });
+                                            layui.form.render('select');
+                                            arr.forEach(item => {
+                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .layui-select-title').find("input").css("color", "blue");
+                                            });
+                                            layer.close(loadIdx); layer.close(ddIndex);
+                                            return false;
+                                        });
+                                        // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                                        $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                                        layui.form.render('select');
+                                    },
+                                })
+                            }
+
+                        }
+                        ,yes: function(index, layero){
+                            //鎸夐挳銆愮珛鍗冲嚭搴撱�戠殑鍥炶皟
+                            let stoPreTabData = layui.table.checkStatus('stoPreTab').data;
+                            if (stoPreTabData.length < 1) {
+                                layer.msg("璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹繘琛屽嚭搴�", {icon: 7});
+                                return false;
+                            }
+                            pakout(stoPreTabData, index);
+                        }
+                        ,btn2: function(index, layero){
+                            //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
+                            layer.close(index)
+                            //return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
+                        }
+                    });
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        })
+    }
+
+    function pakout(tableCache, layerIndex) {
+        // let loadIndex = layer.load(2);
+        notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
+        console.info(tableCache);
+        $.ajax({
+            url: baseUrl + "/out/pakout2/auth",
+            headers: {'token': localStorage.getItem('token')},
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify(tableCache),
+            method: 'POST',
+            success: function (res) {
+                notice.destroy();
+                if (res.code === 200) {
+                    layer.close(layerIndex);
+                    layer.msg(res.msg, {icon: 1});
+                    insTb.reload({where: null});
+                    insTb2.reload({where: null, page: {curr: 1}});
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        });
+    }
+
+
+
+    /* 鍒犻櫎璁㈠崟 */
+    function doDelSensor(obj) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/sensor/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: obj.ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        $(".layui-laypage-btn")[0].click();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+
+        });
+    }
+
+    // 淇敼鐘舵��
+    form.on('switch(statusSwitch)', function (obj) {
+        var index  = obj.othis.parents('tr').attr("data-index");
+        var data = tableData[index];
+        data[this.name] = obj.elem.checked?1:0;
+        http.post(baseUrl+"/sensor/edit/auth", {id: data.id, status: data[this.name]}, function (res) {
+            layer.msg(res.msg, {icon: 1});
+        })
+    })
+
+    window.pakoutPreview = pakoutPreview;
+
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        }
+    });
+}
+
+/**
+ * 涓�閿嚭搴�
+ */
+function autoOut(orderId) {
+    let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+    $.ajax({
+        url: baseUrl + "/out/pakout/orderDetlIds/auth",
+        headers: {'token': localStorage.getItem('token')},
+        data: { orderId : orderId },
+        method: 'POST',
+        success: function (res) {
+            layer.close(loadIndex);
+            if (res.code === 200){
+                pakoutPreview(res.data);
+            } else if (res.code === 403){
+                top.location.href = baseUrl+"/";
+            } else {
+                layer.msg(res.msg, {icon: 2});
+            }
+        }
+    })
+}
diff --git a/src/main/webapp/static/js/user/user.js b/src/main/webapp/static/js/user/user.js
index 0e06c7e..c7fcbb9 100644
--- a/src/main/webapp/static/js/user/user.js
+++ b/src/main/webapp/static/js/user/user.js
@@ -29,7 +29,7 @@
             ,{field: 'mobile', align: 'center',title: '鎵嬫満鍙�'}
             // ,{field: 'deptName', align: 'center',title: '鎵�灞為儴闂�'}
             ,{field: 'roleName', align: 'center',title: '瑙掕壊'}
-            ,{field: 'email', align: 'center',title: '閭'}
+            ,{field: 'email', align: 'center',title: 'ERP涓敤鎴穒d'}
             // ,{field: 'sex$', align: 'center',title: '鎬у埆'}
             ,{field: 'createTime$', align: 'center',title: '娉ㄥ唽鏃堕棿', hide: true}
             ,{field: 'status$', align: 'center',title: '鐘舵��', templet: '#statusTpl', width: 120, unresize: true}
diff --git a/src/main/webapp/views/order/outAll.html b/src/main/webapp/views/order/outAll.html
new file mode 100644
index 0000000..6def93f
--- /dev/null
+++ b/src/main/webapp/views/order/outAll.html
@@ -0,0 +1,314 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/originTable.css" media="all">
+    <style>
+        body {
+            color: #595959;
+            background-color: #f5f7f9;
+        }
+
+        .admin-form {
+            padding: 25px 30px 0 0 !important;
+            margin: 0 !important;
+        }
+
+        .layui-table-view .layui-table-cell .layui-select-title .layui-input {
+            height: 28px;
+            line-height: 28px;
+        }
+
+        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
+            height: 40px;
+            line-height: 40px;
+        }
+
+        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
+            height: 40px;
+            line-height: 40px;
+        }
+
+        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-select-title .layui-input {
+            height: 20px;
+            line-height: 20px;
+        }
+
+        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-btn-xs {
+            height: 18px;
+            line-height: 18px;
+        }
+
+        /* 鏉冮檺鎺у埗 */
+        #btn-pakoutPreview {
+            display: none;
+        }
+        /*#btn-delete {*/
+        /*    display: none;*/
+        /*}*/
+        /*.btn-edit {*/
+        /*    display: none;*/
+        /*}*/
+        /*.btn-more {*/
+        /*    display: none;*/
+        /*}*/
+    </style>
+</head>
+<body>
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid" style="padding-bottom: 0;">
+    <div class="layui-row layui-col-space15">
+        <!-- 宸� -->
+        <div class="layui-col-md3" id="left-table">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline" style="max-width: 300px;">
+                                <input name="orderNo" class="layui-input" placeholder="杈撳叆鍗曟嵁缂栧彿" autocomplete="off"/>
+                            </div>
+                            <div class="layui-inline">
+                                <button class="layui-btn icon-btn" lay-filter="originTableSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                                <button class="layui-btn icon-btn" lay-filter="originTbReset" lay-submit>
+                                    <i class="layui-icon">&#xe666;</i>閲嶇疆
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <table id="originTable" lay-filter="originTable"></table>
+                </div>
+            </div>
+        </div>
+        <!-- 鍙� -->
+        <div class="layui-col-md9">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline">
+                                <label class="layui-form-label">鍟嗗搧缂栫爜:</label>
+                                <div class="layui-input-inline">
+                                    <input name="matnr" class="layui-input" placeholder="鍟嗗搧缂栫爜"/>
+                                </div>
+                            </div>
+                            <div class="layui-inline">
+                                <label class="layui-form-label">鍟嗗搧鍚嶇О:</label>
+                                <div class="layui-input-inline">
+                                    <input name="maktx" class="layui-input" placeholder="鍟嗗搧鍚嶇О"/>
+                                </div>
+                            </div>
+                            <div class="layui-inline">
+                                <label class="layui-form-label">搴忓垪鐮�:</label>
+                                <div class="layui-input-inline">
+                                    <input name="batch" class="layui-input" placeholder="搴忓垪鐮�"/>
+                                </div>
+                            </div>
+                            <!--                            <div class="layui-inline">-->
+                            <!--                                <label class="layui-form-label">鐘舵��:</label>-->
+                            <!--                                <div class="layui-input-inline">-->
+                            <!--                                    <select name="isOnline">-->
+                            <!--                                        <option value="1">鍏呯數涓�</option>-->
+                            <!--                                        <option value="1">鍏呯數涓�</option>-->
+                            <!--                                        <option value="0">涓嶅湪鍏呯數</option>-->
+                            <!--                                    </select>-->
+                            <!--                                </div>-->
+                            <!--                            </div>-->
+                            <div class="layui-inline">&emsp;
+                                <button class="layui-btn icon-btn" lay-filter="sensorTbSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <table id="orderDetlTable" lay-filter="orderDetlTable"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!-- 澶村伐鍏锋爮 -->
+<script type="text/html" id="orderDetToolbar">
+
+    <!--    <div class="layui-btn-container">-->
+    <!--        <div class="layui-col-md3">-->
+    <!--            <select id="staNoSelect" lay-verify="required">-->
+    <!--                <option value="">璇烽�夋嫨绔欑偣</option>-->
+    <!--            </select>-->
+    <!--        </div>-->
+    <!--    </div>-->
+    <button class="layui-btn layui-btn-sm layui-btn-danger btn-pakoutPreview" id="btn-pakoutPreview" lay-event="pakoutPreview">鎵归噺鍑哄簱</button>
+
+</script>
+
+<!-- 琛屽伐鍏锋爮 -->
+<script type="text/html" id="operate">
+    {{#if (d.anfme > d.qty){ }}
+    <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="pakoutPreview"><i class="layui-icon layui-icon-prev-circle"></i>鍑哄簱</a>
+    {{# } }}
+</script>
+
+<!-- 鍑哄簱棰勮 -->
+<script type="text/html" id="pakoutPreviewBox" style="display: none">
+    <div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
+        <span style="font-size: large; font-weight: bold">鍑哄簱棰勮</span>
+    </div>
+    <div class="layui-card">
+        <div class="layui-card-body" style="padding: 10px">
+            <table id="stoPreTab" lay-filter="stoPreTab"></table>
+        </div>
+        <button class="layui-btn layui-btn-primary layui-border-black layui-btn-sm" lay-filter="batchModifySta" lay-submit style="display: block;float: right;margin-right: 1rem">
+            鎵归噺淇敼
+        </button>
+    </div>
+</script>
+
+<script type="text/html" id="tbBasicTbStaNos">
+    <div class="ew-select-fixed">
+        <select class="order-sta-select" lay-filter="tbBasicTbStaNos">
+            {{#if (d.staNos!=null) {}}
+            {{# for(let i=0; i<d.staNos.length; i++) { }}
+            <option value="{{d.staNos[i]}}">{{d.staNos[i]}}</option>
+            {{# } }}
+            {{# } }}
+        </select>
+    </div>
+</script>
+
+<script type="text/html" id="staBatchSelectDialog">
+    <form class="layui-form" style="padding: 25px 50px 30px 50px;text-align: center">
+        <select id="batchSelectStaBox" name="batchSta" lay-vertype="tips" lay-verify="required" required="">
+        </select>
+        <button style="margin-top: 30px" class="layui-btn" lay-filter="staBatchSelectConfirm" lay-submit="">纭畾</button>
+    </form>
+</script>
+
+<script type="text/html" id="locNoTpl">
+    <span name="locNo"
+          {{# if( d.lack === false){ }}
+          class="layui-badge layui-badge-green" >{{d.locNo}}</span>
+    {{# } else { }}
+    class="layui-badge layui-badge-red" >搴撳瓨涓嶈冻</span>
+    {{# } }}
+</script>
+
+<!-- 琛屾牱寮� -->
+<script type="text/html" id="orderNoTpl">
+    <span name="orderNo" class="layui-badge layui-badge-gray">{{d.orderNo}}</span>
+</script>
+<script type="text/html" id="statusTpl">
+    <input type="checkbox" name="status" value="{{d.status}}" lay-skin="switch" lay-text="姝e父|绂佺敤" lay-filter="statusSwitch" {{ d.status === 1 ? 'checked' : '' }}>
+</script>
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form">
+        <input name="id" type="hidden">
+        <input name="status" type="hidden">
+        <div class="layui-row">
+
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">璁惧缂栧彿</label>
+                    <div class="layui-input-block">
+                        <input name="uuid" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璁惧绫诲瀷锛�</label>
+                    <div class="layui-input-block">
+                        <div id="modelSel" class="ew-xmselect-tree"></div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鎵�灞為」鐩�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input name="hostId" class="layui-input" style="display: none">
+                        <input id="hostId$" name="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇烽�夋嫨鎵�灞為」鐩�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璇︾粏鍦板潃</label>
+                    <div class="layui-input-block">
+                        <input name="addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" class="layui-input">
+                    </div>
+                </div>
+            </div>
+            <hr class="layui-bg-gray">
+            <div class="layui-col-md12" style="text-align: center">
+                <iframe id="mapIframe" src="map.html" scrolling="no" frameborder="0"
+                        style="display: inline-block; width: 90%;height: 400px;margin: auto">
+                </iframe>
+            </div>
+
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/tools/md5.js"></script>
+<script type="text/javascript" src="../../static/js/orderTable.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/order/outAll.js?v=1" charset="utf-8"></script>
+<!--<script type="text/template" id="takeSiteSelectTemplate">-->
+<!--    {{#each data}}-->
+<!--    <option value="{{siteId}}">{{desc}}</option>-->
+<!--    {{/each}}-->
+<!--</script>-->
+<!-- 椤圭洰缂栬緫绐楀彛 -->
+<script type="text/html" id="hostEditDialog">
+    <form id="hostEditForm" lay-filter="hostEditForm" class="layui-form model-form">
+        <input name="id" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">椤圭洰鍚嶇О:</label>
+            <div class="layui-input-block">
+                <input name="name" placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" class="layui-input"
+                       lay-verType="tips" lay-verify="required" required/>
+            </div>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="hostEditSubmit" lay-submit>淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+
+</body>
+
+<script type="text/template" id="batchStaSelectTpl">
+    <option value="">閫夋嫨鍑哄簱绔�</option>
+    {{#each list}}
+    <option value="{{this}}">{{this}}</option>
+    {{/each}}
+</script>
+
+</html>
+
diff --git a/src/main/webapp/views/user/user.html b/src/main/webapp/views/user/user.html
index d2611c8..3aaec6e 100644
--- a/src/main/webapp/views/user/user.html
+++ b/src/main/webapp/views/user/user.html
@@ -130,12 +130,12 @@
                         <input name="mobile" placeholder="璇疯緭鍏ユ墜鏈哄彿" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                     </div>
                 </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">閭</label>
-                    <div class="layui-input-block">
-                        <input name="email" placeholder="璇疯緭鍏ラ偖绠�" class="layui-input">
-                    </div>
-                </div>
+<!--                <div class="layui-form-item">-->
+<!--                    <label class="layui-form-label">閭</label>-->
+<!--                    <div class="layui-input-block">-->
+<!--                        <input name="email" placeholder="璇疯緭鍏ラ偖绠�" class="layui-input">-->
+<!--                    </div>-->
+<!--                </div>-->
 
             </div>
         </div>

--
Gitblit v1.9.1