|
@@ -0,0 +1,246 @@
|
|
|
+package com.galaxis.soap.wms;
|
|
|
+
|
|
|
+import com.galaxis.soap.wms.obj.*;
|
|
|
+import lombok.SneakyThrows;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.util.Assert;
|
|
|
+
|
|
|
+import javax.jws.WebService;
|
|
|
+import javax.xml.namespace.QName;
|
|
|
+import javax.xml.ws.Service;
|
|
|
+import java.net.URL;
|
|
|
+import java.util.*;
|
|
|
+import java.util.concurrent.*;
|
|
|
+
|
|
|
+@WebService(serviceName = "WMSService", // 与接口中指定的name一致
|
|
|
+ targetNamespace = "http://service.jztd.com", // 与接口中的命名空间一致,一般是接口的包名倒
|
|
|
+ endpointInterface = "com.galaxis.soap.wms.WMSService"// 接口地址
|
|
|
+)
|
|
|
+@Slf4j
|
|
|
+public class WMSServiceImpl implements WMSService {
|
|
|
+ private static final String errorMsg = "当前下传数据中存在多个仓库的业务数据下传失败,请检查数据,一次只能下传一个仓库的业务数据";
|
|
|
+
|
|
|
+ private static final ThreadPoolExecutor EXECUTOR = new ThreadPoolExecutor(
|
|
|
+ 512,
|
|
|
+ 512,
|
|
|
+ 1,
|
|
|
+ TimeUnit.SECONDS,
|
|
|
+ new LinkedBlockingQueue<>(4096)
|
|
|
+ );
|
|
|
+
|
|
|
+ private static final String API = "/wms/api";
|
|
|
+ // 山西
|
|
|
+ //private static final String SX = "http://127.0.0.1:8082";
|
|
|
+ // 重庆
|
|
|
+ private static final String CQ = "http://127.0.0.1:8182";
|
|
|
+ // 广西
|
|
|
+ private static final String GX = "http://127.0.0.1:8282";
|
|
|
+ // 四川
|
|
|
+ private static final String SC = "http://127.0.0.1:8382";
|
|
|
+ // 物流中心编码与WebService服务映射
|
|
|
+ private static final ConcurrentMap<String, String> WMS_MAPPING = new ConcurrentHashMap<String, String>() {{
|
|
|
+ put("D104", ""); // 山西鸿翔一心堂药业有限公司
|
|
|
+ put("D103", SC); // 四川鸿翔一心堂药业有限公司
|
|
|
+ put("D105", CQ); // 重庆鸿翔一心堂药业有限公司
|
|
|
+ put("D907", ""); // 上海鸿翔一心堂药业有限公司
|
|
|
+ put("D101", GX); // 广西鸿翔一心堂药业有限公司
|
|
|
+ put("D110", ""); // 河南鸿翔一心堂药业有限公司
|
|
|
+ put("D115", ""); // 一心堂药业(山西)有限公司
|
|
|
+ put("D102", ""); // 贵州鸿翔-一心堂药业有限公司
|
|
|
+ put("D106", ""); // 成都鸿翔一心堂药业有限公司
|
|
|
+ put("D109", ""); // 海南鸿翔一心堂药业有限公司
|
|
|
+ put("D301", ""); // 海南一心堂医药有限公司
|
|
|
+ put("D100", ""); // 一心堂药业集团股份有限公司
|
|
|
+ put("D300", ""); // 云南鸿云药业有限公司
|
|
|
+ put("D108", ""); // 天津鸿翔一心堂药业有限公司
|
|
|
+ put("D900", ""); // 一心到家科技公司(电商仓)
|
|
|
+ put("D504", ""); // 医云医疗产业发展(云南)有限公司
|
|
|
+ }};
|
|
|
+
|
|
|
+ private static final ConcurrentMap<String, WMSService> SERVICE_MAPPING = new ConcurrentHashMap<>(WMS_MAPPING.size());
|
|
|
+
|
|
|
+ @SneakyThrows
|
|
|
+ public WMSServiceImpl() {
|
|
|
+ for (Map.Entry<String, String> entry : WMS_MAPPING.entrySet()) {
|
|
|
+ String bwkey = entry.getKey();
|
|
|
+ String host = entry.getValue();
|
|
|
+ if (StringUtils.isBlank(host)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ URL url = new URL(host + API + "?wsdl");
|
|
|
+ QName qName = new QName("http://service.jztd.com", "WMSService");
|
|
|
+ Service service = Service.create(url, qName);
|
|
|
+ WMSService wmsService = service.getPort(WMSService.class);
|
|
|
+ SERVICE_MAPPING.put(bwkey, wmsService);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @SneakyThrows
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_01> MT_KUNNR_IN_WMS01(List<DT_KUNNR_IN_01> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS01", params);
|
|
|
+ List<Future<List<DT_KUNNR_IN_RT_01>>> futureList = new ArrayList<>(SERVICE_MAPPING.size());
|
|
|
+ for (WMSService wmsService : SERVICE_MAPPING.values()) {
|
|
|
+ Future<List<DT_KUNNR_IN_RT_01>> future = EXECUTOR.submit(() -> wmsService.MT_KUNNR_IN_WMS01(params));
|
|
|
+ futureList.add(future);
|
|
|
+ }
|
|
|
+ List<DT_KUNNR_IN_RT_01> res = null;
|
|
|
+ for (Future<List<DT_KUNNR_IN_RT_01>> future : futureList) {
|
|
|
+ res = future.get();
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @SneakyThrows
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_02> MT_KUNNR_IN_WMS02(List<DT_KUNNR_IN_02> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS02", params);
|
|
|
+ List<Future<List<DT_KUNNR_IN_RT_02>>> futureList = new ArrayList<>(SERVICE_MAPPING.size());
|
|
|
+ for (WMSService wmsService : SERVICE_MAPPING.values()) {
|
|
|
+ Future<List<DT_KUNNR_IN_RT_02>> future = EXECUTOR.submit(() -> wmsService.MT_KUNNR_IN_WMS02(params));
|
|
|
+ futureList.add(future);
|
|
|
+ }
|
|
|
+ List<DT_KUNNR_IN_RT_02> res = null;
|
|
|
+ for (Future<List<DT_KUNNR_IN_RT_02>> future : futureList) {
|
|
|
+ res = future.get();
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ @SneakyThrows
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_03> MT_KUNNR_IN_WMS03(List<DT_KUNNR_IN_03> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS03", params);
|
|
|
+ List<Future<List<DT_KUNNR_IN_RT_03>>> futureList = new ArrayList<>(SERVICE_MAPPING.size());
|
|
|
+ for (WMSService wmsService : SERVICE_MAPPING.values()) {
|
|
|
+ Future<List<DT_KUNNR_IN_RT_03>> future = EXECUTOR.submit(() -> wmsService.MT_KUNNR_IN_WMS03(params));
|
|
|
+ futureList.add(future);
|
|
|
+ }
|
|
|
+ List<DT_KUNNR_IN_RT_03> res = null;
|
|
|
+ for (Future<List<DT_KUNNR_IN_RT_03>> future : futureList) {
|
|
|
+ res = future.get();
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ // -------------------------------------------------------------------------------------------
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_04> MT_KUNNR_IN_WMS04(List<DT_KUNNR_IN_04> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS04", params);
|
|
|
+ Set<String> bwkeySet = new HashSet<>();
|
|
|
+ params.forEach(item -> bwkeySet.add(item.getBWKEY()));
|
|
|
+ Assert.isTrue(bwkeySet.size() <= 1, errorMsg);
|
|
|
+ for (String bwkey : bwkeySet) {
|
|
|
+ if (StringUtils.isBlank(bwkey)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WMSService wmsService = SERVICE_MAPPING.get(bwkey);
|
|
|
+ if (wmsService == null) {
|
|
|
+ throw new UnsupportedOperationException("未配置物流中心编码[" + bwkey + "]的服务端映射");
|
|
|
+ }
|
|
|
+ return wmsService.MT_KUNNR_IN_WMS04(params);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_06> MT_KUNNR_IN_WMS06(List<DT_KUNNR_IN_06> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS06", params);
|
|
|
+ Set<String> bwkeySet = new HashSet<>();
|
|
|
+ params.forEach(item -> bwkeySet.add(item.getBWKEY()));
|
|
|
+ Assert.isTrue(bwkeySet.size() <= 1, errorMsg);
|
|
|
+ for (String bwkey : bwkeySet) {
|
|
|
+ if (StringUtils.isBlank(bwkey)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WMSService wmsService = SERVICE_MAPPING.get(bwkey);
|
|
|
+ if (wmsService == null) {
|
|
|
+ throw new UnsupportedOperationException("未配置物流中心编码[" + bwkey + "]的服务端映射");
|
|
|
+ }
|
|
|
+ return wmsService.MT_KUNNR_IN_WMS06(params);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_08> MT_KUNNR_IN_WMS08(List<DT_KUNNR_IN_08> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS08", params);
|
|
|
+ Set<String> bwkeySet = new HashSet<>();
|
|
|
+ params.forEach(item -> bwkeySet.add(item.getBWKEY()));
|
|
|
+ Assert.isTrue(bwkeySet.size() <= 1, errorMsg);
|
|
|
+ for (String bwkey : bwkeySet) {
|
|
|
+ if (StringUtils.isBlank(bwkey)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WMSService wmsService = SERVICE_MAPPING.get(bwkey);
|
|
|
+ if (wmsService == null) {
|
|
|
+ throw new UnsupportedOperationException("未配置物流中心编码[" + bwkey + "]的服务端映射");
|
|
|
+ }
|
|
|
+ return wmsService.MT_KUNNR_IN_WMS08(params);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_09> MT_KUNNR_IN_WMS09(List<DT_KUNNR_IN_09> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS09", params);
|
|
|
+ Set<String> bwkeySet = new HashSet<>();
|
|
|
+ params.forEach(item -> bwkeySet.add(item.getBWKEY()));
|
|
|
+ Assert.isTrue(bwkeySet.size() <= 1, errorMsg);
|
|
|
+ for (String bwkey : bwkeySet) {
|
|
|
+ if (StringUtils.isBlank(bwkey)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WMSService wmsService = SERVICE_MAPPING.get(bwkey);
|
|
|
+ if (wmsService == null) {
|
|
|
+ throw new UnsupportedOperationException("未配置物流中心编码[" + bwkey + "]的服务端映射");
|
|
|
+ }
|
|
|
+ return wmsService.MT_KUNNR_IN_WMS09(params);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_14> MT_KUNNR_IN_WMS14(List<DT_KUNNR_IN_14> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS14", params);
|
|
|
+ Set<String> bwkeySet = new HashSet<>();
|
|
|
+ params.forEach(item -> bwkeySet.add(item.getBWKEY()));
|
|
|
+ Assert.isTrue(bwkeySet.size() <= 1, errorMsg);
|
|
|
+ for (String bwkey : bwkeySet) {
|
|
|
+ if (StringUtils.isBlank(bwkey)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WMSService wmsService = SERVICE_MAPPING.get(bwkey);
|
|
|
+ if (wmsService == null) {
|
|
|
+ throw new UnsupportedOperationException("未配置物流中心编码[" + bwkey + "]的服务端映射");
|
|
|
+ }
|
|
|
+ return wmsService.MT_KUNNR_IN_WMS14(params);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DT_KUNNR_IN_RT_10_2> MT_KUNNR_IN_WMS10_2(List<DT_KUNNR_IN_10_2> params) {
|
|
|
+ logs("MT_KUNNR_IN_WMS10_2", params);
|
|
|
+ Set<String> bwkeySet = new HashSet<>();
|
|
|
+ params.forEach(item -> bwkeySet.add(item.getBWKEY()));
|
|
|
+ Assert.isTrue(bwkeySet.size() <= 1, errorMsg);
|
|
|
+ for (String bwkey : bwkeySet) {
|
|
|
+ if (StringUtils.isBlank(bwkey)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ WMSService wmsService = SERVICE_MAPPING.get(bwkey);
|
|
|
+ if (wmsService == null) {
|
|
|
+ throw new UnsupportedOperationException("未配置物流中心编码[" + bwkey + "]的服务端映射");
|
|
|
+ }
|
|
|
+ return wmsService.MT_KUNNR_IN_WMS10_2(params);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void logs(String msg, Object params) {
|
|
|
+ log.info("{} -> {}", msg, params);
|
|
|
+ }
|
|
|
+}
|