From f1ed220213646e7b0457d2ccb91e80dfedbcb434 Mon Sep 17 00:00:00 2001 From: WangQi <1021674882@qq.com> Date: Fri, 19 May 2023 15:26:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?task:4216=20=E5=BD=B1=E5=83=8Fofd=20to=20pn?= =?UTF-8?q?g=E6=8E=A5=E5=8F=A3=E6=8A=A5=E9=94=99=E6=9A=82=E5=81=9C?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dxhy/order/utils/HttpUtils.java | 16 ++++++ .../src/main/resources/bootstrap.yaml | 6 ++- order-management-invoice/pom.xml | 5 ++ .../controller/InvoiceDetailsController.java | 2 + .../service/OfdToPngSDEnergyService.java | 19 +++++++ .../impl/OfdToPngSDEnergyServiceImpl.java | 54 +++++++++++++++++++ .../invoice/utils/HttpInvoiceRequestUtil.java | 13 +++++ 7 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OfdToPngSDEnergyService.java create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java 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..8f6b40fa 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 @@ -402,6 +402,8 @@ public class InvoiceDetailsController { OfdToPngRequest ofdToPngRequest = new OfdToPngRequest(); ofdToPngRequest.setNSRSBH(xhfNsrsbh); ofdToPngRequest.setOFDWJL(fileDownLoad.getFileContent()); + // 解密后的文件流 + byte[] fileByte = Base64Encoding.decode(fileDownLoad.getFileContent()); OfdToPngResponse 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..e6ac8a01 --- /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) throws IOException; + +} 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..8100f6f9 --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java @@ -0,0 +1,54 @@ +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.Arrays; +import java.util.Date; + +@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) throws IOException { + 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 { + String rs = HttpUtils.doPostUpload(url, bytes, IdUtil.fastSimpleUUID()+".ofd"); + JSONObject res = JSONObject.parseObject(rs); + if (!"200".equals(res.getString("status"))) { + ofdToPngResponse.setZTDM(OrderInfoEnum.INTERFACE_ERROR.getKey()); + ofdToPngResponse.setZTXX(res.getString("message")); + return ofdToPngResponse; + } + Arrays.asList(res.getJSONArray("data")); +// ofdToPngResponse.setPNGWJL(); + + }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; From c8226f4bb040852809f9eecf0285466b15e8c9ee Mon Sep 17 00:00:00 2001 From: WangQi <1021674882@qq.com> Date: Mon, 29 May 2023 14:42:08 +0800 Subject: [PATCH 2/3] task:4216 --- .../controller/InvoiceDetailsController.java | 40 +++++++++++++++++-- .../service/OfdToPngSDEnergyService.java | 2 +- .../impl/OfdToPngSDEnergyServiceImpl.java | 15 +++++-- 3 files changed, 48 insertions(+), 9 deletions(-) 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 8f6b40fa..da5dcb34 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,14 @@ 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.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 +89,36 @@ public class InvoiceDetailsController { @Resource private InvoiceConfig invoiceConfig; + @Autowired + private OfdToPngSDEnergyService ofdToPngSDEnergyService; + + @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(); + } + /** * 查询发票信息详情 * @@ -404,7 +434,9 @@ public class InvoiceDetailsController { ofdToPngRequest.setOFDWJL(fileDownLoad.getFileContent()); // 解密后的文件流 byte[] fileByte = Base64Encoding.decode(fileDownLoad.getFileContent()); - OfdToPngResponse ofdToPngResponse = HttpInvoiceRequestUtil.getOfdPng(invoiceConfig.configOfdToPngUrl(), ofdToPngRequest); + + OfdToPngResponse ofdToPngResponse = ofdToPngSDEnergyService.getOfdPngBySDenergy(fileByte); +// OfdToPngResponse 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 index e6ac8a01..8c1ee17d 100644 --- 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 @@ -14,6 +14,6 @@ public interface OfdToPngSDEnergyService { * @return * @throws IOException */ - OfdToPngResponse getOfdPngBySDenergy(byte[] bytes) 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 index 8100f6f9..92dc933a 100644 --- 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 @@ -13,8 +13,10 @@ 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 @@ -28,22 +30,27 @@ public class OfdToPngSDEnergyServiceImpl implements OfdToPngSDEnergyService { @Override - public OfdToPngResponse getOfdPngBySDenergy(byte[] bytes) throws IOException { + 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; } - Arrays.asList(res.getJSONArray("data")); -// ofdToPngResponse.setPNGWJL(); - + 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()); From f21bd058f3fa031bfdba9850c5278c34941174f6 Mon Sep 17 00:00:00 2001 From: WangQi <1021674882@qq.com> Date: Tue, 6 Jun 2023 17:05:35 +0800 Subject: [PATCH 3/3] =?UTF-8?q?task4216=20ofd=E8=BD=ACpng=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BD=BF=E7=94=A8=E5=BD=B1=E5=83=8F=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E5=A2=9E=E5=8A=A0=E5=BC=80=E5=85=B3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InvoiceDetailsController.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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 da5dcb34..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 @@ -30,6 +30,7 @@ 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.*; @@ -92,6 +93,9 @@ public class InvoiceDetailsController { @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"); @@ -432,11 +436,16 @@ public class InvoiceDetailsController { OfdToPngRequest ofdToPngRequest = new OfdToPngRequest(); ofdToPngRequest.setNSRSBH(xhfNsrsbh); ofdToPngRequest.setOFDWJL(fileDownLoad.getFileContent()); - // 解密后的文件流 - byte[] fileByte = Base64Encoding.decode(fileDownLoad.getFileContent()); + OfdToPngResponse ofdToPngResponse = null; + if ("Y".equals(yxisuse)) { + // 解密后的文件流 + byte[] fileByte = Base64Encoding.decode(fileDownLoad.getFileContent()); + ofdToPngResponse = ofdToPngSDEnergyService.getOfdPngBySDenergy(fileByte); + + } else { + ofdToPngResponse = HttpInvoiceRequestUtil.getOfdPng(invoiceConfig.configOfdToPngUrl(), ofdToPngRequest); + } - OfdToPngResponse ofdToPngResponse = ofdToPngSDEnergyService.getOfdPngBySDenergy(fileByte); -// OfdToPngResponse ofdToPngResponse = HttpInvoiceRequestUtil.getOfdPng(invoiceConfig.configOfdToPngUrl(), ofdToPngRequest); if (ofdToPngResponse != null && ConfigureConstant.STRING_0000.equals(ofdToPngResponse.getZTDM()) && ObjectUtil.isNotEmpty(ofdToPngResponse.getPNGWJL())) { pngBase64List.addAll(ofdToPngResponse.getPNGWJL()); }