Commit c8bf4e45bda44a064de46b5cd08eadfcaa06b081

Authored by 肖超群
1 parent 051b6220

增加下发任务接口

Showing 15 changed files with 769 additions and 21 deletions
jeecg-boot-master/ant-design-vue-jeecg/src/api/api.js
@@ -108,7 +108,7 @@ export const searchMaterialByCode = (params)=>postAction('/config/material/searc @@ -108,7 +108,7 @@ export const searchMaterialByCode = (params)=>postAction('/config/material/searc
108 export const listReceiveByReceiptId = (params)=>postAction('/receipt/receiveHeader/listReceiveByReceiptId', params); 108 export const listReceiveByReceiptId = (params)=>postAction('/receipt/receiveHeader/listReceiveByReceiptId', params);
109 export const createTask = (params)=>postAction('/receipt/receiptContainerHeader/createTask', params); 109 export const createTask = (params)=>postAction('/receipt/receiptContainerHeader/createTask', params);
110 export const completeTaskByWMS = (params)=>postAction('/task/taskHeader/completeTaskByWMS', params); 110 export const completeTaskByWMS = (params)=>postAction('/task/taskHeader/completeTaskByWMS', params);
111 - 111 +export const execute = (params)=>postAction('/task/taskHeader/execute', params);
112 112
113 // 中转HTTP请求 113 // 中转HTTP请求
114 export const transitRESTful = { 114 export const transitRESTful = {
jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TaskHeaderList.vue
@@ -132,8 +132,9 @@ @@ -132,8 +132,9 @@
132 </template> 132 </template>
133 133
134 <span slot="action" slot-scope="text, record"> 134 <span slot="action" slot-scope="text, record">
  135 + <a v-if="record.status == 1" @click="executeTask(record)">下发任务</a>
  136 + <a-divider type="vertical" />
135 <a v-if="record.status < 100" @click="completeTask(record)">完成任务</a> 137 <a v-if="record.status < 100" @click="completeTask(record)">完成任务</a>
136 -  
137 <a-divider type="vertical" /> 138 <a-divider type="vertical" />
138 <a-dropdown> 139 <a-dropdown>
139 <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> 140 <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
@@ -172,6 +173,7 @@ @@ -172,6 +173,7 @@
172 import {initDictOptions,filterMultiDictText} from '@/components/dict/JDictSelectUtil' 173 import {initDictOptions,filterMultiDictText} from '@/components/dict/JDictSelectUtil'
173 import '@/assets/less/TableExpand.less' 174 import '@/assets/less/TableExpand.less'
174 import {completeTaskByWMS} from '@/api/api' 175 import {completeTaskByWMS} from '@/api/api'
  176 + import {execute} from '@/api/api'
175 177
176 export default { 178 export default {
177 name: "TaskHeaderList", 179 name: "TaskHeaderList",
@@ -353,7 +355,6 @@ @@ -353,7 +355,6 @@
353 }, 355 },
354 completeTask(record) { 356 completeTask(record) {
355 this.loading = true; 357 this.loading = true;
356 - const that = this;  
357 this.model = Object.assign({}, record); 358 this.model = Object.assign({}, record);
358 completeTaskByWMS(this.model).then((res) => { 359 completeTaskByWMS(this.model).then((res) => {
359 this.loading = false; 360 this.loading = false;
@@ -366,6 +367,20 @@ @@ -366,6 +367,20 @@
366 this.searchQuery(); 367 this.searchQuery();
367 }); 368 });
368 }, 369 },
  370 + executeTask(record) {
  371 + this.loading = true;
  372 + this.model = Object.assign({}, record);
  373 + execute(this.model).then((res) => {
  374 + this.loading = false;
  375 + if (res.success) {
  376 + this.$message.success(res.message);
  377 + }
  378 + else {
  379 + this.$message.error(res.message);
  380 + }
  381 + this.searchQuery();
  382 + });
  383 + },
369 getSuperFieldList(){ 384 getSuperFieldList(){
370 let fieldList=[]; 385 let fieldList=[];
371 fieldList.push({type:'int',value:'taskType',text:'任务类型',dictCode:'task_type'}) 386 fieldList.push({type:'int',value:'taskType',text:'任务类型',dictCode:'task_type'})
jeecg-boot-master/jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java
@@ -33,17 +33,23 @@ public class Result&lt;T&gt; implements Serializable { @@ -33,17 +33,23 @@ public class Result&lt;T&gt; implements Serializable {
33 private String message = ""; 33 private String message = "";
34 34
35 /** 35 /**
  36 + * 返回处理消息
  37 + */
  38 + @ApiModelProperty(value = "返回处理消息")
  39 + private String msg = "";
  40 +
  41 + /**
36 * 返回代码 42 * 返回代码
37 */ 43 */
38 @ApiModelProperty(value = "返回代码") 44 @ApiModelProperty(value = "返回代码")
39 private Integer code = 0; 45 private Integer code = 0;
40 - 46 +
41 /** 47 /**
42 * 返回数据对象 data 48 * 返回数据对象 data
43 */ 49 */
44 @ApiModelProperty(value = "返回数据对象") 50 @ApiModelProperty(value = "返回数据对象")
45 private T result; 51 private T result;
46 - 52 +
47 /** 53 /**
48 * 时间戳 54 * 时间戳
49 */ 55 */
@@ -62,7 +68,7 @@ public class Result&lt;T&gt; implements Serializable { @@ -62,7 +68,7 @@ public class Result&lt;T&gt; implements Serializable {
62 this.code = code; 68 this.code = code;
63 this.message = message; 69 this.message = message;
64 } 70 }
65 - 71 +
66 public Result<T> success(String message) { 72 public Result<T> success(String message) {
67 this.message = message; 73 this.message = message;
68 this.code = CommonConstant.SC_OK_200; 74 this.code = CommonConstant.SC_OK_200;
@@ -143,7 +149,7 @@ public class Result&lt;T&gt; implements Serializable { @@ -143,7 +149,7 @@ public class Result&lt;T&gt; implements Serializable {
143 public static<T> Result<T> error(String msg) { 149 public static<T> Result<T> error(String msg) {
144 return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg); 150 return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg);
145 } 151 }
146 - 152 +
147 public static<T> Result<T> error(int code, String msg) { 153 public static<T> Result<T> error(int code, String msg) {
148 Result<T> r = new Result<T>(); 154 Result<T> r = new Result<T>();
149 r.setCode(code); 155 r.setCode(code);
@@ -169,4 +175,4 @@ public class Result&lt;T&gt; implements Serializable { @@ -169,4 +175,4 @@ public class Result&lt;T&gt; implements Serializable {
169 @JsonIgnore 175 @JsonIgnore
170 private String onlTable; 176 private String onlTable;
171 177
172 -}  
173 \ No newline at end of file 178 \ No newline at end of file
  179 +}
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java
@@ -2,6 +2,7 @@ package org.jeecg.modules.wms.api.wcs.service; @@ -2,6 +2,7 @@ package org.jeecg.modules.wms.api.wcs.service;
2 2
3 import org.jeecg.common.api.vo.Result; 3 import org.jeecg.common.api.vo.Result;
4 import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain; 4 import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain;
  5 +import org.jeecg.modules.wms.api.wcs.entity.WcsTask;
5 import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; 6 import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader;
6 7
7 /** 8 /**
@@ -13,4 +14,6 @@ public interface WcsService { @@ -13,4 +14,6 @@ public interface WcsService {
13 Result warecellAllocation(WarecellDomain warecellDomain); 14 Result warecellAllocation(WarecellDomain warecellDomain);
14 15
15 Result wcsTaskAssign(TaskHeader taskHeader); 16 Result wcsTaskAssign(TaskHeader taskHeader);
  17 +
  18 + WcsTask switchTaskTypeToWcs(WcsTask wcsTask);
16 } 19 }
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
1 package org.jeecg.modules.wms.api.wcs.service; 1 package org.jeecg.modules.wms.api.wcs.service;
2 2
3 3
  4 +import com.alibaba.fastjson.JSON;
  5 +import com.alibaba.fastjson.JSONObject;
4 import com.aliyun.oss.ServiceException; 6 import com.aliyun.oss.ServiceException;
5 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 7 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
6 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 8 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
7 import org.jeecg.common.api.vo.Result; 9 import org.jeecg.common.api.vo.Result;
8 import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain; 10 import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain;
9 import org.jeecg.modules.wms.api.wcs.entity.WcsTask; 11 import org.jeecg.modules.wms.api.wcs.entity.WcsTask;
  12 +import org.jeecg.modules.wms.config.address.service.IAddressService;
10 import org.jeecg.modules.wms.config.container.entity.Container; 13 import org.jeecg.modules.wms.config.container.entity.Container;
11 import org.jeecg.modules.wms.config.container.service.IContainerService; 14 import org.jeecg.modules.wms.config.container.service.IContainerService;
12 import org.jeecg.modules.wms.config.location.entity.Location; 15 import org.jeecg.modules.wms.config.location.entity.Location;
@@ -31,6 +34,8 @@ import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService; @@ -31,6 +34,8 @@ import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService;
31 import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; 34 import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService;
32 import org.jeecg.utils.StringUtils; 35 import org.jeecg.utils.StringUtils;
33 import org.jeecg.utils.constant.QuantityConstant; 36 import org.jeecg.utils.constant.QuantityConstant;
  37 +import org.jeecg.utils.http.OkHttpUtils;
  38 +import org.springframework.http.ResponseEntity;
34 import org.springframework.stereotype.Service; 39 import org.springframework.stereotype.Service;
35 import org.springframework.transaction.annotation.Transactional; 40 import org.springframework.transaction.annotation.Transactional;
36 41
@@ -69,6 +74,8 @@ public class WcsServiceImpl implements WcsService { @@ -69,6 +74,8 @@ public class WcsServiceImpl implements WcsService {
69 private LocationAllocationService locationAllocationService; 74 private LocationAllocationService locationAllocationService;
70 @Resource 75 @Resource
71 private ILocationService locationService; 76 private ILocationService locationService;
  77 + @Resource
  78 + private IAddressService addressService;
72 79
73 @Override 80 @Override
74 @Transactional(rollbackFor = Exception.class) 81 @Transactional(rollbackFor = Exception.class)
@@ -358,8 +365,73 @@ public class WcsServiceImpl implements WcsService { @@ -358,8 +365,73 @@ public class WcsServiceImpl implements WcsService {
358 } 365 }
359 wcsTask.setPriority(10); 366 wcsTask.setPriority(10);
360 wcsTask.setPlatform(QuantityConstant.PLATFORM_WMS); 367 wcsTask.setPlatform(QuantityConstant.PLATFORM_WMS);
  368 + wcsTask.setRemark(QuantityConstant.EMPTY_STRING);
  369 + Container container = containerService.getContainerByCode(containerCode, warehouseCode);
  370 + if(container == null) {
  371 + throw new ServiceException("下发任务时,容器没有找到");
  372 + }
361 373
  374 +// String zoneCode = container.getZoneCode();
  375 +// if(StringUtils.isEmpty(zoneCode)) {
  376 +// throw new ServiceException("下发任务时,库区编码为空");
  377 +// }
  378 + String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_CONNECT_WCS);
  379 + if(StringUtils.isEmpty(value)) {
  380 + throw new ServiceException("下发任务时,没有找到连接WCS的数据配置");
  381 + }
  382 + int connectWCS = Integer.parseInt(value);
  383 + if (connectWCS == QuantityConstant.RULE_WCS_CONNECT) {
  384 +// String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_WCS_TASK_ASSIGN,
  385 +// warehouseCode, zoneCode);
  386 + String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_WCS_TASK_ASSIGN);
  387 + wcsTask = switchTaskTypeToWcs(wcsTask);
  388 + String jsonParam = JSON.toJSONString(wcsTask);
  389 + System.out.println(jsonParam);
  390 + String body = OkHttpUtils.bodypost(url, jsonParam);
  391 + if(StringUtils.isEmpty(body)) {
  392 + throw new ServiceException("接口地址错误或返回为空");
  393 + }
  394 + Result result = JSON.parseObject(body, Result.class);
  395 + if(result.getCode() == QuantityConstant.HTTP_OK) {
  396 + return Result.error(result.getMsg());
  397 + }
  398 + }
  399 +
  400 + return Result.ok("下发成功");
  401 + }
  402 +
  403 + // wcs任务类型 入库 = 100 , 出库 = 300,分拣出库 = 400 ,移库 = 800,换站=1000
  404 + @Override
  405 + public WcsTask switchTaskTypeToWcs(WcsTask wcsTask) {
  406 + int taskType = wcsTask.getTaskType().intValue();
  407 + switch (taskType) {
  408 + case QuantityConstant.TASK_TYPE_WHOLERECEIPT:
  409 + case QuantityConstant.TASK_TYPE_EMPTYRECEIPT:
  410 + case QuantityConstant.TASK_TYPE_MANY_EMPTYRECEIPT:
  411 + wcsTask.setTaskType(100);
  412 + break;
  413 + case QuantityConstant.TASK_TYPE_WHOLESHIPMENT:
  414 + case QuantityConstant.TASK_TYPE_EMPTYSHIPMENT:
  415 + case QuantityConstant.TASK_TYPE_MANY_EMPTYSHIPMENT:
  416 + wcsTask.setTaskType(300);
  417 + break;
  418 + case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT:
  419 + case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT:
  420 + case QuantityConstant.TASK_TYPE_CYCLECOUNT:
  421 + case QuantityConstant.TASK_TYPE_VIEW:
  422 + wcsTask.setTaskType(400);
  423 + break;
  424 + case QuantityConstant.TASK_TYPE_TRANSFER:
  425 + wcsTask.setTaskType(800);
  426 + break;
  427 + case QuantityConstant.TASK_TYPE_OVER_STATION:
  428 + case QuantityConstant.TASK_TYPE_MANY_OVER_STATION:
  429 + wcsTask.setTaskType(1000);
  430 + break;
  431 + default:
  432 + throw new ServiceException("不支持的任务类型");
362 433
363 - return null; 434 + }
  435 + return wcsTask;
364 } 436 }
365 } 437 }
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/address/entity/Address.java
@@ -36,9 +36,9 @@ public class Address implements Serializable { @@ -36,9 +36,9 @@ public class Address implements Serializable {
36 @ApiModelProperty(value = "主键") 36 @ApiModelProperty(value = "主键")
37 private Integer id; 37 private Integer id;
38 /**编码*/ 38 /**编码*/
39 - @Excel(name = "编码", width = 15)  
40 - @ApiModelProperty(value = "编码")  
41 - private String code; 39 + @Excel(name = "参数", width = 15)
  40 + @ApiModelProperty(value = "参数")
  41 + private String param;
42 /**仓库编码*/ 42 /**仓库编码*/
43 @Excel(name = "仓库编码", width = 15) 43 @Excel(name = "仓库编码", width = 15)
44 @ApiModelProperty(value = "仓库编码") 44 @ApiModelProperty(value = "仓库编码")
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/address/service/IAddressService.java
@@ -12,4 +12,8 @@ import org.jeecg.modules.wms.config.address.entity.Address; @@ -12,4 +12,8 @@ import org.jeecg.modules.wms.config.address.entity.Address;
12 public interface IAddressService extends IService<Address> { 12 public interface IAddressService extends IService<Address> {
13 13
14 Address getAddressByUrl(String url, String warehouseCode); 14 Address getAddressByUrl(String url, String warehouseCode);
  15 +
  16 + String getUrlByParam(String param, String warehouseCode, String zoneCode);
  17 +
  18 + String getUrlByParam(String param);
15 } 19 }
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/address/service/impl/AddressServiceImpl.java
@@ -2,6 +2,7 @@ package org.jeecg.modules.wms.config.address.service.impl; @@ -2,6 +2,7 @@ package org.jeecg.modules.wms.config.address.service.impl;
2 2
3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import org.apache.commons.math3.analysis.function.Add;
5 import org.jeecg.modules.wms.config.address.entity.Address; 6 import org.jeecg.modules.wms.config.address.entity.Address;
6 import org.jeecg.modules.wms.config.address.mapper.AddressMapper; 7 import org.jeecg.modules.wms.config.address.mapper.AddressMapper;
7 import org.jeecg.modules.wms.config.address.service.IAddressService; 8 import org.jeecg.modules.wms.config.address.service.IAddressService;
@@ -26,4 +27,32 @@ public class AddressServiceImpl extends ServiceImpl&lt;AddressMapper, Address&gt; impl @@ -26,4 +27,32 @@ public class AddressServiceImpl extends ServiceImpl&lt;AddressMapper, Address&gt; impl
26 Address address = getOne(addressLambdaQueryWrapper); 27 Address address = getOne(addressLambdaQueryWrapper);
27 return address; 28 return address;
28 } 29 }
  30 +
  31 + @Override
  32 + public String getUrlByParam(String param, String warehouseCode, String zoneCode) {
  33 + LambdaQueryWrapper<Address> addressLambdaQueryWrapper = Wrappers.lambdaQuery();
  34 + addressLambdaQueryWrapper.eq(Address::getParam, param)
  35 + .eq(Address::getWarehouseCode, warehouseCode)
  36 + .eq(Address::getZoneCode, zoneCode);
  37 + Address address = getOne(addressLambdaQueryWrapper);
  38 + if(address == null) {
  39 + return null;
  40 + }
  41 + String url = address.getUrl();
  42 + return url;
  43 + }
  44 +
  45 + @Override
  46 + public String getUrlByParam(String param) {
  47 + LambdaQueryWrapper<Address> addressLambdaQueryWrapper = Wrappers.lambdaQuery();
  48 + addressLambdaQueryWrapper.eq(Address::getParam, param);
  49 + Address address = getOne(addressLambdaQueryWrapper);
  50 + if(address == null) {
  51 + return null;
  52 + }
  53 + String url = address.getUrl();
  54 + return url;
  55 + }
  56 +
  57 +
29 } 58 }
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiLogAspect.java
@@ -176,7 +176,7 @@ public class ApiLogAspect @@ -176,7 +176,7 @@ public class ApiLogAspect
176 Address address = addressService.getAddressByUrl(url.toString(), warehouseCode); 176 Address address = addressService.getAddressByUrl(url.toString(), warehouseCode);
177 log.setApiName(apiName); 177 log.setApiName(apiName);
178 log.setRequestFrom("WMS"); 178 log.setRequestFrom("WMS");
179 - log.setResponseBy(address.getCode().toUpperCase()); 179 + log.setResponseBy(address.getParam().toUpperCase());
180 } catch (Exception e) { 180 } catch (Exception e) {
181 e.printStackTrace(); 181 e.printStackTrace();
182 } 182 }
@@ -307,7 +307,7 @@ public class ApiLogAspect @@ -307,7 +307,7 @@ public class ApiLogAspect
307 Address address = addressService.getAddressByUrl(url.toString(), QuantityConstant.DEFAULT_WAREHOUSE); 307 Address address = addressService.getAddressByUrl(url.toString(), QuantityConstant.DEFAULT_WAREHOUSE);
308 log.setApiName(apiName); 308 log.setApiName(apiName);
309 log.setRequestFrom("WMS"); 309 log.setRequestFrom("WMS");
310 - log.setResponseBy(address.getCode().toUpperCase()); 310 + log.setResponseBy(address.getParam().toUpperCase());
311 }catch (Exception e){ 311 }catch (Exception e){
312 e.printStackTrace(); 312 e.printStackTrace();
313 } 313 }
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java
@@ -129,7 +129,7 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl&lt;ReceiptHeaderMapper, R @@ -129,7 +129,7 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl&lt;ReceiptHeaderMapper, R
129 @Override 129 @Override
130 public boolean updateReceiptHeaderStatus(Integer id) { 130 public boolean updateReceiptHeaderStatus(Integer id) {
131 LambdaQueryWrapper<ReceiptDetail> receiptDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); 131 LambdaQueryWrapper<ReceiptDetail> receiptDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
132 - receiptDetailLambdaQueryWrapper.eq(ReceiptDetail::getId, id); 132 + receiptDetailLambdaQueryWrapper.eq(ReceiptDetail::getReceiptId, id);
133 List<ReceiptDetail> receiptDetailList = receiptDetailService.list(receiptDetailLambdaQueryWrapper); 133 List<ReceiptDetail> receiptDetailList = receiptDetailService.list(receiptDetailLambdaQueryWrapper);
134 ReceiptHeader receiptHeader = receiptHeaderService.getById(id); 134 ReceiptHeader receiptHeader = receiptHeaderService.getById(id);
135 if(receiptHeader == null) { 135 if(receiptHeader == null) {
@@ -141,8 +141,8 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl&lt;ReceiptHeaderMapper, R @@ -141,8 +141,8 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl&lt;ReceiptHeaderMapper, R
141 minStatus = QuantityConstant.RECEIPT_HEADER_BUILD; 141 minStatus = QuantityConstant.RECEIPT_HEADER_BUILD;
142 maxStatus = QuantityConstant.RECEIPT_HEADER_BUILD; 142 maxStatus = QuantityConstant.RECEIPT_HEADER_BUILD;
143 } else { 143 } else {
144 - minStatus = QuantityConstant.RECEIPT_HEADER_BUILD;  
145 - maxStatus = QuantityConstant.RECEIPT_HEADER_BUILD; 144 + minStatus = receiptDetailList.get(0).getStatus();
  145 + maxStatus = receiptDetailList.get(0).getStatus();
146 for(ReceiptDetail receiptDetail : receiptDetailList) { 146 for(ReceiptDetail receiptDetail : receiptDetailList) {
147 int status = receiptDetail.getStatus(); 147 int status = receiptDetail.getStatus();
148 if (minStatus > status) { 148 if (minStatus > status) {
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 5 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
6 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 6 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
7 import org.jeecg.common.api.vo.Result; 7 import org.jeecg.common.api.vo.Result;
  8 +import org.jeecg.modules.wms.api.wcs.service.WcsService;
8 import org.jeecg.modules.wms.config.container.entity.Container; 9 import org.jeecg.modules.wms.config.container.entity.Container;
9 import org.jeecg.modules.wms.config.container.service.IContainerService; 10 import org.jeecg.modules.wms.config.container.service.IContainerService;
10 import org.jeecg.modules.wms.config.location.entity.Location; 11 import org.jeecg.modules.wms.config.location.entity.Location;
@@ -78,6 +79,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -78,6 +79,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
78 private IReceiptContainerHeaderService receiptContainerHeaderService; 79 private IReceiptContainerHeaderService receiptContainerHeaderService;
79 @Resource 80 @Resource
80 private IMaterialService materialService; 81 private IMaterialService materialService;
  82 + @Resource
  83 + private WcsService wcsService;
81 84
82 @Override 85 @Override
83 @Transactional 86 @Transactional
@@ -321,7 +324,24 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -321,7 +324,24 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
321 324
322 @Override 325 @Override
323 public Result sendTaskToWcs(Integer taskId) { 326 public Result sendTaskToWcs(Integer taskId) {
324 - return null; 327 + TaskHeader taskHeader = taskHeaderService.getById(taskId);
  328 + if(taskHeader == null) {
  329 + return Result.error("下发wcs任务时,没有找到任务, 任务号" + taskId);
  330 + }
  331 + if (taskHeader.getStatus() >= QuantityConstant.TASK_STATUS_RELEASE) {
  332 + return Result.error("任务" + taskId + "已经下发,请不要重复下发,操作中止");
  333 + }
  334 + Result result = wcsService.wcsTaskAssign(taskHeader);
  335 + if(!result.isSuccess()) {
  336 + throw new ServiceException(result.getMessage());
  337 + }
  338 + taskHeader.setStatus(QuantityConstant.TASK_STATUS_RELEASE);
  339 + boolean success = taskHeaderService.updateById(taskHeader);
  340 + if(!success) {
  341 + throw new ServiceException("下发wcs任务时, 更新任务状态失败");
  342 + }
  343 +
  344 + return Result.ok("执行下发任务成功");
325 } 345 }
326 346
327 @Transactional(rollbackFor = Exception.class) 347 @Transactional(rollbackFor = Exception.class)
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
@@ -552,6 +552,8 @@ public class QuantityConstant { @@ -552,6 +552,8 @@ public class QuantityConstant {
552 public static final int STATUS_ENABLE = 1; 552 public static final int STATUS_ENABLE = 1;
553 public static final int STATUS_DISABLE = 0; 553 public static final int STATUS_DISABLE = 0;
554 554
  555 + public static final int HTTP_OK = 200;
  556 +
555 557
556 public static final String EER_TABLE_OTHERSHIPMENT = "STK_MisDelivery"; 558 public static final String EER_TABLE_OTHERSHIPMENT = "STK_MisDelivery";
557 /*直接调拨单回传*/ 559 /*直接调拨单回传*/
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/utils/http/HttpUtils.java 0 → 100644
  1 +package org.jeecg.utils.http;
  2 +
  3 +import org.apache.commons.io.IOUtils;
  4 +import org.apache.http.HttpResponse;
  5 +import org.apache.http.HttpStatus;
  6 +import org.apache.http.client.methods.HttpPost;
  7 +import org.apache.http.entity.StringEntity;
  8 +import org.apache.http.impl.client.CloseableHttpClient;
  9 +import org.apache.http.impl.client.HttpClients;
  10 +import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect;
  11 +import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +
  15 +import javax.net.ssl.*;
  16 +import java.io.*;
  17 +import java.net.*;
  18 +import java.security.cert.X509Certificate;
  19 +
  20 +
  21 +/**
  22 + * 通用http发送方法
  23 + *
  24 + * @author huaheng
  25 + */
  26 +public class HttpUtils
  27 +{
  28 +
  29 + private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
  30 +
  31 + /**
  32 + * 向指定 URL 发送GET方法的请求
  33 + *
  34 + * @param url 发送请求的 URL
  35 + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  36 + * @return 所代表远程资源的响应结果
  37 + */
  38 + public static String sendGet(String url, String param)
  39 + {
  40 + StringBuilder result = new StringBuilder();
  41 + BufferedReader in = null;
  42 + try
  43 + {
  44 + String urlNameString = url + "?" + param;
  45 + log.info("sendGet - {}", urlNameString);
  46 + URL realUrl = new URL(urlNameString);
  47 + URLConnection connection = realUrl.openConnection();
  48 + connection.setRequestProperty("accept", "*/*");
  49 + connection.setRequestProperty("connection", "Keep-Alive");
  50 + connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  51 + connection.connect();
  52 + in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  53 + String line;
  54 + while ((line = in.readLine()) != null)
  55 + {
  56 + result.append(line);
  57 + }
  58 + log.info("recv - {}", result);
  59 + }
  60 + catch (ConnectException e)
  61 + {
  62 + log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e.getMessage());
  63 + }
  64 + catch (SocketTimeoutException e)
  65 + {
  66 + log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage());
  67 + }
  68 + catch (IOException e)
  69 + {
  70 + log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e.getMessage());
  71 + }
  72 + catch (Exception e)
  73 + {
  74 + log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e.getMessage());
  75 + }
  76 + finally
  77 + {
  78 + try
  79 + {
  80 + if (in != null)
  81 + {
  82 + in.close();
  83 + }
  84 + }
  85 + catch (Exception ex)
  86 + {
  87 + log.error("调用in.close Exception, url=" + url + ",param=" + param, ex.getMessage());
  88 + }
  89 + }
  90 + return result.toString();
  91 + }
  92 +
  93 + //post请求 为erp回传定制
  94 + public static String erppost(String strURL, String params,String key) {
  95 + HttpURLConnection connection = null;
  96 + InputStream is = null;
  97 + OutputStreamWriter out = null;
  98 + String result = null;
  99 + ApiLog log = null;
  100 +
  101 + try {
  102 + URL url = new URL(strURL);// 创建连接
  103 + String ur=""+url;
  104 + connection = (HttpURLConnection) url.openConnection();
  105 + connection.setDoOutput(true);
  106 + connection.setDoInput(true);
  107 + connection.setUseCaches(false);
  108 + connection.setInstanceFollowRedirects(true);
  109 + connection.setRequestMethod("POST");// 设置请求方式
  110 + connection.setRequestProperty("Accept","application/json");// 设置接收数据的格式
  111 + connection.setRequestProperty("Content-Type","application/json");// 设置发送数据的格式
  112 + connection.setRequestProperty("apiKey",key);//测试环境key
  113 + log = ApiLogAspect.initApiLog(connection, params);
  114 + connection.connect();
  115 + out = new OutputStreamWriter( connection.getOutputStream(),"UTF-8");// utf-8编码
  116 + out.append(params);
  117 + out.flush();
  118 + out.close(); // 读取响应
  119 + int length = (int) connection.getContentLength();// 获取长度
  120 + is = connection.getInputStream();
  121 + BufferedReader br = new BufferedReader(new InputStreamReader(is));
  122 + length = 10000;
  123 + if(length > 0) {
  124 + byte[] data = new byte[length];
  125 + byte[] temp = new byte[512];
  126 + int readLen = 0;
  127 + int destPos = 0;
  128 + while ((readLen = is.read(temp)) > 0) {
  129 + System.arraycopy(temp, 0, data, destPos, readLen);
  130 + destPos += readLen;
  131 + }
  132 + result = new String(data, "UTF-8");
  133 + System.out.println(result);
  134 + }
  135 + } catch (Exception e) {
  136 + ApiLogAspect.setApiLogException(log, e);
  137 + e.printStackTrace();
  138 + }finally {
  139 + ApiLogAspect.finishApiLog(log, connection, result);
  140 + if(connection != null)
  141 + connection.disconnect();
  142 + IOUtils.closeQuietly(out, is);
  143 + }
  144 + return result;
  145 + }
  146 +
  147 + /**
  148 + * 向指定 URL 发送POST方法的请求
  149 + *
  150 + * @param url 发送请求的 URL
  151 + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  152 + * @return 所代表远程资源的响应结果
  153 + */
  154 + public static String sendPost(String url, String param)
  155 + {
  156 + PrintWriter out = null;
  157 + BufferedReader in = null;
  158 + StringBuilder result = new StringBuilder();
  159 + try
  160 + {
  161 + String urlNameString = url + "?" + param;
  162 + log.info("sendPost - {}", urlNameString);
  163 + URL realUrl = new URL(urlNameString);
  164 + URLConnection conn = realUrl.openConnection();
  165 + conn.setRequestProperty("accept", "*/*");
  166 + conn.setRequestProperty("connection", "Keep-Alive");
  167 + conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  168 + conn.setRequestProperty("Accept-Charset", "utf-8");
  169 + conn.setRequestProperty("contentType", "utf-8");
  170 + conn.setDoOutput(true);
  171 + conn.setDoInput(true);
  172 + out = new PrintWriter(conn.getOutputStream());
  173 + out.print(param);
  174 + out.flush();
  175 + if (((HttpURLConnection)conn).getResponseCode() >= 390) {
  176 + in = new BufferedReader(new InputStreamReader(((HttpURLConnection) conn).getErrorStream()));
  177 + } else {
  178 + in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  179 + }
  180 +// in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
  181 + String line;
  182 + while ((line = in.readLine()) != null)
  183 + {
  184 + result.append(line);
  185 + }
  186 + log.info("recv - {}", result);
  187 + }
  188 + catch (ConnectException e)
  189 + {
  190 + log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e.getMessage());
  191 + }
  192 + catch (SocketTimeoutException e)
  193 + {
  194 + log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage());
  195 + }
  196 + catch (IOException e)
  197 + {
  198 + log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e.getMessage());
  199 + }
  200 + catch (Exception e)
  201 + {
  202 + log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e.getMessage());
  203 + }
  204 + finally
  205 + {
  206 + try
  207 + {
  208 + if (out != null)
  209 + {
  210 + out.close();
  211 + }
  212 + if (in != null)
  213 + {
  214 + in.close();
  215 + }
  216 + }
  217 + catch (IOException ex)
  218 + {
  219 + log.error("调用in.close Exception, url=" + url + ",param=" + param, ex.getMessage());
  220 + }
  221 + }
  222 + return result.toString();
  223 + }
  224 +
  225 + public static String sendSSLPost(String url, String param)
  226 + {
  227 + StringBuilder result = new StringBuilder();
  228 + String urlNameString = url + "?" + param;
  229 + try
  230 + {
  231 + log.info("sendSSLPost - {}", urlNameString);
  232 + SSLContext sc = SSLContext.getInstance("SSL");
  233 + sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
  234 + URL console = new URL(urlNameString);
  235 + HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
  236 + conn.setRequestProperty("accept", "*/*");
  237 + conn.setRequestProperty("connection", "Keep-Alive");
  238 + conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  239 + conn.setRequestProperty("Accept-Charset", "utf-8");
  240 + conn.setRequestProperty("contentType", "utf-8");
  241 + conn.setDoOutput(true);
  242 + conn.setDoInput(true);
  243 +
  244 + conn.setSSLSocketFactory(sc.getSocketFactory());
  245 + conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
  246 + conn.connect();
  247 + InputStream is = conn.getInputStream();
  248 + BufferedReader br = new BufferedReader(new InputStreamReader(is));
  249 + String ret = "";
  250 + while ((ret = br.readLine()) != null)
  251 + {
  252 + if (ret != null && !"".equals(ret.trim()))
  253 + {
  254 + result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
  255 + }
  256 + }
  257 + log.info("recv - {}", result);
  258 + conn.disconnect();
  259 + br.close();
  260 + }
  261 + catch (ConnectException e)
  262 + {
  263 + log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e.getMessage());
  264 + }
  265 + catch (SocketTimeoutException e)
  266 + {
  267 + log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage());
  268 + }
  269 + catch (IOException e)
  270 + {
  271 + log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e.getMessage());
  272 + }
  273 + catch (Exception e)
  274 + {
  275 + log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e.getMessage());
  276 + }
  277 + return result.toString();
  278 + }
  279 +
  280 +
  281 + //此方法是将参数以body形式发送post请求
  282 + public static String bodypost(String strURL, String params) {
  283 + System.out.println(strURL);
  284 + System.out.println(params);
  285 + HttpURLConnection connection = null;
  286 + InputStream is = null;
  287 + OutputStreamWriter out = null;
  288 + String result = null;
  289 + ApiLog log = null;
  290 +
  291 + try {
  292 + URL url = new URL(strURL);// 创建连接
  293 + String ur=""+url;
  294 + connection = (HttpURLConnection) url.openConnection();
  295 + connection.setDoOutput(true);
  296 + connection.setDoInput(true);
  297 + connection.setUseCaches(false);
  298 + connection.setInstanceFollowRedirects(true);
  299 + connection.setRequestMethod("POST");// 设置请求方式
  300 + connection.setRequestProperty("Accept","application/json");// 设置接收数据的格式
  301 + connection.setRequestProperty("Content-Type","application/json");// 设置发送数据的格式
  302 + if ((ur.contains("10.0.15.19")))
  303 + {
  304 + connection.setRequestProperty("apiKey","c687ef505557428595e6a596fba5de6c");//测试环境key
  305 + }
  306 + log = ApiLogAspect.initApiLog(connection, params);
  307 + connection.connect();
  308 + out = new OutputStreamWriter( connection.getOutputStream(),"UTF-8");// utf-8编码
  309 + out.append(params);
  310 + out.flush();
  311 + out.close(); // 读取响应
  312 + int length = (int) connection.getContentLength();// 获取长度
  313 + is = connection.getInputStream();
  314 + BufferedReader br = new BufferedReader(new InputStreamReader(is));
  315 + length = 10000;
  316 + if(length > 0) {
  317 + byte[] data = new byte[length];
  318 + byte[] temp = new byte[512];
  319 + int readLen = 0;
  320 + int destPos = 0;
  321 + while ((readLen = is.read(temp)) > 0) {
  322 + System.arraycopy(temp, 0, data, destPos, readLen);
  323 + destPos += readLen;
  324 + }
  325 + result = new String(data, "UTF-8");
  326 + System.out.println(result);
  327 + }
  328 + } catch (Exception e) {
  329 + ApiLogAspect.setApiLogException(log, e);
  330 + e.printStackTrace();
  331 + }finally {
  332 + ApiLogAspect.finishApiLog(log, connection, result);
  333 + if(connection != null)
  334 + connection.disconnect();
  335 + IOUtils.closeQuietly(out, is);
  336 + }
  337 + return result;
  338 + }
  339 +
  340 + /**
  341 + * 发送以json为参数的POST请求
  342 + * @param json
  343 + * @param url
  344 + * @return
  345 + */
  346 + public static String sendJsonPostToken(String json, String url){
  347 + String result = "";
  348 + HttpPost post = new HttpPost(url);
  349 + try{
  350 + CloseableHttpClient httpClient = HttpClients.createDefault();
  351 +
  352 + post.setHeader("Content-Type","application/json;charset=utf-8");
  353 + post.addHeader("Authorization", "Basic YWRtaW46");
  354 + StringEntity postingString = new StringEntity(json,"utf-8");
  355 + post.setEntity(postingString);
  356 + HttpResponse response = httpClient.execute(post);
  357 +
  358 + InputStream in = response.getEntity().getContent();
  359 + BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
  360 + StringBuilder strber= new StringBuilder();
  361 + String line = null;
  362 + while((line = br.readLine())!=null){
  363 + strber.append(line+'\n');
  364 + }
  365 + br.close();
  366 + in.close();
  367 + result = strber.toString();
  368 + if(response.getStatusLine().getStatusCode()!= HttpStatus.SC_OK){
  369 + result = "服务器异常";
  370 + }
  371 + } catch (Exception e){
  372 + System.out.println("请求异常");
  373 + throw new RuntimeException(e);
  374 + } finally{
  375 + post.abort();
  376 + }
  377 + return result;
  378 + }
  379 +
  380 + private static class TrustAnyTrustManager implements X509TrustManager
  381 + {
  382 + @Override
  383 + public void checkClientTrusted(X509Certificate[] chain, String authType)
  384 + {
  385 + }
  386 +
  387 + @Override
  388 + public void checkServerTrusted(X509Certificate[] chain, String authType)
  389 + {
  390 + }
  391 +
  392 + @Override
  393 + public X509Certificate[] getAcceptedIssuers()
  394 + {
  395 + return new X509Certificate[] {};
  396 + }
  397 + }
  398 +
  399 + private static class TrustAnyHostnameVerifier implements HostnameVerifier
  400 + {
  401 + @Override
  402 + public boolean verify(String hostname, SSLSession session)
  403 + {
  404 + return true;
  405 + }
  406 + }
  407 +
  408 +}
jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/utils/http/OkHttpUtils.java 0 → 100644
  1 +package org.jeecg.utils.http;
  2 +
  3 +
  4 +import com.alibaba.fastjson.parser.Feature;
  5 +import com.google.gson.Gson;
  6 +import okhttp3.*;
  7 +import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect;
  8 +import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +
  12 +import java.io.IOException;
  13 +import java.lang.reflect.Type;
  14 +import java.util.HashMap;
  15 +import java.util.Map;
  16 +import java.util.Objects;
  17 +import java.util.concurrent.TimeUnit;
  18 +
  19 +/**
  20 + * OkHttp发送请求
  21 + * @author huaheng
  22 + * @Date 2022-5-30
  23 + */
  24 +public class OkHttpUtils {
  25 +
  26 + private static final Logger log = LoggerFactory.getLogger(OkHttpUtils.class);
  27 +
  28 + /**
  29 + * 最大连接时间
  30 + */
  31 + public final static int CONNECTION_TIMEOUT = 30;
  32 + /**
  33 + * JSON格式
  34 + */
  35 + public static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json; charset=utf-8");
  36 + /**
  37 + * OkHTTP线程池最大空闲线程数
  38 + */
  39 + public final static int MAX_IDLE_CONNECTIONS = 100;
  40 + /**
  41 + * OkHTTP线程池空闲线程存活时间
  42 + */
  43 + public final static long KEEP_ALIVE_DURATION = 30L;
  44 +
  45 +
  46 + private static final String CONTENT_TYPE = "Content-Type";
  47 +
  48 +
  49 + /**
  50 + * client
  51 + * 配置重试
  52 + */
  53 + private final static OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder()
  54 + .readTimeout(CONNECTION_TIMEOUT, TimeUnit.SECONDS)
  55 + .writeTimeout(CONNECTION_TIMEOUT, TimeUnit.SECONDS)
  56 + .connectTimeout(CONNECTION_TIMEOUT, TimeUnit.SECONDS)
  57 + .connectionPool(new ConnectionPool(MAX_IDLE_CONNECTIONS, KEEP_ALIVE_DURATION, TimeUnit.MINUTES))
  58 + .build();
  59 + private static final Gson GSON = new Gson();
  60 +
  61 + /**
  62 + * 向指定 URL 发送GET方法的请求
  63 + *
  64 + * @param url 发送请求的 URL
  65 + //* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  66 + * @return 所代表远程资源的响应结果
  67 + */
  68 + public static String sendGet(String url,String param)
  69 + {
  70 + //headers 请求头
  71 + Map<String, String> headers=new HashMap<>();
  72 + //请求URI
  73 + String urlNameString = url + "?" + param;
  74 +
  75 + Request.Builder builder = new Request.Builder();
  76 + buildHeader(builder, headers);
  77 +
  78 + Request request = builder.url(urlNameString).get().build();
  79 + Response response = null;
  80 + try {
  81 + response = HTTP_CLIENT.newCall(request).execute();
  82 + if (response.isSuccessful() && Objects.nonNull(response.body())) {
  83 + String result = response.body().string();
  84 + log.info("执行get请求, url: {} 成功,返回数据: {}", url, result);
  85 + return result;
  86 + }
  87 + } catch (IOException e) {
  88 + log.error("执行get请求,url: {} 失败!", url, e);
  89 + }
  90 + return "";
  91 + }
  92 +
  93 +
  94 +
  95 + /**
  96 + * 向指定 URL 发送POST方法的请求
  97 + *
  98 + * @param url 发送请求的 URL
  99 + // * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  100 + * @return 所代表远程资源的响应结果
  101 + */
  102 + public static String sendPost(String url, String param){
  103 + FormBody.Builder builder = new FormBody.Builder();
  104 + String urlNameString = url + "?" + param;
  105 + FormBody body = builder.build();
  106 + Request request = new Request
  107 + .Builder()
  108 + .url(urlNameString)
  109 + .post(body)
  110 + .build();
  111 + Response response = null;
  112 + try {
  113 + response = HTTP_CLIENT.newCall(request).execute();
  114 + //调用成功
  115 + if (response.isSuccessful() && response.body() != null) {
  116 + return response.body().string();
  117 + }
  118 + } catch (IOException e) {
  119 + e.printStackTrace();
  120 + }
  121 + return "";
  122 + }
  123 +
  124 +
  125 + //此方法是将参数以body形式发送post请求
  126 + public static String bodypost(String strURL, String json) {
  127 + ApiLog apiLog = null;
  128 + // using above json body as a input to post API call
  129 + RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json);
  130 + //headers 请求头
  131 + Map<String, String> headers =new HashMap<>();
  132 + headers.put("Accept","application/json");// 设置接收数据的格式
  133 + headers.put("Content-Type","application/json");// 设置发送数据的格式
  134 + Request.Builder builder = new Request.Builder();
  135 + buildHeader(builder, headers);
  136 + Request request = builder.url(strURL).post(body).build();
  137 + Response response = null;
  138 + String result=null;
  139 + try {
  140 + apiLog = ApiLogAspect.initApiLog(request, json);
  141 + response = HTTP_CLIENT.newCall(request).execute();
  142 + if (response.isSuccessful() && Objects.nonNull(response.body())) {
  143 + result = response.body().string();
  144 + log.info("执行post请求,url: {}, header: {} ,参数: {} 成功,返回结果: {}", strURL, headers, json, result);
  145 + }
  146 + } catch (IOException e) {
  147 + ApiLogAspect.setApiLogException(apiLog, e);
  148 + log.error("执行post请求,url: {},参数: {} 失败!", strURL, json, e);
  149 + } finally {
  150 + ApiLogAspect.finishApiLog(apiLog, response, result);
  151 + }
  152 + return result;
  153 + }
  154 +
  155 + /**
  156 + * 设置请求头
  157 + *
  158 + * @param builder .
  159 + * @param headers 请求头
  160 + */
  161 + private static void buildHeader(Request.Builder builder, Map<String, String> headers) {
  162 + if (Objects.nonNull(headers) && headers.size() > 0) {
  163 + headers.forEach((k, v) -> {
  164 + if (Objects.nonNull(k) && Objects.nonNull(v)) {
  165 + builder.addHeader(k, v);
  166 + }
  167 + });
  168 + }
  169 + }
  170 +
  171 + /**
  172 + * 支持嵌套泛型的post请求。
  173 + * <pre>
  174 + * Type type = new TypeToken<Results<User>>() {}.getType();
  175 + * <pre/>
  176 + *
  177 + * @param url 链接
  178 + * @param json 请求json
  179 + * @param type 嵌套泛型
  180 + * @return 响应对象, 可进行强转。
  181 + */
  182 + public static <T> T post(String url, String json, Type type) {
  183 + String result = bodypost(url, json);
  184 + if (Objects.nonNull(result) && Objects.nonNull(type)) {
  185 + return GSON.fromJson(result, type);
  186 + }
  187 + return null;
  188 + }
  189 +
  190 +}
jeecg-boot-master/jeecg-boot/pom.xml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <artifactId>jeecg-boot-parent</artifactId> 4 <artifactId>jeecg-boot-parent</artifactId>
5 <version>3.1.0</version> 5 <version>3.1.0</version>
6 <packaging>pom</packaging> 6 <packaging>pom</packaging>
7 - 7 +
8 <parent> 8 <parent>
9 <groupId>org.springframework.boot</groupId> 9 <groupId>org.springframework.boot</groupId>
10 <artifactId>spring-boot-starter-parent</artifactId> 10 <artifactId>spring-boot-starter-parent</artifactId>
@@ -275,7 +275,6 @@ @@ -275,7 +275,6 @@
275 <artifactId>okhttp</artifactId> 275 <artifactId>okhttp</artifactId>
276 <version>4.4.1</version> 276 <version>4.4.1</version>
277 </dependency> 277 </dependency>
278 -  
279 <dependency> 278 <dependency>
280 <groupId>io.minio</groupId> 279 <groupId>io.minio</groupId>
281 <artifactId>minio</artifactId> 280 <artifactId>minio</artifactId>
@@ -421,4 +420,4 @@ @@ -421,4 +420,4 @@
421 </properties> 420 </properties>
422 </profile> 421 </profile>
423 </profiles> 422 </profiles>
424 -</project>  
425 \ No newline at end of file 423 \ No newline at end of file
  424 +</project>