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