From 0497edd108397506301b181d7e934d546c092834 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 01 三月 2021 13:29:49 +0800 Subject: [PATCH] # --- src/main/java/zy/cloud/wms/manager/utils/HttpHandler.java | 213 ++++++++++++++++++++++++++++++ src/main/java/zy/cloud/wms/manager/controller/PakoutController.java | 2 src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java | 72 ++++++++++ src/main/java/zy/cloud/wms/common/service/erp/Result.java | 18 ++ pom.xml | 6 src/main/java/zy/cloud/wms/common/service/erp/entity/GetDataResult.java | 35 +++++ src/main/java/zy/cloud/wms/common/service/MainService.java | 19 ++ 7 files changed, 364 insertions(+), 1 deletions(-) diff --git a/pom.xml b/pom.xml index cf89864..1e59a83 100644 --- a/pom.xml +++ b/pom.xml @@ -106,6 +106,12 @@ <artifactId>aliyun-sdk-oss</artifactId> <version>2.8.3</version> </dependency> + <!-- okHttp3 --> + <dependency> + <groupId>com.squareup.okhttp3</groupId> + <artifactId>okhttp</artifactId> + <version>3.10.0</version> + </dependency> </dependencies> <build> diff --git a/src/main/java/zy/cloud/wms/common/service/MainService.java b/src/main/java/zy/cloud/wms/common/service/MainService.java new file mode 100644 index 0000000..6d4b847 --- /dev/null +++ b/src/main/java/zy/cloud/wms/common/service/MainService.java @@ -0,0 +1,19 @@ +package zy.cloud.wms.common.service; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Created by vincent on 2021/3/1 + */ +@Service("mainService") +public class MainService { + + + @Transactional + public void stockOutProcess() { + + } + + +} diff --git a/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java b/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java new file mode 100644 index 0000000..918919a --- /dev/null +++ b/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java @@ -0,0 +1,72 @@ +package zy.cloud.wms.common.service.erp; + +import com.alibaba.fastjson.JSON; +import com.core.common.Cools; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import zy.cloud.wms.common.service.MainService; +import zy.cloud.wms.common.service.erp.entity.GetDataResult; +import zy.cloud.wms.manager.entity.Mat; +import zy.cloud.wms.manager.service.MatService; +import zy.cloud.wms.manager.utils.HttpHandler; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * erp浠诲姟鎺у埗鍣� + * Created by vincent on 2020/11/27 + */ +@Slf4j +@Component +public class ErpScheduler { + + public static final String URI = "http://8.133.182.21:8080/api/"; + public static final String GET_ORDERS = "cM/basis/getOrders"; + + @Autowired + private MatService matService; + @Autowired + private MainService mainService; + + /** + * 鍘熸潗鏂� + */ +// @Scheduled(cron = "0/3 * * * * ? ") + public void getOrdersExecute(){ + try { + Map<String, Object> json = new HashMap<>(); + json.put("vchType", 41); + String response = new HttpHandler.Builder() + .setUri(URI) + .setPath(GET_ORDERS) + .setJson(JSON.toJSONString(json)) + .build() + .doPost(); + if (Cools.isEmpty(response)) { + log.error("璇锋眰锛歿}\nError锛屽搷搴旂粨鏋滀负绌�!", URI + GET_ORDERS); + } else { + log.info(response); + Result result = JSON.parseObject(response, Result.class); + List<GetDataResult> datas = JSON.parseArray(result.getData(), GetDataResult.class); + if (!Cools.isEmpty(datas)) { + for (GetDataResult data : datas) { + // 鐢熸垚鍑哄簱鍗� + Mat mat = matService.selectByMatnr(data.getUserCode()); + mainService.stockOutProcess(); + + + } + } + + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/main/java/zy/cloud/wms/common/service/erp/Result.java b/src/main/java/zy/cloud/wms/common/service/erp/Result.java new file mode 100644 index 0000000..472b254 --- /dev/null +++ b/src/main/java/zy/cloud/wms/common/service/erp/Result.java @@ -0,0 +1,18 @@ +package zy.cloud.wms.common.service.erp; + +import lombok.Data; + +/** + * Created by vincent on 2021/3/1 + */ +@Data +public class Result { + + private Integer code; + + private String msg; + + private String data; + +} + diff --git a/src/main/java/zy/cloud/wms/common/service/erp/entity/GetDataResult.java b/src/main/java/zy/cloud/wms/common/service/erp/entity/GetDataResult.java new file mode 100644 index 0000000..8912704 --- /dev/null +++ b/src/main/java/zy/cloud/wms/common/service/erp/entity/GetDataResult.java @@ -0,0 +1,35 @@ +package zy.cloud.wms.common.service.erp.entity; + +import lombok.Data; + +/** + * Created by vincent on 2021/3/1 + */ +@Data +public class GetDataResult { + + // 閿�鍞崟鍙� + private String number; + + // 鍗曟嵁鏃ユ湡 鏍煎紡2020-01-02绌哄垯榛樿鍙栧綋澶╂棩鏈� + private String billDate; + + // 瀹㈡埛缂栧彿 鎶ユ崯鍗曪紝鎶ユ孩鍗曞垯蹇界暐姝ゅ弬鏁� + private String bTypeID; + + // 缁忔墜浜虹紪鍙� 鍙┖ + private String eTypeID; + + // 鍟嗗搧缂栧彿 杩涢攢瀛樼郴缁熶腑鍟嗗搧缂栫爜 + private String userCode; + + // 鍟嗗搧鏁伴噺 + private Double qty; + + // 鍟嗗搧鍗曚环 + private Double Price; + + // 鍗曡鍟嗗搧澶囨敞 + private String comment; + +} diff --git a/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java b/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java index f0f93cc..5c26030 100644 --- a/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java +++ b/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java @@ -47,7 +47,7 @@ return R.ok(pakoutService.selectPage(new Page<>(curr, limit), wrapper)); } - private void convert(Map<String, Object> map, EntityWrapper wrapper){ + private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); if (val.contains(RANGE_TIME_LINK)){ diff --git a/src/main/java/zy/cloud/wms/manager/utils/HttpHandler.java b/src/main/java/zy/cloud/wms/manager/utils/HttpHandler.java new file mode 100644 index 0000000..5aae52c --- /dev/null +++ b/src/main/java/zy/cloud/wms/manager/utils/HttpHandler.java @@ -0,0 +1,213 @@ +package zy.cloud.wms.manager.utils; + + +import okhttp3.*; + +import java.io.IOException; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.TimeUnit; + +/** + * Http鍗忚瀹㈡埛绔� + * @author luxiaotao + * @date 2018-9-27 + */ +public class HttpHandler { + + private static final Integer DEFAULT_TIMEOUT_SECONDS = 5; + private static final MediaType MEDIA_TYPE = MediaType.parse("application/json;charset=utf-8"); + + private String uri; + private String path; + private String json; + private Map<String, Object> params; + private Map<String, Object> headers; + private boolean https; + private Integer timeout; + private TimeUnit timeUnit; + + public HttpHandler(Builder builder){ + this.uri = builder.uri; + this.path = builder.path; + this.json = builder.json; + this.params = builder.params; + this.headers = builder.headers; + this.https = builder.https; + this.timeout = builder.timeout; + this.timeUnit = builder.timeUnit; + } + + /** + * GET璇锋眰鎵ц + * @return the HttpHandler response + */ + public String doGet() throws IOException { + String url = paramsToUrl(uri, path, params, https); + Request.Builder headerBuilder = new Request.Builder(); + if (headers != null && headers.size()>0){ + for (Map.Entry<String, Object> entry : headers.entrySet()){ + headerBuilder.addHeader(entry.getKey(), String.valueOf(entry.getValue())); + } + } + Request request = headerBuilder.url(url).build(); + Response response = getClient(timeout, timeUnit).newCall(request).execute(); + return response.isSuccessful() ? response.body().string() : null; + } + + /** + * POST璇锋眰鎵ц + * @return the HttpHandler response + */ + public String doPost() throws IOException { + Request request; + Request.Builder headerBuilder = new Request.Builder(); + if (headers != null && headers.size()>0){ + for (Map.Entry<String, Object> entry : headers.entrySet()){ + headerBuilder.addHeader(entry.getKey(), String.valueOf(entry.getValue())); + } + } + if (json == null || "".equals(json)){ + FormBody.Builder builder = new FormBody.Builder(); + for (Map.Entry<String, Object> entry : params.entrySet()){ + builder.add(entry.getKey(), String.valueOf(entry.getValue())); + } + FormBody body = builder.build(); + request = headerBuilder + .url((https?"https://":"http://")+uri+path) + .post(body) + .build(); + } else { + RequestBody body = RequestBody.create(MEDIA_TYPE, json); + Request.Builder builder = headerBuilder.url((https?"https://":"http://")+uri+path); + builder.header("Content-Type", "application/json;charset=UTF-8"); + request = builder.post(body).build(); + + } + Call call = getClient(timeout, timeUnit).newCall(request); + Response response = call.execute(); + return response.body().string(); + + } + + /** + * get璇锋眰鍙傛暟鎷兼帴鏂规硶 + * @return 璇锋眰琛� + */ + private String paramsToUrl(String uri, String path, Map<String, Object> params, boolean isHttps) { + StringBuilder res = new StringBuilder(); + res.append(isHttps ? "https://" : "http://"); + res.append(uri); + if (path.length() > 0 && !(path.charAt(0) == '/')){ + res.append("/"); + } + res.append(path); + Optional.ofNullable(params).ifPresent( + args -> { + res.append("?"); + args.forEach((key, value) -> { + res.append(key); + res.append("="); + res.append(value); + res.append("&"); + }); + } + ); + String url = res.toString(); + if ("&".equals(url.substring(url.length()-1, url.length()))){ + url = url.substring(0, url.length()-1); + } + return url; + } + + /** + * 鑾峰彇 okHttpClient + * @return the HttpHandler instance + */ + private OkHttpClient getClient(Integer timeout, TimeUnit timeUnit){ + return new OkHttpClient + .Builder() + .connectTimeout(timeout, timeUnit) + .readTimeout(timeout, timeUnit) + .build(); + } + + /** + * Http鍗忚鎶ユ枃寤洪�犺�� + */ + public static class Builder { + + private String uri; + private String path; + private String json; + private Map<String, Object> params; + private Map<String, Object> headers; + private boolean https; + private Integer timeout; + private TimeUnit timeUnit; + + { + // 榛樿5s瓒呮椂 + timeout = DEFAULT_TIMEOUT_SECONDS; + timeUnit = TimeUnit.SECONDS; + path = ""; + } + + /** + * 寤洪�犲櫒 + * @return the HttpHandler instance + */ + public HttpHandler build(){ + if (null == this.uri || "".equals(this.uri)){ + throw new RuntimeException("uri is null"); + } + if (this.uri.startsWith("http://")){ + this.uri = this.uri.substring(6,uri.length()); + } else if (this.uri.startsWith("https://")){ + this.uri = this.uri.substring(7,uri.length()); + } + return new HttpHandler(this); + } + + public Builder setUri(String uri) { + this.uri = uri; + return this; + } + + public Builder setPath(String path) { + if (!path.startsWith("/")){ + path = "/" + path; + } + this.path = path; + return this; + } + + public Builder setTimeout(Integer timeout, TimeUnit timeUnit) { + this.timeout = timeout; + this.timeUnit = timeUnit; + return this; + } + + public Builder setParams(Map<String, Object> params) { + this.params = params; + return this; + } + + public Builder setHeaders(Map<String, Object> headers) { + this.headers = headers; + return this; + } + + public Builder setHttps(boolean https) { + this.https = https; + return this; + } + + public Builder setJson(String json) { + this.json = json; + return this; + } + + } + +} -- Gitblit v1.9.1