Merge branch 'dev_task_4216' into release

release
WangQi 2 years ago
commit ed691702c3
  1. 16
      order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java
  2. 6
      order-management-consumer/src/main/resources/bootstrap.yaml
  3. 5
      order-management-invoice/pom.xml
  4. 51
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java
  5. 19
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OfdToPngSDEnergyService.java
  6. 61
      order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java
  7. 13
      order-management-invoice/src/main/java/com/dxhy/order/invoice/utils/HttpInvoiceRequestUtil.java

@ -1,7 +1,9 @@
package com.dxhy.order.utils;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
@ -98,6 +100,20 @@ public class HttpUtils {
}
}
/**
* 上传文件
* @param url
* @param file
* @param fileName
* @return
*/
public static String doPostUpload(String url, byte[] file,String fileName) {
Map<String,String> headers = new HashMap<>();
headers.put("Content-Type", "multipart/form-data");
String rs = HttpRequest.post(url).addHeaders(headers).form("file", file, fileName).execute().body();
return rs;
}
public static String pushCheckResultToSAP(String requestParam,String snYxUrl,String userName,String password) throws Exception {
log.info("获取请求参数:{} , 请求地址:{}", requestParam, snYxUrl);
String post = HttpUtils.sendPo(snYxUrl, requestParam, userName, password);

@ -6,9 +6,10 @@ spring:
name: order-api
profiles:
# Spring 配置文件读取
active: @deployType@
# active: @deployType@
# active: own
# active: std
active: dev
#active: test
jackson:
# jackson 日期格式化
@ -39,7 +40,8 @@ sims:
#订单数据库类型区分,要么mysql,要么Oracle,要么weblogic
db: mysql
#订单redis数据库类型区分,要么redis,要么redis-sentinel
redisDb: redis-sentinel
# redisDb: redis-sentinel
redisDb: redis
# 0 mysql 1 oracle
dataType: 0

@ -374,6 +374,11 @@
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
</dependencies>
<build>

@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dxhy.order.constant.*;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.invoice.module.invoice.service.OfdToPngSDEnergyService;
import com.dxhy.order.model.CommonOrderInvoiceAndOrderMxInfo;
import com.dxhy.order.model.OrderInvoiceInfo;
import com.dxhy.order.model.R;
@ -28,15 +29,15 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.*;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@ -89,6 +90,39 @@ public class InvoiceDetailsController {
@Resource
private InvoiceConfig invoiceConfig;
@Autowired
private OfdToPngSDEnergyService ofdToPngSDEnergyService;
@Value("${yx.isuse}")
private String yxisuse;
@GetMapping("priviewOfd")
public R priviewOfd() throws IOException {
File file = new File("C:\\Users\\10216\\Desktop\\042002200113_04440777.ofd");
FileInputStream fis = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
try {
fis = new FileInputStream(file);
byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
byte[] data = bos.toByteArray();
OfdToPngResponse ofdToPngResponse = ofdToPngSDEnergyService.getOfdPngBySDenergy(data);
return R.ok(ofdToPngResponse);
} catch (Exception e) {
System.out.println(e);
} finally {
if (fis != null){
fis.close();
}
bos.close();
}
return R.error();
}
/**
* 查询发票信息详情
*
@ -402,7 +436,16 @@ public class InvoiceDetailsController {
OfdToPngRequest ofdToPngRequest = new OfdToPngRequest();
ofdToPngRequest.setNSRSBH(xhfNsrsbh);
ofdToPngRequest.setOFDWJL(fileDownLoad.getFileContent());
OfdToPngResponse ofdToPngResponse = HttpInvoiceRequestUtil.getOfdPng(invoiceConfig.configOfdToPngUrl(), ofdToPngRequest);
OfdToPngResponse ofdToPngResponse = null;
if ("Y".equals(yxisuse)) {
// 解密后的文件流
byte[] fileByte = Base64Encoding.decode(fileDownLoad.getFileContent());
ofdToPngResponse = ofdToPngSDEnergyService.getOfdPngBySDenergy(fileByte);
} else {
ofdToPngResponse = HttpInvoiceRequestUtil.getOfdPng(invoiceConfig.configOfdToPngUrl(), ofdToPngRequest);
}
if (ofdToPngResponse != null && ConfigureConstant.STRING_0000.equals(ofdToPngResponse.getZTDM()) && ObjectUtil.isNotEmpty(ofdToPngResponse.getPNGWJL())) {
pngBase64List.addAll(ofdToPngResponse.getPNGWJL());
}

@ -0,0 +1,19 @@
package com.dxhy.order.invoice.module.invoice.service;
import com.dxhy.order.model.ofd.OfdToPngResponse;
import java.io.IOException;
import java.util.List;
public interface OfdToPngSDEnergyService {
/**
* OFD转png
* @param url
* @param bytes
* @return
* @throws IOException
*/
OfdToPngResponse getOfdPngBySDenergy(byte[] bytes);
}

@ -0,0 +1,61 @@
package com.dxhy.order.invoice.module.invoice.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.alibaba.fastjson.JSONObject;
import com.dxhy.order.constant.OrderInfoEnum;
import com.dxhy.order.invoice.module.invoice.service.OfdToPngSDEnergyService;
import com.dxhy.order.model.ofd.OfdToPngResponse;
import com.dxhy.order.utils.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Service
@Slf4j
public class OfdToPngSDEnergyServiceImpl implements OfdToPngSDEnergyService {
@Value("${yx.url}")
private String yxurl;
@Value("${yx.simsSalt}")
private String simsSalt;
@Override
public OfdToPngResponse getOfdPngBySDenergy(byte[] bytes) {
Long timestamp = new Date().getTime();
String md5Str = DigestUtil.md5Hex(timestamp + simsSalt);
String url = yxurl + "/yxSims/ofdToImage?timestamp="+timestamp+"&md5Str="+md5Str;
OfdToPngResponse ofdToPngResponse = new OfdToPngResponse();
try {
log.info("调用影像接口ofd转png,url:{}",url);
String rs = HttpUtils.doPostUpload(url, bytes, IdUtil.fastSimpleUUID()+".ofd");
log.info("调用影像接口ofd转png,返回值 url:{},rs:{}",url,rs);
JSONObject res = JSONObject.parseObject(rs);
if (!"200".equals(res.getString("status"))) {
ofdToPngResponse.setZTDM(OrderInfoEnum.INTERFACE_ERROR.getKey());
ofdToPngResponse.setZTXX(res.getString("message"));
return ofdToPngResponse;
}
List<String> data = new ArrayList<>();
for (int i = 0; i < res.getJSONArray("data").size();i++) {
data.add(res.getJSONArray("data").getString(i));
}
ofdToPngResponse.setPNGWJL(data);
}catch (Exception e) {
log.error("影像系统ofd转png接口异常,异常信息为:{}", e);
ofdToPngResponse.setZTDM(OrderInfoEnum.INTERFACE_ERROR.getKey());
ofdToPngResponse.setZTXX(e.getMessage());
}
return ofdToPngResponse;
}
}

@ -1,11 +1,14 @@
package com.dxhy.order.invoice.utils;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.MD5;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.MD5Utils;
import com.dxhy.order.constant.*;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.model.QueryInvalidResultRequest;
@ -86,9 +89,19 @@ import com.dxhy.order.invoice.module.invoice.model.bo.VehicleInvoiceExpBo;
import com.dxyun.invoice.protocol.InterfaceData;
import com.dxyun.invoice.protocol.ProtocolUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.FileItemFactory;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;

Loading…
Cancel
Save