feat:opentext上传预览开发完成,待测试

release
gongquanlin 2 years ago
parent 5bf848f3c6
commit f60d026da4
  1. 12
      order-management-common/src/main/java/com/dxhy/order/model/R.java
  2. 35
      order-management-consumer/pom.xml
  3. 207
      order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/api/InvoiceRestSDEnregy.java
  4. 89
      order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/OpentextUtils.java
  5. 2
      order-management-consumer/src/main/resources/bootstrap-dev.yaml

@ -95,6 +95,14 @@ public class R extends HashMap<String, Object> {
return r;
}
public static R ok(String msg, Object data) {
R r = new R();
r.put(OrderManagementConstant.CODE, OrderInfoContentEnum.SUCCESS.getKey());
r.put(OrderManagementConstant.MESSAGE, msg);
r.put(OrderManagementConstant.DATA, data);
return r;
}
@Override
public R put(String key, Object value) {
super.put(key, value);
@ -152,4 +160,8 @@ public class R extends HashMap<String, Object> {
return null;
}
}
public Object getData() {
return this.get(OrderManagementConstant.DATA);
}
}

@ -509,6 +509,41 @@
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- maven依赖-->
<!-- axis 1.4 jar start -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-saaj</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.4</version>
</dependency>
<!-- axis 1.4 jar end -->
</dependencies>
<build>
<finalName>order-api</finalName>

@ -12,17 +12,19 @@ import com.dxhy.order.consumer.openapi.protocol.v4.grouptax.GroupTaxRespBO;
import com.dxhy.order.consumer.openapi.protocol.v6.sdenergy.*;
import com.dxhy.order.consumer.openapi.service.ISDEnregyService;
import com.dxhy.order.consumer.openapi.service.InterfaceServiceV3;
import com.dxhy.order.consumer.utils.OpentextUtils;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.model.R;
import com.dxhy.order.utils.JsonUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -154,194 +156,37 @@ public class InvoiceRestSDEnregy {
/**
* 主动拉取 MDM 集团物料
* opentext测试 上传文件
*
* @param file
* @return
*/
@PostMapping("/fetch_group_tax")
public String fetchMdmGroupTax() {
// TODO
return "";
}
/**
* 主动拉取客商信息
*
* @return
*/
@PostMapping("/fetch_buyer_message")
public String fetchBuyerMessage() {
// TODO
return "";
}
/**
* 将客商信息同步入库
*
* @param requestBody MDM报文TODO 后面页面做引用的时候需要改造成POJO
* @return
*/
private String syncMdmBuyerMessage2BuyerMessage(String requestBody) {
String logUUID = UUID.randomUUID().toString();
log.info("{}[syncBuyerMessage],uuid:{},收到请求报文:{}", LOGGER_MSG, logUUID, requestBody);
SDEnergyMdmBaseBO baseBO = JSONObject.parseObject(requestBody, SDEnergyMdmBaseBO.class);
List<MdmGmfxxtbReqBO> mdmGmfxxtbReqBOS = (List<MdmGmfxxtbReqBO>) Optional.of(baseBO)
.map(SDEnergyMdmBaseBO::getESB)
.map(ESBBO::getDATA)
.map(DATABO::getDATAINFOS)
.map(DATAINFOSBO::getDATAINFO)
.map(i -> {
// 转成List<MdmSyncGroupTaxCodeReqBO>
return i.stream().map(j -> {
return JSONObject.parseObject(JSONObject.toJSONString(j), MdmGmfxxtbReqBO.class);
}).collect(Collectors.toList());
})
.orElse(new ArrayList<MdmGmfxxtbReqBO>());
List<GmfxxtbReqBO> gmfxxtbReqList = new ArrayList<>();
for (MdmGmfxxtbReqBO tempMdmGmfxxtbReqBO : mdmGmfxxtbReqBOS) {
GmfxxtbReqBO gmfxxtbReqBO = new GmfxxtbReqBO();
// 处理客户信息
gmfxxtbReqBO.setGMFBM(tempMdmGmfxxtbReqBO.getCODE()); // 取code
gmfxxtbReqBO.setGMFMC(tempMdmGmfxxtbReqBO.getDESC1());
gmfxxtbReqBO.setGMFSBH(tempMdmGmfxxtbReqBO.getDESC14());
gmfxxtbReqBO.setGMFDH(tempMdmGmfxxtbReqBO.getDESC26());
// gmfxxtbReqBO.setXHFSBH(tempMdmGmfxxtbReqBO.getDESC14());
// gmfxxtbReqBO.setXHFMC(tempMdmGmfxxtbReqBO.getDESC1());
// 判断下DESC14是否为身份证,如果为身份证,则填写03,否则填写01,其余情况置空
// 身份证正则表达式
String idCardRegex = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)";
// 税号正则表达式
String taxNoRegex = "^[a-zA-Z0-9]{15,20}$";
gmfxxtbReqBO.setGMFLX("");
if (StringUtils.isNotEmpty(tempMdmGmfxxtbReqBO.getDESC14())) {
if (tempMdmGmfxxtbReqBO.getDESC14().matches(idCardRegex)) {
gmfxxtbReqBO.setGMFLX("03"); // 有可能出现个人
}
if (tempMdmGmfxxtbReqBO.getDESC14().matches(taxNoRegex)) {
gmfxxtbReqBO.setGMFLX("01");
@SneakyThrows
@PostMapping("/test/opentext/upload")
public String uploadOpentext(MultipartFile file) {
R result = OpentextUtils.uploadFile(file.getInputStream(), file.getOriginalFilename());
if (result.isOk()) {
return (String) result.getData();
} else {
return result.getMessage();
}
}
String invoiceName = StringUtils.isNotEmpty(tempMdmGmfxxtbReqBO.getDESC48()) ? tempMdmGmfxxtbReqBO.getDESC48() : tempMdmGmfxxtbReqBO.getDESC1();
gmfxxtbReqBO.setINVOICE_NAME(invoiceName);
String invoiceTaxno = StringUtils.isNotEmpty(tempMdmGmfxxtbReqBO.getDESC49()) ? tempMdmGmfxxtbReqBO.getDESC49() : tempMdmGmfxxtbReqBO.getDESC14();
gmfxxtbReqBO.setINVOICE_TAXNO(invoiceTaxno);
// 根据要求,取VALUELIST中的第一组数据作为银行数据
if (tempMdmGmfxxtbReqBO.getMULTICODE() != null && !CollectionUtils.isEmpty(tempMdmGmfxxtbReqBO.getMULTICODE().getVALUELIST())) {
// 处理开户行银行
MdmGmfxxtbMulticodeValuelistBO firstValueList = tempMdmGmfxxtbReqBO.getMULTICODE().getVALUELIST().get(0);
if (firstValueList != null) {
gmfxxtbReqBO.setGMFYH(firstValueList.getDESC3());
gmfxxtbReqBO.setGMFZH(firstValueList.getDESC4());
}
}
gmfxxtbReqBO.setGMFSJH(tempMdmGmfxxtbReqBO.getDESC27());
gmfxxtbReqBO.setGMFYX(tempMdmGmfxxtbReqBO.getDESC29());
gmfxxtbReqBO.setCZLX("3"); // 可能重复推送,重复推送可能出现更新的情况,增加先查询,存在则更新不存在则插入的逻辑
// 拼接邮箱和地址
String buyerAddress = "";
buyerAddress = buyerAddress.concat(StringUtils.isEmpty(tempMdmGmfxxtbReqBO.getDESC22()) ? "" : tempMdmGmfxxtbReqBO.getDESC22());
buyerAddress = buyerAddress.concat(StringUtils.isEmpty(tempMdmGmfxxtbReqBO.getDESC23()) ? "" : tempMdmGmfxxtbReqBO.getDESC23());
buyerAddress = buyerAddress.concat(StringUtils.isEmpty(tempMdmGmfxxtbReqBO.getDESC24()) ? "" : tempMdmGmfxxtbReqBO.getDESC24());
gmfxxtbReqBO.setGMFDZ(buyerAddress);
gmfxxtbReqBO.setINVOICE_NAME(tempMdmGmfxxtbReqBO.getDESC48());
gmfxxtbReqBO.setINVOICE_TAXNO(tempMdmGmfxxtbReqBO.getDESC49());
gmfxxtbReqBO.setMDM_MULTICODE_JSON(JsonUtils.getInstance().toJsonStringNullToEmpty(tempMdmGmfxxtbReqBO.getMULTICODE()));
gmfxxtbReqList.add(gmfxxtbReqBO);
}
List<GmfxxtbRspBO> gmfxxtbRspList = interfaceServiceV3.syncBuyerMessage(gmfxxtbReqList, "");
// 构造返回请求
SDEnergyMdmBaseBO result = isdEnregyService.buildResult(
baseBO,
gmfxxtbRspList,
i -> {
GmfxxtbRspBO t = (GmfxxtbRspBO) i;
SDEnergyMdmBaseRespBO resp = new SDEnergyMdmBaseRespBO();
resp.setCODE(t.getCODE());
resp.setUUID(t.getUUID());
resp.setSYNSTATUS(StringUtils.equals(t.getZTDM(), OrderInfoContentEnum.SUCCESS.getKey()) ? "0" : "1");
resp.setSYNRESULT(t.getZTXX());
return resp;
}
);
String resp = JsonUtils.getInstance().toJsonStringNullToEmpty(result);
log.info("{}[syncGroupTax],uuid:{},返回报文:{}", LOGGER_MSG, logUUID, resp);
return resp;
}
/**
* 同步MDM集团税收分类编码到系统税收分类编码
* opentext测试 查阅文件
*
* @param requestBody TODO 这里后面要改成POJO
* @param docId
* @return
*/
public String syncMdmGroupTax2GroupTax(String requestBody) {
String logUUID = UUID.randomUUID().toString();
log.info("{}[syncGroupTax],uuid:{},收到请求报文:{}", LOGGER_MSG, logUUID, requestBody);
SDEnergyMdmBaseBO baseBO = JSONObject.parseObject(requestBody, SDEnergyMdmBaseBO.class);
List<MdmSyncGroupTaxCodeReqBO> list = new ArrayList<>();
List<GroupTaxRespBO> respBO = new ArrayList<>();
try {
// 逐级判断是否为空,直到取到DATAINFO
list = (List<MdmSyncGroupTaxCodeReqBO>) Optional.of(baseBO)
.map(SDEnergyMdmBaseBO::getESB)
.map(ESBBO::getDATA)
.map(DATABO::getDATAINFOS)
.map(DATAINFOSBO::getDATAINFO)
.map(i -> {
// 转成List<MdmSyncGroupTaxCodeReqBO>
return i.stream().map(j -> {
return JSONObject.parseObject(JSONObject.toJSONString(j), MdmSyncGroupTaxCodeReqBO.class);
}).collect(Collectors.toList());
})
.orElse(new ArrayList<MdmSyncGroupTaxCodeReqBO>());
// 进行同步
List<GroupTaxReqBO> reqBOList = list.stream().map(i -> {
GroupTaxReqBO temp = new GroupTaxReqBO();
temp.setSpmc(i.getDESC1());
temp.setMs(i.getDESCSHORT());
temp.setUnit(i.getDESC5());
temp.setEncoding(i.getCODE());
temp.setCODE(i.getCODE());
temp.setUUID(i.getUUID());
return temp;
}).collect(Collectors.toList());
respBO = interfaceServiceV3.syncGroupTax(reqBOList, "");
} catch (Exception e) {
log.error("{}解析列表失败,原始string:{},错误原因{},错误堆栈:{}", LOGGER_MSG, requestBody, e.getMessage(), e.getStackTrace());
@SneakyThrows
@PostMapping("/test/opentext/show")
public String uploadOpentext(@RequestParam("id") String docId) {
R result = OpentextUtils.showFile(docId);
if (result.isOk()) {
return (String) result.getData();
} else {
return result.getMessage();
}
// 构造返回请求
SDEnergyMdmBaseBO result = isdEnregyService.buildResult(
baseBO,
respBO,
i -> {
GroupTaxRespBO t = (GroupTaxRespBO) i;
SDEnergyMdmBaseRespBO resp = new SDEnergyMdmBaseRespBO();
resp.setCODE(t.getCode());
resp.setUUID(t.getUuid());
resp.setSYNSTATUS(StringUtils.equals(t.getZTDM(), OrderInfoContentEnum.SUCCESS.getKey()) ? "0" : "1");
resp.setSYNRESULT(t.getZTXX());
return resp;
}
);
String resp = JsonUtils.getInstance().toJsonStringNullToEmpty(result);
log.info("{}[syncGroupTax],uuid:{},返回报文:{}", LOGGER_MSG, logUUID, resp);
return resp;
}
}

@ -1,6 +1,9 @@
package com.dxhy.order.consumer.utils;
import com.dxhy.order.model.R;
import com.dxhy.order.utils.JsonUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
@ -10,14 +13,24 @@ import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Assert;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Files;
import java.rmi.RemoteException;
import java.util.Map;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/**
* @Description: 文件存储工具类
@ -26,6 +39,7 @@ import java.nio.file.Files;
**/
@Component
@RefreshScope
@Slf4j
public class OpentextUtils {
public static String url;
@ -49,8 +63,15 @@ public class OpentextUtils {
password = passwordParam;
}
public static String arcId;
@Value("${order.opentext.arcid}")
public void setArcId(String myArcId) {
arcId = myArcId;
}
@SneakyThrows
public static String uploadFile(InputStream inputStream, String fileName) {
public static String uploadFileOrigin(InputStream inputStream, String fileName) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost(url);
@ -73,7 +94,7 @@ public class OpentextUtils {
return EntityUtils.toString(responseEntity, "UTF-8");
}
public static String uploadFile(String path) {
public static String uploadFileOrigin(String path) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost(url);
@ -105,4 +126,68 @@ public class OpentextUtils {
}
return "";
}
/**
* 上传文件
*
* @param inputStream
* @param fileName
* @return
*/
public static R uploadFile(InputStream inputStream, String fileName) {
String uploadPath = url + "/uploadFile/UploadServlet?ArcId=" + arcId;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost(uploadPath);
uploadFile.setHeader("USERNAME", userName);
uploadFile.setHeader("PASSWORD", password);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.RFC6532);
try {
builder.addBinaryBody("file", inputStream, ContentType.DEFAULT_BINARY, fileName);
HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response;
response = httpClient.execute(uploadFile);
HttpEntity responseEntity = response.getEntity();
String sResponse = "";
sResponse = EntityUtils.toString(responseEntity, "UTF-8");
return R.ok("success", sResponse);
} catch (Exception e) {
e.printStackTrace();
return R.error(e.getMessage());
}
}
/**
* 查看文件
*
* @param docId
* @return
*/
public static R showFile(String docId) {
String showFilePath = url + "/uploadFile/ShowFile?ArcId=" + arcId + "&DocId=" + docId;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost showFile = new HttpPost(showFilePath);
showFile.setHeader("USERNAME", userName);
showFile.setHeader("PASSWORD", password);
try {
CloseableHttpResponse response;
response = httpClient.execute(showFile);
HttpEntity responseEntity = response.getEntity();
String sResponse = "";
sResponse = EntityUtils.toString(responseEntity, "UTF-8");
return R.ok("success", sResponse);
} catch (Exception e) {
e.printStackTrace();
return R.error(e.getMessage());
}
}
}

@ -56,8 +56,6 @@ spring:
server-addr: ${spring.cloud.nacos.config.server-addr}
username: ${spring.cloud.nacos.config.username}
password: ${spring.cloud.nacos.config.password}
grpc:
enabled: false
#sentinel配置相关
sentinel:
#sentinel是否开启控制

Loading…
Cancel
Save