diff --git a/Test/TestChain/pom.xml b/Test/TestChain/pom.xml
new file mode 100644
index 00000000..f49830d5
--- /dev/null
+++ b/Test/TestChain/pom.xml
@@ -0,0 +1,36 @@
+
+
+ 4.0.0
+
+ org.example
+ TestChain
+ 1.0-SNAPSHOT
+
+
+ 8
+ 8
+
+
+
+
+
+ cn.dreamdt
+ audit-sdk
+ system
+ 1.0
+ ${project.basedir}/src/main/resources/lib/audit-sdk-1.5.2-jar-with-dependencies.jar
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/Test/TestChain/src/main/java/com/renchao/Demo01.java b/Test/TestChain/src/main/java/com/renchao/Demo01.java
new file mode 100644
index 00000000..37769141
--- /dev/null
+++ b/Test/TestChain/src/main/java/com/renchao/Demo01.java
@@ -0,0 +1,64 @@
+package com.renchao;
+
+import cn.dreamdt.audit.domain.AuditConfig;
+import cn.dreamdt.audit.domain.MessageBean;
+import cn.dreamdt.audit.main.DataAudit;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.ArrayList;
+
+/**
+ * @author ren_chao
+ */
+public class Demo01 {
+ public static void main(String[] args) {
+ DataAudit dataAudit = DataAudit.create(AuditConfig.builder()
+ .appCode("zxzj").appKey("xxxxxxx").serverUrl("http://10.91.4.114:8090/DreamWeb")
+ .logFilePath("C:\\Users\\RENCHAO\\Desktop\\temp-sss\\log").chainConsumer(null).build());
+
+ // 数据上链 测试数据
+ JSONObject bizData = new JSONObject();
+ bizData.put("project_year", "2024");
+ bizData.put("code", "1");
+ bizData.put("name", "符合法规和数据测试数据");
+ bizData.put("start_date", "2022-01-01 11:00:00");
+ bizData.put("construction_content", "建立企业业务运营的基础数据平台测试数据");
+ bizData.put("uuid", "230423162136mEefCn9OLj6A7DvR8St");
+ //调用合约
+ MessageBean messageBean = dataAudit.invoke("fact", "save", bizData,"11111");
+
+
+
+ // 数据批量上链 测试数据
+ JSONArray bizDataArray = new JSONArray();
+
+ JSONObject bizData1 = new JSONObject();
+ bizData1.put("project_year", "2024");
+ bizData1.put("code", "1");
+ bizData1.put("name", "符合法规和数据测试数据");
+ bizData1.put("start_date", "2022-01-01 11:00:00");
+ bizData1.put("construction_content", "建立企业业务运营的基础数据平台测试数据");
+ bizData1.put("uuid", "230423162136mEefCn9OLj6A7DvR8St");
+ bizDataArray.add(bizData1);
+
+ JSONObject bizData2 = new JSONObject();
+ bizData2.put("project_year", "2025");
+ bizData2.put("code", "2");
+ bizData2.put("name", "符合法规和数据测试数据111");
+ bizData2.put("start_date", "2022-01-01 11:00:00");
+ bizData2.put("construction_content", "建立企业业务运营的基础数据平台测试数据111");
+ bizData2.put("uuid", "330423162136mEefCn9OLj6A7DvR8St");
+ bizDataArray.add(bizData2);
+
+ //调用合约
+ ArrayList bizIndexList = new ArrayList<>();
+ // ........
+
+ MessageBean messageBean2 = dataAudit.batchInvoke("EAPContract", "saveProject", bizDataArray, bizIndexList);
+
+
+ MessageBean query = dataAudit.query("supervision", "queryProject", "123456");
+
+ }
+}
diff --git a/carbon-dataprocess/carbon-dataprocess-api/pom.xml b/carbon-dataprocess/carbon-dataprocess-api/pom.xml
index 66b39501..577abf3f 100644
--- a/carbon-dataprocess/carbon-dataprocess-api/pom.xml
+++ b/carbon-dataprocess/carbon-dataprocess-api/pom.xml
@@ -3,7 +3,7 @@
com.jiuyv.sptcc
carbon-dataprocess
- 0.2.1-SNAPSHOT
+ 0.2.2-SNAPSHOT
carbon-dataprocess-api
diff --git a/carbon-dataprocess/carbon-dataprocess-service/pom.xml b/carbon-dataprocess/carbon-dataprocess-service/pom.xml
index 21f1530c..4431fe65 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/pom.xml
+++ b/carbon-dataprocess/carbon-dataprocess-service/pom.xml
@@ -4,7 +4,7 @@
com.jiuyv.sptcc
carbon-dataprocess
- 0.2.1-SNAPSHOT
+ 0.2.2-SNAPSHOT
carbon-dataprocess-service
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/controller/TestController.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/controller/TestController.java
index 25859dd3..e47240da 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/controller/TestController.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/controller/TestController.java
@@ -4,6 +4,20 @@ import com.jiuyv.sptcc.carbon.dataprocess.service.ICalculateReductionService;
import com.jiuyv.sptcc.carbon.dataprocess.service.IPushReductionService;
import com.jiuyv.sptcc.carbon.dataprocess.service.IReadFileService;
import com.jiuyv.sptcc.carbon.dataprocess.service.ISignResultService;
+import io.netty.bootstrap.Bootstrap;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelOption;
+import io.netty.channel.ChannelPipeline;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.SimpleChannelInboundHandler;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.pool.ChannelPoolHandler;
+import io.netty.channel.pool.FixedChannelPool;
+import io.netty.channel.socket.nio.NioSocketChannel;
+import io.netty.handler.codec.string.StringDecoder;
+import io.netty.handler.codec.string.StringEncoder;
+import io.netty.util.concurrent.Future;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -21,11 +35,14 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
+import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.Enumeration;
import java.util.Map;
import java.util.StringJoiner;
import java.util.TreeMap;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -80,141 +97,81 @@ public class TestController {
}
- @PostMapping("/test44")
- public String test44(HttpServletRequest request) {
- Enumeration headerNames = request.getHeaderNames();
- while (headerNames.hasMoreElements()) {
- String x = headerNames.nextElement();
- System.out.println(x + "::: " + request.getHeader(x));
- }
+ @GetMapping("/test44")
+ public String test44() {
+
return "OK!!!";
}
- // "CARD_NO" VARCHAR2(32 CHAR), 卡号
- // "IN_TRANSACTION_SERIAL_NO" VARCHAR2(64 CHAR), 进站交易流水号
- // "IN_STATION_NAME" VARCHAR2(200 CHAR), 进站名称
- // "IN_DEVICE_NO" VARCHAR2(64 CHAR), 进站设备号
- // "IN_DEVICE_SERIAL_NO" VARCHAR2(64 CHAR), 进站设备流水号
- // "LINE_NO" VARCHAR2(10 CHAR), 公交线路编码
- // "LINE_NAME" VARCHAR2(200 CHAR), 公交线路名称
- // "OUT_TRANSACTION_SERIAL_NO" VARCHAR2(64 CHAR), 出站交易流水号
- // "OUT_STATION_NAME" VARCHAR2(200 CHAR), 出站名称
- // "OUT_DEVICE_NO" VARCHAR2(64 CHAR), 出站设备号
- // "OUT_DEVICE_SERIAL_NO" VARCHAR2(64 CHAR), 出站设备流水号
-
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."CARD_NO" IS '卡号 交易卡号,明文';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."IN_TRANSACTION_SERIAL_NO" IS '进站交易流水号';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."IN_STATION_NAME" IS '进站名称';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."IN_DEVICE_NO" IS '进站设备号';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."IN_DEVICE_SERIAL_NO" IS '进站设备流水号';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."LINE_NO" IS '公交线路编码 例如:01000';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."LINE_NAME" IS '公交线路名称 例如:浦东32路';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."OUT_TRANSACTION_SERIAL_NO" IS '出站交易流水号';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."OUT_STATION_NAME" IS '出站名称';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."OUT_DEVICE_NO" IS '出站设备号';
- // COMMENT ON COLUMN "TANPHDEV"."TBL_BC_TRAVEL_NOTICE"."OUT_DEVICE_SERIAL_NO" IS '出站设备流水号';
-
-
-
-// "IN_STATION_ID" VARCHAR2(32 CHAR),
-
-// travelNo 00400000000000000000208,
-// industry_code 77,
-// userId 0024000599,
-// ccid cc_id_test_861,
-// inStationId \N,
-// outStationId \N,
-// open_channel 4,
-// intoTransTime 2024-05-05 08:37:53,
-// outTransTime 2024-05-05 08:37:53,
-// cardNo 3104770000030645909F,
-// inTransactionSerialNo 124,
-// inStatioName \N,
-// indeviceNo \N,
-// inDeviceSeriNo \N,
-// lineNo 14244,
-// LineName 浦东88路,
-// outTransactionSerialNo 124,
-// outStatioName \N,
-// outdeviceNo 11903503,
-// outDeviceSeriNo 101375
-
-// travelNo
-// industry_code
-// userId
-// ccid
-// inStationId
-// outStationId
-// open_channel
-// intoTransTime
-// outTransTime
-// cardNo
-// inTransactionSerialNo
-// inStatioName
-// indeviceNo
-// inDeviceSeriNo
-// lineNo
-// LineName
-// outTransactionSerialNo
-// outStatioName
-// outdeviceNo
-// outDeviceSeriNo
-
-// travelNo 00500000000000000000255,
-// industry_code 21,
-// userId 0062622980,
-// ccid cc_id_test_881,
-// inStationId \N,
-// outStationId 0252,
-// open_channel 5,
-// intoTransTime \N,
-// outTransTime 2024-05-05 00:45:42,
-// cardNo 3104770055125106136F,
-// inTransactionSerialNo \N,
-// inStatioName \N,
-// indeviceNo \N,
-// inDeviceSeriNo \N,
-// lineNo \N,
-// LineName \N,
-// outTransactionSerialNo 614409604,
-// outStatioName 龙阳路,
-// outdeviceNo 202523009,
-// outDeviceSeriNo 511
-
+ private static final String HOST = "localhost";
+ private static final int PORT = 22588;
+ private static final int MAX_CONNECTIONS = 5;
public static void main(String[] args) throws IOException {
- // try (FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\RENCHAO\\Desktop\\temp-sss\\ttaa.csv");
- // OutputStreamWriter writer = new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8)) {
- //
- // for (int i = 0; i < 1000000; i++) {
- // //11111121,77,10001,1,09280000,01110000,支付宝,2024-04-27 09:30:15,2024-04-27 09:30:15
- // StringJoiner sj = new StringJoiner(",");
- // sj.add(Integer.toString(i));
- // sj.add("77");
- // sj.add("11");
- // sj.add("1");
- // sj.add("09280000");
- // sj.add("01110000");
- // sj.add("支付宝");
- // sj.add("2024-04-27 09:30:15");
- // sj.add("2024-04-27 09:30:15");
- // writer.write(sj + "\n");
- // }
- //
- // }
-
- try (InputStream inputStream = new FileInputStream("C:\\Users\\RENCHAO\\Desktop\\temp-sss\\temp-sss.zip");
- ZipInputStream zipInputStream = new ZipInputStream(inputStream)) {
- ZipEntry nextEntry;
- while ((nextEntry = zipInputStream.getNextEntry()) != null && !nextEntry.isDirectory()) {
-
- FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\RENCHAO\\Desktop\\temp-sss\\aa\\" + nextEntry.getName());
-
- IOUtils.copy(zipInputStream, fileOutputStream);
+ EventLoopGroup group = new NioEventLoopGroup();
+
+ try {
+ Bootstrap bootstrap = new Bootstrap()
+ .group(group)
+ .channel(NioSocketChannel.class)
+ .option(ChannelOption.SO_KEEPALIVE, true)
+ .option(ChannelOption.TCP_NODELAY, true);
+
+ ChannelPoolHandler handler = new ChannelPoolHandler() {
+ @Override
+ public void channelReleased(Channel ch) {
+ System.out.println("Channel 归还: " + ch.id().asLongText());
+ }
+
+ @Override
+ public void channelAcquired(Channel ch) {
+ System.out.println("Channel 申请: " + ch.id().asLongText());
+ }
+
+ @Override
+ public void channelCreated(Channel ch) {
+ ChannelPipeline pipeline = ch.pipeline();
+ pipeline.addLast(new StringEncoder());
+ pipeline.addLast(new StringDecoder());
+ pipeline.addLast(new SimpleChannelInboundHandler() {
+ @Override
+ protected void channelRead0(ChannelHandlerContext ctx, String msg) {
+ System.out.println("Received: " + msg);
+ }
+ });
+ System.out.println("Channel 创建成功: " + ch.id().asLongText());
+ }
+ };
+
+ FixedChannelPool pool = new FixedChannelPool(
+ bootstrap.remoteAddress(new InetSocketAddress(HOST, PORT)),
+ handler,
+ MAX_CONNECTIONS
+ );
+
+ // 获取并使用连接
+ for (int i = 0; i < 10; i++) {
+ Future future = pool.acquire();
+
+ Channel channel = future.get();
+
+ System.out.println(channel.isActive());
+
+ System.out.println(i + " 获取到" + channel.id().asLongText());
+
+ Thread.sleep(1000); // 每秒发送一条消息
+ pool.release(channel);
+ channel.close();
}
+ // 关闭连接池
+ pool.close();
+ } catch (InterruptedException | ExecutionException e) {
+ e.printStackTrace();
+ } finally {
+ group.shutdownGracefully();
}
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcCalcFactor.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcCalcFactor.java
index fe0ddc37..c230fc52 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcCalcFactor.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcCalcFactor.java
@@ -29,17 +29,17 @@ public class BcCalcFactor implements Serializable {
/**
* 平均里程,存的是M,计算时转换为KM
*/
- private Integer averageMileage;
+ private Double averageMileage;
/**
* 存的是gCO2/PKM,计算时直接使用
*/
- private Double baseFactor;
+ private String baseFactor;
/**
* 存的是gCO2/PKM,计算时直接使用
*/
- private Double factor;
+ private String factor;
/**
*
@@ -83,27 +83,27 @@ public class BcCalcFactor implements Serializable {
this.sceneCode = sceneCode;
}
- public Integer getAverageMileage() {
+ public Double getAverageMileage() {
return averageMileage;
}
- public void setAverageMileage(Integer averageMileage) {
+ public void setAverageMileage(Double averageMileage) {
this.averageMileage = averageMileage;
}
- public Double getBaseFactor() {
+ public String getBaseFactor() {
return baseFactor;
}
- public void setBaseFactor(Double baseFactor) {
+ public void setBaseFactor(String baseFactor) {
this.baseFactor = baseFactor;
}
- public Double getFactor() {
+ public String getFactor() {
return factor;
}
- public void setFactor(Double factor) {
+ public void setFactor(String factor) {
this.factor = factor;
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcTravelNotice.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcTravelNotice.java
index 993fa7dc..3d3cdb5d 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcTravelNotice.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BcTravelNotice.java
@@ -135,9 +135,9 @@ public class BcTravelNotice implements Serializable {
private String batchNo;
/**
- * 里程数,【-1表示异常】
+ * 里程数
*/
- private Integer mileage;
+ private String mileage;
/**
* 数据确认时间
@@ -180,7 +180,9 @@ public class BcTravelNotice implements Serializable {
private String dataDeliveryTime;
/**
- * 状态。INIT:初始化
+ * 状态。
+ * INIT:初始化
+ * MILEAGE_ERROR:里程计算错误
* PROCESSING:处理中
* WAIT_FOR_SEND:待发送
* SUCCESS:成功
@@ -438,11 +440,11 @@ public class BcTravelNotice implements Serializable {
this.batchNo = batchNo;
}
- public Integer getMileage() {
+ public String getMileage() {
return mileage;
}
- public void setMileage(Integer mileage) {
+ public void setMileage(String mileage) {
this.mileage = mileage;
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BusSpotCheck.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BusSpotCheck.java
index 240770e6..1628277e 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BusSpotCheck.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/BusSpotCheck.java
@@ -1,5 +1,7 @@
package com.jiuyv.sptcc.carbon.dataprocess.domain;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
import java.io.Serializable;
/**
@@ -7,9 +9,15 @@ import java.io.Serializable;
*
* @author ren_chao
*/
+@JsonPropertyOrder(alphabetic = true)
public class BusSpotCheck implements Serializable {
private static final long serialVersionUID = 41L;
+ /**
+ * 业务流水号
+ */
+ private String travelNo;
+
/**
* 进站时间
*/
@@ -21,9 +29,17 @@ public class BusSpotCheck implements Serializable {
private String lineNo;
/**
- * 里程数,【-1表示异常】
+ * 里程数
*/
- private Integer mileage;
+ private String mileage;
+
+ public String getTravelNo() {
+ return travelNo;
+ }
+
+ public void setTravelNo(String travelNo) {
+ this.travelNo = travelNo;
+ }
public String getIntoTransTime() {
return intoTransTime;
@@ -41,11 +57,11 @@ public class BusSpotCheck implements Serializable {
this.lineNo = lineNo;
}
- public Integer getMileage() {
+ public String getMileage() {
return mileage;
}
- public void setMileage(Integer mileage) {
+ public void setMileage(String mileage) {
this.mileage = mileage;
}
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/SubwaySpotCheck.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/SubwaySpotCheck.java
index bf1b9c38..f0b68709 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/SubwaySpotCheck.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/domain/SubwaySpotCheck.java
@@ -1,5 +1,7 @@
package com.jiuyv.sptcc.carbon.dataprocess.domain;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
import java.io.Serializable;
/**
@@ -7,8 +9,15 @@ import java.io.Serializable;
*
* @author ren_chao
*/
+@JsonPropertyOrder(alphabetic = true)
public class SubwaySpotCheck implements Serializable {
private static final long serialVersionUID = 42L;
+
+ /**
+ * 业务流水号
+ */
+ private String travelNo;
+
/**
* 进站时间
*/
@@ -30,9 +39,9 @@ public class SubwaySpotCheck implements Serializable {
private String outTransTime;
/**
- * 出站设备流水号
+ * 出站设备号
*/
- private String outDeviceSerialNo;
+ private String outDeviceNo;
/**
* 出站名称
@@ -40,9 +49,17 @@ public class SubwaySpotCheck implements Serializable {
private String outStationName;
/**
- * 里程数,【-1表示异常】
+ * 里程数
*/
- private Integer mileage;
+ private String mileage;
+
+ public String getTravelNo() {
+ return travelNo;
+ }
+
+ public void setTravelNo(String travelNo) {
+ this.travelNo = travelNo;
+ }
public String getIntoTransTime() {
return intoTransTime;
@@ -76,12 +93,12 @@ public class SubwaySpotCheck implements Serializable {
this.outTransTime = outTransTime;
}
- public String getOutDeviceSerialNo() {
- return outDeviceSerialNo;
+ public String getOutDeviceNo() {
+ return outDeviceNo;
}
- public void setOutDeviceSerialNo(String outDeviceSerialNo) {
- this.outDeviceSerialNo = outDeviceSerialNo;
+ public void setOutDeviceNo(String outDeviceNo) {
+ this.outDeviceNo = outDeviceNo;
}
public String getOutStationName() {
@@ -92,11 +109,11 @@ public class SubwaySpotCheck implements Serializable {
this.outStationName = outStationName;
}
- public Integer getMileage() {
+ public String getMileage() {
return mileage;
}
- public void setMileage(Integer mileage) {
+ public void setMileage(String mileage) {
this.mileage = mileage;
}
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/CarbonDataEnum.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/CarbonDataEnum.java
index c88f50f4..2bd93c76 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/CarbonDataEnum.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/CarbonDataEnum.java
@@ -7,6 +7,7 @@ package com.jiuyv.sptcc.carbon.dataprocess.enums;
*/
public enum CarbonDataEnum {
INIT("INIT", "初始化"),
+ MILEAGE_ERROR("MILEAGE_ERROR", "里程计算错误"),
UNAUTHORIZED("UNAUTHORIZED", "未授权"),
PROCESSING("PROCESSING", "处理中"),
WAIT_FOR_SEND("WAIT_FOR_SEND", "待发送"),
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/SceneCodeEnum.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/SceneCodeEnum.java
index 204c1d51..4e0b1942 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/SceneCodeEnum.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/enums/SceneCodeEnum.java
@@ -6,8 +6,8 @@ package com.jiuyv.sptcc.carbon.dataprocess.enums;
* @author ren_chao
*/
public enum SceneCodeEnum {
- SUBWAY("SUBWAY", "轨道交通"),
- BUS("BUS", "地面公交");
+ SUBWAY("subway", "轨道交通"),
+ BUS("bus", "地面公交");
private final String code;
private final String info;
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/exception/GlobalExceptionHandler.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/exception/GlobalExceptionHandler.java
index 5bcf330f..fca6c270 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/exception/GlobalExceptionHandler.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/exception/GlobalExceptionHandler.java
@@ -57,20 +57,6 @@ public class GlobalExceptionHandler {
return new ResultDTO<>(code != null ? code : 500, e.getMessage(), null);
}
- /**
- * feign调用异常
- */
- @ExceptionHandler({RetryableException.class})
- public ResultDTO handleRetryableException(RetryableException e) {
- LOGGER.error(e.getMessage(), e);
-
- if (e.getCause() instanceof SocketTimeoutException) {
- return new ResultDTO<>(500, "ResultCode.REQUEST_TIMEOUT.getMessage()", null);
- }
-
- return new ResultDTO<>(500, e.getMessage(), null);
- }
-
/**
* 系统异常
*/
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonAuthFeign.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonAuthFeign.java
index c270a7e0..c2c36b1b 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonAuthFeign.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonAuthFeign.java
@@ -8,6 +8,6 @@ import org.springframework.cloud.openfeign.FeignClient;
*
* @author ren_chao
*/
-@FeignClient("${carbon-data-process.auth-serve}")
+@FeignClient(value = "${carbon-data-process.auth-serve}", contextId = "carbonAuthFeign")
public interface CarbonAuthFeign extends IAccountApi {
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonDataProcessFeign.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonDataProcessFeign.java
index bc2b23ec..3180ebcc 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonDataProcessFeign.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/CarbonDataProcessFeign.java
@@ -8,6 +8,6 @@ import org.springframework.cloud.openfeign.FeignClient;
*
* @author ren_chao
*/
-@FeignClient("${carbon-data-process.gateway-serve}")
+@FeignClient(value = "${carbon-data-process.gateway-serve}", contextId = "carbonDataProcessFeign")
public interface CarbonDataProcessFeign extends CarbonReductionApi {
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/DataAuditFeign.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/DataAuditFeign.java
new file mode 100644
index 00000000..9a68b6c5
--- /dev/null
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/feign/DataAuditFeign.java
@@ -0,0 +1,13 @@
+package com.jiuyv.sptcc.carbon.dataprocess.feign;
+
+import com.jiuyv.sptcc.carbon.pushgate.api.DataAuditApi;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * 上链接口
+ *
+ * @author ren_chao
+ */
+@FeignClient(value = "${carbon-data-process.gateway-serve}", contextId = "dataAuditFeign")
+public interface DataAuditFeign extends DataAuditApi {
+}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/mapper/BcSubwayMileageMapper.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/mapper/BcSubwayMileageMapper.java
index a711f584..1f8cd376 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/mapper/BcSubwayMileageMapper.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/mapper/BcSubwayMileageMapper.java
@@ -15,5 +15,5 @@ public interface BcSubwayMileageMapper {
/**
* 查询里程
*/
- Integer selectMileage(@Param("inStationId") String inStationId, @Param("outStationId") String outStationId);
+ Double selectMileage(@Param("inStationId") String inStationId, @Param("outStationId") String outStationId);
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/IDataAuditService.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/IDataAuditService.java
new file mode 100644
index 00000000..d92aaac7
--- /dev/null
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/IDataAuditService.java
@@ -0,0 +1,22 @@
+package com.jiuyv.sptcc.carbon.dataprocess.service;
+
+/**
+ * @author ren_chao
+ */
+public interface IDataAuditService {
+
+ /**
+ * 上链
+ */
+ void upChain();
+
+ /**
+ * 接收区块链系统回调 更新上链结果
+ */
+ void callback();
+
+ /**
+ * 主动查询一直没有回调的数据
+ */
+ void queryUpChainResult();
+}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/CalculateReductionServiceImpl.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/CalculateReductionServiceImpl.java
index 89801ee8..588b3305 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/CalculateReductionServiceImpl.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/CalculateReductionServiceImpl.java
@@ -53,7 +53,7 @@ public class CalculateReductionServiceImpl implements ICalculateReductionService
* 计算碳减排量
*/
@Override
- public void calculate() {
+ public synchronized void calculate() {
Integer count = travelNoticeMapper.selectCountByStatus(CarbonDataEnum.PROCESSING.getCode());
LOGGER.info(">>>> 开始计算碳减排量,总记录数:{}", count);
long startTime = System.currentTimeMillis();
@@ -66,7 +66,7 @@ public class CalculateReductionServiceImpl implements ICalculateReductionService
rawData.setBaseFactor(bcTravelNotice.getBaseFactor());
rawData.setFactor(bcTravelNotice.getFactor());
rawData.setDataId(bcTravelNotice.getSeqNo());
- rawData.setTripDistance(bcTravelNotice.getMileage().toString());
+ rawData.setTripDistance(bcTravelNotice.getMileage());
return rawData;
}).collect(Collectors.toList());
BatchComputationReqVo batchComputationReqVo = new BatchComputationReqVo();
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/DataAuditServiceImpl.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/DataAuditServiceImpl.java
new file mode 100644
index 00000000..4b049c14
--- /dev/null
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/DataAuditServiceImpl.java
@@ -0,0 +1,49 @@
+package com.jiuyv.sptcc.carbon.dataprocess.service.impl;
+
+import com.jiuyv.sptcc.carbon.dataprocess.feign.DataAuditFeign;
+import com.jiuyv.sptcc.carbon.dataprocess.service.IDataAuditService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+/**
+ * 上链服务
+ *
+ * @author ren_chao
+ */
+@Service
+public class DataAuditServiceImpl implements IDataAuditService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(DataAuditServiceImpl.class);
+
+ private final DataAuditFeign dataAuditFeign;
+
+ public DataAuditServiceImpl(DataAuditFeign dataAuditFeign) {
+ this.dataAuditFeign = dataAuditFeign;
+ }
+
+ /**
+ * 上链
+ */
+ @Override
+ public void upChain() {
+
+ }
+
+ /**
+ * 接收区块链系统回调 更新上链结果
+ */
+ @Override
+ public void callback() {
+
+ }
+
+ /**
+ * 主动查询一直没有回调的数据
+ */
+ @Override
+ public void queryUpChainResult() {
+
+ }
+
+
+}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/PushReductionServiceImpl.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/PushReductionServiceImpl.java
index 3cc9fe27..66942bc9 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/PushReductionServiceImpl.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/PushReductionServiceImpl.java
@@ -5,6 +5,7 @@ import com.jiuyv.sptcc.carbon.dataprocess.enums.CarbonDataEnum;
import com.jiuyv.sptcc.carbon.dataprocess.enums.IndustryCodeEnum;
import com.jiuyv.sptcc.carbon.dataprocess.enums.SceneCodeEnum;
import com.jiuyv.sptcc.carbon.dataprocess.enums.SignStatusEnum;
+import com.jiuyv.sptcc.carbon.dataprocess.exception.ServiceException;
import com.jiuyv.sptcc.carbon.dataprocess.feign.CarbonDataProcessFeign;
import com.jiuyv.sptcc.carbon.dataprocess.mapper.BcTravelNoticeMapper;
import com.jiuyv.sptcc.carbon.dataprocess.mapper.SysDateMapper;
@@ -57,7 +58,7 @@ public class PushReductionServiceImpl implements IPushReductionService {
* 上报数据
*/
@Override
- public void escalation() {
+ public synchronized void escalation() {
Integer count = travelNoticeMapper.selectCountByStatus(CarbonDataEnum.WAIT_FOR_SEND.getCode());
LOGGER.info(">>>> 开始上报数据,总记录数:{}", count);
long startTime = System.currentTimeMillis();
@@ -74,9 +75,9 @@ public class PushReductionServiceImpl implements IPushReductionService {
String industryCode = bcTravelNotice.getIndustryCode();
if (IndustryCodeEnum.SUBWAY.getCode().equals(industryCode)) {
- info.setSceneCode(SceneCodeEnum.SUBWAY.getCode().toLowerCase());
+ info.setSceneCode(SceneCodeEnum.SUBWAY.getCode());
} else if (IndustryCodeEnum.BUS.getCode().equals(industryCode)) {
- info.setSceneCode(SceneCodeEnum.BUS.getCode().toLowerCase());
+ info.setSceneCode(SceneCodeEnum.BUS.getCode());
} else {
LOGGER.error("非地铁和公交:{}", industryCode);
info.setSceneCode(industryCode);
@@ -89,13 +90,15 @@ public class PushReductionServiceImpl implements IPushReductionService {
info.setDataConfirmationTime(LocalDateTime.parse(bcTravelNotice.getDataConfirmationTime(),SDF_14).format(SDF));
info.setReductionCalculateTime(LocalDateTime.parse(bcTravelNotice.getReductionCalculateTime(), SDF_14).format(SDF));
info.setDataDeliveryTime(LocalDateTime.parse(currentTime, SDF_14).format(SDF));
- info.setBusinessCompletionTime(LocalDateTime.parse(currentTime, SDF_14).format(SDF));
+
+ // 地铁用出站时间,公交用进站时间
+ info.setBusinessCompletionTime(LocalDateTime.parse(getBusinessCompletionTime(bcTravelNotice), SDF_14).format(SDF));
info.setMethodId(bcTravelNotice.getMethodId());
DeliveryReqVo.Info.RawData rawData = new DeliveryReqVo.Info.RawData();
rawData.setBaseFactor(bcTravelNotice.getBaseFactor());
rawData.setFactor(bcTravelNotice.getFactor());
- rawData.setTripDistance(bcTravelNotice.getMileage().toString());
+ rawData.setTripDistance(bcTravelNotice.getMileage());
rawData.setHashData(bcTravelNotice.getHashData());
info.setRawData(rawData);
return info;
@@ -132,7 +135,7 @@ public class PushReductionServiceImpl implements IPushReductionService {
bcTravelNotice.setDataDeliveryTime(currentTime);
bcTravelNotice.setSendCount(travelNotice.getSendCount() + 1);
if (CarbonDataEnum.SUCCESS.getCode().equals(status)) {
- bcTravelNotice.setBusinessCompletionTime(currentTime);
+ bcTravelNotice.setBusinessCompletionTime(travelNotice.getBusinessCompletionTime());
bcTravelNotice.setBatchNo(batchNo);
bcTravelNotice.setSignStatus(SignStatusEnum.ISSUING.getCode());
}
@@ -140,4 +143,16 @@ public class PushReductionServiceImpl implements IPushReductionService {
});
}
+ private String getBusinessCompletionTime(BcTravelNotice travelNotice) {
+ String industryCode = travelNotice.getIndustryCode();
+ if (IndustryCodeEnum.SUBWAY.getCode().equals(industryCode)) {
+ return travelNotice.getOutTransTime();
+ } else if (IndustryCodeEnum.BUS.getCode().equals(industryCode)) {
+ return travelNotice.getIntoTransTime();
+ } else {
+ LOGGER.error("非地铁和公交:{}", industryCode);
+ throw new ServiceException("非地铁和公交:" + industryCode);
+ }
+ }
+
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/ReadFileServiceImpl.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/ReadFileServiceImpl.java
index 5013af4b..0a34c883 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/ReadFileServiceImpl.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/ReadFileServiceImpl.java
@@ -1,7 +1,5 @@
package com.jiuyv.sptcc.carbon.dataprocess.service.impl;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.SftpException;
import com.jiuyv.sptcc.carbon.auth.common.enums.OrgCodeEnum;
@@ -26,6 +24,7 @@ import com.jiuyv.sptcc.carbon.dataprocess.mapper.BcSubwayMileageMapper;
import com.jiuyv.sptcc.carbon.dataprocess.mapper.BcTravelNoticeMapper;
import com.jiuyv.sptcc.carbon.dataprocess.mapper.SysDateMapper;
import com.jiuyv.sptcc.carbon.dataprocess.service.IReadFileService;
+import com.jiuyv.sptcc.carbon.dataprocess.util.JsonUtil;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.bouncycastle.crypto.digests.SM3Digest;
@@ -69,7 +68,6 @@ public class ReadFileServiceImpl implements IReadFileService {
private final CarbonAuthFeign carbonAuthFeign;
private final SftpChannelPool sftpChannelPool;
- private final ObjectMapper objectMapper;
private final String remoteDir;
private final String fileSuffix;
@@ -81,7 +79,6 @@ public class ReadFileServiceImpl implements IReadFileService {
SysDateMapper sysDateMapper,
CarbonAuthFeign carbonAuthFeign,
SftpChannelPool sftpChannelPool,
- ObjectMapper objectMapper,
SftpProperties sftpProperties) {
this.bcTravelNoticeMapper = bcTravelNoticeMapper;
this.subwayMileageMapper = subwayMileageMapper;
@@ -89,7 +86,6 @@ public class ReadFileServiceImpl implements IReadFileService {
this.sysDateMapper = sysDateMapper;
this.carbonAuthFeign = carbonAuthFeign;
this.sftpChannelPool = sftpChannelPool;
- this.objectMapper = objectMapper;
this.remoteDir = sftpProperties.getRemoteDir();
this.fileSuffix = sftpProperties.getFileSuffix();
this.tempDir = sftpProperties.getTempDir();
@@ -99,7 +95,7 @@ public class ReadFileServiceImpl implements IReadFileService {
* 读取文件并插入数据库
*/
@Override
- public void readFileAndInsertDatabase(String dateStr) {
+ public synchronized void readFileAndInsertDatabase(String dateStr) {
String currentTime = sysDateMapper.currentTime();
if (StringUtils.isBlank(dateStr)) {
dateStr = LocalDate.parse(currentTime.substring(0, 8), SDF).minusDays(1).format(SDF);
@@ -195,30 +191,32 @@ public class ReadFileServiceImpl implements IReadFileService {
travelNotice.setOutDeviceNo(handleValue(split[18]));
travelNotice.setOutDeviceSerialNo(handleValue(split[19]));
- String intoTransTime = travelNotice.getIntoTransTime();
- String industryCode = travelNotice.getIndustryCode();
+ // 检查异常数据
+ if (isAbnormalData(travelNotice)) {
+ return;
+ }
+
BcCalcFactor bcCalcFactor;
- if (intoTransTime != null && IndustryCodeEnum.SUBWAY.getCode().equals(industryCode)) {
- bcCalcFactor = getCalcFactor(intoTransTime, SceneCodeEnum.SUBWAY.getCode());
- // 计算里程
- calculateMileage(travelNotice);
- } else if (intoTransTime != null && IndustryCodeEnum.BUS.getCode().equals(industryCode)) {
- bcCalcFactor = getCalcFactor(intoTransTime, SceneCodeEnum.BUS.getCode());
- // 计算里程
- travelNotice.setMileage(bcCalcFactor.getAverageMileage());
+ if (IndustryCodeEnum.SUBWAY.getCode().equals(travelNotice.getIndustryCode())) {
+ bcCalcFactor = getCalcFactor(travelNotice.getOutTransTime(), SceneCodeEnum.SUBWAY.getCode());
+ // 计算里程 查不到里程,设置 里程计算错误
+ if (!calculateMileage(travelNotice)) {
+ travelNotice.setStatus(CarbonDataEnum.MILEAGE_ERROR.getCode());
+ bcTravelNoticeMapper.insert(travelNotice);
+ return;
+ }
} else {
- // 非SUBWAY、BUS 或者没有进站时间 只入库
- travelNotice.setStatus(CarbonDataEnum.INIT.getCode());
- bcTravelNoticeMapper.insert(travelNotice);
- return;
+ bcCalcFactor = getCalcFactor(travelNotice.getIntoTransTime(), SceneCodeEnum.BUS.getCode());
+ // 计算里程
+ travelNotice.setMileage(String.format("%.3f", bcCalcFactor.getAverageMileage()));
}
// 是否授权 没有进站时间的暂定为未授权
if (authVerify(travelNotice, dataConfirmationTime)) {
travelNotice.setStatus(CarbonDataEnum.PROCESSING.getCode());
travelNotice.setMethodId(bcCalcFactor.getMethodId());
- travelNotice.setBaseFactor(bcCalcFactor.getBaseFactor().toString());
- travelNotice.setFactor(bcCalcFactor.getFactor().toString());
+ travelNotice.setBaseFactor(bcCalcFactor.getBaseFactor());
+ travelNotice.setFactor(bcCalcFactor.getFactor());
// 计算hash
spotCheckHash(travelNotice);
} else {
@@ -228,6 +226,39 @@ public class ReadFileServiceImpl implements IReadFileService {
bcTravelNoticeMapper.insert(travelNotice);
}
+ /**
+ * 检查异常数据
+ */
+ private boolean isAbnormalData(BcTravelNotice travelNotice) {
+ String industryCode = travelNotice.getIndustryCode();
+ if (!IndustryCodeEnum.SUBWAY.getCode().equals(industryCode)
+ && !IndustryCodeEnum.BUS.getCode().equals(industryCode)) {
+ insertAbnormalData(travelNotice, "既不是公交也不是地铁");
+ return true;
+ }
+ if (IndustryCodeEnum.SUBWAY.getCode().equals(industryCode)) {
+ if (travelNotice.getInStationId() == null) {
+ insertAbnormalData(travelNotice, "地铁没有进站编码");
+ return true;
+ }
+ if (travelNotice.getOutTransTime() == null) {
+ insertAbnormalData(travelNotice, "地铁没有出站时间");
+ return true;
+ }
+ }
+ if (IndustryCodeEnum.BUS.getCode().equals(industryCode) && travelNotice.getIntoTransTime() == null) {
+ insertAbnormalData(travelNotice, "公交没有进站时间");
+ return true;
+ }
+ return false;
+ }
+
+ private void insertAbnormalData(BcTravelNotice travelNotice, String remark) {
+ travelNotice.setStatus(CarbonDataEnum.INIT.getCode());
+ travelNotice.setRemark(remark);
+ bcTravelNoticeMapper.insert(travelNotice);
+ }
+
/**
* 授权校验
*
@@ -239,12 +270,13 @@ public class ReadFileServiceImpl implements IReadFileService {
String industryCode = travelNotice.getIndustryCode();
if (IndustryCodeEnum.BUS.getCode().equals(industryCode)) {
request.setScenCode(ScenCodeEnum.BUS.getCode());
+ request.setTransTime(LocalDateTime.parse(travelNotice.getIntoTransTime(), REQ_SDF));
} else if (IndustryCodeEnum.SUBWAY.getCode().equals(industryCode)) {
request.setScenCode(ScenCodeEnum.SUBLINE.getCode());
+ request.setTransTime(LocalDateTime.parse(travelNotice.getOutTransTime(), REQ_SDF));
} else {
return false;
}
- request.setTransTime(LocalDateTime.parse(travelNotice.getIntoTransTime(), REQ_SDF));
request.setRequestId(travelNotice.getTravelNo());
request.setReqTime(currentTime);
request.setOrgCode(OrgCodeEnum.DATAPROCESS.getCode());
@@ -258,18 +290,19 @@ public class ReadFileServiceImpl implements IReadFileService {
}
/**
- * 计算里程
+ * 计算里程 查询不到返回false
*
*/
- private void calculateMileage(BcTravelNotice travelNotice) {
- // 只有地铁计算里程 查不到里程,记异常 -1
+ private boolean calculateMileage(BcTravelNotice travelNotice) {
+ // 只有地铁计算里程 查不到里程,记里程异常状态
LOGGER.debug(">>>> 计算里程");
- Integer mileage = subwayMileageMapper
+ Double mileage = subwayMileageMapper
.selectMileage(travelNotice.getInStationId(), travelNotice.getOutStationId());
if (mileage == null) {
- travelNotice.setMileage(-1);
+ return false;
} else {
- travelNotice.setMileage(mileage);
+ travelNotice.setMileage(String.format("%.3f", mileage));
+ return true;
}
}
@@ -300,16 +333,18 @@ public class ReadFileServiceImpl implements IReadFileService {
private void spotCheckHash(BcTravelNotice travelNotice) {
if (IndustryCodeEnum.SUBWAY.getCode().equals(travelNotice.getIndustryCode())) {
SubwaySpotCheck spotCheck = new SubwaySpotCheck();
+ spotCheck.setTravelNo(travelNotice.getTravelNo());
spotCheck.setIntoTransTime(travelNotice.getIntoTransTime());
spotCheck.setInDeviceNo(travelNotice.getInDeviceNo());
spotCheck.setInStationName(travelNotice.getInStationName());
spotCheck.setOutTransTime(travelNotice.getOutTransTime());
- spotCheck.setOutDeviceSerialNo(travelNotice.getOutDeviceSerialNo());
+ spotCheck.setOutDeviceNo(travelNotice.getOutDeviceNo());
spotCheck.setOutStationName(travelNotice.getOutStationName());
spotCheck.setMileage(travelNotice.getMileage());
travelNotice.setHashData(sm3Hash(spotCheck));
} else {
BusSpotCheck spotCheck = new BusSpotCheck();
+ spotCheck.setTravelNo(travelNotice.getTravelNo());
spotCheck.setIntoTransTime(travelNotice.getIntoTransTime());
spotCheck.setLineNo(travelNotice.getLineNo());
spotCheck.setMileage(travelNotice.getMileage());
@@ -318,13 +353,7 @@ public class ReadFileServiceImpl implements IReadFileService {
}
private String sm3Hash(Object data) {
- String jsonStr;
- try {
- jsonStr = objectMapper.writeValueAsString(data);
- } catch (JsonProcessingException e) {
- LOGGER.error("RawData序列化错误。。。", e);
- return "";
- }
+ String jsonStr = JsonUtil.convertToJson(data);
byte[] bytes = jsonStr.getBytes(StandardCharsets.UTF_8);
SM3Digest digest = new SM3Digest();
digest.update(bytes, 0, bytes.length);
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/SignResultServiceImpl.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/SignResultServiceImpl.java
index 7e74501f..755d8c4a 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/SignResultServiceImpl.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/service/impl/SignResultServiceImpl.java
@@ -49,6 +49,7 @@ public class SignResultServiceImpl implements ISignResultService {
@Transactional
@Override
public void signResult(ReqSignResultDTO signResultDTO) {
+ LOGGER.info(">>>> 开始接收减排量签发结果推送");
String batchNo = signResultDTO.getBatchNo();
List list = travelNoticeMapper.selectListByBatchNo(batchNo);
if (CollectionUtils.isEmpty(list)) {
@@ -70,14 +71,14 @@ public class SignResultServiceImpl implements ISignResultService {
travelNotice.setSignStatus(data.getSignStatus());
travelNoticeMapper.updateBySeqNo(travelNotice);
}
-
+ LOGGER.info(">>>> 减排量签发结果更新成功");
}
/**
* 减排量签发结果查询
*/
@Override
- public void resultQuery() {
+ public synchronized void resultQuery() {
Integer count = travelNoticeMapper.selectCountBySignStatus(SignStatusEnum.ISSUING.getCode());
LOGGER.info(">>>> 开始减排量签发结果查询,总记录数:{}", count);
long startTime = System.currentTimeMillis();
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/util/JsonUtil.java b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/util/JsonUtil.java
index 64cf2939..dbd7b8cc 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/util/JsonUtil.java
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/java/com/jiuyv/sptcc/carbon/dataprocess/util/JsonUtil.java
@@ -2,16 +2,10 @@ package com.jiuyv.sptcc.carbon.dataprocess.util;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.ArrayList;
-import java.util.List;
-
-// import org.json.JSONObject;
-
/**
* The Class JsonUtil.
*
@@ -51,46 +45,4 @@ public abstract class JsonUtil {
}
}
- public static T json2Bean(String json, Class T) {
- try {
- return objectMapper.readValue(json, T);
- } catch (Exception e) {
- LOGGER.error("convert failed", e);
- return null;
- }
- }
-
- public static T json2Bean(String json, JavaType type) {
- try {
- return objectMapper.readValue(json, type);
- } catch (Exception e) {
- LOGGER.error("convert failed", e);
- return null;
- }
- }
-
- public static List json2List(String json, Class T) {
- JavaType javaType = getCollectionType(ArrayList.class, T);
- List lst;
- try {
- lst = objectMapper.readValue(json, javaType);
- } catch (Exception e) {
- LOGGER.error("convert failed", e);
- return null;
- }
- return lst;
- }
-
- /**
- * 获取泛型的Collection Type
- *
- * @param collectionClass 泛型的Collection
- * @param elementClasses 元素类
- * @return JavaType Java类型
- * @since 1.0
- */
- public static JavaType getCollectionType(Class> collectionClass, Class>... elementClasses) {
- return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
- }
-
}
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/application.yml b/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/application.yml
index 9db67cda..e578542b 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/application.yml
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/application.yml
@@ -25,7 +25,10 @@ spring:
maximum-pool-size: 10 # 连接池最大连接数,默认是10
connection-timeout: 30000 # 数据库连接超时时间,默认30秒,即30000
max-lifetime: 1800000 # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
-
+ security:
+ user:
+ password: markettest
+ name: markettest
cache:
type: caffeine
cache-names:
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcCalcFactorMapper.xml b/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcCalcFactorMapper.xml
index 1dcb8d4d..04ddc97c 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcCalcFactorMapper.xml
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcCalcFactorMapper.xml
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcSubwayMileageMapper.xml b/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcSubwayMileageMapper.xml
index d51b8401..03116779 100644
--- a/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcSubwayMileageMapper.xml
+++ b/carbon-dataprocess/carbon-dataprocess-service/src/main/resources/mapper/BcSubwayMileageMapper.xml
@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-