From d5e3e8e67e817f0146df30d92ff8a16db674bea8 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期一, 25 九月 2023 11:03:20 +0800
Subject: [PATCH] 9-25

---
 base-server/src/main/java/com/yuanchu/mom/service/impl/TechnicalModelServiceImpl.java |   12 
 base-server/src/main/java/com/yuanchu/mom/service/TechnicalModelService.java          |    8 
 inventory-server/src/main/java/com/yuanchu/mom/Task/BatchInfo.java                    |   22 +
 framework/src/main/java/com/yuanchu/mom/utils/StringUtils.java                        |  403 +++++++++++++++++++++++++++++++++
 framework/src/main/java/com/yuanchu/mom/utils/ServletUtils.java                       |  137 +++++++++++
 inventory-server/src/main/java/com/yuanchu/mom/Task/InAttr.java                       |   29 ++
 inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java                    |   47 +++
 pom.xml                                                                               |    6 
 base-server/src/main/java/com/yuanchu/mom/controller/TechnicalModelController.java    |   14 +
 9 files changed, 665 insertions(+), 13 deletions(-)

diff --git a/base-server/src/main/java/com/yuanchu/mom/controller/TechnicalModelController.java b/base-server/src/main/java/com/yuanchu/mom/controller/TechnicalModelController.java
index d10ec7e..7d623ae 100644
--- a/base-server/src/main/java/com/yuanchu/mom/controller/TechnicalModelController.java
+++ b/base-server/src/main/java/com/yuanchu/mom/controller/TechnicalModelController.java
@@ -2,7 +2,8 @@
 
 
 import com.yuanchu.mom.pojo.dto.TechnicalModelDto;
-import com.yuanchu.mom.pojo.dto.TechnologyTemplateDto;
+import com.yuanchu.mom.service.TechnicalModelService;
+import com.yuanchu.mom.utils.ServletUtils;
 import com.yuanchu.mom.vo.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -11,7 +12,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import com.yuanchu.mom.service.TechnicalModelService;
+
+import javax.servlet.http.HttpServletResponse;
 
 
 /**
@@ -112,5 +114,13 @@
         return Result.success("鎵归噺鍒犻櫎鎴愬姛!");
     }
 
+    @ApiOperation(value = "瀵煎嚭")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "type", value = "绫诲瀷", dataTypeClass = String.class, required = true)
+    })
+    public void downloadDataValueExcel(String type){
+        HttpServletResponse response = ServletUtils.getResponse();
+        technicalModelService.downloadDataValueExcel(response,type);
+    }
 }
 
diff --git a/base-server/src/main/java/com/yuanchu/mom/service/TechnicalModelService.java b/base-server/src/main/java/com/yuanchu/mom/service/TechnicalModelService.java
index 21ac728..62a530f 100644
--- a/base-server/src/main/java/com/yuanchu/mom/service/TechnicalModelService.java
+++ b/base-server/src/main/java/com/yuanchu/mom/service/TechnicalModelService.java
@@ -4,6 +4,7 @@
 import com.yuanchu.mom.pojo.TechnicalModel;
 import com.yuanchu.mom.pojo.dto.TechnicalModelDto;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -81,5 +82,12 @@
      * @param ids
      */
     void delAllTech(String ids);
+
+    /**
+     * 瀵煎嚭
+     * @param response
+     * @param type
+     */
+    void downloadDataValueExcel(HttpServletResponse response, String type);
 }
 
diff --git a/base-server/src/main/java/com/yuanchu/mom/service/impl/TechnicalModelServiceImpl.java b/base-server/src/main/java/com/yuanchu/mom/service/impl/TechnicalModelServiceImpl.java
index d1e3e0b..c7ab012 100644
--- a/base-server/src/main/java/com/yuanchu/mom/service/impl/TechnicalModelServiceImpl.java
+++ b/base-server/src/main/java/com/yuanchu/mom/service/impl/TechnicalModelServiceImpl.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yuanchu.mom.mapper.TechnicalModelMapper;
-import com.yuanchu.mom.mapper.TechniqueModelMapper;
 import com.yuanchu.mom.pojo.TechnicalModel;
 import com.yuanchu.mom.pojo.dto.TechnicalModelDto;
 import com.yuanchu.mom.service.TechnicalModelService;
@@ -11,6 +10,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -96,5 +96,15 @@
     public void delAllTech(String ids) {
         technicalModelMapper.delAllTech(ids);
     }
+
+    /**
+     * 瀵煎嚭
+     * @param response
+     * @param type
+     */
+    @Override
+    public void downloadDataValueExcel(HttpServletResponse response, String type) {
+
+    }
 }
 
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/ServletUtils.java b/framework/src/main/java/com/yuanchu/mom/utils/ServletUtils.java
new file mode 100644
index 0000000..d5c7ba9
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/ServletUtils.java
@@ -0,0 +1,137 @@
+package com.yuanchu.mom.utils;
+
+
+import cn.hutool.core.convert.Convert;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+
+/**
+ * 瀹㈡埛绔伐鍏风被
+ *
+ * @author 寮犲
+ */
+public class ServletUtils
+{
+    /**
+     * 鑾峰彇String鍙傛暟
+     */
+    public static String getParameter(String name)
+    {
+        return getRequest().getParameter(name);
+    }
+
+    /**
+     * 鑾峰彇String鍙傛暟
+     */
+    public static String getParameter(String name, String defaultValue)
+    {
+        return Convert.toStr(getRequest().getParameter(name), defaultValue);
+    }
+
+    /**
+     * 鑾峰彇Integer鍙傛暟
+     */
+    public static Integer getParameterToInt(String name)
+    {
+        return Convert.toInt(getRequest().getParameter(name));
+    }
+
+    /**
+     * 鑾峰彇Integer鍙傛暟
+     */
+    public static Integer getParameterToInt(String name, Integer defaultValue)
+    {
+        return Convert.toInt(getRequest().getParameter(name), defaultValue);
+    }
+
+    /**
+     * 鑾峰彇request
+     */
+    public static HttpServletRequest getRequest()
+    {
+        return getRequestAttributes().getRequest();
+    }
+
+    /**
+     * 鑾峰彇response
+     */
+    public static HttpServletResponse getResponse()
+    {
+        return getRequestAttributes().getResponse();
+    }
+
+    /**
+     * 鑾峰彇session
+     */
+    public static HttpSession getSession()
+    {
+        return getRequest().getSession();
+    }
+
+    public static ServletRequestAttributes getRequestAttributes()
+    {
+        RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
+        return (ServletRequestAttributes) attributes;
+    }
+
+    /**
+     * 灏嗗瓧绗︿覆娓叉煋鍒板鎴风
+     *
+     * @param response 娓叉煋瀵硅薄
+     * @param string 寰呮覆鏌撶殑瀛楃涓�
+     * @return null
+     */
+    public static String renderString(HttpServletResponse response, String string)
+    {
+        try
+        {
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+            response.getWriter().print(string);
+        }
+        catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 鏄惁鏄疉jax寮傛璇锋眰
+     *
+     * @param request
+     */
+    public static boolean isAjaxRequest(HttpServletRequest request)
+    {
+        String accept = request.getHeader("accept");
+        if (accept != null && accept.indexOf("application/json") != -1)
+        {
+            return true;
+        }
+
+        String xRequestedWith = request.getHeader("X-Requested-With");
+        if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1)
+        {
+            return true;
+        }
+
+        String uri = request.getRequestURI();
+        if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
+        {
+            return true;
+        }
+
+        String ajax = request.getParameter("__ajax");
+        if (StringUtils.inStringIgnoreCase(ajax, "json", "xml"))
+        {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/StringUtils.java b/framework/src/main/java/com/yuanchu/mom/utils/StringUtils.java
new file mode 100644
index 0000000..3e4ce41
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/StringUtils.java
@@ -0,0 +1,403 @@
+package com.yuanchu.mom.utils;
+
+import cn.hutool.core.text.StrFormatter;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * 瀛楃涓插伐鍏风被
+ *
+ * @author 寮犲
+ */
+public class StringUtils extends org.apache.commons.lang3.StringUtils
+{
+    /** 绌哄瓧绗︿覆 */
+    private static final String NULLSTR = "";
+
+    /** 涓嬪垝绾� */
+    private static final char SEPARATOR = '_';
+
+    /**
+     * 鑾峰彇鍙傛暟涓嶄负绌哄��
+     * @param value defaultValue 瑕佸垽鏂殑value
+     * @return value 杩斿洖鍊�
+     */
+    public static <T> T nvl(T value, T defaultValue)
+    {
+        return value != null ? value : defaultValue;
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓狢ollection鏄惁涓虹┖锛� 鍖呭惈List锛孲et锛孮ueue
+     *
+     * @param coll 瑕佸垽鏂殑Collection
+     * @return true锛氫负绌� false锛氶潪绌�
+     */
+    public static boolean isEmpty(Collection<?> coll)
+    {
+        return isNull(coll) || coll.isEmpty();
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓狢ollection鏄惁闈炵┖锛屽寘鍚獿ist锛孲et锛孮ueue
+     *
+     * @param coll 瑕佸垽鏂殑Collection
+     * @return true锛氶潪绌� false锛氱┖
+     */
+    public static boolean isNotEmpty(Collection<?> coll)
+    {
+        return !isEmpty(coll);
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓璞℃暟缁勬槸鍚︿负绌�
+     *
+     * @param objects 瑕佸垽鏂殑瀵硅薄鏁扮粍
+     ** @return true锛氫负绌� false锛氶潪绌�
+     */
+    public static boolean isEmpty(Object[] objects)
+    {
+        return isNull(objects) || (objects.length == 0);
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓璞℃暟缁勬槸鍚﹂潪绌�
+     *
+     * @param objects 瑕佸垽鏂殑瀵硅薄鏁扮粍
+     * @return true锛氶潪绌� false锛氱┖
+     */
+    public static boolean isNotEmpty(Object[] objects)
+    {
+        return !isEmpty(objects);
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
+     *
+     * @param map 瑕佸垽鏂殑Map
+     * @return true锛氫负绌� false锛氶潪绌�
+     */
+    public static boolean isEmpty(Map<?, ?> map)
+    {
+        return isNull(map) || map.isEmpty();
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
+     *
+     * @param map 瑕佸垽鏂殑Map
+     * @return true锛氶潪绌� false锛氱┖
+     */
+    public static boolean isNotEmpty(Map<?, ?> map)
+    {
+        return !isEmpty(map);
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓虹┖涓�
+     *
+     * @param str String
+     * @return true锛氫负绌� false锛氶潪绌�
+     */
+    public static boolean isEmpty(String str)
+    {
+        return isNull(str) || NULLSTR.equals(str.trim());
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓洪潪绌轰覆
+     *
+     * @param str String
+     * @return true锛氶潪绌轰覆 false锛氱┖涓�
+     */
+    public static boolean isNotEmpty(String str)
+    {
+        return !isEmpty(str);
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓璞℃槸鍚︿负绌�
+     *
+     * @param object Object
+     * @return true锛氫负绌� false锛氶潪绌�
+     */
+    public static boolean isNull(Object object)
+    {
+        return object == null;
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓璞℃槸鍚﹂潪绌�
+     *
+     * @param object Object
+     * @return true锛氶潪绌� false锛氱┖
+     */
+    public static boolean isNotNull(Object object)
+    {
+        return !isNull(object);
+    }
+
+    /**
+     * * 鍒ゆ柇涓�涓璞℃槸鍚︽槸鏁扮粍绫诲瀷锛圝ava鍩烘湰鍨嬪埆鐨勬暟缁勶級
+     *
+     * @param object 瀵硅薄
+     * @return true锛氭槸鏁扮粍 false锛氫笉鏄暟缁�
+     */
+    public static boolean isArray(Object object)
+    {
+        return isNotNull(object) && object.getClass().isArray();
+    }
+
+    /**
+     * 鍘荤┖鏍�
+     */
+    public static String trim(String str)
+    {
+        return (str == null ? "" : str.trim());
+    }
+
+    /**
+     * 鎴彇瀛楃涓�
+     *
+     * @param str 瀛楃涓�
+     * @param start 寮�濮�
+     * @return 缁撴灉
+     */
+    public static String substring(final String str, int start)
+    {
+        if (str == null)
+        {
+            return NULLSTR;
+        }
+
+        if (start < 0)
+        {
+            start = str.length() + start;
+        }
+
+        if (start < 0)
+        {
+            start = 0;
+        }
+        if (start > str.length())
+        {
+            return NULLSTR;
+        }
+
+        return str.substring(start);
+    }
+
+    /**
+     * 鎴彇瀛楃涓�
+     *
+     * @param str 瀛楃涓�
+     * @param start 寮�濮�
+     * @param end 缁撴潫
+     * @return 缁撴灉
+     */
+    public static String substring(final String str, int start, int end)
+    {
+        if (str == null)
+        {
+            return NULLSTR;
+        }
+
+        if (end < 0)
+        {
+            end = str.length() + end;
+        }
+        if (start < 0)
+        {
+            start = str.length() + start;
+        }
+
+        if (end > str.length())
+        {
+            end = str.length();
+        }
+
+        if (start > end)
+        {
+            return NULLSTR;
+        }
+
+        if (start < 0)
+        {
+            start = 0;
+        }
+        if (end < 0)
+        {
+            end = 0;
+        }
+
+        return str.substring(start, end);
+    }
+
+    /**
+     * 鏍煎紡鍖栨枃鏈�, {} 琛ㄧず鍗犱綅绗�<br>
+     * 姝ゆ柟娉曞彧鏄畝鍗曞皢鍗犱綅绗� {} 鎸夌収椤哄簭鏇挎崲涓哄弬鏁�<br>
+     * 濡傛灉鎯宠緭鍑� {} 浣跨敤 \\杞箟 { 鍗冲彲锛屽鏋滄兂杈撳嚭 {} 涔嬪墠鐨� \ 浣跨敤鍙岃浆涔夌 \\\\ 鍗冲彲<br>
+     * 渚嬶細<br>
+     * 閫氬父浣跨敤锛歠ormat("this is {} for {}", "a", "b") -> this is a for b<br>
+     * 杞箟{}锛� format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
+     * 杞箟\锛� format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
+     *
+     * @param template 鏂囨湰妯℃澘锛岃鏇挎崲鐨勯儴鍒嗙敤 {} 琛ㄧず
+     * @param params 鍙傛暟鍊�
+     * @return 鏍煎紡鍖栧悗鐨勬枃鏈�
+     */
+    public static String format(String template, Object... params){
+        if (isEmpty(params) || isEmpty(template))
+        {
+            return template;
+        }
+        return StrFormatter.format(template, params);
+    }
+
+    /**
+     * 涓嬪垝绾胯浆椹煎嘲鍛藉悕
+     */
+    public static String toUnderScoreCase(String str)
+    {
+        if (str == null)
+        {
+            return null;
+        }
+        StringBuilder sb = new StringBuilder();
+        // 鍓嶇疆瀛楃鏄惁澶у啓
+        boolean preCharIsUpperCase = true;
+        // 褰撳墠瀛楃鏄惁澶у啓
+        boolean curreCharIsUpperCase = true;
+        // 涓嬩竴瀛楃鏄惁澶у啓
+        boolean nexteCharIsUpperCase = true;
+        for (int i = 0; i < str.length(); i++)
+        {
+            char c = str.charAt(i);
+            if (i > 0)
+            {
+                preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
+            }
+            else
+            {
+                preCharIsUpperCase = false;
+            }
+
+            curreCharIsUpperCase = Character.isUpperCase(c);
+
+            if (i < (str.length() - 1))
+            {
+                nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
+            }
+
+            if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase)
+            {
+                sb.append(SEPARATOR);
+            }
+            else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
+            {
+                sb.append(SEPARATOR);
+            }
+            sb.append(Character.toLowerCase(c));
+        }
+
+        return sb.toString();
+    }
+
+    /**
+     * 鏄惁鍖呭惈瀛楃涓�
+     *
+     * @param str 楠岃瘉瀛楃涓�
+     * @param strs 瀛楃涓茬粍
+     * @return 鍖呭惈杩斿洖true
+     */
+    public static boolean inStringIgnoreCase(String str, String... strs)
+    {
+        if (str != null && strs != null)
+        {
+            for (String s : strs)
+            {
+                if (str.equalsIgnoreCase(trim(s)))
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆傚鏋滆浆鎹㈠墠鐨勪笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆涓虹┖锛屽垯杩斿洖绌哄瓧绗︿覆銆� 渚嬪锛欻ELLO_WORLD->HelloWorld
+     *
+     * @param name 杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓�
+     * @return 杞崲鍚庣殑椹煎嘲寮忓懡鍚嶇殑瀛楃涓�
+     */
+    public static String convertToCamelCase(String name)
+    {
+        StringBuilder result = new StringBuilder();
+        // 蹇�熸鏌�
+        if (name == null || name.isEmpty())
+        {
+            // 娌″繀瑕佽浆鎹�
+            return "";
+        }
+        else if (!name.contains("_"))
+        {
+            // 涓嶅惈涓嬪垝绾匡紝浠呭皢棣栧瓧姣嶅ぇ鍐�
+            return name.substring(0, 1).toUpperCase() + name.substring(1);
+        }
+        // 鐢ㄤ笅鍒掔嚎灏嗗師濮嬪瓧绗︿覆鍒嗗壊
+        String[] camels = name.split("_");
+        for (String camel : camels)
+        {
+            // 璺宠繃鍘熷瀛楃涓蹭腑寮�澶淬�佺粨灏剧殑涓嬫崲绾挎垨鍙岄噸涓嬪垝绾�
+            if (camel.isEmpty())
+            {
+                continue;
+            }
+            // 棣栧瓧姣嶅ぇ鍐�
+            result.append(camel.substring(0, 1).toUpperCase());
+            result.append(camel.substring(1).toLowerCase());
+        }
+        return result.toString();
+    }
+
+    /**
+     * 椹煎嘲寮忓懡鍚嶆硶 渚嬪锛歶ser_name->userName
+     */
+    public static String toCamelCase(String s)
+    {
+        if (s == null)
+        {
+            return null;
+        }
+        s = s.toLowerCase();
+        StringBuilder sb = new StringBuilder(s.length());
+        boolean upperCase = false;
+        for (int i = 0; i < s.length(); i++)
+        {
+            char c = s.charAt(i);
+
+            if (c == SEPARATOR)
+            {
+                upperCase = true;
+            }
+            else if (upperCase)
+            {
+                sb.append(Character.toUpperCase(c));
+                upperCase = false;
+            }
+            else
+            {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
+
+    @SuppressWarnings("unchecked")
+    public static <T> T cast(Object obj)
+    {
+        return (T) obj;
+    }
+}
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/Task/BatchInfo.java b/inventory-server/src/main/java/com/yuanchu/mom/Task/BatchInfo.java
new file mode 100644
index 0000000..e8d5d2a
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/Task/BatchInfo.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.Task;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/9/25
+ */
+@Data
+public class BatchInfo implements Serializable {
+    private String orderNo;
+    private String releaseNo;
+    private String lineNo;
+    private String partNo;
+    private String lotBatchNo;
+    private String locationNo;
+    private Integer qtyToReceive;
+    private Integer qtyToInspect;
+    private String receiveCase;
+}
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/Task/InAttr.java b/inventory-server/src/main/java/com/yuanchu/mom/Task/InAttr.java
new file mode 100644
index 0000000..e17523d
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/Task/InAttr.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.Task;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/9/25
+ */
+@Data
+public class InAttr implements Serializable {
+
+    private String recordId;
+
+    private String syscode;
+
+    private String sysmodel;
+
+    private List<BatchInfo>batchInfo;
+
+    public InAttr(List<BatchInfo> batchInfo) {
+        this.recordId = "13dd9f788718401b90ca3424f2a71412";
+        this.syscode = "PurchReceive";
+        this.sysmodel = "閲囪喘鎺ユ敹aaa";
+        this.batchInfo = batchInfo;
+    }
+}
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java b/inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java
index 00cfc7d..2874e40 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/Task/SyncOrder.java
@@ -5,10 +5,7 @@
 import com.yuanchu.mom.utils.JsonUtil;
 import com.yuanchu.mom.vo.Result;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -27,21 +24,27 @@
 
     private static final String DOWN_LOAD = "http://192.168.18.16:9999/order/otcService/download/";
 
-    private static final String IFS_URL="http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_POL_RECEIPT_STD&userId=mes_user&inAttr={\"ORDER_NO\":\"-2050314\"}";
+    private static final String IFS_URL = "http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_POL_RECEIPT_STD&userId=mes_user&inAttr={\"ORDER_NO\":\"-2050314\"}";
+
+    private static final String IMPORT_POL_RECEIVE = "http://192.168.20.47:8081/ErpServices/PurchaseReceiptService/importPolReceive";
 
     private static final Map<String, String> GET_TOKEN_HEADER = new HashMap<>(2);
 
     private static final Map<String, Object> USER_INFO = new HashMap<>(4);
 
+    private static final Map<String, Object> importPolReceiveMap = new HashMap<>();
+
     static {
         GET_TOKEN_HEADER.put("Authorization", "Basic cGlnOnBpZw==");
         GET_TOKEN_HEADER.put("Content-Type", "application/x-www-form-urlencoded");
-
-
         USER_INFO.put("username", "external_interface_hyxt_mes");
         USER_INFO.put("password", "uCc+u3iP83WhO2dAU+5HUkCgfINnKfrHXMT/lwI/1f0=");
         USER_INFO.put("scope", "server");
         USER_INFO.put("grant_type", "password");
+
+        importPolReceiveMap.put("contract", "ZTKJ");
+        importPolReceiveMap.put("contractKey", "4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=");
+        importPolReceiveMap.put("userId", "mes_user");
     }
 
     private static String getToken() {
@@ -93,13 +96,37 @@
 
     /**
      * ifs
+     *
      * @return
      */
-    public static List<Map<String, Object>>ifsInterfaces(){
+    public static List<Map<String, Object>> ifsInterfaces() {
         String result = HttpRequest.get(IFS_URL)
                 .header("Authorization", "Bearer " + getToken())
                 .execute().body();
-        Map<String, Object>map=JsonUtil.jsonToPojo(result,Map.class);
-        return JsonUtil.jsonToPojo(JsonUtil.jsonToString(map.get("LIST_INFO")),List.class);
+        Map<String, Object> map = JsonUtil.jsonToPojo(result, Map.class);
+        return JsonUtil.jsonToPojo(JsonUtil.jsonToString(map.get("LIST_INFO")), List.class);
+    }
+
+    public static String importPolReceive(List<BatchInfo> batchInfoList) {
+        importPolReceiveMap.put("inAttr", new InAttr(batchInfoList));
+        return HttpRequest.post(IMPORT_POL_RECEIVE)
+                .body(JsonUtil.jsonToString(importPolReceiveMap))
+                .header("content-type", "application/json")
+                .execute().body();
+    }
+
+    public static void main(String[] args) {
+        BatchInfo batchInfo = new BatchInfo();
+        batchInfo.setOrderNo("260984");
+        batchInfo.setReleaseNo("1");
+        batchInfo.setLineNo("1");
+        batchInfo.setPartNo("A0190008000400");
+        batchInfo.setLotBatchNo("*");
+        batchInfo.setLocationNo("QC01");
+        batchInfo.setQtyToReceive(1);
+        batchInfo.setQtyToInspect(0);
+        batchInfo.setReceiveCase("鎺ユ敹鍒版潵鏂欏尯");
+        List<BatchInfo> batchInfos = Arrays.asList(batchInfo);
+        System.out.println(importPolReceive(batchInfos));
     }
 }
diff --git a/pom.xml b/pom.xml
index 797173f..1929bb9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,6 +91,12 @@
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
 
+        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>

--
Gitblit v1.9.3