diff --git a/.classpath b/.classpath
index a6ec438..d03727d 100644
--- a/.classpath
+++ b/.classpath
@@ -24,8 +24,6 @@
 	
 	
 	
-	
-	
 	
 	
 	
@@ -75,11 +73,11 @@
 	
 	
 	
+	
 	
+	
 	
 	
-	
-	
 	
 	
 	
@@ -123,5 +121,12 @@
 	
 	
 	
+	
+	
+	
+	
+	
+	
+	
 	
 
diff --git a/project.xml b/project.xml
index 99a607b..733587c 100644
--- a/project.xml
+++ b/project.xml
@@ -753,8 +753,60 @@
             poi-ooxml
             3.16
         
-
-		
+        
+    
+    
+
+
+
+
+
+	
+    
+        io.jsonwebtoken
+        jjwt-api
+        0.11.5
+    
+    
+        io.jsonwebtoken
+        jjwt-impl
+        0.11.5
+        runtime
+    
+    
+        io.jsonwebtoken
+        jjwt-jackson
+        0.11.5
+        runtime
+    
+	
+    	com.rabbitmq
+    	amqp-client
+    	5.13.1
+		
+	
+
+    5.3.27
+
+
+    
+        org.springframework
+        spring-core
+        ${spring.version}
+    
+    
+        org.springframework
+        spring-beans
+        ${spring.version}
+    
+    
+        org.springframework
+        spring-context
+        ${spring.version}
+    
+	
+	
+	
 	
 
 	
diff --git a/src/main/java/PostTest.java b/src/main/java/PostTest.java
index 9e2ff46..6ae3073 100644
--- a/src/main/java/PostTest.java
+++ b/src/main/java/PostTest.java
@@ -15,6 +15,7 @@ import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Base64;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -65,26 +66,31 @@ public class PostTest {
 //		logger.info("date---"+date);
 //		logger.info("month---"+month);
 //		logger.info("year---"+year);
-		
-		 // 获取当前日期
-        LocalDate today = LocalDate.now();
-        
-        // 获取当前是周几
-        DayOfWeek dayOfWeek = today.getDayOfWeek();
-        
-        System.out.println("今天是: " + today);
-        System.out.println("今天是周: " + dayOfWeek);
-        
-        // 检查是否为工作日(周一到周五)
-        if (dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY) {
-            System.out.println("今天是工作日,执行任务...");
-            // 这里放置需要在工作日执行的代码
-           
-        } else {
-            System.out.println("今天是周末,不执行任务。");
-        }
-		
-		
+//		
+//		 // 获取当前日期
+//        LocalDate today = LocalDate.now();
+//        
+//        // 获取当前是周几
+//        DayOfWeek dayOfWeek = today.getDayOfWeek();
+//        
+//        System.out.println("今天是: " + today);
+//        System.out.println("今天是周: " + dayOfWeek);
+//        
+//        // 检查是否为工作日(周一到周五)
+//        if (dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY) {
+//            System.out.println("今天是工作日,执行任务...");
+//            // 这里放置需要在工作日执行的代码
+//           
+//        } else {
+//            System.out.println("今天是周末,不执行任务。");
+//        }
+//		
+		//# 假设这是你的JWT令牌
+		 String encodedStr = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJYR0FURUFNRUMiLCJpc3MiOiIgYW1lY3Rlc3QiLCJuYW1lIjoiY3VzdG9tYXBwIiwidCI6ImVkNzBhY2QwLXNvZmEtMjJlOS05NjBmLTQxYjIwMzNkZGUxOSIsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNzM4MzA5NDk2fQ.OU30Rh_3g564gfv0Qfho7CNSf-13UY1SLKgVep5Dvp0";
+		 		//Base64编码"的Base64形式
+	        byte[] decodedBytes = Base64.getDecoder().decode(encodedStr);
+	        String originalStr = new String(decodedBytes);
+	        System.out.println("解码后: " + originalStr);
 		
 //		String ts="10-11-02";
 //		logger.info(ts.substring(6, 2));
diff --git a/src/main/java/adapterContext.xml b/src/main/java/adapterContext.xml
index b1b0c98..6317034 100644
--- a/src/main/java/adapterContext.xml
+++ b/src/main/java/adapterContext.xml
@@ -36,7 +36,7 @@
 
 
 
-				 
+
 
 
 
diff --git a/src/main/java/com/dev/swms/client/GatewayTokenClient.java b/src/main/java/com/dev/swms/client/GatewayTokenClient.java
new file mode 100644
index 0000000..0d274b6
--- /dev/null
+++ b/src/main/java/com/dev/swms/client/GatewayTokenClient.java
@@ -0,0 +1,379 @@
+package com.dev.swms.client;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.*;
+
+/**
+ * 完整的Token客户端 - 支持X-Authorization头
+ */
+public class GatewayTokenClient {
+    
+    private String token;
+    private String baseUrl;
+    
+    // OAuth2配置参数
+    private final String clientId = "AMEC_WMS";
+    private final String clientSecret = "ed4fbb4c6f6c";
+    private final String tenant = "603b299d29924b9d04147526";
+    
+    // Gateway鉴权token(如果需要)
+    private String gatewayToken;
+    
+    public GatewayTokenClient(String baseUrl) {
+        this.baseUrl = baseUrl;
+    }
+    
+    /**
+     * 设置Gateway鉴权token
+     */
+    public void setGatewayToken(String gatewayToken) {
+        this.gatewayToken = gatewayToken;
+    }
+    
+    /**
+     * 获取访问令牌 - OAuth2客户端凭证模式
+     */
+    public boolean getAccessToken() {
+        try {
+            String tokenUrl = baseUrl + "/oauth/token";
+            
+            // 构建表单参数
+            String formData = "grant_type=client_credentials" +
+                            "&client_id=" + clientId +
+                            "&client_secret=" + clientSecret +
+                            "&tenant=" + tenant;
+            
+            // 发送请求 - 添加X-Authorization头
+            String response = sendFormPostRequest(tokenUrl, formData, true);
+            
+            // 使用JSON解析工具提取token
+            if (response != null) {
+                String extractedToken = extractTokenFromResponse(response);
+                if (extractedToken != null) {
+                    this.token = extractedToken;
+                    System.out.println("Token获取成功");
+                    return true;
+                } else {
+                    String error = extractErrorFromResponse(response);
+                    System.out.println("Token获取失败: " + error);
+                    return false;
+                }
+            }
+            return false;
+            
+        } catch (Exception e) {
+            System.err.println("获取token异常: " + e.getMessage());
+            e.printStackTrace();
+            return false;
+        }
+    }
+    
+    /**
+     * 发送表单POST请求
+     * @param includeGatewayAuth 是否包含X-Authorization头
+     */
+    private String sendFormPostRequest(String urlStr, String formData, boolean includeGatewayAuth) throws IOException {
+        URL url = new URL(urlStr);
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        
+        try {
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            connection.setRequestProperty("Accept", "application/json");
+            
+            // Basic认证头 (client_id:client_secret)
+            String auth = clientId + ":" + clientSecret;
+            String encodedAuth = base64Encode(auth);
+            connection.setRequestProperty("Authorization", "Basic " + encodedAuth);
+            
+            // 添加X-Authorization头(如果提供了gatewayToken且需要包含)
+            if (includeGatewayAuth && gatewayToken != null && !gatewayToken.isEmpty()) {
+                connection.setRequestProperty("X-Authorization", gatewayToken);
+                System.out.println("已添加X-Authorization头: " + gatewayToken);
+            }
+            
+            connection.setDoOutput(true);
+            connection.setConnectTimeout(10000);
+            connection.setReadTimeout(15000);
+            
+            // 发送表单数据
+            try (OutputStream os = connection.getOutputStream();
+                 OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8")) {
+                osw.write(formData);
+                osw.flush();
+            }
+            
+            // 读取响应
+            int status = connection.getResponseCode();
+            System.out.println("HTTP状态码: " + status);
+            
+            InputStream inputStream = status < 400 ? connection.getInputStream() : connection.getErrorStream();
+            
+            if (inputStream == null) {
+                return null;
+            }
+            
+            try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
+                StringBuilder response = new StringBuilder();
+                String line;
+                while ((line = br.readLine()) != null) {
+                    response.append(line);
+                }
+                return response.toString();
+            }
+            
+        } finally {
+            connection.disconnect();
+        }
+    }
+    
+    /**
+     * 调用需要token的API
+     */
+    public String callApi(String apiPath, String requestBody) {
+        return callApi(apiPath, requestBody, true);
+    }
+    
+    /**
+     * 调用需要token的API(可控制是否包含X-Authorization)
+     */
+    public String callApi(String apiPath, String requestBody, boolean includeGatewayAuth) {
+        if (token == null) {
+            throw new IllegalStateException("请先调用getAccessToken方法获取token");
+        }
+        
+        try {
+            String apiUrl = baseUrl + apiPath;
+            return sendJsonPostRequest(apiUrl, requestBody, includeGatewayAuth);
+        } catch (Exception e) {
+            System.err.println("调用API异常: " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+    
+    /**
+     * 发送JSON POST请求(带token认证和X-Authorization)
+     */
+    private String sendJsonPostRequest(String urlStr, String jsonBody, boolean includeGatewayAuth) throws IOException {
+        URL url = new URL(urlStr);
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        
+        try {
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+            connection.setRequestProperty("Accept", "application/json");
+            connection.setRequestProperty("Authorization", "Bearer " + token);
+            connection.setRequestProperty("X-Tenant-ID", tenant);
+            
+            // 添加X-Authorization头
+            if (includeGatewayAuth && gatewayToken != null && !gatewayToken.isEmpty()) {
+                connection.setRequestProperty("X-Authorization", gatewayToken);
+                System.out.println("已添加X-Authorization头: " + gatewayToken);
+            }
+            
+            connection.setDoOutput(true);
+            connection.setConnectTimeout(10000);
+            connection.setReadTimeout(15000);
+            
+            // 发送JSON数据
+            if (jsonBody != null && !jsonBody.isEmpty()) {
+                try (OutputStream os = connection.getOutputStream();
+                     OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8")) {
+                    osw.write(jsonBody);
+                    osw.flush();
+                }
+            }
+            
+            // 读取响应
+            int status = connection.getResponseCode();
+            System.out.println("API调用HTTP状态码: " + status);
+            
+            InputStream inputStream = status < 400 ? connection.getInputStream() : connection.getErrorStream();
+            
+            if (inputStream == null) {
+                return "{\"error\":\"No response body, status: " + status + "\"}";
+            }
+            
+            try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
+                StringBuilder response = new StringBuilder();
+                String line;
+                while ((line = br.readLine()) != null) {
+                    response.append(line);
+                }
+                return response.toString();
+            }
+            
+        } finally {
+            connection.disconnect();
+        }
+    }
+    
+    /**
+     * 简单的Base64编码
+     */
+    private String base64Encode(String str) {
+        try {
+            // 使用sun.misc.BASE64Encoder(老JDK中有)
+            sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
+            return encoder.encode(str.getBytes("UTF-8"));
+        } catch (Exception e) {
+            // 备用方案:手动实现简单的base64
+            return manualBase64Encode(str);
+        }
+    }
+    
+    /**
+     * 手动Base64编码(备用方案)
+     */
+    private String manualBase64Encode(String str) {
+        try {
+            byte[] bytes = str.getBytes("UTF-8");
+            StringBuilder result = new StringBuilder();
+            char[] base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
+            
+            int i = 0;
+            while (i < bytes.length) {
+                int byte1 = bytes[i++] & 0xFF;
+                int byte2 = i < bytes.length ? bytes[i++] & 0xFF : 0;
+                int byte3 = i < bytes.length ? bytes[i++] & 0xFF : 0;
+                
+                int triple = (byte1 << 16) | (byte2 << 8) | byte3;
+                
+                result.append(base64Chars[(triple >> 18) & 0x3F]);
+                result.append(base64Chars[(triple >> 12) & 0x3F]);
+                result.append(i > bytes.length + 1 ? '=' : base64Chars[(triple >> 6) & 0x3F]);
+                result.append(i > bytes.length ? '=' : base64Chars[triple & 0x3F]);
+            }
+            return result.toString();
+        } catch (Exception e) {
+            return str; // 如果编码失败,返回原字符串
+        }
+    }
+    
+    /**
+     * 从JSON响应中提取token
+     */
+    private String extractTokenFromResponse(String jsonResponse) {
+        if (jsonResponse == null) {
+            return null;
+        }
+        
+        // 简单模式匹配提取access_token
+        Pattern pattern = Pattern.compile("\"access_token\"\\s*:\\s*\"([^\"]+)\"");
+        Matcher matcher = pattern.matcher(jsonResponse);
+        
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        
+        return null;
+    }
+    
+    /**
+     * 从JSON响应中提取错误信息
+     */
+    private String extractErrorFromResponse(String jsonResponse) {
+        if (jsonResponse == null) {
+            return "Empty response";
+        }
+        
+        Pattern pattern = Pattern.compile("\"error\"\\s*:\\s*\"([^\"]+)\"");
+        Matcher matcher = pattern.matcher(jsonResponse);
+        
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        
+        return jsonResponse;
+    }
+    
+    /**
+     * 手动构建简单JSON(替代Jackson)
+     */
+    public String buildSimpleJson(Map params) {
+        StringBuilder json = new StringBuilder();
+        json.append("{");
+        boolean first = true;
+        for (Map.Entry entry : params.entrySet()) {
+            if (!first) {
+                json.append(",");
+            }
+            json.append("\"").append(entry.getKey()).append("\":");
+            Object value = entry.getValue();
+            if (value instanceof String) {
+                json.append("\"").append(escapeJsonString(value.toString())).append("\"");
+            } else if (value instanceof Number) {
+                json.append(value);
+            } else if (value instanceof Boolean) {
+                json.append(value);
+            } else {
+                json.append("\"").append(escapeJsonString(value.toString())).append("\"");
+            }
+            first = false;
+        }
+        json.append("}");
+        return json.toString();
+    }
+    
+    /**
+     * 转义JSON字符串中的特殊字符
+     */
+    private String escapeJsonString(String str) {
+        return str.replace("\\", "\\\\")
+                 .replace("\"", "\\\"")
+                 .replace("\b", "\\b")
+                 .replace("\f", "\\f")
+                 .replace("\n", "\\n")
+                 .replace("\r", "\\r")
+                 .replace("\t", "\\t");
+    }
+    
+    /**
+     * 获取当前token
+     */
+    public String getToken() {
+        return token;
+    }
+    
+    /**
+     * 完整的示例使用方法
+     */
+    public static void main(String[] args) {
+        // 替换为实际的认证服务器地址
+        GatewayTokenClient client = new GatewayTokenClient("http://your-auth-server");
+        
+        // 设置Gateway鉴权token(根据实际情况设置)
+        client.setGatewayToken("your-gateway-token-here");
+        
+        // 1. 获取token(会包含X-Authorization头)
+        if (client.getAccessToken()) {
+            System.out.println("成功获取token: " + client.getToken());
+            
+            // 2. 构建请求数据
+            Map requestData = new HashMap();
+            requestData.put("skuCode", "SKU001");
+            requestData.put("warehouseCode", "WH001");
+            requestData.put("quantity", 100);
+            requestData.put("action", "query");
+            
+            // 3. 构建JSON请求
+            String jsonRequest = client.buildSimpleJson(requestData);
+            System.out.println("请求JSON: " + jsonRequest);
+            
+            // 4. 调用API(默认会包含X-Authorization头)
+            String response = client.callApi("/api/inventory/query", jsonRequest);
+            
+            System.out.println("API响应: " + response);
+            
+            // 5. 也可以调用不需要X-Authorization的API
+            // String response2 = client.callApi("/api/public/data", jsonRequest, false);
+        } else {
+            System.out.println("获取token失败");
+        }
+    }
+}
diff --git a/src/main/java/com/dev/swms/client/JwtTokenGenerator.java b/src/main/java/com/dev/swms/client/JwtTokenGenerator.java
new file mode 100644
index 0000000..2bc5852
--- /dev/null
+++ b/src/main/java/com/dev/swms/client/JwtTokenGenerator.java
@@ -0,0 +1,77 @@
+package com.dev.swms.client;
+
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.security.Keys;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.crypto.SecretKey;
+
+public class JwtTokenGenerator {
+    
+    /**
+     * 生成JWT Token
+     * 
+     * @param secret 密钥字符串
+     * @param iss 签发机构
+     * @param name 用户名
+     * @param t 参数t的值
+     * @return JWT Token字符串
+     */
+    public static String generateToken(String secret, String iss, String name, String t) {
+        // 获取当前时间和过期时间(当前时间 + 10分钟)
+        Date now = new Date();
+        Date expiration = new Date(now.getTime() + 10 * 60 * 1000); // 10分钟
+        
+        // 创建payload claims
+        Map claims = new HashMap<>();
+        claims.put("sub", "XGATEAMEC");
+        claims.put("iss", iss);
+        claims.put("name", name);
+        claims.put("t", t);
+        claims.put("iat", now.getTime() / 1000); // JWT标准使用秒级时间戳
+        claims.put("exp", expiration.getTime() / 1000);
+        
+        // 生成密钥
+        SecretKey key = Keys.hmacShaKeyFor(secret.getBytes());
+        
+        // 生成JWT Token
+        return Jwts.builder()
+                .setClaims(claims)
+                .signWith(key, SignatureAlgorithm.HS256)
+                .compact();
+    }
+    
+    /**
+     * 生成JWT Token(使用自定义过期时间)
+     * 
+     * @param secret 密钥字符串
+     * @param iss 签发机构
+     * @param name 用户名
+     * @param t 参数t的值
+     * @param expirationMinutes 过期时间(分钟)
+     * @return JWT Token字符串
+     */
+    public static String generateToken(String secret, String iss, String name, String t, int expirationMinutes) {
+        Date now = new Date();
+        Date expiration = new Date(now.getTime() + expirationMinutes * 60 * 1000);
+        
+        Map claims = new HashMap<>();
+        claims.put("sub", "XGATEAMEC");
+        claims.put("iss", iss);
+        claims.put("name", name);
+        claims.put("admin", t);
+        claims.put("iat", now.getTime() / 1000);
+        claims.put("exp", expiration.getTime() / 1000);
+        
+        SecretKey key = Keys.hmacShaKeyFor(secret.getBytes());
+        
+        return Jwts.builder()
+                .setClaims(claims)
+                .signWith(key, SignatureAlgorithm.HS256)
+                .compact();
+    }
+}
diff --git a/src/main/java/com/dev/swms/client/SimpleGatewayClient.java b/src/main/java/com/dev/swms/client/SimpleGatewayClient.java
new file mode 100644
index 0000000..3a4ae4a
--- /dev/null
+++ b/src/main/java/com/dev/swms/client/SimpleGatewayClient.java
@@ -0,0 +1,154 @@
+package com.dev.swms.client;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 简化版Gateway客户端 - 直接使用X-Authorization token
+ */
+public class SimpleGatewayClient {
+    
+    private String baseUrl;
+    private String gatewayToken;
+    
+    public SimpleGatewayClient(String baseUrl, String gatewayToken) {
+        this.baseUrl = baseUrl;
+        this.gatewayToken = gatewayToken;
+    }
+    
+    /**
+     * 调用Gateway保护的API
+     */
+    public String callGatewayApi(String apiPath, String requestBody) {
+        try {
+            String apiUrl = baseUrl + apiPath;
+            return sendJsonPostRequest(apiUrl, requestBody);
+        } catch (Exception e) {
+            System.err.println("调用Gateway API异常: " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+    
+    /**
+     * 发送JSON POST请求(只使用X-Authorization)
+     */
+    private String sendJsonPostRequest(String urlStr, String jsonBody) throws IOException {
+        URL url = new URL(urlStr);
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        
+        try {
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+            connection.setRequestProperty("Accept", "application/json");
+            
+            // 只使用X-Authorization头进行Gateway鉴权
+            if (gatewayToken != null && !gatewayToken.isEmpty()) {
+                connection.setRequestProperty("X-Authorization", gatewayToken);
+                System.out.println("已添加X-Authorization头: " + gatewayToken);
+            }
+            
+            connection.setDoOutput(true);
+            connection.setConnectTimeout(10000);
+            connection.setReadTimeout(15000);
+            
+            // 发送JSON数据
+            if (jsonBody != null && !jsonBody.isEmpty()) {
+                try (OutputStream os = connection.getOutputStream();
+                     OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8")) {
+                    osw.write(jsonBody);
+                    osw.flush();
+                }
+            }
+            
+            // 读取响应
+            int status = connection.getResponseCode();
+            System.out.println("Gateway API调用HTTP状态码: " + status);
+            
+            InputStream inputStream = status < 400 ? connection.getInputStream() : connection.getErrorStream();
+            
+            if (inputStream == null) {
+                return "{\"error\":\"No response body, status: " + status + "\"}";
+            }
+            
+            try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
+                StringBuilder response = new StringBuilder();
+                String line;
+                while ((line = br.readLine()) != null) {
+                    response.append(line);
+                }
+                return response.toString();
+            }
+            
+        } finally {
+            connection.disconnect();
+        }
+    }
+    
+    /**
+     * 手动构建简单JSON
+     */
+    public String buildSimpleJson(Map params) {
+        StringBuilder json = new StringBuilder();
+        json.append("{");
+        boolean first = true;
+        for (Map.Entry entry : params.entrySet()) {
+            if (!first) {
+                json.append(",");
+            }
+            json.append("\"").append(entry.getKey()).append("\":");
+            Object value = entry.getValue();
+            if (value instanceof String) {
+                json.append("\"").append(escapeJsonString(value.toString())).append("\"");
+            } else if (value instanceof Number) {
+                json.append(value);
+            } else if (value instanceof Boolean) {
+                json.append(value);
+            } else {
+                json.append("\"").append(escapeJsonString(value.toString())).append("\"");
+            }
+            first = false;
+        }
+        json.append("}");
+        return json.toString();
+    }
+    
+    /**
+     * 转义JSON字符串中的特殊字符
+     */
+    private String escapeJsonString(String str) {
+        return str.replace("\\", "\\\\")
+                 .replace("\"", "\\\"")
+                 .replace("\b", "\\b")
+                 .replace("\f", "\\f")
+                 .replace("\n", "\\n")
+                 .replace("\r", "\\r")
+                 .replace("\t", "\\t");
+    }
+    
+    /**
+     * 使用示例
+     */
+    public static void main(String[] args) {
+        // 创建Gateway客户端
+        SimpleGatewayClient client = new SimpleGatewayClient(
+            "http://your-gateway-server", 
+            "your-gateway-token-here"
+        );
+        
+        // 构建请求数据
+        Map requestData = new HashMap();
+        requestData.put("action", "queryInventory");
+        requestData.put("warehouse", "WH001");
+        requestData.put("sku", "SKU12345");
+        
+        // 调用API
+        String jsonRequest = client.buildSimpleJson(requestData);
+        String response = client.callGatewayApi("/api/wms/inventory", jsonRequest);
+        
+        System.out.println("Gateway API响应: " + response);
+    }
+}
diff --git a/src/main/java/com/dev/swms/client/SimpleTokenTest.java b/src/main/java/com/dev/swms/client/SimpleTokenTest.java
new file mode 100644
index 0000000..9ce6865
--- /dev/null
+++ b/src/main/java/com/dev/swms/client/SimpleTokenTest.java
@@ -0,0 +1,156 @@
+package com.dev.swms.client;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 简化的Token获取测试类
+ */
+public class SimpleTokenTest {
+    
+    private final String TOKEN_URL = "https://apintodev.amecnsh.com/AMEC4/wms/oauth/token";
+    
+    public static void main(String[] args) {
+        SimpleTokenTest test = new SimpleTokenTest();
+        test.testGetToken();
+    }
+    
+    public void testGetToken() {
+        try {
+            // 构建表单数据
+            String formData = "grant_type=client_credentials" +
+                            "&client_id=AMEC_WMS" +
+                            "&client_secret=ed4fbb4c6f6c" +
+                            "&tenant=603b299d29924b9d04147526";
+            
+            // 生成简单的X-Authorization JWT(使用固定值)
+            String xAuthToken = generateSimpleJwt();
+            
+            // 发送请求
+            String response = sendPostRequest(TOKEN_URL, formData, xAuthToken);
+            
+            System.out.println("=== Token获取测试结果 ===");
+            System.out.println("响应: " + response);
+            
+            // 解析token
+            if (response != null && response.contains("access_token")) {
+                int start = response.indexOf("access_token") + 15;
+                int end = response.indexOf("\"", start);
+                String token = response.substring(start, end);
+                System.out.println("提取的Token: " + token);
+            }
+            
+        } catch (Exception e) {
+            System.err.println("测试异常: " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * 生成简单的JWT(用于测试)
+     */
+    private String generateSimpleJwt() {
+        try {
+            // 使用固定的header和payload进行测试
+            String header = "{\"alg\":\"HS256\",\"typ\":\"JWT\"}";
+            String payload = "{\"sub\":\"XGATEAMEC\",\"iss\":\"amectest\",\"name\":\"customapp\",\"t\":\"ed70acd0-sofa-22e9-960f-41b2033dde19\",\"iat\":1616269022,\"exp\":1767052800}";
+            
+            sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
+            String encodedHeader = encoder.encode(header.getBytes("UTF-8"))
+                    .replace('+', '-').replace('/', '_').replace("=", "");
+            String encodedPayload = encoder.encode(payload.getBytes("UTF-8"))
+                    .replace('+', '-').replace('/', '_').replace("=", "");
+            
+            // 简化签名
+            String signature = "test_signature_for_demo";
+            
+            return encodedHeader + "." + encodedPayload + "." + signature;
+            
+        } catch (Exception e) {
+            return "test.jwt.token";
+        }
+    }
+    
+    /**
+     * 发送POST请求
+     */
+    private String sendPostRequest(String urlStr, String formData, String xAuthToken) throws IOException {
+        URL url = new URL(urlStr);
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        
+        try {
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            connection.setRequestProperty("Accept", "application/json");
+            connection.setRequestProperty("X-Authorization", xAuthToken);
+            
+            connection.setDoOutput(true);
+            connection.setConnectTimeout(15000);
+            connection.setReadTimeout(15000);
+            
+            // SSL设置
+            trustAllCertificates();
+            
+            // 发送数据
+            try (OutputStream os = connection.getOutputStream();
+                 OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8")) {
+                osw.write(formData);
+                osw.flush();
+            }
+            
+            // 读取响应
+            int status = connection.getResponseCode();
+            System.out.println("HTTP状态码: " + status);
+            
+            InputStream inputStream = status < 400 ? connection.getInputStream() : connection.getErrorStream();
+            
+            if (inputStream == null) {
+                return null;
+            }
+            
+            try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
+                StringBuilder response = new StringBuilder();
+                String line;
+                while ((line = br.readLine()) != null) {
+                    response.append(line);
+                }
+                return response.toString();
+            }
+            
+        } finally {
+            connection.disconnect();
+        }
+    }
+    
+    /**
+     * SSL证书信任设置
+     */
+    private void trustAllCertificates() {
+        try {
+            javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[] {
+                new javax.net.ssl.X509TrustManager() {
+                    public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; }
+                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
+                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
+                }
+            };
+            
+            javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
+            sc.init(null, trustAllCerts, new java.security.SecureRandom());
+            javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+            
+            javax.net.ssl.HostnameVerifier allHostsValid = new javax.net.ssl.HostnameVerifier() {
+                public boolean verify(String hostname, javax.net.ssl.SSLSession session) {
+                    return true;
+                }
+            };
+            javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
+            
+        } catch (Exception e) {
+            System.err.println("SSL设置异常: " + e.getMessage());
+        }
+    }
+}
diff --git a/src/main/java/com/dev/swms/client/WmsTokenClient.java b/src/main/java/com/dev/swms/client/WmsTokenClient.java
new file mode 100644
index 0000000..f356960
--- /dev/null
+++ b/src/main/java/com/dev/swms/client/WmsTokenClient.java
@@ -0,0 +1,603 @@
+package com.dev.swms.client;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Base64;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.*;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+
+/**
+ * WMS-MES认证Token获取客户端 - 基于老框架实现
+ */
+public class WmsTokenClient {
+    
+    // 接口配置
+    private final String TOKEN_URL = "https://apintodev.amecnsh.com/AMEC4/wms/oauth/token";
+    // OAuth2客户端凭证
+    private final String CLIENT_ID = "AMEC_WMS";
+    private final String CLIENT_SECRET = "ed4fbb4c6f6c";
+    private final String TENANT = "603b299d29924b9d04147526";
+    private final String GRANT_TYPE = "client_credentials";
+    
+    // JWT配置(用于生成X-Authorization)
+    private final String JWT_SECRET = "c72a280d-3c49-49d7-b35f-28ccd2ae98eb"; // 需要替换为实际的secret
+    private final String JWT_ISS = "wms";
+    private final String JWT_NAME = "wms";
+    private final String JWT_T = "";
+    
+    private String accessToken; // 存储获取到的访问token
+    private String  xAuthToken;//存储获取的鉴定token
+    
+    public WmsTokenClient() {
+        // 默认构造函数
+    }
+    
+    
+    /**
+     * 计算字符串的SHA256哈希值
+     *
+     * @param input 输入字符串
+     * @return SHA256哈希的十六进制字符串(小写)
+     * @throws NoSuchAlgorithmException 如果SHA256算法不可用
+     */
+    private  String sha256(String input) throws NoSuchAlgorithmException {
+        MessageDigest digest = MessageDigest.getInstance("SHA-256");
+        byte[] hash = digest.digest(input.getBytes(StandardCharsets.UTF_8));
+
+        // 转为十六进制字符串
+        StringBuilder hexString = new StringBuilder();
+        for (byte b : hash) {
+            String hex = Integer.toHexString(0xff & b);
+            if (hex.length() == 1) {
+                hexString.append('0');
+            }
+            hexString.append(hex);
+        }
+        return hexString.toString();
+    }
+    
+    /**
+     * 生成JWT Token(用于测试)
+     * @throws UnsupportedEncodingException 
+     */
+    public  String generateToken(String subject, String issuer, String name) throws UnsupportedEncodingException {
+        return Jwts.builder()
+                .setSubject(subject)
+                .setIssuer(issuer)
+                .claim("name", name)
+                .claim("admin", "true")
+                .setIssuedAt(new Date())
+                .setExpiration(new Date(System.currentTimeMillis() + 3600000)) // 1小时
+                .signWith(SignatureAlgorithm.HS256, JWT_SECRET.getBytes("UTF-8"))
+                .compact();
+    }
+    
+    
+    
+    /**
+     * 生成JWT Token用于X-Authorization头
+     */
+    private String generateJwtToken() {
+        try {
+            // 获取当前时间戳(秒)
+            long currentTime = System.currentTimeMillis() / 1000;
+            // 过期时间:当前时间 + 10分钟
+            long expireTime = currentTime + (10 * 60);
+            
+            // 构建JWT Header
+            String header = "{\"alg\":\"HS256\",\"typ\":\"JWT\"}";
+            String encodedHeader =base64UrlEncode(header.getBytes("UTF-8"));
+            
+            // 构建JWT Payload
+//            String payload = String.format(
+//                "{\"sub\":\"XGATEAMEC\",\"iss\":\"%s\",\"name\":\"%s\",\"t\":\"%s\",\"iat\":%d,\"exp\":%d}",
+//                JWT_ISS, JWT_NAME, JWT_T, currentTime, expireTime
+//            );
+            String payload = String.format(
+                    "{\"sub\":\"XGATEAMEC\",\"admin\":\"true\",\"iss\":\"%s\",\"name\":\"%s\",\"iat\":%d,\"exp\":%d}",
+                    JWT_ISS, JWT_NAME, currentTime, expireTime
+                );
+            String encodedPayload =base64UrlEncode(payload.getBytes("UTF-8"));
+            
+            // 构建签名(简化版本,实际应该使用真正的HMAC-SHA256)
+            String signingInput = encodedHeader + "." + encodedPayload;
+            //sha256(signingInput+JWT_SECRET);
+            String signature =hmacSha256(signingInput, JWT_SECRET);
+            
+            // 组合JWT
+            String jwtToken = signingInput + "." + signature;
+            System.out.println("生成的X-Authorization JWT: " + jwtToken);
+            
+            return jwtToken;
+            
+        } catch (Exception e) {
+            System.err.println("生成JWT Token异常: " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+    
+   
+    
+    
+    /**
+     * Base64 URL安全编码
+     */
+    private String base64UrlEncode(byte[] data) {
+        try {
+            sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
+            
+            String base64 = encoder.encode(data);
+            
+            // 转换为URL安全的Base64
+            base64 = base64.replace('+', '-')
+                          .replace('/', '_')
+                          .replace("=", "")
+                          .replaceAll("\\s", "");
+            
+            return base64;
+        } catch (Exception e) {
+            return manualBase64UrlEncode(data);
+        }
+    }
+    
+    /**
+     * 手动Base64 URL安全编码
+     */
+    private String manualBase64UrlEncode(byte[] data) {
+        try {
+            String base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+            StringBuilder result = new StringBuilder();
+            
+            int i = 0;
+            while (i < data.length) {
+                int byte1 = data[i++] & 0xFF;
+                int byte2 = i < data.length ? data[i++] & 0xFF : 0;
+                int byte3 = i < data.length ? data[i++] & 0xFF : 0;
+                
+                int triple = (byte1 << 16) | (byte2 << 8) | byte3;
+                
+                result.append(base64Chars.charAt((triple >> 18) & 0x3F));
+                result.append(base64Chars.charAt((triple >> 12) & 0x3F));
+                result.append(i > data.length + 1 ? "" : base64Chars.charAt((triple >> 6) & 0x3F));
+                result.append(i > data.length ? "" : base64Chars.charAt(triple & 0x3F));
+            }
+            
+            // 转换为URL安全
+            String base64 = result.toString();
+            base64 = base64.replace('+', '-')
+                          .replace('/', '_');
+            
+            return base64;
+        } catch (Exception e) {
+            return "";
+        }
+    }
+    
+    /**
+     * 简化的HMAC-SHA256(用于演示,生产环境需要真正的实现)
+     */
+    private String simpleHmacSha256(String data, String secret) {
+        try {
+            // 简化处理:实际应该使用真正的HMAC-SHA256
+            // 这里使用Base64编码模拟签名过程
+            String signingInput = data + secret;
+            byte[] signatureBytes = signingInput.getBytes("UTF-8");
+            
+            return base64UrlEncode(signatureBytes).substring(0, 43);
+            
+        } catch (Exception e) {
+            System.err.println("HMAC-SHA256签名异常: " + e.getMessage());
+            return "simulated_signature_for_demo";
+        }
+    }
+    
+    /**
+     * 真正的HMAC-SHA256实现
+     */
+    private String hmacSha256(String data, String secret) {
+        try {
+            javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA256");
+            javax.crypto.spec.SecretKeySpec secretKey = 
+                new javax.crypto.spec.SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256");
+            mac.init(secretKey);
+            byte[] hmacData = mac.doFinal(data.getBytes("UTF-8"));
+            return base64UrlEncode(hmacData);
+        } catch (Exception e) {
+            System.err.println("HMAC-SHA256签名异常: " + e.getMessage());
+            return "error_signature";
+        }
+    }
+    
+    
+    
+    /**
+     * 获取访问Token
+     */
+    public boolean getAccessToken() {
+        try {
+        	System.out.println("----------------getAccessToken111----------");
+        	
+            // 1. 生成X-Authorization JWT
+             xAuthToken = generateJwtToken();
+            if (xAuthToken == null) {
+                System.err.println("X-Authorization JWT生成失败");
+                return false;
+            }
+            
+            // 2. 构建表单数据
+            String formData = "grant_type=" + GRANT_TYPE +
+                            "&client_id=" + CLIENT_ID +
+                            "&client_secret=" + CLIENT_SECRET +
+                            "&tenant=" + TENANT;
+            System.out.println("----------------getAccessToken112----------");
+            // 3. 发送POST请求
+            String response = sendFormPostRequest(TOKEN_URL, formData, xAuthToken);
+            
+            // 4. 解析响应获取访问token
+            if (response != null) {
+                String extractedToken = extractAccessTokenFromResponse(response);
+                if (extractedToken != null) {
+                    this.accessToken = extractedToken;
+                    System.out.println("访问Token获取成功: " + accessToken);
+                    
+                    // 提取token有效期
+                    Long expiresIn = extractExpiresInFromResponse(response);
+                    if (expiresIn != null) {
+                        System.out.println("Token有效期: " + expiresIn + "秒");
+                    }
+                    
+                    return true;
+                } else {
+                    String error = extractErrorFromResponse(response);
+                    System.out.println("访问Token获取失败: " + error);
+                    return false;
+                }
+            }
+            return false;
+            
+        } catch (Exception e) {
+            System.err.println("获取访问Token异常: " + e.getMessage());
+            e.printStackTrace();
+            return false;
+        }
+    }
+    
+    /**
+     * 发送表单POST请求
+     */
+    private String sendFormPostRequest(String urlStr, String formData, String xAuthToken) throws IOException {
+        URL url = new URL(urlStr);
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        
+        try {
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            connection.setRequestProperty("Accept", "application/json");
+            
+            // 添加X-Authorization头
+            if (xAuthToken != null && !xAuthToken.isEmpty()) {
+                connection.setRequestProperty("X-Authorization", xAuthToken);
+                System.out.println("已添加X-Authorization头");
+            }
+            
+            connection.setDoOutput(true);
+            connection.setConnectTimeout(15000);
+            connection.setReadTimeout(15000);
+            
+            // 启用SSL(HTTPS)
+//            if (urlStr.startsWith("https")) {
+//                trustAllCertificates();
+//            }
+            
+            // 发送表单数据
+            try (OutputStream os = connection.getOutputStream();
+                 OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8")) {
+                osw.write(formData);
+                osw.flush();
+            }
+            
+            // 读取响应
+            int status = connection.getResponseCode();
+            System.out.println("HTTP状态码: " + status);
+            
+            InputStream inputStream = status < 400 ? connection.getInputStream() : connection.getErrorStream();
+            
+            if (inputStream == null) {
+                return "{\"error\":\"No response body, status: " + status + "\"}";
+            }
+            
+            try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
+                StringBuilder response = new StringBuilder();
+                String line;
+                while ((line = br.readLine()) != null) {
+                    response.append(line);
+                }
+                System.out.println("原始响应: " + response.toString());
+                return response.toString();
+            }
+            
+        } finally {
+            connection.disconnect();
+        }
+    }
+    
+    /**
+     * SSL证书信任设置(用于测试环境)
+     */
+    private void trustAllCertificates() {
+        try {
+            // 信任所有SSL证书(仅测试环境使用)
+            javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[] {
+                new javax.net.ssl.X509TrustManager() {
+                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+                        return null;
+                    }
+                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
+                    }
+                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
+                    }
+                }
+            };
+            
+            javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
+            sc.init(null, trustAllCerts, new java.security.SecureRandom());
+            javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+            
+            // 信任所有主机名
+            javax.net.ssl.HostnameVerifier allHostsValid = new javax.net.ssl.HostnameVerifier() {
+                public boolean verify(String hostname, javax.net.ssl.SSLSession session) {
+                    return true;
+                }
+            };
+            javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
+            
+        } catch (Exception e) {
+            System.err.println("SSL证书信任设置异常: " + e.getMessage());
+        }
+    }
+    
+    /**
+     * 从响应中提取访问token
+     */
+    private String extractAccessTokenFromResponse(String jsonResponse) {
+        if (jsonResponse == null) {
+            return null;
+        }
+        
+        // 尝试多种可能的token字段名称
+        String[] tokenFields = {"access_token", "token", "accessToken"};
+        
+        for (String field : tokenFields) {
+            Pattern pattern = Pattern.compile("\"" + field + "\"\\s*:\\s*\"([^\"]+)\"");
+            Matcher matcher = pattern.matcher(jsonResponse);
+            if (matcher.find()) {
+                return matcher.group(1);
+            }
+        }
+        
+        return null;
+    }
+    
+    /**
+     * 从响应中提取token有效期
+     */
+    private Long extractExpiresInFromResponse(String jsonResponse) {
+        if (jsonResponse == null) {
+            return null;
+        }
+        
+        Pattern pattern = Pattern.compile("\"expires_in\"\\s*:\\s*(\\d+)");
+        Matcher matcher = pattern.matcher(jsonResponse);
+        if (matcher.find()) {
+            return Long.parseLong(matcher.group(1));
+        }
+        
+        return null;
+    }
+    
+    /**
+     * 从响应中提取错误信息
+     */
+    private String extractErrorFromResponse(String jsonResponse) {
+        if (jsonResponse == null) {
+            return "Empty response";
+        }
+        
+        // 尝试提取error字段
+        Pattern pattern = Pattern.compile("\"error\"\\s*:\\s*\"([^\"]+)\"");
+        Matcher matcher = pattern.matcher(jsonResponse);
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        
+        // 尝试提取error_description字段
+        Pattern pattern2 = Pattern.compile("\"error_description\"\\s*:\\s*\"([^\"]+)\"");
+        Matcher matcher2 = pattern2.matcher(jsonResponse);
+        if (matcher2.find()) {
+            return matcher2.group(1);
+        }
+        
+        // 尝试提取message字段
+        Pattern pattern3 = Pattern.compile("\"message\"\\s*:\\s*\"([^\"]+)\"");
+        Matcher matcher3 = pattern3.matcher(jsonResponse);
+        if (matcher3.find()) {
+            return matcher3.group(1);
+        }
+        
+        return jsonResponse;
+    }
+    
+    /**
+     * 获取当前访问token
+     */
+    public String getAccessTokenValue() {
+        return accessToken;
+    }
+    
+    /**
+     * 使用访问token调用业务API
+     */
+    public String callBusinessApi(String apiUrl, String requestBody) {
+        if (accessToken == null) {
+            throw new IllegalStateException("请先调用getAccessToken方法获取访问token");
+        }
+        
+        try {
+            return sendJsonPostRequest(apiUrl, requestBody, accessToken,xAuthToken);
+        } catch (Exception e) {
+            System.err.println("调用业务API异常: " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+    
+    /**
+     * 发送JSON POST请求(使用访问token)
+     */
+    private String sendJsonPostRequest(String urlStr, String jsonBody, String accessToken,String xAuthToken) throws IOException {
+        URL url = new URL(urlStr);
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        
+        try {
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+            connection.setRequestProperty("Accept", "application/json");
+            
+            // 使用访问token作为Authorization头
+            if (accessToken != null && !accessToken.isEmpty()) {
+                connection.setRequestProperty("Authorization", "Bearer " + accessToken);
+                System.out.println("已添加Authorization头(Bearer Token)");
+            }
+            // 添加X-Authorization头
+            if (xAuthToken != null && !xAuthToken.isEmpty()) {
+                connection.setRequestProperty("X-Authorization", xAuthToken);
+                System.out.println("已添加X-Authorization头");
+            }
+            connection.setDoOutput(true);
+            connection.setConnectTimeout(15000);
+            connection.setReadTimeout(15000);
+            
+            // 启用SSL(如果是HTTPS)
+//            if (urlStr.startsWith("https")) {
+//                trustAllCertificates();
+//            }
+            
+            // 发送JSON数据
+            if (jsonBody != null && !jsonBody.isEmpty()) {
+                try (OutputStream os = connection.getOutputStream();
+                     OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8")) {
+                    osw.write(jsonBody);
+                    osw.flush();
+                }
+            }
+            
+            // 读取响应
+            int status = connection.getResponseCode();
+            System.out.println("业务API HTTP状态码: " + status);
+            
+            InputStream inputStream = status < 400 ? connection.getInputStream() : connection.getErrorStream();
+            
+            if (inputStream == null) {
+                return "{\"error\":\"No response body, status: " + status + "\"}";
+            }
+            
+            try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
+                StringBuilder response = new StringBuilder();
+                String line;
+                while ((line = br.readLine()) != null) {
+                    response.append(line);
+                }
+                return response.toString();
+            }
+            
+        } finally {
+            connection.disconnect();
+        }
+    }
+    
+    /**
+     * 手动构建简单JSON
+     */
+    public String buildSimpleJson(Map params) {
+        StringBuilder json = new StringBuilder();
+        json.append("{");
+        boolean first = true;
+        for (Map.Entry entry : params.entrySet()) {
+            if (!first) {
+                json.append(",");
+            }
+            json.append("\"").append(entry.getKey()).append("\":");
+            Object value = entry.getValue();
+            if (value instanceof String) {
+                json.append("\"").append(escapeJsonString(value.toString())).append("\"");
+            } else if (value instanceof Number) {
+                json.append(value);
+            } else if (value instanceof Boolean) {
+                json.append(value);
+            } else {
+                json.append("\"").append(escapeJsonString(value.toString())).append("\"");
+            }
+            first = false;
+        }
+        json.append("}");
+        return json.toString();
+    }
+    
+    /**
+     * 转义JSON字符串中的特殊字符
+     */
+    private String escapeJsonString(String str) {
+        return str.replace("\\", "\\\\")
+                 .replace("\"", "\\\"")
+                 .replace("\b", "\\b")
+                 .replace("\f", "\\f")
+                 .replace("\n", "\\n")
+                 .replace("\r", "\\r")
+                 .replace("\t", "\\t");
+    }
+    
+    /**
+     * 完整的示例使用方法
+     */
+    public static void main(String[] args) {
+        // 创建Token客户端
+        WmsTokenClient client = new WmsTokenClient();
+        // 1. 获取访问Token
+        if (client.getAccessToken()) {
+            System.out.println("成功获取访问Token: " + client.getAccessTokenValue());
+            
+            // 2. 构建业务请求数据(示例)
+            Map requestData = new HashMap();
+            requestData.put("warehouseCode", "WH001");
+            requestData.put("skuCode", "SKU12345");
+            requestData.put("action", "queryInventory");
+            requestData.put("timestamp", System.currentTimeMillis());
+            
+            // 3. 构建JSON请求
+            String jsonRequest = client.buildSimpleJson(requestData);
+            System.out.println("业务请求JSON: " + jsonRequest);
+            
+            // 4. 调用业务API(使用访问Token)
+            // 注意:需要替换为实际的业务API URL
+            String businessApiUrl = "https://apintodev.amecnsh.com/AMEC4/wms/api/business";
+            String response = client.callBusinessApi(businessApiUrl, jsonRequest);
+            
+            System.out.println("业务API响应: " + response);
+        } else {
+            System.out.println("获取访问Token失败");
+        }
+    }
+}
diff --git a/src/main/java/com/dev/swms/server/interfaces/ItemJobLauncher.java b/src/main/java/com/dev/swms/server/interfaces/ItemJobLauncher.java
index 0cf06bc..f2331bb 100644
--- a/src/main/java/com/dev/swms/server/interfaces/ItemJobLauncher.java
+++ b/src/main/java/com/dev/swms/server/interfaces/ItemJobLauncher.java
@@ -235,7 +235,7 @@ public class ItemJobLauncher implements ApplicationListener {
 		int e=0;
 		switch (a) {
 			case 1:
-				logger.info("1---------");
+				logger.info(" --zidongfanku----1---------");
 				if (true) {
 					List agvTasks =  commonDao.findByQuery(" from AgvTask agvTask "
 							+ " where 1=1 "    //agvTask.beIssue=true
@@ -244,16 +244,16 @@ public class ItemJobLauncher implements ApplicationListener {
 //							+ " and substring(agvTask.targetArea,0,4) not in ('204','203') "
 //							+ " and substring(agvTask.targetArea,0,4) in ('201') "
 							+ " and substring(agvTask.targetArea,0,4) in ('203','204','205','206','207',"
-							+ "'208','209','210','211','212','213') "
+							+ "'208','209','210','211','212','213','214','215','201','202') "
 							);
 					for (AgvTask agvTask : agvTasks) {
 						long time = agvTask.getLeaveTime().getTime();
 						long time1= (new Date()).getTime();
-						logger.info(time+"------1-----------"+time1);
-						if (time1-time>=35000) {
+						logger.info(time+"-----zidongfanku----1-----------"+time1);
+						if (time1-time>=30000) {
 						agvTaskManager.wcsNextPT(agvTask.getRobotJobId(), agvTask.getContainerCode(),
 								WcsCSDCode.getWcsCSDCode(agvTask.getTargetAreaCode()));
-						logger.info("1-----------");
+						logger.info("--zidongfanku-1-----------");
 						}
 					}
 				}
diff --git a/src/main/java/com/dev/swms/server/model/base/Item.java b/src/main/java/com/dev/swms/server/model/base/Item.java
index be46ce7..dbb537e 100644
--- a/src/main/java/com/dev/swms/server/model/base/Item.java
+++ b/src/main/java/com/dev/swms/server/model/base/Item.java
@@ -27,10 +27,10 @@ public class Item extends Entity {
     private String unit;
     private String goodType;//产品分类  待测量数据  大小件
    
-    private double length=0;//长--
-    private double width=0;//宽
-    private double height=0;//高
-    private double weight=0;//规格重量
+    private double length=0;//长--LENGTH
+    private double width=0;//宽WIDTH
+    private double height=0;//高LENGTH
+    private double weight=0;//规格重量WEIGHT
     private double volume=0;//体积
     private int packNumber=0;//规格数量
     /**
diff --git a/src/main/java/com/dev/swms/server/model/receiving/ASNDetail.java b/src/main/java/com/dev/swms/server/model/receiving/ASNDetail.java
index 159393b..5abf630 100644
--- a/src/main/java/com/dev/swms/server/model/receiving/ASNDetail.java
+++ b/src/main/java/com/dev/swms/server/model/receiving/ASNDetail.java
@@ -38,7 +38,7 @@ public class ASNDetail extends Entity {
 	private double expectedQuantity;
 	private boolean bequality=false;//是否质检
 	private String strBill2;//序列号
-	private String strBill1;//PO行项目号
+	private String strBill1;//PO行号\成品箱号
 	/** 商品属性 */
 	private LotInfo lotInfo;
 	private String strBill3;//已入库质检标记
@@ -122,7 +122,7 @@ public class ASNDetail extends Entity {
 	private String relatedBill5;//预入库操作人
 	private String strBill4;//-转作业-原特殊标记
 	private String strBill5;//转作业-原供应商代码
-	private String strBill6;//SCC号
+	private String strBill6;//SCC号   箱号
 	private String strBill7;//task凭证号(收货凭证号)
 	private String strBill8;//凭证行号
 	private String strBill9;//发货LOC
@@ -135,8 +135,36 @@ public class ASNDetail extends Entity {
 	private String zxmx;//新物料标识(是否新料)
 	
 	private boolean beMarkWeight=false;//是否序列号
-
 	
+	private double length=0;//长--LENGTH
+	private double width=0;//宽WIDTH
+	private double height=0;//高LENGTH
+	
+	
+	public double getLength() {
+		return length;
+	}
+
+	public void setLength(double length) {
+		this.length = length;
+	}
+
+	public double getWidth() {
+		return width;
+	}
+
+	public void setWidth(double width) {
+		this.width = width;
+	}
+
+	public double getHeight() {
+		return height;
+	}
+
+	public void setHeight(double height) {
+		this.height = height;
+	}
+
 	public boolean isBeMarkWeight() {
 		return beMarkWeight;
 	}
diff --git a/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml b/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml
index 3853008..6454341 100644
--- a/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml
+++ b/src/main/java/com/dev/swms/server/model/receiving/asnDetail.hbm.xml
@@ -167,6 +167,9 @@
 		
 		
 		
+		
+		
+		
 	
 	
 		
diff --git a/src/main/java/com/dev/swms/server/model/shipping/AutomaticWaveDoc.java b/src/main/java/com/dev/swms/server/model/shipping/AutomaticWaveDoc.java
index 325ec6e..abfb8f9 100644
--- a/src/main/java/com/dev/swms/server/model/shipping/AutomaticWaveDoc.java
+++ b/src/main/java/com/dev/swms/server/model/shipping/AutomaticWaveDoc.java
@@ -1,5 +1,7 @@
 package com.dev.swms.server.model.shipping;
 
+import java.util.Date;
+
 import com.dev.energy.server.model.Entity;
 
 public class AutomaticWaveDoc extends Entity{
@@ -15,30 +17,194 @@ public class AutomaticWaveDoc extends Entity{
 	private  int hour2=0;//小时
 	private  int minute2=0;//分钟
 	private Boolean beEnabled2=false;//是否下发CRS
-	private  int hour3=0;//小时
-	private  int minute3=0;//分钟
-	private Boolean beEnabled3=false;//是否启用
-	private  int hour4=0;//小时
-	private  int minute4=0;//分钟
-	private Boolean beEnabled4=false;//是否启用
-	private  int hour5=0;//小时
-	private  int minute5=0;//分钟
-	private Boolean beEnabled5=false;//是否启用
-	private  int hour6=0;//小时
-	private  int minute6=0;//分钟
-	private Boolean beEnabled6=false;//是否启用
-	private  int hour7=0;//小时
-	private  int minute7=0;//分钟
-	private Boolean beEnabled7=false;//是否启用
-	private  int hour8=0;//小时
-	private  int minute8=0;//分钟
-	private Boolean beEnabled8=false;//是否启用
-	private  int hour9=0;//小时
-	private  int minute9=0;//分钟
-	private Boolean beEnabled9=false;//是否启用
-	private  int hour10=0;//小时
-	private  int minute10=0;//分钟
-	private Boolean beEnabled10=false;//是否启用
+	private  int hour3=0;//波次小时
+	private  int minute3=0;//料箱工作站个数
+	private  int hour4=0;//最大拆分行数
+	private  int minute4=0;//货架工作站个数
+	private  int hour5=0;//
+	private  int minute5=0;//堆垛工作站个数
+	private  int hour6=0;//
+	private  int minute6=0;//
+	private  int hour7=0;//
+	private  int minute7=0;//
+	private  int hour8=0;//
+	private  int minute8=0;//
+	private  int hour9=0;//
+	private  int minute9=0;//
+	private Boolean beEnabled3=false;//地堆区是否发当天料
+	private Boolean beEnabled4=false;//货架区工作站1-7
+	private Boolean beEnabled5=false;//
+	private Boolean beEnabled6=false;//
+	private Boolean beEnabled7=false;//
+	private Boolean beEnabled8=false;//
+	private Boolean beEnabled9=false;//
+	private Boolean beEnabled10=false;//
+	private Boolean lx1=false;//料箱工作站1-15
+	private Boolean lx2=false;//
+	private Boolean lx3=false;//
+	private Boolean lx4=false;//
+	private Boolean lx5=false;//
+	private Boolean lx6=false;//
+	private Boolean lx7=false;//
+	private Boolean lx8=false;//
+	private Boolean lx9=false;//
+	private Boolean lx10=false;//
+	private Boolean lx11=false;//
+	private Boolean lx12=false;//
+	private Boolean lx13=false;//
+	private Boolean lx14=false;//
+	private Boolean lx15=false;//
+	private Boolean lk1=false;//立库工作站1-5
+	private Boolean lk2=false;//
+	private Boolean lk3=false;//
+	private Boolean lk4=false;//
+	private Boolean lk5=false;//
+	
+	private  int hour10=0;//
+	private  int minute10=0;//
+	
+	
+	/** 波次规则的开始时间 */
+	private Date startDate;
+	
+	/** 波次规则的结束时间 */
+	private Date endDate;
+	
+	
+	
+	
+	public Boolean getLx1() {
+		return lx1;
+	}
+	public void setLx1(Boolean lx1) {
+		this.lx1 = lx1;
+	}
+	public Boolean getLx2() {
+		return lx2;
+	}
+	public void setLx2(Boolean lx2) {
+		this.lx2 = lx2;
+	}
+	public Boolean getLx3() {
+		return lx3;
+	}
+	public void setLx3(Boolean lx3) {
+		this.lx3 = lx3;
+	}
+	public Boolean getLx4() {
+		return lx4;
+	}
+	public void setLx4(Boolean lx4) {
+		this.lx4 = lx4;
+	}
+	public Boolean getLx5() {
+		return lx5;
+	}
+	public void setLx5(Boolean lx5) {
+		this.lx5 = lx5;
+	}
+	public Boolean getLx6() {
+		return lx6;
+	}
+	public void setLx6(Boolean lx6) {
+		this.lx6 = lx6;
+	}
+	public Boolean getLx7() {
+		return lx7;
+	}
+	public void setLx7(Boolean lx7) {
+		this.lx7 = lx7;
+	}
+	public Boolean getLx8() {
+		return lx8;
+	}
+	public void setLx8(Boolean lx8) {
+		this.lx8 = lx8;
+	}
+	public Boolean getLx9() {
+		return lx9;
+	}
+	public void setLx9(Boolean lx9) {
+		this.lx9 = lx9;
+	}
+	public Boolean getLx10() {
+		return lx10;
+	}
+	public void setLx10(Boolean lx10) {
+		this.lx10 = lx10;
+	}
+	public Boolean getLx11() {
+		return lx11;
+	}
+	public void setLx11(Boolean lx11) {
+		this.lx11 = lx11;
+	}
+	public Boolean getLx12() {
+		return lx12;
+	}
+	public void setLx12(Boolean lx12) {
+		this.lx12 = lx12;
+	}
+	public Boolean getLx13() {
+		return lx13;
+	}
+	public void setLx13(Boolean lx13) {
+		this.lx13 = lx13;
+	}
+	public Boolean getLx14() {
+		return lx14;
+	}
+	public void setLx14(Boolean lx14) {
+		this.lx14 = lx14;
+	}
+	public Boolean getLx15() {
+		return lx15;
+	}
+	public void setLx15(Boolean lx15) {
+		this.lx15 = lx15;
+	}
+	public Boolean getLk1() {
+		return lk1;
+	}
+	public void setLk1(Boolean lk1) {
+		this.lk1 = lk1;
+	}
+	public Boolean getLk2() {
+		return lk2;
+	}
+	public void setLk2(Boolean lk2) {
+		this.lk2 = lk2;
+	}
+	public Boolean getLk3() {
+		return lk3;
+	}
+	public void setLk3(Boolean lk3) {
+		this.lk3 = lk3;
+	}
+	public Boolean getLk4() {
+		return lk4;
+	}
+	public void setLk4(Boolean lk4) {
+		this.lk4 = lk4;
+	}
+	public Boolean getLk5() {
+		return lk5;
+	}
+	public void setLk5(Boolean lk5) {
+		this.lk5 = lk5;
+	}
+	public Date getStartDate() {
+		return startDate;
+	}
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+	public Date getEndDate() {
+		return endDate;
+	}
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
 	public int getHour1() {
 		return hour1;
 	}
diff --git a/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java b/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java
index fc91fce..333a316 100644
--- a/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java
+++ b/src/main/java/com/dev/swms/server/model/shipping/PickTicket.java
@@ -68,9 +68,9 @@ public class PickTicket extends AbstractMoveDoc {
 	
 	private String workerName4;//需求人
 	
-	private String relatedBill1;//预留号
+	private String relatedBill1;//预留号//
 	/**  */
-	private String relatedBill2;//工单号
+	private String relatedBill2;//工单号//
 	/**  */
 	private String relatedBill3;//头物料
 	
diff --git a/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java b/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java
index 73143f1..4fc1377 100644
--- a/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java
+++ b/src/main/java/com/dev/swms/server/model/shipping/PickTicketDetail.java
@@ -57,7 +57,7 @@ public class PickTicketDetail extends AbstractMoveDocDetail {
     private String description;//明细备注
     
     /** 行号*/
-	private String lineNumber;
+	private String lineNumber;//成品箱号
 	
     private WaveDocDetail waveDocDetail;//波次明细
     
@@ -88,8 +88,8 @@ public class PickTicketDetail extends AbstractMoveDocDetail {
 	private String strBill7;//预留号
 	private String strBill8;//是否出WMS仓
 	private String strBill9;//接收工厂
-	private String strBill10;//采购订单号
-	private String strBill11;//外协供应商编号
+	private String strBill10;//采购订单号       -成品新箱号
+	private String strBill11;//外协供应商编号 -成品新料号
 	private String strBill12;//机台号
 	private String strBill13; //receiver
 	private String strBill14; //SAP指定序列号值
diff --git a/src/main/java/com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml b/src/main/java/com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml
index be9b4f7..83dca1a 100644
--- a/src/main/java/com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml
+++ b/src/main/java/com/dev/swms/server/model/shipping/automaticWaveDoc.hbm.xml
@@ -40,6 +40,28 @@
 		
 		
 		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
+		
 	
 
 
\ No newline at end of file
diff --git a/src/main/java/com/dev/swms/server/service/base/LocationManager.java b/src/main/java/com/dev/swms/server/service/base/LocationManager.java
index 221fa31..0e29310 100644
--- a/src/main/java/com/dev/swms/server/service/base/LocationManager.java
+++ b/src/main/java/com/dev/swms/server/service/base/LocationManager.java
@@ -170,4 +170,6 @@ public interface LocationManager extends BaseManager {
 	@Transactional
 	void importReceivingInventory(File file);
 	
+	@Transactional
+	void huoquMesToken(List ids);
 }
diff --git a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultLocationManager.java b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultLocationManager.java
index 12a5d01..af5ddde 100644
--- a/src/main/java/com/dev/swms/server/service/base/pojo/DefaultLocationManager.java
+++ b/src/main/java/com/dev/swms/server/service/base/pojo/DefaultLocationManager.java
@@ -4,9 +4,11 @@ import hhwms.MyThread;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -15,6 +17,8 @@ import net.sf.json.JSONArray;
 import org.apache.commons.lang.StringUtils;
 
 import com.alibaba.fastjson.JSONObject;
+import com.dev.swms.client.JwtTokenGenerator;
+import com.dev.swms.client.WmsTokenClient;
 import com.dev.swms.client.ui.page.CustomEntity;
 import com.dev.swms.server.model.base.BillType;
 import com.dev.swms.server.model.base.GoodsShelves;
@@ -1562,6 +1566,8 @@ public class DefaultLocationManager extends DefaultBaseManager implements
 				String loc = sheet.getCell(3, i).getContents().trim();// LOC
 				String qty = sheet.getCell(4, i).getContents().trim();// 数量
 				String NCR = sheet.getCell(5, i).getContents().trim();// NCR
+				String XN = sheet.getCell(6, i).getContents().trim();// 序列号
+				String date = sheet.getCell(7, i).getContents().trim();// 入库日期
 				if(itemcode==null||lc==null||plan==null||loc==null||qty==null||NCR==null) {
 					continue;
 				}
@@ -1579,6 +1585,10 @@ public class DefaultLocationManager extends DefaultBaseManager implements
 				}else {
 					throw new BusinessException("第"+(i+1)+"行料号"+itemcode+"不存在");
 				}
+				Date asndate=new Date();
+				if(date!=null&&date.length()>0) {
+					asndate=DateUtil.formatStrToDateYMD02(date);
+				}
 				LotInfo lotInfo=new LotInfo();
 				lotInfo.setPropC9(plan);//批次号
 				lotInfo.setPropC3("");//特殊标记
@@ -1604,6 +1614,10 @@ public class DefaultLocationManager extends DefaultBaseManager implements
 					r.setReceivedQuantity(Integer.parseInt(qty));
 					r.setReceivedQuantityMU(r.getReceivedQuantity());
 					r.setStrBill1(NCR);
+					r.setReceiveDate(asndate);
+					if(XN!=null&&XN.length()>0) {
+						r.setBarCode(XN);
+					}
 					commonDao.store(r);
 					logger.info(i);
 			}
@@ -1616,4 +1630,35 @@ public class DefaultLocationManager extends DefaultBaseManager implements
 		}
 	}
 	
+	public void huoquMesToken(List ids) {
+
+        // 创建Token客户端
+        WmsTokenClient client = new WmsTokenClient();
+    
+        // 1. 获取访问Token
+        if (client.getAccessToken()) {
+            System.out.println("成功获取访问Token: " + client.getAccessTokenValue());
+            
+            // 2. 构建业务请求数据(示例)
+            Map requestData = new HashMap();
+            requestData.put("warehouseCode", "WH001");
+            requestData.put("skuCode", "SKU12345");
+            requestData.put("action", "queryInventory");
+            requestData.put("timestamp", System.currentTimeMillis());
+            
+            // 3. 构建JSON请求
+            String jsonRequest = client.buildSimpleJson(requestData);
+            System.out.println("业务请求JSON: " + jsonRequest);
+            
+            // 4. 调用业务API(使用访问Token)
+            // 注意:需要替换为实际的业务API URL
+            String businessApiUrl = "https://apintodev.amecnsh.com/AMEC4/wms/api/business";
+            String response = client.callBusinessApi(businessApiUrl, jsonRequest);
+            
+            System.out.println("业务API响应: " + response);
+        } else {
+            System.out.println("获取访问Token失败");
+        }
+    
+	}
 }
diff --git a/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java b/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java
index ae1be55..6ba43c1 100644
--- a/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java
+++ b/src/main/java/com/dev/swms/server/service/count/pojo/DefaultCountPlanManager.java
@@ -2327,6 +2327,8 @@ public class DefaultCountPlanManager extends DefaultBaseManager implements
 							List cpts=commonDao.findByQuery("select c.id from CountRecord c where c.needCount=0 "
 									+ " and c.countPlan.id="+countRecord.getCountPlan().getId());
 							if(cpts.size()==0) {
+								cp.setFinishNo(cp.getCountQty());
+								commonDao.store(cp);
 								adjustment(countRecord.getCountPlan().getId(),userId);
 							}
 							
diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java b/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java
index b5e743c..845aa13 100644
--- a/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java
+++ b/src/main/java/com/dev/swms/server/service/interfaceLog/ApiURL.java
@@ -50,6 +50,22 @@ public  class  ApiURL {
 	public static String returnOA = "";
 //  测试地址 WMS——SAP 回传接口******http://happdev.amecnsh.com:8000/sap/zrest
 	public static String doWmsReqSap = "";
+	
+//  测试地址 WMS——MES 回传接口******
+	//入库反馈https://apintodev.amecnsh.com/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_ENTRY_FEEDBACK	
+	//出库退回https://apintodev.amecnsh.com/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_RETURN_FEEDBACK	
+	//移位更新库区https://apintodev.amecnsh.com/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_TRANSFER_UPDATE
+	//成品出库https://apintodev.amecnsh.com/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_PRODUCT_OUT
+	//更新料号https://apintodev.amecnsh.com/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_UPDATE_MATE_FEEDBACK
+	
+	public static String returnMESIN = "/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_ENTRY_FEEDBACK";
+	public static String returnMESRETURN = "/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_RETURN_FEEDBACK";
+	public static String returnMESTRANSFER = "/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_TRANSFER_UPDATE";
+	public static String returnMESPRODUCT = "/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_PRODUCT_OUT";
+	public static String returnMESUPDATE = "/AMEC4/wms/postAppApi?m=dev&apiCode=WMS_MES_UPDATE_MATE_FEEDBACK";
+	
+//  测试地址 WMS——MES 回传接口******https://apintodev.amecnsh.com/AMEC4/wms/oauth/token
+	public static String returnMesToken = "/AMEC4/wms/oauth/token";
 		
 //	OA生产地址
 //	public static String returnOA = "https://10.1.112.7/api/zwbdt/e9/oa4sap/confirmRequest";
diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceReqManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceReqManager.java
index 365e370..bc66012 100644
--- a/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceReqManager.java
+++ b/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceReqManager.java
@@ -29,7 +29,14 @@ public interface InterfaceReqManager extends BaseManager{
 	 */
 	@Transactional
 	String doWmsReqSap(String URL, String xmlInfo,String type);
-	
+	/**
+	 * wms req MES
+	 * @param URL 接口地址
+	 * @param xmlInfo 发送参数
+	 * @return
+	 */
+	@Transactional
+	String doWmsReqMes(String URL, String xmlInfo,String type);
 	//WCS接口
 	boolean doWmsReqWcs(String URL, String xmlInfo,String taskcode);
 	//OA接口
@@ -144,6 +151,13 @@ public interface InterfaceReqManager extends BaseManager{
 	 */
 	@Transactional
 	void returnoutAsn(List ids);
+	
+	/**
+	 * wms入库回传MES关闭状态
+	 * @param ReceivedRecord  ids
+	 */
+	@Transactional
+	void returnoutAsnMes(List ids);
 
 	/**
 	 * WMS-SAP 发料回传
@@ -151,6 +165,22 @@ public interface InterfaceReqManager extends BaseManager{
 	 */
 	@Transactional
 	boolean wmsSapFaliaohuichuang(List ids);
+
+	/**
+	 * WMS-MES 发料回传
+	 * @param ids 拣货任务 id
+	 */
+	@Transactional
+	boolean wmsMesFaliao(List ids,String type);
+	/**
+	 * WMS-MES 移位回传
+	 * @param ids 库存id 
+	 * type=4
+	 */
+	@Transactional
+	boolean wmsMesInventory(List ids,String type);
+	
+	
 	/**
 	 * WMS-SAP 跳过任务,发料回传
 	 * @param ids 拣货任务 id
diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceRespManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceRespManager.java
index 79ccdd0..ca222d6 100644
--- a/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceRespManager.java
+++ b/src/main/java/com/dev/swms/server/service/interfaceLog/InterfaceRespManager.java
@@ -39,10 +39,19 @@ public interface InterfaceRespManager extends BaseManager{
 		JSONObject storeCPUTPTCsap(DataInterfaceLog log,String data);
 		//SAP-WMS:成品出库任务信息接口
 		JSONObject storeZPUTPTCsap(DataInterfaceLog log,String data);
+		//SAP-WMS:成品出库任务信息接口
+		JSONObject storeZPUTPTCmes(DataInterfaceLog log,String data);
+		
+		//SAP-WMS:成品变更出库任务信息接口
+		JSONObject storeZPUTUPDATEmes(DataInterfaceLog log,String data);
+		
 		//SAP-WMS:其它移动类型(非采购)出库任务信息接口
 		JSONObject storeQPUTPTCsap(DataInterfaceLog log,String data);
 		//SAP-WMS:成品收货入库任务接口
 		JSONObject storeASNZPUTASN(DataInterfaceLog log,String data);
+		//MES-WMS:成品收货入库任务接口
+		JSONObject storeMESZPUTASN(DataInterfaceLog log,String data);
+		
 		//SAP-WMS:采购收货入库任务接口
 		@Transactional
 		JSONObject storeASNCPUTASN(DataInterfaceLog log,String data);
diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java
index da16487..4ebbda9 100644
--- a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java
+++ b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceReqManager.java
@@ -16,7 +16,9 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Base64;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import library.doLibrary;
@@ -36,6 +38,7 @@ import com.dev.energy.server.exception.BusinessException;
 import com.dev.energy.server.model.EntityFactory;
 import com.dev.energy.server.model.exception.ExceptionLog;
 import com.dev.energy.server.service.pojo.DefaultBaseManager;
+import com.dev.swms.client.WmsTokenClient;
 import com.dev.swms.server.model.base.BillType;
 import com.dev.swms.server.model.base.Item;
 import com.dev.swms.server.model.base.ItemKey;
@@ -164,7 +167,122 @@ public class DefaultInterfaceReqManager extends DefaultBaseManager implements In
 		}
 		return str;
 	}
+	
+	
+	@Override
+	public String doWmsReqMes(String URL, String xmlInfo,String type) {
+		boolean bool = false;
+		DataInterfaceLog interfaceLog = interfaceManager.storeDataInterfaceLog("WMS-MES", type, "WMS", "SAP", URL,
+				xmlInfo);
+		String str = "";
+		InputStream instr = null;
+		java.io.ByteArrayOutputStream out = null;
+		String ResponseString = "";
+		int i = 0;
+		
+		boolean flag = true;
+//	    while (flag) {
+		logger.info("wms-MES发起的数据:" + xmlInfo);
+		try {
+			HttpClient httpClient = new HttpClient();
+			// 设置超时时间
+//			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
+//			httpClient.getHttpConnectionManager().getParams().setSoTimeout(5000);
+			PostMethod postMethod = new PostMethod(URL);
+			// 设置请求头 Content-Type
+			postMethod.setRequestHeader("Content-Type", "application/json");
+			//X-Authorization
+			postMethod.setRequestHeader("Authorization", "Basic " 
+					+ Base64.getUrlEncoder().encodeToString(("AMECBGADMIN" + ":" + "Amec@BgAdmin@888").getBytes()));
+			RequestEntity requestEntity = new StringRequestEntity(xmlInfo, "application/json", "UTF-8");
+			postMethod.setRequestEntity(requestEntity);
+			httpClient.executeMethod(postMethod);// 执行请求
+//			httpClient.setTimeout(5000);
+			instr = postMethod.getResponseBodyAsStream();// 获取返回的流
+			BufferedReader br = null;
+			StringBuffer buffer = new StringBuffer();
+			// 将返回的输入流转换成字符串
+			br = new BufferedReader(new InputStreamReader(instr, Charset.forName("UTF-8")));
+			String temp;
+			while ((temp = br.readLine()) != null) {
+				buffer.append(temp);
+			}
+			logger.info(xmlInfo + "wms-sap响应报文:" + buffer);
+			str = buffer + "";
+			if(str==null||str.equals("")) {
+				
+			}else {
+				bool = true;
+			}
+			
+			flag = false;
+		} catch (Exception e) {
+			/*
+			 * i++;
+			 * if (i>3) {
+			 * flag=false;
+			 * }
+			 * try {
+			 * Thread.sleep(180000);
+			 * } catch (InterruptedException e1) {
+			 * // TODO 自动生成的 catch 块
+			 * e1.printStackTrace();
+			 * }
+			 * e.printStackTrace();
+			 */}
+//		}
+		// 接口回传日志
+		interfaceManager.updateDataInterfaceLog(interfaceLog, "", str);
+		
+		try {
+			if (out != null) {
+				out.close();
+			}
+			if (instr != null) {
+				instr.close();
+			}
+		} catch (Exception ex) {
 
+		}
+		return str;
+	}
+	
+	
+	  public  String doWmsReqMes1(String URL, String xmlInfo,String type) {
+		  
+		  DataInterfaceLog interfaceLog = interfaceManager.storeDataInterfaceLog("WMS-MES", type, "WMS", "MES", URL,
+					xmlInfo);
+	        // 创建Token客户端
+	        WmsTokenClient client = new WmsTokenClient();
+	        String response ="";
+	        // 1. 获取访问Token
+	        if (client.getAccessToken()) {
+	            System.out.println("成功获取访问Token: " + client.getAccessTokenValue());
+	            
+	            // 2. 构建业务请求数据(示例)
+	            Map requestData = new HashMap();
+	            requestData.put("warehouseCode", "WH001");
+	            requestData.put("skuCode", "SKU12345");
+	            requestData.put("action", "queryInventory");
+	            requestData.put("timestamp", System.currentTimeMillis());
+	            
+	            // 3. 构建JSON请求
+	            String jsonRequest = client.buildSimpleJson(requestData);
+	            System.out.println("业务请求JSON: " + jsonRequest);
+	            
+	            // 4. 调用业务API(使用访问Token)
+	            // 注意:需要替换为实际的业务API URL
+	            String businessApiUrl = "https://apintodev.amecnsh.com/AMEC4/wms/api/business";
+	             response = client.callBusinessApi(URL, xmlInfo);
+	            System.out.println("业务API响应: " + response);
+	        } else {
+	            System.out.println("获取访问Token失败");
+	        }
+	     // 接口回传日志
+			interfaceManager.updateDataInterfaceLog(interfaceLog, "", response);
+			return response;
+	    }
+	
 	@Override
 	public JSONObject getJsonSapHead(String name) {
 		JSONObject jsonobj1 = new JSONObject();
@@ -1034,7 +1152,7 @@ public class DefaultInterfaceReqManager extends DefaultBaseManager implements In
 	
 	@Override
 	public boolean wmsSapFaliaohuichuang(List ids) {
-		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd");
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 		SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
 		JSONObject jsonobj = new JSONObject();
 		JSONObject jsonobj2 = new JSONObject();
@@ -1249,8 +1367,171 @@ public class DefaultInterfaceReqManager extends DefaultBaseManager implements In
 		return sapStatus;
 	}
 	
-	
-	
+	//WMS回传mes
+	@Override
+	public boolean wmsMesFaliao(List ids,String type) {
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+		SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
+		JSONObject jsonobj = new JSONObject();
+		JSONObject jsonobj2 = new JSONObject();
+		JSONArray array = new JSONArray();
+		PickTicket pickTicket=null;
+		boolean sapStatus=false;
+		// TODO 自动生成的方法存根
+		for (Long id : ids) {
+			JSONObject jsonobj1 = new JSONObject();
+			Task task = this.load(Task.class, id);
+
+			ItemKey itemKey = this.load(ItemKey.class, task.getItemKey().getId());
+			Item item = this.load(Item.class, itemKey.getItem().getId());
+				PickTicketDetail ptd = this.load(PickTicketDetail.class, task.getPickTicketDetail().getId());
+				if(pickTicket==null) {
+				pickTicket= this.load(PickTicket.class, ptd.getPickTicket().getId());
+				}
+//				WarehouseArea warehouseArea = this.load(WarehouseArea.class, task.getWarehouseArea().getId());
+				BillType billType = this.load(BillType.class, pickTicket.getBillType().getId());
+				// WMS2SAP-成品发货出库反馈接口
+				String str=task.getItemKey().getLotInfo().getPropC9();
+				String str1=task.getItemKey().getLotInfo().getPropC2();
+				if (type.equals("2")||type.equals("5")) {
+//					jsonobj.put("HEAD", getJsonSapHead("SD003"));
+					jsonobj2.put("TAALS", pickTicket.getCode() == null ? "" : pickTicket.getCode());
+					jsonobj2.put("SERNR", pickTicket.getRelatedBill1() == null ? "" : pickTicket.getRelatedBill1());
+					jsonobj2.put("MATNR1", item.getCode());
+					jsonobj2.put("WERKS", str==null?"":str);
+//					jsonobj2.put("LGORT", str1==null?"":str1);
+					jsonobj2.put("CASENUMBER", ptd.getLineNumber() + "");
+					jsonobj2.put("ZACGIQTY", task.getMovedQuantityMU() + "");
+					jsonobj2.put("TASAT", type);
+					jsonobj2.put("TASPD", dateFormat.format(task.getOperateTime()));
+				} else if(type.equals("3")) {
+//					jsonobj.put("HEAD", getJsonSapHead("SD003"));
+					jsonobj2.put("TAALS", pickTicket.getCode() == null ? "" : pickTicket.getCode());
+					jsonobj2.put("SERNR", pickTicket.getRelatedBill1() == null ? "" : pickTicket.getRelatedBill1());
+					jsonobj2.put("MATNR1", item.getCode());
+					jsonobj2.put("WERKS", str==null?"":str);
+//					jsonobj2.put("LGORT", str1==null?"":str1);
+					jsonobj2.put("CASENUMBER", ptd.getLineNumber() + "");
+					jsonobj2.put("ZACGIQTY", task.getMovedQuantityMU() + "");
+					jsonobj2.put("TASAT", type);
+					jsonobj2.put("NEWSERNR", pickTicket.getRelatedBill2() == null ? "" : pickTicket.getRelatedBill2());
+					jsonobj2.put("NEWCASENUMBER", ptd.getStrBill10());//新箱号
+					jsonobj2.put("NEWMATNR1", ptd.getStrBill11());//新料号
+					jsonobj2.put("TASPD", dateFormat.format(task.getOperateTime()));
+					jsonobj2.put("TACTI", timeFormat.format(task.getOperateTime()));
+					
+				}else if(type.equals("4")) {
+					
+//					jsonobj.put("HEAD", getJsonSapHead("SD003"));
+					jsonobj2.put("TAALS", pickTicket.getCode() == null ? "" : pickTicket.getCode());
+					jsonobj2.put("SERNR", pickTicket.getRelatedBill1() == null ? "" : pickTicket.getRelatedBill1());
+					jsonobj2.put("MATNR1", item.getCode());
+					jsonobj2.put("WERKS", str==null?"":str);
+					jsonobj2.put("MANUAL", "");//库区
+					jsonobj2.put("CASENUMBER", ptd.getLineNumber() + "");
+					jsonobj2.put("ZACGIQTY", task.getMovedQuantityMU() + "");
+					jsonobj2.put("TASAT", type);
+					
+					jsonobj2.put("TASPD", dateFormat.format(task.getOperateTime()));
+					jsonobj2.put("TACTI", timeFormat.format(task.getOperateTime()));
+				}
+			array.add(jsonobj2);
+		}
+		jsonobj.put("requestBody", array);
+		if(pickTicket!=null&&pickTicket.getCode().indexOf("CP")==-1
+				&&((pickTicket.getSourceId()!=null&&pickTicket.getSourceId().indexOf("OT")== -1)
+						|| pickTicket.getSourceId()==null )) {
+			if(type.equals("2")) {
+				//退回出库
+				String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESRETURN, jsonobj.toString(),"MES数据"+pickTicket.getCode());
+			}else if(type.equals("3")) {
+				//变更出库
+				String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESUPDATE, jsonobj.toString(),"MES数据"+pickTicket.getCode());	
+			}else if(type.equals("4")) {
+				//移库
+				String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESTRANSFER, jsonobj.toString(),"MES数据"+pickTicket.getCode());
+			}else if(type.equals("5")) {
+				//成品出库
+				String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESPRODUCT, jsonobj.toString(),"MES数据"+pickTicket.getCode());	
+			}
+		
+
+//			if(bs!=null&&!bs.equals("")&&OUTPUT(bs)) {
+//				sapStatus=true;//回传是否成功
+//			}else {
+//				try {
+//				ExceptionLog log=EntityFactory.getEntity(ExceptionLog.class);
+//				log.setType("PICK");
+//				log.setOperUserId(pickTicket.getId());
+//				log.setOperDate(new Date());
+//				log.setOperException(bs);
+//				log.setOperExceptionMess(jsonobj.toString());
+//				log.setOperPageName("数据");
+//				commonDao.store(log);
+//				}catch (Exception e) {
+//					
+//				}
+//			}
+		}
+		return sapStatus;
+	}
+	//WMS回传mes
+		@Override
+		public boolean wmsMesInventory(List ids,String type) {
+			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
+			JSONObject jsonobj = new JSONObject();
+			JSONObject jsonobj2 = new JSONObject();
+			JSONArray array = new JSONArray();
+			boolean sapStatus=false;
+			// TODO 自动生成的方法存根
+			for (Long id : ids) {
+				Inventory inv = this.load(Inventory.class, id);
+				Location loc=commonDao.load(Location.class, inv.getLocation().getId());
+				ItemKey itemKey = this.load(ItemKey.class, inv.getItemKey().getId());
+				Item item = this.load(Item.class, itemKey.getItem().getId());
+				
+					WarehouseArea warehouseArea = this.load(WarehouseArea.class, loc.getZone().getId());
+					// WMS2SAP-成品发货出库反馈接口
+					String str=itemKey.getLotInfo().getPropC9();
+					String str1=itemKey.getLotInfo().getPropC2();
+					String itemCode=item.getCode();
+					 if(type.equals("4")) {
+						 String[] fruits = itemCode.split("#");
+						Date dt=new Date();
+						String code2="MV"+dt.getTime();
+//						jsonobj.put("HEAD", getJsonSapHead("SD003"));
+						jsonobj2.put("TAALS", code2);
+						int index = itemCode.lastIndexOf("#");
+						itemCode.substring(0, index);
+						jsonobj2.put("SERNR", fruits[0]);
+						jsonobj2.put("MATNR1", itemCode);
+						jsonobj2.put("WERKS", str==null?"":str);
+						jsonobj2.put("MANUAL", warehouseArea.getName());//库区
+						jsonobj2.put("CASENUMBER", fruits[1]);
+						jsonobj2.put("ZACGIQTY", inv.getQuantity());
+						jsonobj2.put("TASAT", type);
+						jsonobj2.put("TASPD", dateFormat.format(dt));
+						jsonobj2.put("TACTI", timeFormat.format(dt));
+					}
+				array.add(jsonobj2);
+			}
+			jsonobj.put("requestBody", array);
+				if(type.equals("2")) {
+					String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESRETURN, jsonobj.toString(),"MES数据");
+				}else if(type.equals("3")) {
+					String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESUPDATE, jsonobj.toString(),"MES数据");	
+				}else if(type.equals("4")) {
+					String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESTRANSFER, jsonobj.toString(),"MES数据");
+				}else if(type.equals("5")) {
+					String bs=doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESPRODUCT, jsonobj.toString(),"MES数据");	
+				}
+			
+
+
+		
+			return sapStatus;
+		}
 	
 	
 	//返回截取
@@ -2518,5 +2799,62 @@ public class DefaultInterfaceReqManager extends DefaultBaseManager implements In
 		return sapStatus;
 	}
 	
-	
+public void returnoutAsnMes(List ids) {
+		
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+		SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
+		JSONObject jsonobj = new JSONObject();
+		String becode="";
+		for (Long id : ids) {
+			ReceivedRecord receivedRecord = commonDao.load(ReceivedRecord.class, id);
+			ASNDetail asnDetail = commonDao.load(ASNDetail.class, receivedRecord.getAsnDetail().getId());
+			ASN asn = commonDao.load(ASN.class, receivedRecord.getAsn().getId());
+			WarehouseArea warehouseArea = commonDao.load(WarehouseArea.class,
+					receivedRecord.getWarehouseArea().getId());
+			Item item = this.load(Item.class, asnDetail.getItem().getId());
+			BillType billType = this.load(BillType.class, asn.getBillType().getId());
+			JSONArray array = new JSONArray();
+			JSONObject jsonobj2 = new JSONObject();
+			becode=asn.getCode();
+			 if ((billType.getCode().equals("ZPUTASN"))) {// WMS2SAP-成品收货入库反馈接口
+//				jsonobj.put("HEAD", getJsonSapHead("SD002"));
+				jsonobj2.put("TAALS", asn.getCode() + "");//任务号
+				jsonobj2.put("SERNR", asn.getRelatedBill2()  + "");//项目ID 
+				jsonobj2.put("MATNR1", item.getCode() + "");//物料号
+				jsonobj2.put("CASENUMBER", asnDetail.getStrBill1()+ "");//箱号
+				jsonobj2.put("WERKS", asnDetail.getLotInfo().getPropC9() + "");//工厂
+				jsonobj2.put("LGORT", asnDetail.getLotInfo().getPropC2() + "");//库存地
+				jsonobj2.put("TAAGR", receivedRecord.getReceivedQuantity());//实际收货数量
+				jsonobj2.put("MANUAL", warehouseArea.getName());//库区
+				jsonobj2.put("TASBD", dateFormat.format(receivedRecord.getOccurTime()));//收货任务回传日期
+				jsonobj2.put("TASBT", timeFormat.format(receivedRecord.getOccurTime()));//收货任务回传时间
+				//成品收货状态0-未处理;1-处理中;2-处理完成
+//				if(asn.getReceivedQuantity()>0&&asn.getReceivedQuantity()==asn.getPutawayQuantity()){
+//					jsonobj2.put("TASAT", "2");
+//				}else {
+//					jsonobj2.put("TASAT", "1");
+//				}
+//				jsonobj2.put("MANUAL", "");
+			} 
+			array.add(jsonobj2);
+			jsonobj.put("requestBody", array);
+			logger.info(jsonobj);
+			if(asn.getCode().indexOf("RP")==-1&&(billType.getCode().equals("CPUTASN")||billType.getCode().equals("ZPUTASN")||billType.getCode().equals("QPUTASN"))
+					&&asn.getCode().indexOf("OT")==-1) {
+				if(getPropertiesParm("ldxt.bz").equals("1")) {
+					
+			String flag = doWmsReqMes1(getPropertiesParm("ldxt.MES")+ApiURL.returnMESIN, jsonobj.toString(),"入库"+billType.getCode()+becode);
+			
+			if (flag!=null) {
+//				
+			}
+			}
+			}
+		}
+	}
+
+
+
+
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java
index 4240fcc..74b581d 100644
--- a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java
+++ b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultInterfaceRespManager.java
@@ -1019,7 +1019,291 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I
 			return   json11;
 	}
 	
-	
+		//SAP-WMS:成品退回出库任务接口
+		@Override
+		public JSONObject storeZPUTPTCmes(DataInterfaceLog log, String data) {
+			JSONObject json0 = new JSONObject();
+			JSONArray resultInfo = new JSONArray();
+			BillType billType=null;
+			List BillTypes =  commonDao.findByQuery(" from BillType bt where bt.code=:code",
+					new String[] { "code"},new Object[] {"ZPUTPTC"});
+			// TODO 自动生成的方法存根
+			String msg="";
+			JSONArray arrayItem=new JSONArray();
+			JSONObject json = jsonDataPT(data);
+			JSONArray pickTickets=new JSONArray();
+			try {
+				pickTickets=json.getJSONArray("header");
+			}catch (Exception e) {
+				// TODO: handle exception
+			}
+			 
+			
+			String billTypess="ZPUTPTC";//单据类型
+			SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			
+			List billTypes=commonDao.findByQuery(" from BillType bt where bt.code='"+billTypess+"'");//单据类型查询
+			for(int j=0;j Items =  commonDao.findByQuery(" from Item item where item.code=:code",
+						new String[] { "code"},new Object[] {MATNR});
+				if (Items.size()<=0) {
+					JSONObject objectItem=new JSONObject();
+					objectItem.put("TAALS", RQORD);
+					objectItem.put("MATNR", MATNR);
+					objectItem.put("errorcode", "205");
+					objectItem.put("errordescr", "料号不存在!");
+					resultInfo.add(objectItem);
+					continue;
+				}else{
+					item=Items.get(0);
+				}
+			
+				if(msg==null || msg.length()<=0){
+					if (BillTypes.size()>0) {
+						billType=BillTypes.get(0);
+					}else{
+						billType=this.load(BillType.class, 1020L);
+					}
+					
+					PickTicket pTicket=null;
+					List pTickets =  commonDao.findByQuery(" from PickTicket pt where pt.code=:RQORD",
+							new String[] { "RQORD"},new Object[] {RQORD});
+					if (pTickets.size()>0) {
+						pTicket=pTickets.get(0);
+					}else {
+						pTicket=EntityFactory.getEntity(PickTicket.class);
+					}
+					pTicket.setCode(RQORD);
+					pTicket.setBillType(billType);
+					pTicket.setRelatedBill1(relatedBill1);
+//					pTicket.setRelatedBill2(RECORDN);
+					
+					if(NEEDDATE!=null&&!NEEDDATE.equals("")) {
+						try {
+							
+							pTicket.setShipDate(sdf.parse(NEEDDATE));
+							pTicket.setUpdateTime(sf.parse(TACDA+" "+TACTI));
+						} catch (ParseException e) {
+							// TODO 自动生成的 catch 块
+							e.printStackTrace();
+						}
+						
+					}else {
+						pTicket.setOrderDate(new Date());
+					}
+					
+					pTicket.setShipDate(new Date());
+					pTicket.setWarehouse(warehouse);
+					Structure company=this.load(Structure.class, 1L);
+					pTicket.setCompany(company);
+					pTicket.setStatus(PickTicketStatus.OPEN);
+					if(BWART!=null&&BWART.length()>0) {
+						pTicket.setSourceType(BWART);//成品出库
+					}else {
+						pTicket.setSourceType("ZPUTPTC");//成品出库
+					}
+					pTicket.setOrderDate(pTicket.getOrderDate());//订单日期
+//					pTicket.setCode(this.bussinessCodeManager.getCodeForYm("PT",5));//自动生成出库单号
+					pTicket.setBillType(billTypes.get(0));//单据类型
+					pTicket.setStatus(PickTicketStatus.OPEN);//状态
+					pTicket.setOrderQuantity(1);//出库数量
+					pTicket.setOrderDate(new Date());//创建日期
+					commonDao.store(pTicket);
+					PickTicketDetail ptd =null;
+					List PickTicketDetails =  commonDao.findByQuery(" from PickTicketDetail ptd where "
+							+ " ptd.pickTicket.id=:id and ptd.item.id=:sourceId ",
+					new String[] { "id","sourceId"},new Object[] {pTicket.getId(),item.getId()});
+					if (PickTicketDetails.size()>0) {
+						ptd=PickTicketDetails.get(0);
+					}else{
+						ptd=EntityFactory.getEntity(PickTicketDetail.class);
+					}
+					ptd.setSourceId(RQORD);
+					ptd.setItem(item);
+					ptd.setOrderQuantity(1);//出库数量
+					ptd.setLineNumber(strBill3);
+					ptd.setLocationName(LGORT);
+					ptd.setOrderQuantity(Double.parseDouble(QTY));
+					ptd.setOrderQtyOfMasterUnit(ptd.getOrderQuantity());
+					NewLotInfo newLotInfo=new NewLotInfo();
+					newLotInfo.setPropC9(WERKS);
+					newLotInfo.setPropC2(LGORT);
+					ptd.setNewLotInfo(newLotInfo);
+					ptd.setPickTicket(pTicket);
+					commonDao.store(ptd);
+					pickTicketManager.refreshOrderQuantity(pTicket);
+				}
+			}
+				json0.accumulate("returnCode", "200");
+				json0.accumulate("returnFlag", "1");
+				json0.accumulate("returnDesc", "成功");
+				json0.accumulate("resultInfo", resultInfo);
+				JSONObject json1 = new JSONObject();
+				json1.put("return", json0);
+				JSONObject json11 = new JSONObject();
+				json11.put("Response", json1);
+				interfaceManager.updateDataInterfaceLog(log, null,json11.toString());
+				return   json11;
+		}
+			//SAP-WMS:成品变更出库任务接口
+		@Override
+		public JSONObject storeZPUTUPDATEmes(DataInterfaceLog log, String data) {
+					JSONObject json0 = new JSONObject();
+					JSONArray resultInfo = new JSONArray();
+					BillType billType=null;
+					List BillTypes =  commonDao.findByQuery(" from BillType bt where bt.code=:code",
+							new String[] { "code"},new Object[] {"ZPUTMV"});
+					// TODO 自动生成的方法存根
+					String msg="";
+					JSONArray arrayItem=new JSONArray();
+					JSONObject json = jsonDataPT(data);
+					JSONArray pickTickets=json.getJSONArray("header");
+					String billTypess="ZPUTMV";//单据类型
+					SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+					List billTypes=commonDao.findByQuery(" from BillType bt where bt.code='"+billTypess+"'");//单据类型查询
+					for(int j=0;j Items =  commonDao.findByQuery(" from Item item where item.code=:code",
+								new String[] { "code"},new Object[] {MATNR});
+						if (Items.size()<=0) {
+							JSONObject objectItem=new JSONObject();
+							objectItem.put("TAALS", RQORD);
+							objectItem.put("MATNR", MATNR);
+							objectItem.put("errorcode", "205");
+							objectItem.put("errordescr", "料号不存在!");
+							resultInfo.add(objectItem);
+							continue;
+						}else{
+							item=Items.get(0);
+						}
+						
+						if(msg==null || msg.length()<=0){
+							if (BillTypes.size()>0) {
+								billType=BillTypes.get(0);
+							}else{
+								billType=this.load(BillType.class, 1020L);
+							}
+							
+							PickTicket pTicket=null;
+							List pTickets =  commonDao.findByQuery(" from PickTicket pt where pt.code=:RQORD",
+									new String[] { "RQORD"},new Object[] {RQORD});
+							if (pTickets.size()>0) {
+								pTicket=pTickets.get(0);
+							}else {
+								pTicket=EntityFactory.getEntity(PickTicket.class);
+							}
+							pTicket.setCode(RQORD);
+							pTicket.setBillType(billType);
+							pTicket.setRelatedBill1(relatedBill1);
+							pTicket.setRelatedBill2(relatedBill2);
+							if(NEEDDATE!=null&&!NEEDDATE.equals("")) {
+								try {
+									pTicket.setShipDate(sdf.parse(NEEDDATE));
+									pTicket.setUpdateTime(sf.parse(TACDA+" "+TACTI));
+								} catch (ParseException e) {
+									// TODO 自动生成的 catch 块
+									e.printStackTrace();
+								}
+								
+							}else {
+								pTicket.setOrderDate(new Date());
+							}
+							pTicket.setShipDate(new Date());
+							pTicket.setWarehouse(warehouse);
+							Structure company=this.load(Structure.class, 1L);
+							pTicket.setCompany(company);
+							pTicket.setStatus(PickTicketStatus.OPEN);
+							if(BWART!=null&&BWART.length()>0) {
+								pTicket.setSourceType(BWART);//成品出库
+							}else {
+								pTicket.setSourceType("ZPUTPTC");//成品出库
+							}
+							pTicket.setOrderDate(pTicket.getOrderDate());//订单日期
+//							pTicket.setCode(this.bussinessCodeManager.getCodeForYm("PT",5));//自动生成出库单号
+							pTicket.setBillType(billTypes.get(0));//单据类型
+							pTicket.setStatus(PickTicketStatus.OPEN);//状态
+							pTicket.setOrderQuantity(1);//出库数量
+							pTicket.setOrderDate(new Date());//创建日期
+							commonDao.store(pTicket);
+							PickTicketDetail ptd =null;
+							List PickTicketDetails =  commonDao.findByQuery(" from PickTicketDetail ptd where "
+									+ " ptd.pickTicket.id=:id and ptd.item.id=:sourceId ",
+							new String[] { "id","sourceId"},new Object[] {pTicket.getId(),item.getId()});
+							if (PickTicketDetails.size()>0) {
+								ptd=PickTicketDetails.get(0);
+							}else{
+								ptd=EntityFactory.getEntity(PickTicketDetail.class);
+							}
+							ptd.setSourceId(RQORD);
+							ptd.setItem(item);
+							ptd.setOrderQuantity(1);//出库数量
+							ptd.setLineNumber(strBill3);
+							ptd.setLocationName(LGORT);
+							ptd.setOrderQuantity(Double.parseDouble(QTY));
+							ptd.setOrderQtyOfMasterUnit(ptd.getOrderQuantity());
+							NewLotInfo newLotInfo=new NewLotInfo();
+							newLotInfo.setPropC9(WERKS);
+							newLotInfo.setPropC2(LGORT);
+							ptd.setNewLotInfo(newLotInfo);
+							ptd.setPickTicket(pTicket);
+							ptd.setStrBill10(NEWCASENUMBER);//新箱号
+							ptd.setStrBill11(NEWMATNR1);//新料号
+							commonDao.store(ptd);
+							pickTicketManager.refreshOrderQuantity(pTicket);
+						}
+					}
+						json0.accumulate("returnCode", "200");
+						json0.accumulate("returnFlag", "1");
+						json0.accumulate("returnDesc", "成功");
+						json0.accumulate("resultInfo", resultInfo);
+						JSONObject json1 = new JSONObject();
+						json1.put("return", json0);
+						JSONObject json11 = new JSONObject();
+						json11.put("Response", json1);
+						interfaceManager.updateDataInterfaceLog(log, null,json11.toString());
+						return   json11;
+				}
+		
+		
 	@Override
 	public JSONObject storeQPUTPTCsap(DataInterfaceLog log, String data) {		
 		JSONObject json0 = new JSONObject();
@@ -1343,7 +1627,145 @@ public class DefaultInterfaceRespManager extends DefaultBaseManager implements I
 		interfaceManager.updateDataInterfaceLog(log, null,json11.toString());
 	    return	json11;	
 	}
-	
+	//mes成品入库
+	public JSONObject storeMESZPUTASN(DataInterfaceLog log, String data) {
+		JSONObject json0 = new JSONObject();
+		JSONArray resultInfo = new JSONArray();
+		String returnCode="205";
+		String returnDesc="0";
+		String returnFlag="";
+		JSONArray jsonArray = jsonData(data);//解析报文数据
+		String billType="ZPUTASN";
+		List billTypes=commonDao.findByQuery(" from BillType bt where bt.code='"+billType+"'");//单据类型查询
+		//循环报文数据
+		for(int j=0;j asns =  commonDao.findByQuery(" from ASN asn where asn.code=:code ",
+					new String[] { "code"},new Object[] {PO});
+			ASN asndb=EntityFactory.getEntity(ASN.class);
+			if (asns.size()>0) {//查询收货表是否有数据 
+				asndb=asns.get(0);//如果有数据就显示查询到的数据
+			}else {//如果没有数据 上面获取的数据就放到 asndb里面去 
+				asndb.setCode(PO);
+				asndb.setOrderDate(orderDate);
+				asndb.setStatus(ASNStatus.OPEN);
+			}
+			asndb.setUserName("HANDABAP");
+			asndb.setCompany(commonDao.load(Structure.class, 1L));//默认客户
+			asndb.setCode(PO);//接口任务号
+			asndb.setRelatedBill1(strBill7);//自动生成收货凭证号
+			asndb.setRelatedBill2(SERNR);//项目号
+			asndb.setWarehouse(this.load(Warehouse.class, 1L));//默认仓库
+			asndb.setOrderDate(asndb.getOrderDate());//收货日期
+			asndb.setStatus(ASNStatus.OPEN);//状态
+			asndb.setBillType(billTypes.get(0));//单据类型
+			asndb.setOrderDate(orderDate);
+			asndb.setSourceType(sourceType);//移位类型
+//			asndb.setExpectedQuantity(1);//订单数量
+			asndb.setChejian(productLine);//产品线
+			commonDao.store(asndb);
+			ASNDetail asnDetail=EntityFactory.getEntity(ASNDetail.class);
+			List asnDetails =  commonDao.findByQuery(" from ASNDetail ad where ad.item.code=:itemCode  and ad.asn.id=:id",
+					new String[] { "itemCode","id"},new Object[] {itemCode,asndb.getId()});
+			if (asnDetails.size()>0) {
+				asnDetail=asnDetails.get(0);
+			}
+			asnDetail.setExpectedQuantity(1);
+			asnDetail.setSourceId(PO);
+			Item item=null;
+			List-  items=this.commonDao.findByQuery("from Item it where it.code='"+itemCode+"' ");
+			if (items.size()>0) {
+				item=items.get(0);
+			}else{
+				item=EntityFactory.getEntity(Item.class);
+				item.setCode(itemCode);
+				item.setName(itemCode);
+				item.setSpecs("");
+				item.setShipRules("");
+				item.setUnit(meins);
+				item.setGoodType("");
+//				item.setWeight(weight);
+//				item.setLength(length);
+//				item.setWidth(width);
+//				item.setHeight(height);
+				item.setFeeType("MES");
+//				List warehouseAreas=this.commonDao.findByQuery("from WarehouseArea wa where wa.id="+1763l+"");
+//				if (warehouseAreas.size()>0) {
+//					item.setWarehouseArea(warehouseAreas.get(0));
+//				}
+				commonDao.store(item);
+			}
+			LotInfo lotInfo=new LotInfo();
+			lotInfo.setPropC2(propC2);
+			lotInfo.setPropC9(propC9);
+			asnDetail.setLotInfo(lotInfo);
+			asnDetail.setCreateDate(new Date());
+//			asnDetail.setSourceId(new Date().getTime()+"");
+			asnDetail.setItem(item);//物料描述(货品)(物料料号)
+//			asnDetail.setStrBill3(zfggr);//
+			asnDetail.setStrBill1(casenumber);//箱号
+//			asnDetail.setStrBill6();
+			asnDetail.setStrBill7(strBill7);
+//			asnDetail.setStrBill8(strBill1);
+//			asnDetail.setRelatedBill2(Recordn);
+//			asnDetail.setRelatedBill3(Returned);
+			asnDetail.setAsn(asndb);//把收货单(收货表数据)存到收货明细中去
+			asnDetail.setWeight(weight);//重量
+			asnDetail.setLength(length);
+			asnDetail.setWidth(width);
+			asnDetail.setHeight(height);
+			commonDao.store(asnDetail);
+			asnManager.addASNDetail(asndb.getId(),asnDetail);
+			returnCode="200";
+			returnFlag="1";
+			returnDesc="成功";
+		}
+		
+		json0.accumulate("returnCode", returnCode);
+		json0.accumulate("returnFlag", returnFlag);
+		json0.accumulate("returnDesc", returnDesc);
+		json0.accumulate("resultInfo", resultInfo);
+		
+		JSONObject json1 = new JSONObject();
+		json1.put("return", json0);
+		JSONObject json11 = new JSONObject();
+		json11.put("Response", json1);
+		interfaceManager.updateDataInterfaceLog(log, null,json11.toString());
+	    return	json11;	
+	}
 	//OA下发:无PO、无料号的收货
 	@Override
 	public JSONObject storeOAPUTASNoa(DataInterfaceLog log, String data) {
diff --git a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java
index ca3adb2..72974ca 100644
--- a/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java
+++ b/src/main/java/com/dev/swms/server/service/interfaceLog/pojo/DefaultQueryAppManager.java
@@ -3134,8 +3134,14 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 //									}
 											String belcos="否";
 										if(ik.getLotInfo()!=null&&ik.getLotInfo().getPropC2()!=null
-												&&ik.getLotInfo().getPropC2().equals("SL19")) {
-											belcos="是";
+												) {
+											String lco=ik.getLotInfo().getPropC2();
+											List list=commonDao.findByQuery("select pl.id from PlantLocation as pl "
+													+ "where pl.code='"+lco+"' and pl.beRegister=1 ");
+											if(list.size()>0) {
+												belcos="是";
+											}
+											
 										}
 									String beMarkWeight="";
 									if(ik.isBeMarkWeight()){
@@ -10002,7 +10008,7 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 		try {
 			if (workerId > 0) {
 				if (wId > 0) {
-
+					
 					String hql="select p.id,z.LEVELS,p.CODE," + 
 							" STUFF((SELECT  ','+CONVERT(nvarchar(10),a.id)  FROM TASK a\r\n" + 
 							"	left join PICK_TICKET_DETAIL pt1 on pt1.id=a.PICK_TICKET_DETAIL_ID\r\n" + 
@@ -10024,7 +10030,8 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 							" left join zone z on z.id=loc.ZONE_ID \r\n" + 
 							" left join LOCATION lc on lc.ID=t.DST_LOC_ID \r\n" + 
 							" where t.INVENTORY_STATUS='合单完成' and t.PLAN_QUANTITY_MU>0 "
-							+ " and t.LEAVE_TIME is null and lc.zone_id<>1787 and t.MOVED_QUANTITY_MU>0\r\n" ; 
+							+ " and t.LEAVE_TIME is null and lc.zone_id<>1787 "
+							+ "and t.MOVED_QUANTITY_MU>0\r\n" ; 
 							
 					if(billcode!=null&&!billcode.equals("")) {
 						if(billcode.equals("3")) {
@@ -10050,6 +10057,84 @@ public class DefaultQueryAppManager extends DefaultBaseManager implements QueryA
 					}
 					hql+=	" group by  p.id,p.CODE,z.LEVELS "
 							+ " order by max(p.equated_Quantity) desc,max(t.operator_Date),p.CODE,p.id,z.LEVELS ";
+					
+					
+					/**
+					String hql=" WITH TaskData AS (\r\n" + 
+							"    SELECT \r\n" + 
+							"        t.id AS task_id,\r\n" + 
+							"        p.id AS pick_ticket_id,\r\n" + 
+							"        p.CODE,\r\n" + 
+							"        z.LEVELS,\r\n" + 
+							"        p.equated_Quantity,\r\n" + 
+							"        t.BILLCODE,\r\n" + 
+							"        t.WORKER2_ID,\r\n" + 
+							"        t.operator_Date,\r\n" + 
+							"        lc.code AS lc_code\r\n" + 
+							"    FROM TASK t \r\n" + 
+							"    INNER JOIN PICK_TICKET_DETAIL pt ON pt.id = t.PICK_TICKET_DETAIL_ID \r\n" + 
+							"    INNER JOIN PICK_TICKET p ON p.id = pt.PICK_TICKET_ID \r\n" + 
+							"    INNER JOIN LOCATION loc ON loc.ID = t.SRC_LOC_ID\r\n" + 
+							"    INNER JOIN ZONE z ON z.id = loc.ZONE_ID  \r\n" + 
+							"    INNER JOIN LOCATION lc ON lc.ID = t.DST_LOC_ID \r\n" + 
+							"    WHERE t.INVENTORY_STATUS = '合单完成' \r\n" + 
+							"        AND t.PLAN_QUANTITY_MU > 0 \r\n" + 
+							"        AND t.MOVED_QUANTITY_MU > 0\r\n" + 
+							"        AND t.LEAVE_TIME IS NULL \r\n" + 
+							"        AND lc.zone_id <> 1787\r\n" ;
+					
+					if(billcode!=null&&!billcode.equals("")) {
+						if(billcode.equals("3")) {
+							hql+=" and z.LEVELS=3 ";
+						}else if(billcode.equals("7")){
+							hql+=" and z.LEVELS=7 ";
+						}
+					}else {
+							hql+=" and z.LEVELS in(3,7) ";
+					}
+					if(p_code!=null&&!p_code.equals("")) {
+						String str []=	p_code.split("/");
+						if(str.length>2) {
+							p_code=str[1];
+						}
+					String[] stringArray= p_code.split("-");
+					if(stringArray.length>0) {
+						p_code=stringArray[0].toString();
+					}
+					hql+=" and p.CODE='"+p_code+"'";
+				}		
+							
+							hql=hql+"), " + 
+							"AggregatedTasks AS ( \r\n" + 
+							"    SELECT \r\n" + 
+							"        pick_ticket_id,\r\n" + 
+							"        CODE,\r\n" + 
+							"        LEVELS,\r\n" + 
+							"        STRING_AGG(CONVERT(nvarchar(10), task_id), ',') AS tids,\r\n" + 
+							"        MAX(equated_Quantity) AS soi,\r\n" + 
+							"        COUNT(DISTINCT BILLCODE) AS BILLCODE,\r\n" + 
+							"        MAX(CASE WHEN WORKER2_ID IS NULL THEN 1 ELSE 0 END) AS wor,\r\n" + 
+							"        MAX(lc_code) AS lc_code,\r\n" + 
+							"        MAX(operator_Date) AS last_operator_date\r\n" + 
+							"    FROM TaskData\r\n" + 
+							"    GROUP BY pick_ticket_id, CODE, LEVELS\r\n" + 
+							")\r\n" + 
+							"SELECT \r\n" + 
+							"    pick_ticket_id AS id,\r\n" + 
+							"    LEVELS,\r\n" + 
+							"    CODE,\r\n" + 
+							"    tids,\r\n" + 
+							"    soi,\r\n" + 
+							"    BILLCODE,\r\n" + 
+							"    wor,\r\n" + 
+							"    lc_code,\r\n" + 
+							"    DATEDIFF(minute, last_operator_date, GETDATE()) AS hsh\r\n" + 
+							" FROM AggregatedTasks\r\n" + 
+							" ORDER BY soi DESC, last_operator_date, CODE, pick_ticket_id, LEVELS";
+					System.out.println(hql);
+					*/
+					
+					
 					Query   query   =   session.createSQLQuery(hql.toString()); 
 					List