lishiqiang 1 тиждень тому
батько
коміт
8cfa3f3966

+ 29 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/order/FileDeal.java

@@ -0,0 +1,29 @@
+package com.yc.ship.module.trade.controller.app.order;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+
+public  class FileDeal {
+	public  static String fileRead(File fl) {
+		StringBuilder result = new StringBuilder();
+		BufferedReader br;
+		if (!fl.exists()) {
+			System.err.println("文件不存在!");
+		}
+		try {
+			br = new BufferedReader(new FileReader(fl.getAbsolutePath()));
+			String s = null;
+			while ((s = br.readLine()) != null) {
+				result.append(s);
+			}
+			br.close();
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return result.toString();
+	}
+}

+ 148 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/order/TradeOrderController.java

@@ -10,11 +10,19 @@ import com.yc.ship.module.trade.service.refund.TradeRefundService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Document;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.SAXReader;
+import org.dom4j.io.XMLWriter;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.io.*;
+import java.net.Socket;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.Map;
 
 import static com.yc.ship.framework.operatelog.core.enums.OperateTypeEnum.TRADE;
@@ -98,4 +106,144 @@ public class TradeOrderController {
         return commonResult;
     }
 
+
+    @PostMapping("/test")
+    @Operation(summary = "测试报文发送")
+    @OperateLog(type = TRADE)
+    public String test() {
+        try {
+            String serverAddress = "10.1.10.105";
+            // 服务器地址
+            int serverPort = 15999;
+            // 服务器端口号
+            // 1. 获取当前时间,用于组装公共包头流水与日期
+            Date now = new Date();
+            String reqDate = new SimpleDateFormat("yyyyMMdd").format(now);
+            String reqTime = new SimpleDateFormat("HHmmss").format(now);
+            // 构造请求方流水号 (保证唯一性)
+            String reqSeqNo = new SimpleDateFormat("yyyyMMddHHmmss").format(now) + "0001";
+//            File socketDataFile = new File("/data/publish/yl-ota/a.xml");
+//            if (!socketDataFile.exists()) {
+//                System.err.println("输入文件路径不存在!");
+//                return "输入文件路径不存在!";
+//            }
+//            //1。读取上送文件
+//            String xmlData = FileDeal.fileRead(socketDataFile);
+//        String xmlData = "<ap>\n" +
+//                "    <CCTransCode>CMLT40</CCTransCode>\n" +
+//                "    <Corp>\n" +
+//                "        <DbLogAccName>测试2</DbLogAccName>\n" +
+//                "        <IntTyp>2</IntTyp>\n" +
+//                "        <DbIntType>V</DbIntType>\n" +
+//                "        <DbRatType>0</DbRatType>\n" +
+//                "        <DbAddType>C1</DbAddType>\n" +
+//                "        <DbRatAdd>1</DbRatAdd>\n" +
+//                "        <CrIntType>V</CrIntType>\n" +
+//                "        <CrAddType>C1</CrAddType>\n" +
+//                "        <CrRatType>00002000</CrRatType>\n" +
+//                "        <CrRatAdd>0</CrRatAdd>\n" +
+//                "        <PmtHd>01</PmtHd>\n" +
+//                "        <ActInf>1</ActInf>\n" +
+//                "    </Corp>\n" +
+//                "    <Cmp>\n" +
+//                "        <DbProv>17</DbProv>\n" +
+//                "        <DbAccNo>000000</DbAccNo>\n" +
+//                "        <DbCur>CNY</DbCur>\n" +
+//                "        <CrLogAccNo>000000</CrLogAccNo>\n" +
+//                "        <DbLogAccNo>000000</DbLogAccNo>\n" +
+//                "        <LogAccBkOInd>1</LogAccBkOInd>\n" +
+//                "        <AuthAmt>1000</AuthAmt>\n" +
+//                "        <StatInd>1</StatInd>\n" +
+//                "    </Cmp>\n" +
+//                "</ap>"; // XML数据字符串(如上所示)
+            String xmlData = "<ap>\n" +
+                    "  <CCTransCode>CMLT40</CCTransCode>\n" +
+                    "  <ProductID>ICC</ProductID>\n" +
+                    "  <ChannelType>ERP</ChannelType>\n" +
+                    "  <CorpNo>17999953800000028</CorpNo>\n" +
+                    "  <OpNo></OpNo>\n" +
+                    "  <AuthNo></AuthNo>\n" +
+                    "  <ReqSeqNo>" + reqSeqNo + "</ReqSeqNo>\n" +
+                    "  <ReqDate>" + reqDate + "</ReqDate>\n" +
+                    "  <ReqTime>" + reqTime + "</ReqTime>\n" +
+                    "  <Sign></Sign>\n" +
+                    "  <Corp>\n" +
+                    "    <DbLogAccName>1</DbLogAccName>\n" +
+                    "    <IntTyp>0</IntTyp>\n" +
+                    "    <DbIntType>F</DbIntType>\n" +
+                    "    <DbRit>0.00</DbRit>\n" +
+                    "    <DbAddType>1</DbAddType>\n" +
+                    "    <DbRatType>00002000</DbRatType>\n" +
+                    "    <DbRatPct>0.00</DbRatPct>\n" +
+                    "    <DbRatAdd>0.00</DbRatAdd>\n" +
+                    "    <CrIntType>F</CrIntType>\n" +
+                    "    <CrRit>0.00</CrRit>\n" +
+                    "    <CrAddType>1</CrAddType>\n" +
+                    "    <CrRatType>00002000</CrRatType>\n" +
+                    "    <CrRatPct>0.00</CrRatPct>\n" +
+                    "    <CrRatAdd>0.00</CrRatAdd>\n" +
+                    "    <PmtHd>01</PmtHd>\n" +
+                    "    <ActInf>0</ActInf>\n" +
+                    "  </Corp>\n" +
+                    "  <Cmp>\n" +
+                    "    <DbProv>17</DbProv>\n" +
+                    "    <DbAccNo>342101046484369</DbAccNo>\n" +
+                    "    <DbCur>01</DbCur>\n" +
+                    "    <CrLogAccNo>0000000000</CrLogAccNo>\n" +
+                    "    <LogAccBkOInd>0</LogAccBkOInd>\n" +
+                    "  </Cmp>\n" +
+                    "</ap>";
+
+            // 3. 按照约定编码报文 (ERP上送报文必须为GBK字符集)
+            byte[] xmlBytes = xmlData.getBytes("GBK");
+
+            // 4. 构造7字节包头
+            // 第1字节为加密标志(0-不加密),后6字节为数据包长度(包含加密标志位),不足6位在右边用空格补足
+            int packetLen = xmlBytes.length + 1;
+            String lengthStr = String.format("%-6s", packetLen);
+            String headerStr = "0" + lengthStr;
+            byte[] headerBytes = headerStr.getBytes("GBK");
+
+            // 拼接完整的待发送字节数组
+            byte[] fullPacket = new byte[headerBytes.length + xmlBytes.length];
+            System.arraycopy(headerBytes, 0, fullPacket, 0, headerBytes.length);
+            System.arraycopy(xmlBytes, 0, fullPacket, headerBytes.length, xmlBytes.length);
+
+            Socket socket = new Socket(serverAddress, serverPort);
+            // 连接成功后的处理逻辑
+            OutputStream outputStream = socket.getOutputStream();
+            outputStream.write(fullPacket);
+            outputStream.flush();
+
+            BufferedReader clientInBufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GBK"));
+            String clinetInStr = null;
+            String clinetInStrData = null;
+            while ((clinetInStrData = clientInBufferedReader.readLine()) != null) {
+                clinetInStr = clinetInStr + clinetInStrData;
+            }
+            System.err.println(clinetInStr);
+            socket.close();
+            SAXReader sax = new SAXReader();
+            Document inClinetDoc = sax.read(new StringReader(clinetInStr.substring(clinetInStr.indexOf("<"))));
+            String formatReDoc = null;
+            if (inClinetDoc != null) {
+                StringWriter strWriter = new StringWriter();
+                OutputFormat format = new OutputFormat("  ", true);
+                format.setNewLineAfterDeclaration(false);
+                XMLWriter writer = new XMLWriter(strWriter, format);
+                writer.write(inClinetDoc);
+                writer.flush();
+                writer.close();
+                formatReDoc = strWriter.getBuffer().toString();
+                System.err.println("返回报文:" + clinetInStr);
+                String txa_return_data = "返回报文:" + "\n" + clinetInStr.substring(0, clinetInStr.indexOf("<")) + formatReDoc;
+                System.err.println(txa_return_data);
+                return txa_return_data;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "失败";
+    }
+
 }

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -194,6 +194,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             if (tradeOrderRespVO.getReadUser() != null) {
                 tradeOrderRespVO.setReadUserName(userMap.get(tradeOrderRespVO.getReadUser()));
             }
+            if (tradeOrderRespVO.getSellerId() != null) {
+                tradeOrderRespVO.setSellerName(userMap.get(tradeOrderRespVO.getSellerId()));
+            }
             Integer payStatus = tradeOrderRespVO.getPayStatus();
             if (payStatus != null && payStatus == 1) {
                 tradeOrderRespVO.setLoadPayAmount(BigDecimal.ZERO);

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -2205,7 +2205,7 @@
                 LEFT JOIN area t4 ON t3.nationality = t4.id
         WHERE
             t1.order_id = #{orderId}
-          AND t1.deleted = 0
+          AND t1.deleted = 0 and (t3.deleted=0 or t3.deleted is null)
         GROUP BY
             t1.room_model_id,
             t1.floor,