diff --git a/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java b/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java index b12202e4..2f1713be 100644 --- a/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.java +++ b/order-management-common/src/main/java/com/dxhy/order/utils/HttpUtils.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 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); diff --git a/order-management-consumer/src/main/resources/bootstrap.yaml b/order-management-consumer/src/main/resources/bootstrap.yaml index e3a47db7..f3c94e37 100644 --- a/order-management-consumer/src/main/resources/bootstrap.yaml +++ b/order-management-consumer/src/main/resources/bootstrap.yaml @@ -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 diff --git a/order-management-invoice/pom.xml b/order-management-invoice/pom.xml index dc9c17b8..c86bd38b 100644 --- a/order-management-invoice/pom.xml +++ b/order-management-invoice/pom.xml @@ -374,6 +374,11 @@ + + org.springframework + spring-test + + diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java index 33131452..0edb7648 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java @@ -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()); } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OfdToPngSDEnergyService.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OfdToPngSDEnergyService.java new file mode 100644 index 00000000..8c1ee17d --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OfdToPngSDEnergyService.java @@ -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); + +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java new file mode 100644 index 00000000..92dc933a --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java @@ -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 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; + } +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/utils/HttpInvoiceRequestUtil.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/utils/HttpInvoiceRequestUtil.java index a769f27d..59599bbe 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/utils/HttpInvoiceRequestUtil.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/utils/HttpInvoiceRequestUtil.java @@ -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;