From e6ec6cd0e0fab11bf79f052be352a66db2dd51d3 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 26 十一月 2024 13:18:54 +0800
Subject: [PATCH] 项目搭建完成

---
 src/main/resources/mapper/LocMastMapper.xml                       |    3 
 src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java |    2 
 src/main/java/com/zy/common/web/WcsController.java                |   23 
 pom.xml                                                           |    2 
 src/main/java/com/zy/asrs/controller/WorkController.java          |   14 
 src/main/webapp/static/js/nodeLoc/nodeLoc.js                      |  490 ++++++++++++++++++++++++++++
 src/main/webapp/views/saasLog/saasLog.html                        |    9 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java       |   21 
 src/main/webapp/views/index.html                                  |    2 
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java               |    9 
 src/main/webapp/views/nodeLoc/nodeLoc.html                        |    2 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java     |   36 +
 src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java       |   20 
 src/main/webapp/static/js/common.js                               |    2 
 src/main/webapp/static/js/nodeLoc/nodeLocTree.js                  |   86 +++++
 src/main/java/com/zy/common/service/CommonService.java            |   80 ++++
 src/main/java/com/zy/asrs/service/MobileService.java              |    4 
 src/main/java/com/zy/asrs/utils/SaasUtils.java                    |    5 
 src/main/java/com/zy/asrs/service/WorkService.java                |    4 
 src/main/webapp/views/report/locDetl.html                         |    2 
 src/main/java/com/zy/asrs/controller/LocDetlController.java       |   18 
 src/main/resources/mapper/WrkMastMapper.xml                       |    2 
 src/main/webapp/static/js/manLocDetl/manLocDetl.js                |    8 
 src/main/java/com/zy/asrs/controller/MobileController.java        |    7 
 src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java            |   10 
 src/main/java/com/zy/common/model/LocTypeDto.java                 |   16 
 src/main/resources/mapper/ManLocDetlMapper.xml                    |   33 +
 /dev/null                                                         |    0 
 src/main/java/com/zy/asrs/controller/NodeController.java          |    9 
 src/main/java/com/zy/asrs/entity/LocDetl.java                     |    2 
 src/main/resources/license.lic                                    |    0 
 src/main/resources/mapper/BasDevpMapper.xml                       |    2 
 src/main/webapp/views/login.html                                  |    2 
 src/main/resources/application.yml                                |   10 
 src/main/webapp/static/image/logo.png                             |    0 
 src/main/java/com/zy/asrs/controller/ReportQueryController.java   |   79 ++++
 36 files changed, 914 insertions(+), 100 deletions(-)

diff --git a/license.lic b/license.lic
deleted file mode 100644
index 002dd39..0000000
--- a/license.lic
+++ /dev/null
Binary files differ
diff --git a/pom.xml b/pom.xml
index 6151db3..f179871 100644
--- a/pom.xml
+++ b/pom.xml
@@ -115,7 +115,7 @@
     </dependencies>
 
     <build>
-        <finalName>wms</finalName>
+        <finalName>jsjwms</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/zy/asrs/controller/LocDetlController.java b/src/main/java/com/zy/asrs/controller/LocDetlController.java
index 6eba1f6..6d1dd99 100644
--- a/src/main/java/com/zy/asrs/controller/LocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -13,16 +13,16 @@
 import com.core.common.DateUtils;
 import com.core.common.R;
 import com.zy.asrs.entity.LocDetl;
-import com.zy.asrs.entity.ManLocDetl;
 import com.zy.asrs.entity.Mat;
 import com.zy.asrs.mapper.LocDetlMapper;
+import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.LocDetlService;
-import com.zy.asrs.service.ManLocDetlService;
 import com.zy.asrs.service.MatService;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLEncoder;
@@ -38,6 +38,9 @@
     private LocDetlMapper locDetlMapper;
     @Autowired
     private MatService matService;
+
+    @Resource
+    private ManLocDetlMapper manLocDetlMapper;
 
     @RequestMapping(value = "/locDetl/update")
     public R update1() {
@@ -98,6 +101,17 @@
                   @RequestParam(required = false)String orderByType,
                   @RequestParam(required = false)String condition,
                   @RequestParam Map<String, Object> param){
+        String locNo = (String) param.get("loc_no");
+        if (!Cools.isEmpty(locNo)) {
+            // 鍒ゆ柇鏄惁鏄钩搴撳湪搴撳簱瀛�
+            if (locNo.startsWith("09") || locNo.startsWith("10")) {
+                List<LocDetl> locDetls = manLocDetlMapper.selectLocDetlByLocNo(locNo);
+                Page<LocDetl> page = new Page<>();
+                page.setRecords(locDetls);
+                page.setTotal(locDetls.size());
+                return R.ok(page);
+            }
+        }
 //        String row = "";
         EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
 //        if (param.get("row") != null) {
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 639e1d4..88f3b53 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -2,7 +2,6 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
@@ -23,7 +22,6 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
-import java.util.List;
 
 /**
  * 绉诲姩绔帴鍙f帶鍒跺櫒
@@ -63,14 +61,15 @@
     @RequestMapping("/mat/onSale/auth")
     @ManagerAuth
     public R matOnSale(@RequestBody CombParam combParam){
-        mobileService.onSale(combParam);
+        mobileService.onSale(combParam, getUserId());
         return R.ok("涓婃灦鎴愬姛");
     }
+
     // 鍟嗗搧涓嬫灦
     @RequestMapping("/mat/offSale/auth")
     //@ManagerAuth
     public R matOffSale(@RequestBody OffSaleParam offSaleParam){
-        mobileService.offSale(offSaleParam);
+        mobileService.offSale(offSaleParam, getUserId());
         return R.ok("涓嬫灦鎴愬姛");
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/NodeController.java b/src/main/java/com/zy/asrs/controller/NodeController.java
index 6ae3b3c..b08ace1 100644
--- a/src/main/java/com/zy/asrs/controller/NodeController.java
+++ b/src/main/java/com/zy/asrs/controller/NodeController.java
@@ -13,7 +13,6 @@
 import com.core.common.DateUtils;
 import com.core.common.R;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.ManLocDetl;
 import com.zy.asrs.entity.Node;
 import com.zy.asrs.entity.param.InitPakoutParam;
 import com.zy.asrs.entity.param.PakinParam;
@@ -34,8 +33,6 @@
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.*;
-
-import static jdk.nashorn.api.scripting.ScriptUtils.convert;
 
 @RestController
 public class NodeController extends BaseController {
@@ -65,7 +62,11 @@
         convert(param, wrapper);
         hostEq(wrapper);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(nodeService.selectPage(new Page<>(curr, limit), wrapper));
+        Page<Node> nodePage = nodeService.selectPage(new Page<>(curr, limit), wrapper);
+        if (nodePage.getRecords().isEmpty()) {
+            nodePage = nodeService.selectPage(new Page<>(curr, limit), new EntityWrapper<Node>().eq("id",param.get("parent_id")));
+        }
+        return R.ok(nodePage);
     }
 
     @RequestMapping(value = "/node/list/tree/auth")
diff --git a/src/main/java/com/zy/asrs/controller/ReportQueryController.java b/src/main/java/com/zy/asrs/controller/ReportQueryController.java
index cd42ffc..7944eb3 100644
--- a/src/main/java/com/zy/asrs/controller/ReportQueryController.java
+++ b/src/main/java/com/zy/asrs/controller/ReportQueryController.java
@@ -6,6 +6,7 @@
 import com.core.common.Cools;
 import com.core.common.R;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.mapper.ReportQueryMapper;
 import com.zy.asrs.service.LocDetlService;
 import com.zy.common.web.BaseController;
@@ -15,6 +16,7 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -33,6 +35,9 @@
 	private LocDetlService locDetlService;
 	@Autowired
 	private ReportQueryMapper reportQueryMapper;
+
+	@Resource
+	private ManLocDetlMapper manLocDetlMapper;
 
 	//------------------搴撲綅浣跨敤缁熻--------------------------------------
 	@RequestMapping("/viewStockUseList.action")
@@ -91,11 +96,80 @@
 	//-----------------搴撳瓨MAP鍥�--------------------------------------
 	@RequestMapping("/viewLocMapList/rows.action")
 	public R queryViewLocMapRows(){
-		return R.ok().add(reportQueryMapper.getViewLocRowTotal());
+		List<Integer> viewLocRowTotal = reportQueryMapper.getViewLocRowTotal();
+		viewLocRowTotal.add(9);
+		viewLocRowTotal.add(10);
+		return R.ok().add(viewLocRowTotal);
 	}
 
 	@RequestMapping("/viewLocMapList.action")
-	public R queryViewLocMapListByPages(@RequestParam(defaultValue = "1")Integer row){
+	public R queryViewLocMapListByPages(@RequestParam(defaultValue = "1")Integer row) {
+		if (row == 9) {
+			// 鑾峰彇鎺掔骇鏁版嵁
+			// 琛ㄦ牸鏍囬锛氬垪 ===>> 鍗囧簭
+//			List<String> bays = new ArrayList<>();
+			String[] bays = new String[33];
+			for (int i = 1; i <= 32; i ++) {
+				bays[i] = String.valueOf(i);
+			}
+
+			// 锛佽〃鏍肩涓�鍒楁斁灞傜骇鏁�
+			bays[0] = "";
+			// 琛ㄦ牸琛岋細灞� ====>> 鍊掑簭
+			List<String> levs = new ArrayList<>();
+			for (int i = 5; i>= 1; i --) {
+				levs.add(String.valueOf(i));
+			}
+			List<Map<String, Object>> body = new ArrayList<>();
+			for (String lev : levs){
+				// 鑾峰彇灞傜骇鏁版嵁
+//				List<ViewLocMapDto> dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev));
+				List<ViewLocMapDto> dtos = manLocDetlMapper.getViewLocBays(String.valueOf(row), lev);
+				// 锛佽〃鏍肩涓�鍒楁斁灞傜骇鏁�
+				dtos.add(0, new ViewLocMapDto(null ,null, lev));
+				Map<String, Object> map = new HashMap<>();
+				map.put("loc", dtos);
+				body.add(map);
+			}
+			Map<String, Object> result = new HashMap<>();
+			result.put("title", bays);
+			result.put("body", body);
+			return R.ok(result);
+		} else if( row == 10) {
+			// 鑾峰彇鎺掔骇鏁版嵁
+			// 琛ㄦ牸鏍囬锛氬垪 ===>> 鍗囧簭
+//			List<String> bays = new ArrayList<>();
+			String[] bays = new String[33];
+			for (int i = 1; i <= 32; i ++) {
+				bays[i] = String.valueOf(i);
+			}
+
+			// 锛佽〃鏍肩涓�鍒楁斁灞傜骇鏁�
+			bays[0] = "";
+			// 琛ㄦ牸琛岋細灞� ====>> 鍊掑簭
+			List<String> levs = new ArrayList<>();
+			for (int i = 5; i>= 1; i --) {
+				levs.add(String.valueOf(i));
+			}
+			List<Map<String, Object>> body = new ArrayList<>();
+			for (String lev : levs){
+				// 鑾峰彇灞傜骇鏁版嵁
+//				List<ViewLocMapDto> dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev));
+				List<ViewLocMapDto> dtos = manLocDetlMapper.getViewLocBays(String.valueOf(row), lev);
+				// 锛佽〃鏍肩涓�鍒楁斁灞傜骇鏁�
+				dtos.add(0, new ViewLocMapDto(null ,null, lev));
+				for (int i = 15;i <= 18; i ++) {
+					dtos.add(i,new ViewLocMapDto(null ,i, "X"));
+				}
+				Map<String, Object> map = new HashMap<>();
+				map.put("loc", dtos);
+				body.add(map);
+			}
+			Map<String, Object> result = new HashMap<>();
+			result.put("title", bays);
+			result.put("body", body);
+			return R.ok(result);
+		} else {
 		// 鑾峰彇鎺掔骇鏁版嵁
 		// 琛ㄦ牸鏍囬锛氬垪 ===>> 鍗囧簭
 		List<String> bays = reportQueryMapper.getViewLocBayCount(row);
@@ -118,6 +192,7 @@
 		result.put("body", body);
 		return R.ok(result);
 	}
+	}
 
 
 	//------------------绔欑偣鏃ュ叆鍑哄簱娆℃暟缁熻--------------------------------------
diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index 0d8a021..84771a1 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -3,14 +3,12 @@
 import com.core.annotations.ManagerAuth;
 import com.core.common.Cools;
 import com.core.common.R;
-import com.zy.asrs.entity.WaitPakin;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.entity.param.FullStoreParam;
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.BasDevpService;
 import com.zy.asrs.service.WorkService;
-import com.zy.common.model.StartupDto;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -163,12 +161,12 @@
         return R.ok();
     }
 
-    @RequestMapping("/create/waitPain/wrkMast/start")
-    @ManagerAuth(memo = "鐢熸垚浠诲姟")
-    public R createWaitPainWrkMastStart(@RequestBody List<WaitPakin> list) {
-        StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId());
-        return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo());
-    }
+//    @RequestMapping("/create/waitPain/wrkMast/start")
+//    @ManagerAuth(memo = "鐢熸垚浠诲姟")
+//    public R createWaitPainWrkMastStart(@RequestBody List<WaitPakin> list) {
+//        StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId());
+//        return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo());
+//    }
 
     @RequestMapping("/deal/preHave/start")
     @ManagerAuth(memo = "鍏堝叆鍝佸鐞�")
diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java
index 1a68af5..11658d2 100644
--- a/src/main/java/com/zy/asrs/entity/LocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -251,7 +251,7 @@
 
     public long getStoreDate(){
         long timeNow = new Date().getTime();
-        long timeCreate = this.appeTime.getTime();
+        long timeCreate = new Date().getTime();
 
         return (timeNow - timeCreate) /24/60/60/1000;
     }
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 14567e7..dca17b1 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -53,4 +53,13 @@
 //    LocMast selectLocByLocStsPakInO2(@Param("locNos") List<String> locNos,@Param("whsType") Long whsType);
 
     LocMast selectLocByLocStsPakInO2(@Param("crnNo") Integer crnNo,@Param("bay") Integer bay,@Param("lev") Integer lev,@Param("gro") Integer gro,@Param("whsType") Long whsType);
+
+    /**
+     *
+     * 鏍规嵁搴撲綅绫诲瀷鏉ユ悳绱㈢┖搴撲綅(绔欑偣鐨勪笉鍚岄檺鍒跺爢鍨涙満)
+     * @param locType1 0123
+     * @param crnNo 鍫嗗灈鏈哄彿
+     * @return 搴撲綅闆嗗悎
+     */
+    List<LocMast> selectLocByTypeToList(@Param("locType1") int locType1,@Param("crnNo") int crnNo);
 }
diff --git a/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java
index 250a289..08cec8f 100644
--- a/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/ManLocDetlMapper.java
@@ -1,7 +1,9 @@
 package com.zy.asrs.mapper;
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.ManLocDetl;
+import com.zy.asrs.entity.ViewLocMapDto;
 import com.zy.asrs.entity.result.StockVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -83,4 +85,12 @@
     List<ManLocDetl> selectAllPage(Map<String, Object> condition);
 
     long selectAllPageSize(Map<String, Object> condition);
+
+    List<ViewLocMapDto> getViewLocBays(@Param("row") String row, @Param("lev") String lev);
+
+    /**
+     * 鎸夊簱浣嶅彿鏌ヨ骞冲簱搴撳瓨
+     * @param locNo 搴撲綅鍙�
+     */
+    List<LocDetl> selectLocDetlByLocNo(@Param("locNo") String locNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 6172647..f5d0585 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -20,12 +20,12 @@
     /**
      * 涓婃灦
      */
-    void onSale(CombParam param);
+    void onSale(CombParam param,Long userId);
 
     /**
      * 涓嬫灦
      */
-    void offSale(OffSaleParam param);
+    void offSale(OffSaleParam param, Long userId);
 
     /**
      * 鐩樼偣
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 99fdc5e..69d72d6 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -1,14 +1,12 @@
 package com.zy.asrs.service;
 
 import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.WaitPakin;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.entity.param.FullStoreParam;
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.common.model.LocDetlDto;
-import com.zy.common.model.StartupDto;
 import com.zy.common.model.TaskDto;
 import com.zy.common.model.enums.IoWorkType;
 
@@ -88,7 +86,7 @@
     /**
      * 閫氱煡妗f墜鍔ㄧ敓鎴愪换鍔�
      */
-    StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId);
+//    StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId);
 
     /**
      * 閫氱煡妗f墜鍔ㄧ敓鎴愪换鍔�
diff --git a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
index 1f566fe..90316d8 100644
--- a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
@@ -172,7 +172,7 @@
             manLocDetl.setUnit(mat.getUnit());
             manLocDetl.setBarcode(mat.getBarcode());
             manLocDetl.setPrice(mat.getPrice());
-            SaasUtils.insertLog(3,manLocDetl.getLocNo(), manLocDetl.getMatnr(),manLocDetl.getAnfme());
+            SaasUtils.insertLog(3,manLocDetl.getLocNo(), manLocDetl.getMatnr(),manLocDetl.getAnfme(),userId);
             this.baseMapper.insert(manLocDetl);
         }
     }
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 e37ebd6..3b652a7 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -14,7 +14,7 @@
 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.asrs.utils.SaasUtils;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
@@ -204,13 +204,19 @@
 
     // 鍟嗗搧涓婃灦
     @Override
-    public void onSale(CombParam param) {
+    public void onSale(CombParam param, Long userId) {
+
         Date now = new Date();
         // 鑾峰彇搴撲綅鍙�
         String locno = param.getLocno();
         Node node = nodeService.selectByUuid(locno);
         if (Cools.isEmpty(node)) {
             throw new CoolException(param.getLocno() + ":搴撲綅涓嶅瓨鍦�");
+        }
+
+        String barcode = param.getBarcode();
+        if (Cools.isEmpty(barcode)) {
+            throw new CoolException("鏉$爜涓嶈兘涓虹┖锛�");
         }
 
         // 鑾峰彇鍟嗗搧鍒楄〃
@@ -222,26 +228,38 @@
             if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme()==0){
                 throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鏁伴噺鏈夎锛�");
             }
-            if (Cools.isEmpty(combMat.getBatch())){
-//                throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鎵瑰彿鏈夎锛�");
-            }
+
             ManLocDetl manLocDetl = new ManLocDetl();
             manLocDetl.setLocNo(locno);
+//            manLocDetl.setBarcode(barcode);
+            manLocDetl.setZpallet(barcode);
             manLocDetl.setNodeId(node.getId());
             manLocDetl.setMaktx(mat.getMaktx());
             manLocDetl.setMatnr(mat.getMatnr());
+            manLocDetl.setSpecs(mat.getSpecs());
             manLocDetl.setBatch(Cools.isEmpty(combMat.getBatch()) ? "" : combMat.getBatch());
             manLocDetl.setAnfme(combMat.getAnfme());
+            manLocDetl.setCreateBy(userId);
+            manLocDetl.setCreateTime(now);
+            manLocDetl.setUpdateBy(userId);
             manLocDetl.setModiTime(now);
             if (!manLocDetlService.insert(manLocDetl)) {
                 throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�");
             }
+
+            // 鏇存柊搴撲綅鏉$爜
+            node.setBarcode(barcode);
+            node.setUpdateBy(userId);
+            node.setUpdateTime(now);
+            nodeService.updateById(node);
+            SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId);
+
         }
     }
 
     // 鍟嗗搧涓嬫灦
     @Override
-    public void offSale(OffSaleParam offSaleParam) {
+    public void offSale(OffSaleParam offSaleParam, Long userId) {
         ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
         if (Cools.isEmpty(manLocDetl)){
             throw new CoolException("鏃犳鍟嗗搧锛�");
@@ -250,7 +268,13 @@
         if (anfme < 0) {
             throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�");
         } else if (anfme == 0){
+            SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId);
             manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
+            // 娓呯┖搴撲綅鏉$爜
+            Node node = nodeService.selectByUuid(offSaleParam.getLocNo());
+            node.setUpdateTime(new Date());
+            node.setUpdateBy(userId);
+            node.setBarcode("");
         }
         manLocDetlMapper.updateAnfme0(anfme,manLocDetl.getNodeId());
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java
index bd47225..3399e9b 100644
--- a/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java
@@ -12,18 +12,15 @@
 import com.zy.asrs.entity.param.InitPakoutParam;
 import com.zy.asrs.entity.param.MatnrDto;
 import com.zy.asrs.entity.param.PakinParam;
-import com.zy.asrs.entity.result.Pakin;
 import com.zy.asrs.mapper.NodeMapper;
 import com.zy.asrs.service.ManLocDetlService;
 import com.zy.asrs.service.MatService;
 import com.zy.asrs.service.NodeService;
 import com.zy.asrs.utils.SaasUtils;
-import com.zy.asrs.utils.VersionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.beans.Transient;
 import java.util.Date;
 import java.util.List;
 
@@ -70,12 +67,12 @@
 
     @Override
     public Node selectByUuid(String uuid, Long hostId, Integer type) {
-        return selectOne(new EntityWrapper<Node>().eq("host_id", hostId).eq("uuid", uuid).eq("type", type));
+        return selectOne(new EntityWrapper<Node>().isNull("host_id").eq("uuid", uuid).eq("type", type));
     }
 
     @Override
     public Node selectByUuid(String uuid, Long hostId, Integer type, Long parentId) {
-        return selectOne(new EntityWrapper<Node>().eq("host_id", hostId).eq("uuid", uuid).eq("type", type).eq("parent_id", parentId));
+        return selectOne(new EntityWrapper<Node>().isNull("host_id").eq("uuid", uuid).eq("type", type).eq("parent_id", parentId));
     }
 
     @Override
@@ -115,7 +112,7 @@
                 manLocDetl.setCreateTime(now);
                 manLocDetl.setModiTime(now);
                 manLocDetl.setCreateBy(userId);
-                SaasUtils.insertLog(0,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme());
+                SaasUtils.insertLog(0,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme(),userId);
                 manLocDetlService.insert(manLocDetl);
             }else {
                 check.setAnfme(dto.getCount() + check.getAnfme());
@@ -149,17 +146,22 @@
                 if (manLocDetl.getAnfme() - param.getCount() < 0) {
                     return R.error("鐗╂枡:"+ param.getMatnr() + " 鍦ㄥ簱浣嶄腑鏁伴噺涓嶈冻");
                 } else if (manLocDetl.getAnfme() - param.getCount() == 0) {
-                    SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount());
+                    SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount(),userId);
                     manLocDetlService.delete(new EntityWrapper<ManLocDetl>()
                             .eq("loc_no",node.getUuid())
                             .eq("matnr",param.getMatnr()));
+                    // 娓呯┖搴撲綅鏉$爜
+                    node.setBarcode("");
+                    node.setUpdateBy(userId);
+                    node.setUpdateTime(now);
+                    nodeService.updateById(node);
                 } else {
 
                     manLocDetl.setAnfme(manLocDetl.getAnfme() - param.getCount());
                     manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>()
                             .eq("loc_no",node.getUuid())
                             .eq("matnr",param.getMatnr()));
-                    SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount());
+                    SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount(),userId);
                 }
             }
         }
@@ -187,7 +189,7 @@
                 source.setLocNo(targetNode.getUuid());
                 source.setNodeId(targetNode.getId());
 
-                SaasUtils.insertLog(2,source.getLocNo(), source.getMatnr(), source.getAnfme());
+                SaasUtils.insertLog(2,source.getLocNo(), source.getMatnr(), source.getAnfme(),userId);
                 manLocDetlService.insert(source);
             }else {
                 check.setAnfme(check.getAnfme() + source.getAnfme());
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 3aa9551..efc19ee 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -449,6 +449,9 @@
                     .eq("stn_no", param.getOutSite())
                     .eq("crn_no", locMast.getCrnNo());
             StaDesc staDesc = staDescService.selectOne(wrapper);
+            if (staDesc == null) {
+                throw new CoolException("璺緞涓嶅瓨鍦�");
+            }
             Integer sourceStaNo = staDesc.getCrnStn();
             if (Cools.isEmpty(sourceStaNo)) {
                 throw new CoolException("妫�绱㈡簮绔欏け璐�");
@@ -1022,15 +1025,15 @@
         }
     }
 
-    @Override
-    public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {
-        if (Cools.isEmpty(list)) {
-            throw new CoolException("鍏ュ簱閫氱煡妗d笉鑳戒负绌�");
-        }
-        LocTypeDto locTypeDto = new LocTypeDto();
-        locTypeDto.setLocType1((short) 1);
-        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list);
-    }
+//    @Override
+//    public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {
+//        if (Cools.isEmpty(list)) {
+//            throw new CoolException("鍏ュ簱閫氱煡妗d笉鑳戒负绌�");
+//        }
+//        LocTypeDto locTypeDto = new LocTypeDto();
+//        locTypeDto.setLocType1((short) 1);
+//        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list);
+//    }
 
     @Override
     @Transactional
diff --git a/src/main/java/com/zy/asrs/utils/SaasUtils.java b/src/main/java/com/zy/asrs/utils/SaasUtils.java
index 555ec87..b2e018f 100644
--- a/src/main/java/com/zy/asrs/utils/SaasUtils.java
+++ b/src/main/java/com/zy/asrs/utils/SaasUtils.java
@@ -1,14 +1,13 @@
 package com.zy.asrs.utils;
 
 import com.core.common.SpringUtils;
-import com.fasterxml.jackson.databind.util.BeanUtil;
 import com.zy.system.entity.SaasLog;
 import com.zy.system.service.SaasLogService;
 
 import java.util.Date;
 
 public class SaasUtils {
-    public static void insertLog(Integer type, String locNo, String matnr,Double anfme){
+    public static void insertLog(Integer type, String locNo, String matnr,Double anfme, Long userId){
         SaasLogService bean = SpringUtils.getBean(SaasLogService.class);
         SaasLog saasLog = new SaasLog();
         saasLog.setType(type);
@@ -16,7 +15,7 @@
         saasLog.setMatnr(matnr);
         saasLog.setIoTime(new Date());
         saasLog.setAnfme(anfme);
-        saasLog.setCreateBy(1L);
+        saasLog.setCreateBy(userId);
         bean.insert(saasLog);
     }
 }
diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java
index c6630aa..f0bbb7a 100644
--- a/src/main/java/com/zy/common/model/LocTypeDto.java
+++ b/src/main/java/com/zy/common/model/LocTypeDto.java
@@ -1,6 +1,5 @@
 package com.zy.common.model;
 
-import com.alibaba.fastjson.JSON;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasDevp;
 import lombok.Data;
@@ -26,15 +25,16 @@
     }
 
     public LocTypeDto(BasDevp basDevp) {
-        if (basDevp.getLocType1() == null || basDevp.getLocType1() == 0) {
+        this.locType1 = basDevp.getLocType1();
+        if (basDevp.getLocType1() == null) {
             throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
         }
-        if (basDevp.getLocType1() == 1) {
-            this.locType1 = 1; // 浣庡簱浣�
-        } else {
-            this.locType1 = 2; // 楂樺簱浣�
-        }
-        log.info(JSON.toJSONString(this));
+//        if (basDevp.getLocType1() == 1) {
+//            this.locType1 = 1; // 浣庡簱浣�
+//        } else {
+//            this.locType1 = 2; // 楂樺簱浣�
+//        }
+//        log.info(JSON.toJSONString(this));
     }
 
 }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 061be6c..33b8dd8 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,16 +3,14 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Arith;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.result.KeyValueVo;
+import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.Shelves;
 import com.zy.common.model.StartupDto;
 import com.zy.common.properties.SlaveProperties;
 import lombok.extern.slf4j.Slf4j;
@@ -20,11 +18,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
+import javax.annotation.Resource;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -56,6 +52,9 @@
     private SlaveProperties slaveProperties;
     @Autowired
     private WrkDetlService wrkDetlService;
+
+    @Resource
+    private LocMastMapper locMastMapper;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -150,7 +149,72 @@
         }catch (Exception e){
             log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�",sourceStaNo);
         }
-        return null;
+        throw new CoolException("鑾峰彇搴撲綅寮傚父");
+    }
+
+    /**
+     * 鑾峰彇搴撲綅锛屾澃涓婃澃鐢�
+     * @param ioType 1鍏ㄦ澘鍏ュ簱锛�10绌烘墭鐩樼粍鍏ュ簱
+     * @param sourceSite 婧愮珯鐐�
+     * @param locType 搴撲綅妫�娴嬩俊鎭� 0绌烘墭1鍒楋紝1涓�灞傦紝2.2-4灞傦紝3.5-9灞�
+     * @return 鐩爣搴撲綅淇℃伅
+     */
+    @Transactional
+    public StartupDto getLocNoRunNew(Integer ioType, Integer sourceSite, Integer locType) {
+
+        // 鏍规嵁鍏ュ簱绫诲瀷鍜屾簮绔欑偣鑾峰彇宸ヤ綔璺緞
+        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", ioType).eq("crn_stn", sourceSite));
+        if (staDesc == null) {
+            throw new CoolException("鑾峰彇宸ヤ綔璺緞寮傚父锛�" + ioType + " , " + sourceSite);
+        }
+
+        // 瀵绘壘鍒扮殑搴撲綅
+        LocMast locMast = null;
+
+        // 鎸夊簱浣嶇被鍨嬭幏鍙栧簱浣�
+        List<LocMast> locMasts = locMastMapper.selectLocByTypeToList(locType, staDesc.getCrnNo());
+
+        // todo 濡傛灉褰撳墠绫诲瀷搴撲綅鍓╀綑涓嶅锛屾槸涓�鐩存斁婊★紝杩樻槸鍏煎鍒颁笅涓�绉嶅簱浣嶇被鍨�
+        // 鑰冭檻绉诲簱闇�瑕佸悓绫诲瀷搴撲綅锛岃繖閲岄檺鍒朵笉鑳芥斁婊★紝鍏煎涓嬩竴绉嶅簱浣嶇被鍨�
+        if (locMasts.size() <= 4) {
+            switch (locType) {
+                case 0:
+                case 2:
+                    return getLocNoRunNew(ioType, sourceSite, 3);
+                case 1:
+                case 3:
+                    throw new CoolException("褰撳墠搴撲綅鍓╀綑鍥涗釜鐢ㄤ簬绉诲簱锛屾棤娉曞崰鐢細" + locType);
+                default:
+            }
+        }
+
+        // 鍏堝彇娣卞簱浣�
+        Optional<LocMast> first = locMasts.stream().filter(o -> o.getRow1() == 1 || o.getRow1() == 4 || o.getRow1() == 5 || o.getRow1() == 8).findFirst();
+        if (first.isPresent()) {
+               locMast = first.get();
+        } else {
+            // 娣卞簱浣嶉噷闈㈡病鏈変粠娴呭簱浣嶉噷闈㈠彇
+            Optional<LocMast> first2 = locMasts.stream().filter(o -> o.getRow1() == 2 || o.getRow1() == 3 || o.getRow1() == 5 || o.getRow1() == 7).findFirst();
+            if(first2.isPresent()) {
+                locMast = first2.get();
+            }
+        }
+
+        if (locMast == null) {
+            throw new CoolException("娌℃湁鎵惧埌鍚堥�傜┖搴撲綅");
+        }
+
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        startupDto.setWorkNo(workNo);
+        startupDto.setCrnNo(staDesc.getCrnNo());
+        startupDto.setSourceStaNo(staDesc.getStnNo());
+        startupDto.setStaNo(sourceSite);
+        startupDto.setLocNo(locMast.getLocNo());
+
+        return startupDto;
     }
 
     /**
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 066530a..41e377a 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -21,7 +21,6 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/10/30
@@ -92,10 +91,10 @@
         switch (param.getIoType()) {
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakins != null;
-                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+                dto = startupFullPutStore(sourceStaNo, param.getBarcode(), locTypeDto, waitPakins);
                 break;
             case 10://绌烘墭鐩樺叆搴�
-                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode());
+                dto = emptyPlateIn(sourceStaNo, locTypeDto, param.getBarcode());
                 break;
             default:
                 break;
@@ -156,13 +155,14 @@
      * 鍏ㄦ澘鍏ュ簱
      */
     @Transactional
-    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
+    public StartupDto startupFullPutStore(BasDevp sourceStaNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
         // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
-        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
-        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
-        StartupDto dto = commonService.getLocNo( 1, devpNo, matnrs.get(0),batchs.get(0),null, locTypeDto);
+//        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
+//        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
+//        StartupDto dto = commonService.getLocNo( 1, devpNo, matnrs.get(0),batchs.get(0),null, locTypeDto);
+        StartupDto dto = commonService.getLocNoRunNew(1, sourceStaNo.getDevNo(), Integer.valueOf(locTypeDto.getLocType1()));
         int workNo = dto.getWorkNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
@@ -233,11 +233,12 @@
     }
 
     @Transactional
-    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode) {
+    public StartupDto emptyPlateIn(BasDevp sourceStaNo, LocTypeDto locTypeDto, String barcode) {
         // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
-        StartupDto dto = commonService.getLocNo( 10, devpNo, null,null,null, locTypeDto);
+//        StartupDto dto = commonService.getLocNo( 10, devpNo, null,null,null, locTypeDto);
+        StartupDto dto = commonService.getLocNoRunNew(10, sourceStaNo.getDevNo(), Integer.valueOf(locTypeDto.getLocType1()));
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 748e521..4aad41e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,7 +10,7 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=phJsJasrs
+    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jsjasrs
     username: sa
     password: sa@123
   mvc:
@@ -39,7 +39,7 @@
 
 #License鐩稿叧閰嶇疆
 license:
-  subject: phJsJasrs
+  subject: jsjasrs
   publicAlias: publicCert
   storePass: public_zhongyang_123456789
   licensePath: license.lic
@@ -50,13 +50,13 @@
   # 鍙屾繁
   doubleDeep: true
   # 鍙屾繁搴撲綅鎺掑彿
-  doubleLocs: 1,4,5,8,9,12,13,16
+  doubleLocs: 1,4,5,8
   # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
   groupCount: 4
   # 宸︽繁搴撲綅鎺掑彿
-  doubleLocsLeft: 1,5,9,13
+  doubleLocsLeft: 1,4
   # 鍙虫繁搴撲綅鎺掑彿
-  doubleLocsRight: 4,8,12,16
+  doubleLocsRight: 5,8
 # wms鍙傛暟閰嶇疆
 wms-parameter:
   # 鑷姩琛ョ┖鏉垮姛鑳藉紑鍏�
diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic
index 002dd39..b8f2835 100644
--- a/src/main/resources/license.lic
+++ b/src/main/resources/license.lic
Binary files differ
diff --git a/src/main/resources/mapper/BasDevpMapper.xml b/src/main/resources/mapper/BasDevpMapper.xml
index 4f6e131..5b274ed 100644
--- a/src/main/resources/mapper/BasDevpMapper.xml
+++ b/src/main/resources/mapper/BasDevpMapper.xml
@@ -48,7 +48,7 @@
         select
         abd.dev_no
         from asr_bas_devp abd
-        left join asr_sta_desc asd on abd.dev_no = asd.stn_no
+        left join asr_sta_desc asd on abd.dev_no = asd.crn_stn
         where 1=1
         and asd.type_no = #{typeNo}
         -- and abd.in_enable = 'Y'
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 8d918ad..141ec2b 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -192,5 +192,8 @@
         and gro1 = #{gro}
         AND loc_sts in ('O') order by row1
     </select>
+    <select id="selectLocByTypeToList" resultType="com.zy.asrs.entity.LocMast">
+        select loc_no locNo,loc_type1 locType1,crn_no crnNo,row1 from asr_loc_mast where loc_sts = 'O' and loc_type1 = #{locType1} AND crn_no = #{crnNo} order by lev1,bay1,row1
+    </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/ManLocDetlMapper.xml b/src/main/resources/mapper/ManLocDetlMapper.xml
index 940e46c..5a4b28c 100644
--- a/src/main/resources/mapper/ManLocDetlMapper.xml
+++ b/src/main/resources/mapper/ManLocDetlMapper.xml
@@ -28,7 +28,7 @@
         <result column="create_by" property="createBy" />
         <result column="create_time" property="createTime" />
         <result column="update_by" property="updateBy" />
-        <result column="update_time" property="modiTime" />
+        <result column="modi_time" property="modiTime" />
         <result column="memo" property="memo" />
 
     </resultMap>
@@ -295,6 +295,37 @@
         WHERE 1=1
         <include refid="locDetlCondition2"></include>
     </select>
+    <select id="getViewLocBays" resultType="com.zy.asrs.entity.ViewLocMapDto">
+        select
+            uuid as locNo,
+            SUBSTRING(uuid, 4, 2) as bay1,
+            CASE
+                WHEN barcode = '' THEN 'O'
+                ELSE 'F'
+                END AS locSts
+        from
+            man_node
+        where
+            level = 3
+          and parent_name = #{row} + '鎺�'
+          and SUBSTRING(uuid, 7, 1) = #{lev}
+    </select>
+    <select id="selectLocDetlByLocNo" resultType="com.zy.asrs.entity.LocDetl">
+        select
+            loc_no as locNo,
+            matnr,
+            maktx,
+            doc_num as orderNo,
+            specs,
+            zpallet,
+            batch,
+            anfme,
+            unit
+        from
+            man_loc_detl
+        where
+            loc_no = #{locNo}
+    </select>
 
 
     <update id="updateLocNo0">
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index e49e71f..cc284f3 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -70,7 +70,7 @@
         select * from asr_wrk_mast
         where wrk_sts=5
         or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
-        or (wrk_sts=15 and dateadd(mi,15,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
+        or (wrk_sts=15 and dateadd(mi,3,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
         order by io_time,wrk_no asc
     </select>
diff --git a/src/main/webapp/static/image/logo.png b/src/main/webapp/static/image/logo.png
index 231c97e..7b00fa9 100644
--- a/src/main/webapp/static/image/logo.png
+++ b/src/main/webapp/static/image/logo.png
Binary files differ
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 054399e..547c43b 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/wms";
+var baseUrl = "/jsjwms";
 
 // 璇︽儏绐楀彛-楂樺害
 var detailHeight = '80%';
diff --git a/src/main/webapp/static/js/manLocDetl/manLocDetl.js b/src/main/webapp/static/js/manLocDetl/manLocDetl.js
index ff281b0..c906140 100644
--- a/src/main/webapp/static/js/manLocDetl/manLocDetl.js
+++ b/src/main/webapp/static/js/manLocDetl/manLocDetl.js
@@ -4,11 +4,11 @@
         {field: 'locNo', align: 'center',title: '搴撲綅鍙�'},
         {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿', sort:true}
         ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', sort:true}
+        ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
         ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}
         ,{field: 'batch', align: 'center',title: '鎵瑰彿', width: 300, sort:true}
-        ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
         //,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
-        ,{field: 'specs', align: 'center',title: '閰嶇疆'}
+        ,{field: 'specs', align: 'center',title: '瑙勬牸'}
         ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
         ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
         ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
@@ -38,8 +38,8 @@
     ];
 
     // cols.push.apply(cols, detlCols);
-    cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',hide: true}
-        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+    cols.push({field: 'createBy$', align: 'center',title: '鍒涘缓浜�',hide: true}
+        ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
     )
     return cols;
 }
diff --git a/src/main/webapp/static/js/nodeLoc/nodeLoc.js b/src/main/webapp/static/js/nodeLoc/nodeLoc.js
new file mode 100644
index 0000000..77de80b
--- /dev/null
+++ b/src/main/webapp/static/js/nodeLoc/nodeLoc.js
@@ -0,0 +1,490 @@
+var pageCurr;
+var printMatCodeNos = [];
+var admin;
+function getCol() {
+    var cols = [
+        {type: 'checkbox'}
+        ,{field: 'tagId$', align: 'center',title: '褰掔被', templet: '#tagTpl'}
+    ];
+    cols.push.apply(cols, matCols);
+    cols.push(
+        {fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+    )
+    return cols;
+}
+
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+    dropdown: 'dropdown/dropdown',
+}).use(['table','laydate', 'form', 'treeTable', 'admin', 'xmSelect', 'dropdown', 'element'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    admin = layui.admin;
+    var treeTable = layui.treeTable;
+    var xmSelect = layui.xmSelect;
+
+    // 鍟嗗搧鍒嗙被鏁版嵁
+    var insTb = treeTable.render({
+        elem: '#tag',
+        url: baseUrl+'/node/list/auth',
+        headers: {token: localStorage.getItem('token')},
+        tree: {
+            iconIndex: 2,           // 鎶樺彔鍥炬爣鏄剧ず鍦ㄧ鍑犲垪
+            isPidData: true,        // 鏄惁鏄痠d銆乸id褰㈠紡鏁版嵁
+            idName: 'id',           // id瀛楁鍚嶇О
+            pidName: 'parentId'     // pid瀛楁鍚嶇О
+        },
+        cols: [],
+        done: function (data) {
+            $('.ew-tree-table-box').css('height', '100%');
+            insTb.expandAll();
+        }
+    });
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#mat',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/node/list/auth',
+        page: true,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-105',
+        cols: [[
+            {type: 'checkbox'},
+            {field: 'name', align: 'center',title: '搴撲綅鍚�', hide: false},
+            {field: 'parentName', align: 'center',title: '搴撳尯', hide: false},
+            {field: 'barcode', align: 'center',title: '鎵樼洏鏉$爜', hide: false},
+            {field: 'updateTime$', align: 'center',title: '鏇存柊鏃堕棿', hide: false},
+            // {field: 'createBy$', align: 'center',title: '鍒涘缓浜�', hide: false},
+            // {field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿', hide: false},
+            {field: 'type$', align: 'center',title: '绫诲瀷', templet: '#tagTpl', hide: false}
+        ]],
+        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();
+            form.on('checkbox(tableCheckbox)', function (data) {
+                var _index = $(data.elem).attr('table-index')||0;
+                if(data.elem.checked){
+                    res.data[_index][data.value] = 'Y';
+                }else{
+                    res.data[_index][data.value] = 'N';
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(locMast)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {
+                curr: 1
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+                limit();
+            }
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(mat)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                showEditModel()
+                break;
+            case 'deleteData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/node/delete/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg)
+                                }
+                            }
+                        })
+                    });
+                }
+                break;
+            case 'exportData':
+                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'mat': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/node/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg)
+                            }
+                        }
+                    });
+                });
+                break;
+            // 鎵归噺鎵撳嵃
+            case "btnPrintBatch":
+                printMatCodeNos = [];
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鎵撳嵃鏁版嵁');
+                } else {
+                    layer.open({
+                        type: 1,
+                        title: '鎵归噺鎵撳嵃 [鏁伴噺'+ data.length +']',
+                        area: ['500px'],
+                        shadeClose: true,
+                        content: $('#printDataDiv'),
+                        success: function(layero, index){
+                            for (var i = 0; i<data.length;i++) {
+                                printMatCodeNos.push(data[i].matnr);
+                            }
+                        },
+                        end: function () {
+                        }
+                    });
+                }
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(mat)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 鎵撳嵃
+            case "btnPrint":
+                printMatCodeNos = [];
+                layer.open({
+                    type: 1,
+                    title: data.matnr + ' [鏁伴噺锛�1]',
+                    area: ['500px'],
+                    shadeClose: true,
+                    content: $('#printDataDiv'),
+                    success: function(layero, index){
+                        layer.iframeAuto(index);
+                        printMatCodeNos.push(data.matnr);
+                    },
+                    end: function () {
+                    }
+                });
+                break;
+            // 缂栬緫
+            case 'edit':
+                showEditModel(data)
+                break;
+        }
+    });
+
+    /* 鏄剧ず琛ㄥ崟寮圭獥 */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '鍟嗗搧',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                // 鍥炴樉琛ㄥ崟鏁版嵁
+                form.val('detail', mData);
+                // 鏂板鑷姩鐢熸垚鍟嗗搧缂栧彿
+                if (!mData) {
+                    http.get(baseUrl + "/node/auto/matnr/auth", null, function (res) {
+                        $('#matnr').val(res.data);
+                    })
+                }
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(editSubmit)', function (data) {
+                    console.log(data)
+                    data.field.tagId = insXmSel.getValue('valueStr');
+                    if (isEmpty(data.field.tagId)) {
+                        layer.msg('鍒嗙被涓嶈兘涓虹┖', {icon: 2});
+                        return false;
+                    }
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/node/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                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});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                // 娓叉煋涓嬫媺鏍�
+                var insXmSel = xmSelect.render({
+                    el: '#tagSel',
+                    height: '250px',
+                    data: insTb.options.data,
+                    initValue: mData ? [mData.tagId] : [],
+                    model: {label: {type: 'text'}},
+                    prop: {
+                        name: 'name',
+                        value: 'id'
+                    },
+                    radio: true,
+                    clickClose: true,
+                    tree: {
+                        show: true,
+                        indent: 15,
+                        strict: false,
+                        expandedKeys: true
+                    }
+                });
+                // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    // 妯℃澘閫夋嫨
+    form.on('radio(selectTemplateRadio)', function (data) {
+        $('.template-preview').hide();
+        $('#template-preview-'+data.value).show();
+    });
+
+    // 寮�濮嬫墦鍗�
+    form.on('submit(doPrint)', function (data) {
+        var templateNo = data.field.selectTemplate;
+        $.ajax({
+            url: baseUrl+"/node/print/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {param: printMatCodeNos},
+            method: 'POST',
+            async: false,
+            success: function (res) {
+                if (res.code === 200){
+                    layer.closeAll();
+                    for (let i=0;i<res.data.length;i++){
+                        var templateDom = $("#templatePreview"+templateNo);
+                        var className = templateDom.attr("class");
+                        if (className === 'template-barcode') {
+                            res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1&param="+res.data[i].matnr;
+                        } else {
+                            res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2&param="+res.data[i].matnr;
+                        }
+                    }
+                    var tpl = templateDom.html();
+                    var template = Handlebars.compile(tpl);
+                    var html = template(res);
+                    var box = $("#box");
+                    box.html(html);box.show();
+                    box.print({mediaPrint:true});
+                    box.hide();
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                }else {
+                    layer.msg(res.msg)
+                }
+            }
+        })
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#createTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#updateTime\\$',
+        type: 'datetime'
+    });
+
+
+});
+
+// excel瀵煎叆妯℃澘涓嬭浇
+function excelMouldDownload(){
+    layer.load(1, {shade: [0.1,'#fff']});
+    location.href = baseUrl + "/node/excel/import/mould";
+    layer.closeAll('loading');
+}
+
+// excel瀵煎叆
+function importExcel() {
+    $("#importExcel").trigger("click");
+}
+function upload(obj){
+    if(!obj.files) {
+        return;
+    }
+    var file = obj.files[0];
+    admin.confirm('纭鍚屾 [' + file.name +'] 鏂囦欢鍚楋紵', function (index) {
+        layer.load(1, {shade: [0.1,'#fff']});
+        var url = baseUrl + "/node/excel/import/auth";
+        var form = new FormData();
+        form.append("file", file);
+        xhr = new XMLHttpRequest();
+        xhr.open("post", url, true); //post鏂瑰紡锛寀rl涓烘湇鍔″櫒璇锋眰鍦板潃锛宼rue 璇ュ弬鏁拌瀹氳姹傛槸鍚﹀紓姝ュ鐞嗐��
+        xhr.setRequestHeader('token', localStorage.getItem('token'));
+        xhr.onload = uploadComplete; //璇锋眰瀹屾垚
+        xhr.onerror =  uploadFailed; //璇锋眰澶辫触
+        xhr.onloadend = function () { // // 涓婁紶瀹屾垚閲嶇疆鏂囦欢娴�
+            layer.closeAll('loading');
+            $("#importExcel").val("");
+        };
+        // xhr.upload.onprogress = progressFunction;//銆愪笂浼犺繘搴﹁皟鐢ㄦ柟娉曞疄鐜般��
+        xhr.upload.onloadstart = function(){//涓婁紶寮�濮嬫墽琛屾柟娉�
+            ot = new Date().getTime();   //璁剧疆涓婁紶寮�濮嬫椂闂�
+            oloaded = 0;//璁剧疆涓婁紶寮�濮嬫椂锛屼互涓婁紶鐨勬枃浠跺ぇ灏忎负0
+        };
+        xhr.send(form);
+    }, function(index){
+        $("#importExcel").val("");
+    });
+}
+function uploadComplete(evt) {
+    var res = JSON.parse(evt.target.responseText);
+    if(res.code === 200) {
+        layer.msg(res.msg, {icon: 1});
+        loadTree("");
+    } else {
+        layer.msg(res.msg, {icon: 2});
+    }
+}
+function uploadFailed(evt) {
+    var res = JSON.parse(evt.target.responseText);
+    layer.msg(res.msg, {icon: 2});
+}
+
+// excel瀵煎嚭
+function exportExcel() {
+
+}
+
+
+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
+        },
+        done: function (res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            if (res.data.length === 0 && count !== 0) {
+                tableIns.reload({
+                    where: searchData,
+                    page: {
+                        curr: pageCurr-1
+                    }
+                });
+                pageCurr -= 1;
+            }
+            limit(child);
+        }
+    });
+}
+
+function clearFormVal(el) {
+    $(':input', el)
+        .val('')
+        .removeAttr('checked')
+        .removeAttr('selected');
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/static/js/nodeLoc/nodeLocTree.js b/src/main/webapp/static/js/nodeLoc/nodeLocTree.js
new file mode 100644
index 0000000..72b511e
--- /dev/null
+++ b/src/main/webapp/static/js/nodeLoc/nodeLocTree.js
@@ -0,0 +1,86 @@
+var currentTemId;
+var currentTemName;
+var currentTemSsbm;
+var init = false;
+
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"  // 閰嶇疆妯″潡鎵�鍦ㄧ殑鐩綍
+}).use(['table','laydate', 'form', 'tree', 'xmSelect'], function() {
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var tree = layui.tree;
+    var xmSelect = layui.xmSelect;
+    var selObj, treeData;  // 宸︽爲閫変腑鏁版嵁
+
+    var organizationTree;
+    window.loadTree = function(condition){
+        var loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl+"/node/tree/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                'condition': condition
+            },
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+                    layer.close(loadIndex);
+                    // 鏍戝舰鍥�
+                    organizationTree = tree.render({
+                        elem: '#organizationTree',
+                        id: 'organizationTree',
+                        onlyIconControl: true,
+                        data: res.data,
+                        click: function (obj) {
+                            currentTemId = obj.data.id;
+                            currentTemName = obj.data.title.split(" - ")[0];
+                            currentTemSsbm = obj.data.title.split(" - ")[1];
+                            selObj = obj;
+                            $('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click');
+                            $(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click');
+                            tableIns.reload({
+                                where: {parent_id: obj.data.id},
+                                page: {curr: 1}
+                            });
+                        }
+                    });
+                    treeData = res.data;
+                    if (isEmpty(condition) && init) {
+                        tableIns.reload({
+                            where: {parent_id: ""},
+                            page: {curr: 1}
+                        });
+                    }
+                    if (!init) {
+                        init = true;
+                    }
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg)
+                }
+            }
+        })
+    }
+    loadTree();
+
+    /* 鏍戝舰鍥鹃噸缃� */
+    $('#treeReset').click(function () {
+        $("#condition").val("");
+        loadTree("");
+    })
+
+})
+
+function closeDialog() {
+    layer.closeAll();
+}
+
+/* 鏍戝舰鍥炬悳绱� */
+function findData(el) {
+    var condition = $(el).val();
+    loadTree(condition)
+}
\ No newline at end of file
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index 868a5bb..d374d0c 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -6,7 +6,7 @@
   <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.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
-  <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />
+<!--  <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />-->
   <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/loader.css" media="all">
diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html
index 6fcbd66..c6d0a9a 100644
--- a/src/main/webapp/views/login.html
+++ b/src/main/webapp/views/login.html
@@ -10,7 +10,7 @@
     <meta name="theme-color" content="#111111">
     <meta name="msapplication-TileImage" content="/sketch-threejs/img/common/ms_tileimage.png">
     <meta name="msapplication-TileColor" content="#111111">
-    <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />
+<!--    <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />-->
     <link rel="stylesheet" href="../static/css/font/font-awesome-4.7.0/css/font-awesome.css">
     <link rel="stylesheet" href="../static/css/main.min.css">
     <link rel="stylesheet" href="../static/css/login.css">
diff --git a/src/main/webapp/views/nodeLoc/nodeLoc.html b/src/main/webapp/views/nodeLoc/nodeLoc.html
index 3b14a5c..f7a2690 100644
--- a/src/main/webapp/views/nodeLoc/nodeLoc.html
+++ b/src/main/webapp/views/nodeLoc/nodeLoc.html
@@ -88,7 +88,7 @@
                         <div class="layui-inline">
                             <label class="layui-form-label" style="padding: 8px 15px 8px 15px">搴撳尯:</label>
                             <div class="layui-input-inline">
-                                <input name="parent_name" class="layui-input" placeholder="杈撳叆鍟嗗搧缂栧彿"/>
+                                <input name="parent_name" class="layui-input" placeholder="搴撳尯鍚�"/>
                             </div>
                         </div>
                         <div class="layui-inline">&emsp;
diff --git a/src/main/webapp/views/report/locDetl.html b/src/main/webapp/views/report/locDetl.html
index 9e3ee3d..38c00e0 100644
--- a/src/main/webapp/views/report/locDetl.html
+++ b/src/main/webapp/views/report/locDetl.html
@@ -33,7 +33,7 @@
     var pageCur;
     function getCol() {
         var cols = [
-            {field: 'locNo$', align: 'center',title: '搴撲綅鍙�'}
+            {field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
         ];
         cols.push.apply(cols, detlCols);
         return cols;
diff --git a/src/main/webapp/views/saasLog/saasLog.html b/src/main/webapp/views/saasLog/saasLog.html
index 2211671..d4a5157 100644
--- a/src/main/webapp/views/saasLog/saasLog.html
+++ b/src/main/webapp/views/saasLog/saasLog.html
@@ -20,9 +20,16 @@
                     <div class="layui-inline">
                         <label class="layui-form-label">缂栧彿:</label>
                         <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                            <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅" autocomplete="off">
                         </div>
                     </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">鐗╂枡缂栧彿:</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="matnr" placeholder="鐗╂枡缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+
                     <div class="layui-inline">&emsp;
                         <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                             <i class="layui-icon">&#xe615;</i>鎼滅储

--
Gitblit v1.9.1