From a4c02621b8a3fa96cfb7b7839a9c7e5e23df785f Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 28 五月 2021 11:02:59 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/WorkService.java | 2
src/main/java/com/zy/common/service/wms/Result.java | 25 ++
src/main/java/com/zy/asrs/controller/OpenController.java | 4
src/main/java/com/zy/common/model/UploadBillDetail.java | 24 ++
src/main/java/com/zy/common/service/wms/ReplenishParam.java | 15 +
src/main/java/com/zy/common/model/UploadBill.java | 32 ++
src/main/java/com/zy/common/service/Result.java | 18 +
src/main/java/com/zy/common/service/wms/ReplenishDto.java | 15 +
src/main/java/com/zy/common/utils/HttpHandler.java | 213 +++++++++++++++++++
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 97 ++++++++
src/main/java/com/zy/common/model/MatnrDto.java | 15 +
pom.xml | 6
src/main/java/com/zy/asrs/controller/WorkController.java | 10
src/main/java/com/zy/common/model/BillDto.java | 15 +
src/main/java/com/zy/asrs/task/AbstractHandler.java | 3
src/main/java/com/zy/common/service/ErpService.java | 90 ++++++++
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 7
src/main/java/com/zy/common/service/wms/WmsService.java | 37 +++
src/main/resources/application.yml | 8
19 files changed, 618 insertions(+), 18 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9256a75..1e4ac87 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,6 +97,12 @@
<version>1.16.22</version>
<scope>provided</scope>
</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/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index f0c1f00..901b4e0 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -148,7 +148,7 @@
dto.setLocDetl(locDetl);
dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
detlDtos.add(dto);
- workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo());
+ workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo()));
// 鎷f枡
} else {
BasDevp staNo = basDevpService.checkSiteStatus(107);
@@ -157,7 +157,7 @@
dto.setLocDetl(locDetl);
dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
detlDtos.add(dto);
- workService.stockOut(staNo, detlDtos, 103, 9527L, param.getAllotNo());
+ workService.stockOut(staNo, detlDtos, 103, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo()));
}
PakoutVo pakoutVo = new PakoutVo();
diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index f5b8749..899af2e 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -33,19 +33,19 @@
private BasDevpService basDevpService;
@RequestMapping("/available/put/site")
- @ManagerAuth(memo = "鑾峰彇鍏ュ簱绔欑偣")
+ @ManagerAuth()
public R availablePutSite(){
return R.ok().add(basDevpService.getAvailableInSite());
}
@RequestMapping("/available/empty/put/site")
- @ManagerAuth(memo = "鑾峰彇绌烘澘鍏ュ簱绔欑偣")
+ @ManagerAuth()
public R availableEmptyPutSite(){
return R.ok().add(basDevpService.getAvailableEmptyInSite());
}
@RequestMapping("/available/take/site")
- @ManagerAuth(memo = "鑾峰彇鍑哄簱绔欑偣")
+ @ManagerAuth()
public R availableTakeSite(){
List<Map<String, Object>> result = new ArrayList<>();
List<Integer> outSite = basDevpService.getAvailableOutSite(101);
@@ -66,13 +66,13 @@
}
@RequestMapping("/available/take/check/site")
- @ManagerAuth(memo = "鑾峰彇鐩樼偣鍑哄簱绔欑偣")
+ @ManagerAuth()
public R availableTakeCheckSite(){
return R.ok().add(basDevpService.getAvailableOutSite(107));
}
@RequestMapping("/available/empty/take/site")
- @ManagerAuth(memo = "鑾峰彇绌烘澘鍑哄簱绔欑偣")
+ @ManagerAuth()
public R availableEmptyTakeSite(){
return R.ok().add(basDevpService.getAvailableEmptyOutSite());
}
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index b41422f..ae85a2c 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -28,7 +28,7 @@
* @param locDetls 寰呭嚭搴撶墿鏂�
* @param ioType 鍏ュ嚭搴撶被鍨�
*/
- void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, Integer ioType, Long userId, String allotNo);
+ void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, Integer ioType, Long userId, String allotNo, Boolean sell);
/**
* 绌烘澘鍏ュ簱
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 1f66bb6..1c91ccf 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -149,7 +149,7 @@
}
if (!locDetlDtos.isEmpty()) {
// 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
- stockOut(staNo, locDetlDtos, null, userId, null);
+ stockOut(staNo, locDetlDtos, null, userId, null, false);
} else {
throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
}
@@ -157,7 +157,7 @@
@Override
@Transactional
- public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId, String allotNo) {
+ public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId, String allotNo, Boolean sell) {
// 鍚堝苟鍚岀被椤�
Set<String> locNos = new HashSet<>();
locDetlDtos.forEach(dto -> locNos.add(dto.getLocDetl().getLocNo()));
@@ -210,6 +210,7 @@
wrkMast.setEmptyMk("N"); // 绌烘澘
wrkMast.setLinkMis("N");
wrkMast.setPacked(allotNo); // 骞充粨琛ヤ粨鍗曞彿
+ wrkMast.setPdcType(sell?"Y":"N"); // ERP閿�鍞鍗曞嚭搴撲换鍔�
wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
wrkMast.setAppeTime(new Date());
wrkMast.setModiUser(userId);
@@ -386,7 +387,7 @@
}
if (!locDetlDtos.isEmpty()) {
// 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
- stockOut(staNo, locDetlDtos, 107, userId, null);
+ stockOut(staNo, locDetlDtos, 107, userId, null, false);
} else {
throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
}
diff --git a/src/main/java/com/zy/asrs/task/AbstractHandler.java b/src/main/java/com/zy/asrs/task/AbstractHandler.java
index 9e630fb..8cb5d61 100644
--- a/src/main/java/com/zy/asrs/task/AbstractHandler.java
+++ b/src/main/java/com/zy/asrs/task/AbstractHandler.java
@@ -1,5 +1,6 @@
package com.zy.asrs.task;
+import com.core.exception.CoolException;
import com.zy.asrs.task.core.AsrsException;
import com.zy.asrs.task.core.ReturnT;
@@ -20,7 +21,7 @@
}
protected void exceptionHandle(String errorMsg, Object... args){
- throw new AsrsException(MessageFormat.format(errorMsg, args));
+ throw new CoolException(MessageFormat.format(errorMsg, args));
}
}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index 7492ff1..add9e2a 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -2,16 +2,26 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.SnowflakeIdWorker;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.model.BillDto;
+import com.zy.common.model.MatnrDto;
+import com.zy.common.service.ErpService;
+import com.zy.common.service.wms.ReplenishDto;
+import com.zy.common.service.wms.Result;
+import com.zy.common.service.wms.WmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* Created by vincent on 2020/7/6
@@ -31,18 +41,95 @@
private WaitPakinService waitPakinService;
@Autowired
private WaitPakinLogService waitPakinLogService;
+ @Autowired
+ private ErpService erpService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private WmsService wmsService;
@Transactional
public ReturnT<String> start(WrkMast wrkMast) {
try {
- if (!Cools.isEmpty(wrkMast.getBarcode())) {
- // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
- waitPakinLogService.save(wrkMast.getBarcode());
- // 鍒犻櫎鍏ュ簱閫氱煡妗�
- waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+ // 鍏ュ簱
+ if (wrkMast.getWrkSts() == 5) {
+
+ // 鍏ㄦ澘鍏ュ簱
+ if (wrkMast.getIoType() == 1) {
+ String docNum = "PU-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
+ // 涓婃姤缁檈rp
+ List<MatnrDto> matnrDtos = new ArrayList<>();
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ for (WrkDetl wrkDetl : wrkDetls) {
+ MatnrDto dto = new MatnrDto();
+ dto.setMatnr(wrkDetl.getMatnr());
+ dto.setCount(wrkDetl.getAnfme());
+ matnrDtos.add(dto);
+ }
+ List<BillDto> dtos = new ArrayList<>();
+ for (MatnrDto dto : matnrDtos) {
+ BillDto billDto = new BillDto();
+ billDto.setMatnr(dto.getMatnr());
+ billDto.setQty(dto.getCount());
+ dtos.add(billDto);
+ }
+ if (!erpService.uploadBill(dtos, 34, docNum)) {
+ exceptionHandle("鏃犳硶涓婃姤鑷砮rp[workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+
+ // 鍏ュ簱閫氱煡鍗�
+ if (!Cools.isEmpty(wrkMast.getBarcode())) {
+ // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
+ if (!waitPakinLogService.save(wrkMast.getBarcode())) {
+ exceptionHandle("淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。[workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎鍏ュ簱閫氱煡妗�
+ if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) {
+ exceptionHandle("鍒犻櫎鍏ュ簱閫氱煡妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ }
+ // 鎷f枡鍐嶅叆搴�
+ } else if (wrkMast.getIoType() == 53) {
+ // 闈為攢鍞鍗曞嚭搴擄紝闇�瑕佽ˉ璐у埌骞充粨
+ if (!wrkMast.getPdcType().equals("Y")) {
+ List<ReplenishDto> replenishDtos = new ArrayList<>();
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ for (WrkDetl wrkDetl : wrkDetls) {
+ ReplenishDto param = new ReplenishDto();
+ param.setMatnr(wrkDetl.getMatnr());
+ param.setCount(wrkDetl.getAnfme());
+ replenishDtos.add(param);
+ }
+ Result result = wmsService.replenish(replenishDtos);
+ if (result.getCode() != 200) {
+ exceptionHandle("琛ヨ揣鍒板钩浠揫workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ }
+
+ }
+
+ // 鍑哄簱
+ } else if (wrkMast.getWrkSts() == 15) {
+ // 闈為攢鍞鍗曞嚭搴擄紝闇�瑕佽ˉ璐у埌骞充粨
+ if (!wrkMast.getPdcType().equals("Y")) {
+ List<ReplenishDto> replenishDtos = new ArrayList<>();
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ for (WrkDetl wrkDetl : wrkDetls) {
+ ReplenishDto param = new ReplenishDto();
+ param.setMatnr(wrkDetl.getMatnr());
+ param.setCount(wrkDetl.getAnfme());
+ replenishDtos.add(param);
+ }
+ Result result = wmsService.replenish(replenishDtos);
+ if (result.getCode() != 200) {
+ exceptionHandle("琛ヨ揣鍒板钩浠揫workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ }
}
+
+
// 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/common/model/BillDto.java b/src/main/java/com/zy/common/model/BillDto.java
new file mode 100644
index 0000000..640e560
--- /dev/null
+++ b/src/main/java/com/zy/common/model/BillDto.java
@@ -0,0 +1,15 @@
+package com.zy.common.model;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2021/3/23
+ */
+@Data
+public class BillDto {
+
+ private String matnr;
+
+ private Double qty;
+
+}
diff --git a/src/main/java/com/zy/common/model/MatnrDto.java b/src/main/java/com/zy/common/model/MatnrDto.java
new file mode 100644
index 0000000..df53438
--- /dev/null
+++ b/src/main/java/com/zy/common/model/MatnrDto.java
@@ -0,0 +1,15 @@
+package com.zy.common.model;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2021/3/31
+ */
+@Data
+public class MatnrDto {
+
+ private String matnr;
+
+ private Double count;
+
+}
diff --git a/src/main/java/com/zy/common/model/UploadBill.java b/src/main/java/com/zy/common/model/UploadBill.java
new file mode 100644
index 0000000..e59a788
--- /dev/null
+++ b/src/main/java/com/zy/common/model/UploadBill.java
@@ -0,0 +1,32 @@
+package com.zy.common.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/3/23
+ */
+@Data
+public class UploadBill {
+
+ private String number;
+
+ private Integer vchType;
+
+ private String billDate;
+
+ private String bTypeID;
+
+ private String kTypeID;
+
+ private String summary;
+
+ // 鑷
+ private Double Vchcode;
+
+ private Integer difAtype;
+
+ private List<UploadBillDetail> detail;
+
+}
diff --git a/src/main/java/com/zy/common/model/UploadBillDetail.java b/src/main/java/com/zy/common/model/UploadBillDetail.java
new file mode 100644
index 0000000..8a9d9f2
--- /dev/null
+++ b/src/main/java/com/zy/common/model/UploadBillDetail.java
@@ -0,0 +1,24 @@
+package com.zy.common.model;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2021/3/23
+ */
+@Data
+public class UploadBillDetail {
+
+ private String userCode;
+
+ private Double qty;
+
+ private Integer Price;
+
+ private String comment;
+
+ private String unit;
+
+ // 鍟嗗搧鏄庣粏琛屽彿
+ private Double RowNo;
+
+}
diff --git a/src/main/java/com/zy/common/service/ErpService.java b/src/main/java/com/zy/common/service/ErpService.java
new file mode 100644
index 0000000..322db8a
--- /dev/null
+++ b/src/main/java/com/zy/common/service/ErpService.java
@@ -0,0 +1,90 @@
+package com.zy.common.service;
+
+import com.alibaba.fastjson.JSON;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.MatCode;
+import com.zy.asrs.service.MatCodeService;
+import com.zy.common.model.BillDto;
+import com.zy.common.model.UploadBill;
+import com.zy.common.model.UploadBillDetail;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/3/23
+ */
+@Slf4j
+@Service("erpService")
+public class ErpService {
+
+ @Value("${erp.url}")
+ private String url;
+
+ public static final String UPLOAD_BILL = "cM/basis/uploadBill";
+
+ @Autowired
+ private MatCodeService matCodeService;
+ /**
+ * 鍗曟嵁涓婃姤
+ */
+ public Boolean uploadBill(List<BillDto> dtos, Integer docId, String docNumber){
+ try {
+ if (Cools.isEmpty(dtos)) {
+ return false;
+ }
+
+ UploadBill uploadBill = new UploadBill();
+ uploadBill.setNumber(docNumber);
+ uploadBill.setBillDate(DateUtils.convert(new Date(), DateUtils.yyyyMMdd_F));
+ uploadBill.setBTypeID("SHHT");
+ uploadBill.setKTypeID("瀹忔尯浠撳簱");
+ uploadBill.setVchType(docId);
+ if (docId == 9) {
+ uploadBill.setDifAtype(22);
+ } else if (docId == 14) {
+ uploadBill.setDifAtype(23);
+ }
+ uploadBill.setSummary("閲囪喘鍗� - " + DateUtils.convert(new Date(), "yyyy-MM-dd HH:mm"));
+ List<UploadBillDetail> detail = new ArrayList<>();
+ uploadBill.setDetail(detail);
+ for (BillDto dto : dtos) {
+ MatCode mat = matCodeService.selectById(dto.getMatnr());
+ UploadBillDetail detl = new UploadBillDetail();
+ detl.setUserCode(dto.getMatnr());
+ detl.setQty(dto.getQty());
+ detl.setPrice(0);
+ detl.setUnit(mat==null?"鏆傛棤":"绠�");
+ detail.add(detl);
+ }
+ System.out.println(JSON.toJSONString(uploadBill));
+ String response = new HttpHandler.Builder()
+ .setUri(url)
+ .setPath(UPLOAD_BILL)
+ .setJson(JSON.toJSONString(uploadBill))
+ .build()
+ .doPost();
+
+ if (!Cools.isEmpty(response)) {
+ log.warn(response);
+ Result result = JSON.parseObject(response, Result.class);
+ if (result.getCode() != 1) {
+ return false;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ return Boolean.TRUE;
+ }
+
+
+}
diff --git a/src/main/java/com/zy/common/service/Result.java b/src/main/java/com/zy/common/service/Result.java
new file mode 100644
index 0000000..efc9bb7
--- /dev/null
+++ b/src/main/java/com/zy/common/service/Result.java
@@ -0,0 +1,18 @@
+package com.zy.common.service;
+
+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/com/zy/common/service/wms/ReplenishDto.java b/src/main/java/com/zy/common/service/wms/ReplenishDto.java
new file mode 100644
index 0000000..dc6f8a2
--- /dev/null
+++ b/src/main/java/com/zy/common/service/wms/ReplenishDto.java
@@ -0,0 +1,15 @@
+package com.zy.common.service.wms;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2021/5/27
+ */
+@Data
+public class ReplenishDto {
+
+ private String matnr;
+
+ private Double count;
+
+}
diff --git a/src/main/java/com/zy/common/service/wms/ReplenishParam.java b/src/main/java/com/zy/common/service/wms/ReplenishParam.java
new file mode 100644
index 0000000..093a451
--- /dev/null
+++ b/src/main/java/com/zy/common/service/wms/ReplenishParam.java
@@ -0,0 +1,15 @@
+package com.zy.common.service.wms;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/5/27
+ */
+@Data
+public class ReplenishParam {
+
+ private List<ReplenishDto> list;
+
+}
diff --git a/src/main/java/com/zy/common/service/wms/Result.java b/src/main/java/com/zy/common/service/wms/Result.java
new file mode 100644
index 0000000..54ae05d
--- /dev/null
+++ b/src/main/java/com/zy/common/service/wms/Result.java
@@ -0,0 +1,25 @@
+package com.zy.common.service.wms;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2021/3/20
+ */
+@Data
+public class Result {
+
+ private Integer code;
+
+ private String msg;
+
+ private Object data;
+
+ public Result() {
+ }
+
+ public Result(Integer code, String msg, Object data) {
+ this.code = code;
+ this.msg = msg;
+ this.data = data;
+ }
+}
diff --git a/src/main/java/com/zy/common/service/wms/WmsService.java b/src/main/java/com/zy/common/service/wms/WmsService.java
new file mode 100644
index 0000000..d74537c
--- /dev/null
+++ b/src/main/java/com/zy/common/service/wms/WmsService.java
@@ -0,0 +1,37 @@
+package com.zy.common.service.wms;
+
+import com.alibaba.fastjson.JSON;
+import com.zy.common.utils.HttpHandler;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/5/27
+ */
+@Component
+public class WmsService {
+
+ @Value("${wms.url}")
+ private String wmsUrl;
+
+ public Result replenish(List<ReplenishDto> dtos) {
+ try {
+ ReplenishParam param = new ReplenishParam();
+ param.setList(dtos);
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/open/api/replenish")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ return JSON.parseObject(response, Result.class);
+ } catch (IOException e) {
+ e.printStackTrace();
+ return new Result(500, "鏈嶅姟鍣ㄥ紓甯�", null);
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/common/utils/HttpHandler.java b/src/main/java/com/zy/common/utils/HttpHandler.java
new file mode 100644
index 0000000..70adcc7
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/HttpHandler.java
@@ -0,0 +1,213 @@
+package com.zy.common.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;
+ }
+
+ }
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 169f6b8..84eb112 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -54,4 +54,10 @@
# 鍙屾繁搴撲綅鎺掑彿
doubleLocs: 1,4,5,8
# 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
- groupCount: 4
\ No newline at end of file
+ groupCount: 4
+
+wms:
+ url: http://192.168.110.57:8080/wms
+
+erp:
+ url: http://8.133.182.21:6220/api
\ No newline at end of file
--
Gitblit v1.9.1