对接智业第三方单据上传修改

master
anthonyywj2 3 years ago
parent f8930c428c
commit f8ddbffd77

@ -0,0 +1,184 @@
package com.glxp.mipsdl.admin.client.http;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.glxp.mipsdl.admin.config.ThirdSysConfig;
import com.glxp.mipsdl.admin.dao.phxyy.BasicThirdSysDetailDao;
import com.glxp.mipsdl.admin.entity.phxyy.BasicThirdSysBusApiEntity;
import com.glxp.mipsdl.admin.entity.phxyy.BasicThirdSysDetailEntity;
import com.glxp.mipsdl.admin.req.UdiwmsOnhandRequest;
import com.glxp.mipsdl.admin.req.UdiwmsOrderRequest;
import com.glxp.mipsdl.admin.req.UdiwmsPreInOrderRequest;
import com.glxp.mipsdl.admin.req.ZaxzyyOrderRequest;
import com.glxp.mipsdl.admin.req.phxyy.PhBusTypeRequest;
import com.glxp.mipsdl.admin.req.phxyy.PhProductRequest;
import com.glxp.mipsdl.admin.req.phxyy.PhUnitRequest;
import com.glxp.mipsdl.admin.req.phxyy.PhWarehouseRequest;
import com.glxp.mipsdl.admin.res.phxyy.BussinessOriginTypeResponse;
import com.glxp.mipsdl.admin.service.phxyy.BasicThirdSysBusApiService;
import com.glxp.mipsdl.admin.service.phxyy.BussinessOriginTypeService;
import com.glxp.mipsdl.admin.util.HttpClient;
import com.glxp.mipsdl.common.res.BaseResponse;
import com.glxp.mipsdl.common.util.ResultVOUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
public class ZaxyyClient {
@Resource
private ThirdSysConfig thirdSysConfig;
@Resource
private HttpClient httpClient;
String[] getHeaderArray() {
List<String> headArray = new ArrayList<>();
headArray.add("Content-Type");
headArray.add("application/json");
if (StrUtil.isNotEmpty(thirdSysConfig.getThirdSysConfig().getApikey())) {
headArray.add("api_key");
headArray.add(thirdSysConfig.getThirdSysConfig().getApikey());
}
if (StrUtil.isNotEmpty(thirdSysConfig.getThirdSysConfig().getSecretkey())) {
headArray.add("secret_key");
headArray.add(thirdSysConfig.getThirdSysConfig().getSecretkey());
}
String[] strArray = new String[headArray.size()];
headArray.toArray(strArray);
return strArray;
}
@Resource
private BasicThirdSysBusApiService basicThirdSysBusApiService;
@Resource
private BussinessOriginTypeService bussinessOriginTypeService;
@Resource
private BasicThirdSysDetailDao basicThirdSysDetailDao;
public BaseResponse testConnect() {
PhUnitRequest phUnitRequest = new PhUnitRequest();
phUnitRequest.setPage(1);
phUnitRequest.setLimit(1);
BaseResponse baseResponse = getUnit(phUnitRequest);
if (baseResponse.getCode() == 20000) {
return ResultVOUtils.success("连接成功!");
} else {
return ResultVOUtils.error(500, "连接失败");
}
}
public BaseResponse getUnit(PhUnitRequest unitRequest) {
BasicThirdSysDetailEntity basicThirdSysDetailEntity = basicThirdSysDetailDao.selectByKey("corpUrl", thirdSysConfig.getThirdSysConfig().getThirdId());
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + basicThirdSysDetailEntity.getValue(), unitRequest, getHeaderArray());
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
}
public BaseResponse getProducts(PhProductRequest udiwmsProductRequest) {
BasicThirdSysDetailEntity basicThirdSysDetailEntity = basicThirdSysDetailDao.selectByKey("piQueryUrl", thirdSysConfig.getThirdSysConfig().getThirdId());
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + basicThirdSysDetailEntity.getValue(), udiwmsProductRequest, getHeaderArray());
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
}
public BaseResponse getOrderTypes(PhBusTypeRequest udiwmsBusTypeRequest) {
BasicThirdSysDetailEntity basicThirdSysDetailEntity = basicThirdSysDetailDao.selectByKey("busTypeQueryUrl", thirdSysConfig.getThirdSysConfig().getThirdId());
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + basicThirdSysDetailEntity.getValue(), udiwmsBusTypeRequest, getHeaderArray());
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
}
public BaseResponse getOrders(UdiwmsOrderRequest udiwmsOrderRequest) {
if (StrUtil.isEmpty(udiwmsOrderRequest.getBillType())) {
return ResultVOUtils.error(500, "单据类型不能未空");
}
if (StrUtil.isEmpty(udiwmsOrderRequest.getThirdSys())) {
return ResultVOUtils.error(500, "第三方系统ID不能为空");
}
BussinessOriginTypeResponse bussinessOriginTypeResponse = bussinessOriginTypeService.findByKey(udiwmsOrderRequest.getBillType(), thirdSysConfig.getThirdSysConfig().getThirdId());
udiwmsOrderRequest.setBillType(bussinessOriginTypeResponse.getThirdAction());
BasicThirdSysBusApiEntity basicThirdSysBusApiEntity = basicThirdSysBusApiService.selectByKey(bussinessOriginTypeResponse.getThirdAction(), bussinessOriginTypeResponse.getThirdSys(), 1);
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + basicThirdSysBusApiEntity.getUrl(), udiwmsOrderRequest, getHeaderArray());
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
}
public BaseResponse submitOrders(ZaxzyyOrderRequest udiwmsOrderRequest) {
if (StrUtil.isEmpty(udiwmsOrderRequest.getBillType())) {
return ResultVOUtils.error(500, "单据类型不能未空");
}
BasicThirdSysDetailEntity basicThirdSysDetailEntity = basicThirdSysDetailDao.selectByOrderType("orderSubmitUrl", thirdSysConfig.getThirdSysConfig().getThirdId(), udiwmsOrderRequest.getBillType());
String interStr = "";
if (StrUtil.isNotEmpty(basicThirdSysDetailEntity.getOrderTypeUrl())) {
interStr = basicThirdSysDetailEntity.getOrderTypeUrl();
} else {
interStr = basicThirdSysDetailEntity.getValue();
}
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + interStr, udiwmsOrderRequest, getHeaderArray());
try {
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
} catch (Exception e) {
e.printStackTrace();
}
return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果");
}
public BaseResponse submitPreInOrders(UdiwmsPreInOrderRequest udiwmsPreInOrderRequest) {
BasicThirdSysDetailEntity basicThirdSysDetailEntity = basicThirdSysDetailDao.selectByKey("preInOrderSubmit", thirdSysConfig.getThirdSysConfig().getThirdId());
String interStr = "";
interStr = basicThirdSysDetailEntity.getValue();
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + interStr, udiwmsPreInOrderRequest, getHeaderArray());
try {
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
} catch (Exception e) {
e.printStackTrace();
}
return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果");
}
public BaseResponse getInvProducts(UdiwmsOnhandRequest udiwmsOnhandRequest) {
BasicThirdSysDetailEntity basicThirdSysDetailEntity = basicThirdSysDetailDao.selectByKey("invPiUrl", thirdSysConfig.getThirdSysConfig().getThirdId());
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + basicThirdSysDetailEntity.getValue(), udiwmsOnhandRequest, getHeaderArray());
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
}
public BaseResponse getWarehouse(PhWarehouseRequest udiwmsWarehouseRequest) {
BasicThirdSysDetailEntity basicThirdSysDetailEntity = basicThirdSysDetailDao.selectByKey("warehouseQueryUrl", thirdSysConfig.getThirdSysConfig().getThirdId());
String response = httpClient.postJson(thirdSysConfig.getThirdSysConfig().getThirdSysUrl() + basicThirdSysDetailEntity.getValue(), udiwmsWarehouseRequest, getHeaderArray());
BaseResponse baseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse>() {
});
return baseResponse;
}
}

@ -2,10 +2,7 @@ package com.glxp.mipsdl.admin.controller;
import cn.hutool.core.bean.BeanUtil;
import com.glxp.mipsdl.admin.annotation.AuthRuleAnnotation;
import com.glxp.mipsdl.admin.client.http.TestClient;
import com.glxp.mipsdl.admin.client.http.UdPlatClient;
import com.glxp.mipsdl.admin.client.http.YyUCloud31Client;
import com.glxp.mipsdl.admin.client.http.PhxyyClient;
import com.glxp.mipsdl.admin.client.http.*;
import com.glxp.mipsdl.admin.http.request.USignRequest;
import com.glxp.mipsdl.admin.req.*;
import com.glxp.mipsdl.admin.req.phxyy.*;
@ -36,6 +33,8 @@ public class UdiWmsController {
private UdPlatClient udPlatClient;
@Resource
private PhxyyClient phxyyClient;
@Resource
private ZaxyyClient zaxyyClient;
//获取erp往来单位信息接口
@AuthRuleAnnotation("")
@ -55,6 +54,10 @@ public class UdiWmsController {
PhUnitRequest phUnitRequest = new PhUnitRequest();
BeanUtil.copyProperties(testUnitRequest, phUnitRequest);
return phxyyClient.getUnit(phUnitRequest);
} else if (curFlag.equals("ZAXZYY")) {
PhUnitRequest phUnitRequest = new PhUnitRequest();
BeanUtil.copyProperties(testUnitRequest, phUnitRequest);
return zaxyyClient.getUnit(phUnitRequest);
} else
return ResultVOUtils.error(500, "当前第三方系统不支持往来单位信息查询!");
}
@ -73,6 +76,10 @@ public class UdiWmsController {
PhProductRequest phProductRequest = new PhProductRequest();
BeanUtil.copyProperties(udiwmsProductRequest, phProductRequest);
return phxyyClient.getProducts(phProductRequest);
} else if (curFlag.equals("ZAXZYY")) {
PhProductRequest phProductRequest = new PhProductRequest();
BeanUtil.copyProperties(udiwmsProductRequest, phProductRequest);
return zaxyyClient.getProducts(phProductRequest);
}
return ResultVOUtils.error(500, "当前第三方系统不支持产品信息查询!");
}
@ -94,6 +101,10 @@ public class UdiWmsController {
PhWarehouseRequest phWarehouseRequest = new PhWarehouseRequest();
BeanUtil.copyProperties(udiwmsWarehouseRequest, phWarehouseRequest);
return phxyyClient.getWarehouse(phWarehouseRequest);
} else if (curFlag.equals("ZAXZYY")) {
PhWarehouseRequest phWarehouseRequest = new PhWarehouseRequest();
BeanUtil.copyProperties(udiwmsWarehouseRequest, phWarehouseRequest);
return zaxyyClient.getWarehouse(phWarehouseRequest);
} else
return ResultVOUtils.error(500, "当前第三方系统不支持仓库货位号查询!");
}
@ -103,12 +114,12 @@ public class UdiWmsController {
@PostMapping("/udiwms/erp/getOrders")
public BaseResponse getOrders(@RequestBody UdiwmsOrderRequest udiwmsOrderRequest) {
if (curFlag.equals("YONGYOU_U8_V3.1")) {
return pzhzdClient.getOrders(udiwmsOrderRequest);
} else if (curFlag.equals("TEST")) {
return testClient.getOrders(udiwmsOrderRequest);
} else
return ResultVOUtils.error(500, "当前第三方系统不支持业务单据查询!");
return pzhzdClient.getOrders(udiwmsOrderRequest);
}
@ -121,6 +132,10 @@ public class UdiWmsController {
PhBusTypeRequest phBusTypeRequest = new PhBusTypeRequest();
BeanUtil.copyProperties(udiwmsBusTypeRequest, phBusTypeRequest);
return phxyyClient.getOrderTypes(phBusTypeRequest);
} else if (curFlag.equals("ZAXZYY")) {
PhBusTypeRequest phBusTypeRequest = new PhBusTypeRequest();
BeanUtil.copyProperties(udiwmsBusTypeRequest, phBusTypeRequest);
return zaxyyClient.getOrderTypes(phBusTypeRequest);
} else
return ResultVOUtils.error(500, "当前第三方系统不支持业务单据类型查询!");
@ -136,6 +151,23 @@ public class UdiWmsController {
PhOrderRequest phOrderRequest = new PhOrderRequest();
BeanUtil.copyProperties(udiwmsOrderRequest, phOrderRequest);
return phxyyClient.submitOrders(phOrderRequest);
} else if (curFlag.equals("ZAXZYY")) {
ZaxzyyOrderRequest zaxzyyOrderRequest = new ZaxzyyOrderRequest();
BeanUtil.copyProperties(udiwmsOrderRequest, zaxzyyOrderRequest);
zaxzyyOrderRequest.setLocInvCode(udiwmsOrderRequest.getLocStorageCode());
zaxzyyOrderRequest.setLocInvName(udiwmsOrderRequest.getLocStorageName());
return zaxyyClient.submitOrders(zaxzyyOrderRequest);
}
return ResultVOUtils.error(500, "当前第三方系统不支持提交单据!");
}
//提交单据
@AuthRuleAnnotation("")
@PostMapping("/udiwms/erp/preIn/submitOrders")
public BaseResponse submitPreInOrders(@RequestBody UdiwmsPreInOrderRequest udiwmsPreInOrderRequest) {
if (curFlag.equals("ZAXZYY")) {
return zaxyyClient.submitPreInOrders(udiwmsPreInOrderRequest);
}
return ResultVOUtils.error(500, "当前第三方系统不支持提交单据!");
}
@ -239,6 +271,8 @@ public class UdiWmsController {
return ResultVOUtils.success("连接成功!");
} else if (curFlag.equals("PHXYY")) {
return phxyyClient.testConnect();
} else if (curFlag.equals("ZAXZYY")) {
return zaxyyClient.testConnect();
} else return ResultVOUtils.error(500, "暂不支持联通性测试!");

@ -7,4 +7,6 @@ import org.apache.ibatis.annotations.Param;
@Mapper
public interface BasicThirdSysDetailDao {
BasicThirdSysDetailEntity selectByKey(@Param("key") String key, @Param("thirdSys") String thirdSys);
BasicThirdSysDetailEntity selectByOrderType(@Param("key") String key, @Param("thirdSys") String thirdSys, @Param("thirdBuyCode") String thirdBuyCode);
}

@ -18,4 +18,5 @@ public class BasicThirdSysDetailEntity {
private Integer fromType;
private String localAction;
private String thirdAction;
private String orderTypeUrl;
}

@ -3,10 +3,10 @@ package com.glxp.mipsdl.admin.req;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class UdiwmsOrderDetail {
private String productId; //产品编码
private String productName; //产品名称
private BigDecimal price; //单价
@ -21,11 +21,43 @@ public class UdiwmsOrderDetail {
private String firstSalesInvNo; //销售发票号(第一票)
private String registerNo; //注册/备案证号
private String manufactory; //生产厂家
private String measname;//计量单位
private Integer count; //数量
private String remark; //备注
private String remark1; //备注1/规格型号ID
private String remark2; //备注2/型号
private String remark3; //备注3/规格
private List<CodeDetaiEntity> codeList;
public static class CodeDetaiEntity {
private String code;
private String nameCode;
private Integer count;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getNameCode() {
return nameCode;
}
public void setNameCode(String nameCode) {
this.nameCode = nameCode;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}
}

@ -17,7 +17,6 @@ public class UdiwmsOrderRequest {
private Integer page;
private Integer inoutType;
private String billDate; //单据日期
private String billType; //单据类型
private String billName; //单据类型
@ -32,10 +31,11 @@ public class UdiwmsOrderRequest {
private String detailCode; //明细编码
private String thirdSys; //第三方系统ID
private String status; //单据状态
private String locInvCode;
private String locInvName;
private String locStorageCode;
private String locStorageName;
private List<UdiwmsOrderDetail> item; //单据详情数组

@ -0,0 +1,69 @@
package com.glxp.mipsdl.admin.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class UdiwmsPreInOrderRequest {
@JsonProperty("billNo")
private String billNo;
@JsonProperty("billdate")
private String billdate;
@JsonProperty("corpId")
private String corpId;
@JsonProperty("corpName")
private String corpName;
@JsonProperty("locInvCode")
private String locInvCode;
@JsonProperty("locInvName")
private String locInvName;
@JsonProperty("actor")
private String actor;
@JsonProperty("remark")
private String remark;
@JsonProperty("item")
private List<ItemDTO> items;
@NoArgsConstructor
@Data
public static class ItemDTO {
@JsonProperty("code")
private String code;
@JsonProperty("productId")
private String productId;
@JsonProperty("productName")
private String productName;
@JsonProperty("standard")
private String standard;
@JsonProperty("expireDate")
private String expireDate;
@JsonProperty("productDate")
private String productDate;
@JsonProperty("batchNo")
private String batchNo;
@JsonProperty("count")
private Integer count;
@JsonProperty("measname")
private String measname;
@JsonProperty("registerNo")
private String registerNo;
@JsonProperty("price")
private Double price;
@JsonProperty("secSalesInvNo")
private String secSalesInvNo;
@JsonProperty("invoiceDate")
private String invoiceDate;
@JsonProperty("secSalesListNo")
private String secSalesListNo;
@JsonProperty("firstSalesInvNo")
private String firstSalesInvNo;
@JsonProperty("remark")
private String remark;
}
}

@ -0,0 +1,23 @@
package com.glxp.mipsdl.admin.req;
import lombok.Data;
import java.util.List;
@Data
public class ZaxzyyOrderRequest {
private String billNo; //单据号
private String billFlag; //单据状态,0.未签字1.已签字
private Integer inoutType; //出入库类型 1.入库 2.出库
private String billDate; //单据日期
private String billType; //单据类型
private String remark; //备注
private String corpId; //第三方单据往来单位ID
private String corpName; //往来单位
private String locInvCode;
private String locInvName;
private List<UdiwmsOrderDetail> item; //单据详情数组
}

@ -69,7 +69,7 @@ public class HttpClient {
String json = JSONObject.toJSON(object).toString();
logger.info(url + "\n" + json);
String response = okHttpCli.doPostJson(url, json, headers);
logger.info(response);
logger.error(response);
return response;
}

@ -23,15 +23,16 @@ server.connectionTimeout=180000
#U8参数
#udi管理系统IP地址上传文件解析后回传
UDIWMS_IP=http://127.0.0.1:9991
#UDIWMS_IP=http://139.9.178.73:8080/UDI_WMS_MC
#UDIWMS_IP=http://192.168.0.66:8500/UDI_WMS_MC
API_KEY=1102
API_SECRET=4dc07484afd34e8083ba96e8fe564224
#文件导入
#0.NULL(空未配置1.GLXP(自定义规范标准2.ZHIYE_V1(智业V1,诏安医院),3.YG_UDPLAT_V1(阳光采购平台),4.PHXYY(平和县医院)
FILE_VERSION_FLAG=PHXYY
#接口实时获取
#0.NULL(空,未配置),1.YONGYOU_U8_V3.1(用友3.1版本,片仔癀诊断) 2.YG_UDPLAT_V1.0(阳光采购平台) 3.TEST(标准接口,测试用),4.PHXYY(诏安县医院)
ONLINE_VESRION_FLAG=TEST
#0.NULL(空,未配置),1.YONGYOU_U8_V3.1(用友3.1版本,片仔癀诊断) 2.YG_UDPLAT_V1.0(阳光采购平台) 3.TEST(标准接口,测试用),4.PHXYY(平和县医院)
#5.ZAXZYY(诏安县医院)
ONLINE_VESRION_FLAG=ZAXZYY
THIRD_ID=thirdId
ok.http.connect-timeout=3000
ok.http.read-timeout=3000

@ -4,7 +4,7 @@
<!-- /home/glxpdata/udiwms/UDIC_UCLOUD_SERVER/-->
<!-- D:\\udiwms\\logs\\UDIC_UCLOUD_SERVER\\-->
<property name="log.path" value="/home/glxpdata/udiwms/UDIC_UCLOUD_SERVER/" />
<property name="log.path" value="D:\\udiwms\\logs\\UDIC_UCLOUD_SERVER\\" />
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

@ -12,4 +12,28 @@
and basic_third_sys_detail.thirdSysFk = #{thirdSys}
and basic_third_sys.enabled = 1
</select>
<select id="selectByOrderType" parameterType="Map"
resultType="com.glxp.mipsdl.admin.entity.phxyy.BasicThirdSysDetailEntity">
select basic_third_sys_detail.*, basic_third_sys.thridUrl, basic_third_sys_bus_api.url orderTypeUrl
FROM basic_third_sys_detail
inner join basic_third_sys on basic_third_sys_detail.thirdSysFk = basic_third_sys.thirdId
left join basic_third_sys_bus_api
on basic_third_sys_bus_api.thirdSys = basic_third_sys_detail.thirdSysFk
<where>
basic_third_sys.enabled = 1
<if test="key != ''and key != null">
AND basic_third_sys_detail.key = #{key}
</if>
<if test="thirdSys != ''and thirdSys != null">
AND basic_third_sys_detail.thirdSysFk = #{thirdSys}
</if>
<if test="thirdBuyCode != ''and thirdBuyCode != null">
AND basic_third_sys_bus_api.thirdBuyCode = #{thirdBuyCode}
</if>
</where>
group by basic_third_sys_detail.id limit 1
</select>
</mapper>
Loading…
Cancel
Save