1.封装阳光采购平台院内目录查询接口

master
MrZhai 3 years ago
parent fe76b46571
commit 66ef77a16a

@ -18,6 +18,7 @@ import com.glxp.mipsdl.admin.req.UdiwmsOrderRequest;
import com.glxp.mipsdl.admin.req.UdiwmsProductRequest;
import com.glxp.mipsdl.admin.req.UdiwmsUnitRequest;
import com.glxp.mipsdl.admin.res.system.UdiwmsProductInfoResponse;
import com.glxp.mipsdl.admin.util.CustomUtil;
import com.glxp.mipsdl.admin.util.Md5Utils;
import com.glxp.mipsdl.common.res.BaseResponse;
import com.glxp.mipsdl.common.util.ResultVOUtils;
@ -26,10 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.*;
@Slf4j
@Service
@ -46,7 +44,7 @@ public class UdPlatClient implements BaseHttpClient {
@Override
public BaseResponse getPrdoucts(UdiwmsProductRequest udiwmsProductRequest) {
StringBuilder builder = new StringBuilder();
Map<String, String> params = new TreeMap<>();
Map<String, Object> params = new TreeMap<>();
if (null != udiwmsProductRequest) {
Field[] fields = ReflectUtil.getFields(UdiwmsProductRequest.class);
for (Field field : fields) {
@ -83,12 +81,12 @@ public class UdPlatClient implements BaseHttpClient {
String url = udPlatConfig.getHost() + "/hsapi/purchase/hosp/goods/query";
url += builder;
HttpResponse response = HttpRequest.get(url).headerMap(getHeader(params), true).execute();
HttpResponse response = HttpRequest.get(url).headerMap(getHeader(params, "get"), true).execute();
List<UdiwmsProductInfoResponse> result = new ArrayList<>();
if (!response.body().contains("校验失败")) {
JSONObject jsonObject = JSON.parseObject(response.body());
List<UdplatGoodsEntity> udplatGoodsEntities = JSON.parseArray(jsonObject.getJSONObject("data").getString("data"), UdplatGoodsEntity.class);
udplatGoodsEntities = getSingleSpecProduct(udplatGoodsEntities);
//udplatGoodsEntities = getSingleSpecProduct(udplatGoodsEntities);
result.addAll(convertProduct(udplatGoodsEntities));
}
return ResultVOUtils.success(result);
@ -104,12 +102,12 @@ public class UdPlatClient implements BaseHttpClient {
for (UdplatGoodsEntity udplatGoodsEntity : udplatGoodsEntities) {
if (udplatGoodsEntity.getMatchLevel().equals(1)) {
//对照层级为产品,调用院内目录查询此产品关联的所有规格型号
Map<String, String> params = new TreeMap<>();
Map<String, Object> params = new TreeMap<>();
params.put("hospGoodsId", String.valueOf(udplatGoodsEntity.getId()));
params.put("compId", udplatGoodsEntity.getCompId());
String paramUrl = "?hospGoodsId=" + udplatGoodsEntity.getId() + "&compId=" + udplatGoodsEntity.getCompId();
HttpResponse response = HttpRequest.get(udPlatConfig.getHost() + "/hsapi/purchase/hospGoods/spec/query" + paramUrl).headerMap(getHeader(params), true).execute();
HttpResponse response = HttpRequest.get(udPlatConfig.getHost() + "/hsapi/purchase/hospGoods/spec/query" + paramUrl).headerMap(getHeader(params, "get"), true).execute();
JSONObject resp = JSON.parseObject(response.body());
if (resp.getBoolean("success").equals(true)) {
JSONArray jsonArray = resp.getJSONObject("data").getJSONArray("data");
@ -153,6 +151,7 @@ public class UdPlatClient implements BaseHttpClient {
for (UdplatGoodsEntity udplatGoodsEntity : udplatGoodsEntities) {
UdiwmsProductInfoResponse productInfoResponse = new UdiwmsProductInfoResponse();
BeanUtil.copyProperties(udplatGoodsEntity, productInfoResponse);
productInfoResponse.setCode(String.valueOf(udplatGoodsEntity.getId()));
productInfoResponse.setRegisterNo(udplatGoodsEntity.getRegNum());
productInfoResponse.setYlqxzcrbarmc(udplatGoodsEntity.getRegName());
productInfoResponse.setSupName(udplatGoodsEntity.getDistributorName());
@ -162,12 +161,14 @@ public class UdPlatClient implements BaseHttpClient {
productInfoResponse.setStandard(udplatGoodsEntity.getSpec());
productInfoResponse.setSpec(udplatGoodsEntity.getSpec() + udplatGoodsEntity.getModel());
productInfoResponse.setName(udplatGoodsEntity.getProductName());
productInfoResponse.setProductSpecId(udplatGoodsEntity.getCompId());
list.add(productInfoResponse);
}
return list;
}
private Map<String, String> getHeader(Map<String, String> mapParam) {
private Map<String, String> getHeader(Map<String, Object> mapParam, String reqType) {
Map<String, String> map = new TreeMap<>();
String time = String.valueOf(System.currentTimeMillis());
mapParam.put("time", time);
@ -176,7 +177,7 @@ public class UdPlatClient implements BaseHttpClient {
map.put("userName", udPlatConfig.getUserName());
map.put("time", time);
map.put("secretKey", udPlatConfig.getSecretKey());
map.put("sign", getSign(mapParam));
map.put("sign", getSign(mapParam, reqType));
log.info(map.toString());
return map;
}
@ -185,23 +186,114 @@ public class UdPlatClient implements BaseHttpClient {
*
*
* @param mapParam
* @param reqType
* @return
*/
private String getSign(Map<String, String> mapParam) {
TreeMap<String, String> map = new TreeMap<>();
private String getSign(Map<String, Object> mapParam, String reqType) {
TreeMap<String, Object> map = new TreeMap<>();
map.put("appId", udPlatConfig.getAppId());
map.put("userName", udPlatConfig.getUserName());
map.put("secretKey", udPlatConfig.getUdPlatConfig().getSecretKey());
map.put("time", mapParam.get("time"));
map.putAll(mapParam);
map.put("time", String.valueOf(mapParam.get("time")));
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue());
sb.append("&");
if ("post".equals(reqType)) {
mapParam.remove("time");
//拼接body参数
sb.append("appId=").append(udPlatConfig.getAppId()).append("&body=").append(JSON.toJSONString(mapParam)).append("&");
map.remove("appId");
for (Map.Entry<String, Object> entry : map.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue());
sb.append("&");
}
} else {
map.putAll(mapParam);
for (Map.Entry<String, Object> entry : map.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue());
sb.append("&");
}
}
String str = sb.toString();
String str0 = str.substring(0, str.length() - 1);
log.info("签名---------------");
log.info(str0);
return Md5Utils.stringToMD5(str0);
}
/**
*
*
* @param udiwmsOrderRequest
* @return
*/
public BaseResponse postOrder(UdiwmsOrderRequest udiwmsOrderRequest) {
Map<String, Object> orderParam = new TreeMap<>();
orderParam.put("hisOrderId", udiwmsOrderRequest.getBillNo()); //医院计划单或订单主键(医院系统存储主键)
orderParam.put("remark", udiwmsOrderRequest.getRemark()); //医院采购计划备注
orderParam.put("shippingAddress", udiwmsOrderRequest.getAddress()); //收货地址
orderParam.put("shippingLinkMan", udiwmsOrderRequest.getLinkMan()); //收货联系人
orderParam.put("shippingLinkTel", udiwmsOrderRequest.getLinkTel()); //收货联系电话
orderParam.put("shippingInvoice", udiwmsOrderRequest.getCorpName()); //开票抬头
//orderParam.put("planTime", null); //期望到货时间,参数中无此字段,暂时不传
List<Map> detailsMap = new ArrayList<>();
Map<String, String> orderDetailParamMap = new TreeMap<>();
orderDetailParamMap.put("hisOrderDetailId", CustomUtil.getId()); //医院订单明细主键
orderDetailParamMap.put("hospHisCode", udiwmsOrderRequest.getProductId()); //院内目录商品编码
orderDetailParamMap.put("planBuyNum", udiwmsOrderRequest.getCount()); //采购数量
//orderDetailParamMap.put("purchaseRemark", null); //自定义订单备注信息,参数中无此字段,暂时不传
orderDetailParamMap.put("productSpecId", udiwmsOrderRequest.getProductId());
//查询产品规格型号信息
UdplatGoodsEntity udplatGoods = getGoodsInfoByProductSpecId(udiwmsOrderRequest.getProductId(), udiwmsOrderRequest.getProductSpecId());
if (null != udplatGoods) {
orderDetailParamMap.put("spec", udplatGoods.getSpec());
orderDetailParamMap.put("model", udplatGoods.getModel());
}
detailsMap.add(orderDetailParamMap);
orderParam.put("items", detailsMap);
log.info("参数-----");
log.info(JSON.toJSONString(orderParam));
//向阳光采购平台提交采购计划
HttpResponse response = HttpRequest.post(udPlatConfig.getHost() + "/hsapi/purchase/planOrder/submit").headerMap(getHeader(orderParam, "post"), true)
.body(JSON.toJSONString(orderParam))
.execute();
JSONObject resp = JSON.parseObject(response.body());
if (resp.getBoolean("success").equals(false)) {
log.info("提交采购计划失败");
log.info(response.body());
}
return ResultVOUtils.success(resp.get("data"));
}
/**
*
*
* @param hospGoodsId ID
* @param productSpecId ID
* @return
*/
public UdplatGoodsEntity getGoodsInfoByProductSpecId(String hospGoodsId, String productSpecId) {
Map<String, Object> params = new HashMap<>();
params.put("hospGoodsId", hospGoodsId);
params.put("compId", productSpecId);
//拼接参数
String paramsUrl = "?hospGoodsId=" + hospGoodsId + "&compId=" + productSpecId;
HttpResponse response = HttpRequest.get(udPlatConfig.getHost() + "/hsapi/purchase/hospGoods/spec/query" + paramsUrl).headerMap(getHeader(params, "get"), true).execute();
JSONObject resp = JSON.parseObject(response.body());
if (resp.getBoolean("success").equals(true)) {
JSONArray jsonArray = resp.getJSONObject("data").getJSONArray("data");
if (!jsonArray.isEmpty()) {
for (Object o : jsonArray) {
UdplatGoodsEntity entity = JSON.parseObject(JSON.toJSONString(o), UdplatGoodsEntity.class);
return entity;
}
}
}
return null;
}
}

@ -45,10 +45,10 @@ public class UdiWmsController {
public BaseResponse getProducts(@RequestBody UdiwmsProductRequest udiwmsProductRequest) {
if (curFlag.equals("YONGYOU_U8_V3.1")) {
return pzhzdClient.getPrdoucts(udiwmsProductRequest);
} else if (curFlag.equals("YG_UDPLAT_V1.0")){
} else if (curFlag.equals("YG_UDPLAT_V1.0")) {
return udPlatClient.getPrdoucts(udiwmsProductRequest);
}
return ResultVOUtils.error(500, "未设置系统版本!");
return ResultVOUtils.error(500, "未设置系统版本!");
}
@ -103,4 +103,18 @@ public class UdiWmsController {
}
/**
*
*
* @param udiwmsOrderRequest
* @return
*/
@PostMapping("/udiwms/erp/order/postOrder")
public BaseResponse postOrder(@RequestBody UdiwmsOrderRequest udiwmsOrderRequest) {
if (curFlag.equals("YG_UDPLAT_V1.0")) {
return udPlatClient.postOrder(udiwmsOrderRequest);
}
return ResultVOUtils.error(500, "未设置系统版本");
}
}

@ -44,4 +44,7 @@ public class UdplatGoodsEntity {
private Date updateTime;//最后更新时间
private Integer matchLevel; //对照层级 1.产品 2.单一规格
private String hospHisCode;
}

@ -14,4 +14,29 @@ public class UdiwmsOrderRequest {
private Integer limit;
private Integer page;
private String billdate; //单据日期
private String billType; //单据类型
private Integer createUser;
private Integer reviewUser;
private String remark; //备注
private String remark1; //备注1/规格型号ID
private String remark2; //备注2/型号
private String remark3; //备注3/规格
private String address; //地址
private String linkMan; //联系人
private String linkTel; //电话
private String corpName; //往来单位
private String batchNo; //批次号
private String expireDate; //失效日期
private String productDate; //生产日期
private String count; //数量
private String productId; //产品编码
private String detailCode; //明细编码
//阳光采购平台 耗材目录规格id
private String productSpecId;
}

@ -4,7 +4,10 @@ import lombok.Data;
@Data
public class UdiwmsUnitRequest extends ListPageRequest {
String key;
private String unitId;
private String name;
}

@ -72,4 +72,9 @@ public class UdiwmsProductInfoResponse {
//备注3
private String remark3;
//阳光采购平台 耗材目录规格id
private String productSpecId;
private String hospHisCode;
}

@ -0,0 +1,46 @@
package com.glxp.mipsdl.admin.util;
import java.util.*;
public class CustomUtil {
public static String getUUId() {
UUID uuid = UUID.randomUUID();
return uuid.toString().replace("-", "");
}
//随机生成ID
public static String getId() {
String id = System.currentTimeMillis() + "";
int number = new Random().nextInt(90) + 10;
id = id + number;
return id.substring(4);
}
//随机生成往来单位ID
public static String getUnitId() {
String id = System.currentTimeMillis() + "";
int number = new Random().nextInt(90) + 10;
id = id + number;
return "HZ" + id.substring(4);
}
public static <T> List<List<T>> splitList(List<T> list, int len) {
if (list == null || list.isEmpty() || len < 1) {
return Collections.emptyList();
}
List<List<T>> result = new ArrayList<>();
int size = list.size();
int count = (size + len - 1) / len;
for (int i = 0; i < count; i++) {
List<T> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1)));
result.add(subList);
}
return result;
}
}
Loading…
Cancel
Save