diff --git a/GetDataInterface/src/main/java/com/nmggs/query/common/config/CorsConfig.java b/GetDataInterface/src/main/java/com/nmggs/query/common/config/CorsConfig.java index e3c51aa..c8a92d7 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/common/config/CorsConfig.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/common/config/CorsConfig.java @@ -33,6 +33,7 @@ public class CorsConfig implements WebMvcConfigurer { // 是否允许证书 .excludePathPatterns( "/test/**", + "/DCPC/**", "/ZDYH/**", "/ReceptionMobileWeighInfo", "/laneRequest/forward", diff --git a/GetDataInterface/src/main/java/com/nmggs/query/common/config/LongStringTypeHandler.java b/GetDataInterface/src/main/java/com/nmggs/query/common/config/LongStringTypeHandler.java new file mode 100644 index 0000000..a160edd --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/common/config/LongStringTypeHandler.java @@ -0,0 +1,40 @@ +package com.nmggs.query.common.config; + + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.*; + +/** + * @author: shuguang + * @date: 2025年09月28日 9:42 + * @description: Long ↔ VARCHAR2 互转 + */ +@MappedTypes(Long.class) +public class LongStringTypeHandler extends BaseTypeHandler { + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, Long parameter, JdbcType jdbcType) throws SQLException { + ps.setString(i, parameter.toString()); // 入库转字符串 + } + + @Override + public Long getNullableResult(ResultSet rs, String columnName) throws SQLException { + String val = rs.getString(columnName); + return val == null ? null : Long.valueOf(val); // 出库转 Long + } + + @Override + public Long getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String val = rs.getString(columnIndex); + return val == null ? null : Long.valueOf(val); + } + + @Override + public Long getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String val = cs.getString(columnIndex); + return val == null ? null : Long.valueOf(val); + } +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/common/emnu/Constant.java b/GetDataInterface/src/main/java/com/nmggs/query/common/emnu/Constant.java index 368ccbd..c0ce3a2 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/common/emnu/Constant.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/common/emnu/Constant.java @@ -21,6 +21,7 @@ public class Constant { public static final String YYYYMMDDHH = "yyyyMMddHH"; public static final String YYMMDD = "yyMMdd"; public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + public static final String YYYY_MM_DD_T_HH_MM_SS = "yyyy-MM-ddTHH:mm:ss"; public static final String YYYY_MM_DD = "yyyy-MM-dd"; public static final String APP_KEY = "2Z6hOpl5kNYWAzr8PeA5"; diff --git a/GetDataInterface/src/main/java/com/nmggs/query/common/utils/JsonUtil.java b/GetDataInterface/src/main/java/com/nmggs/query/common/utils/JsonUtil.java new file mode 100644 index 0000000..4484263 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/common/utils/JsonUtil.java @@ -0,0 +1,27 @@ +package com.nmggs.query.common.utils; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; + +import java.util.Map; + +/** + * @author: shuguang + * @date: 2025年09月25日 14:28 + * @description: + */ +@Slf4j +public class JsonUtil { + public static String conversionJson(Map map, String uuid) { + String result = ""; + // 使用ObjectMapper将List>转换为JSON字符串 + com.fasterxml.jackson.databind.ObjectMapper objectMapper = new ObjectMapper(); + try { + result = objectMapper.writeValueAsString(map); + } catch (JsonProcessingException e) { + log.info("[uuid:" + uuid + "]-转换json数据报错:" + e.getMessage()); + } + return result; + } +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/controller/AddInterfaceController.java b/GetDataInterface/src/main/java/com/nmggs/query/controller/AddInterfaceController.java index 1021267..b0b963a 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/controller/AddInterfaceController.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/controller/AddInterfaceController.java @@ -22,6 +22,11 @@ public class AddInterfaceController { private AddInterfaceService addInterfaceService; + @PostMapping("/DCPC/uploadEtcGantryPassData") + public String uploadEtcGantryPassData(@RequestBody Map params) { + String uuid = UuidUtil.getUuid(); + return addInterfaceService.uploadEtcGantryPassData(params, uuid); + } @PostMapping("/baseinfo/QueryExStationTrans") public String QueryExStationTrans(@RequestBody Map params) { String uuid = UuidUtil.getUuid(); diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCFailList.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCFailList.java new file mode 100644 index 0000000..29e5fb5 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCFailList.java @@ -0,0 +1,14 @@ +package com.nmggs.query.entity; + +import lombok.Data; + +/** + * @author: shuguang + * @date: 2025年09月26日 10:16 + * @description: + */ +@Data +public class DCPCFailList { + private String tradeId; + private String info; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCGantryPass.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCGantryPass.java new file mode 100644 index 0000000..9d46fd4 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCGantryPass.java @@ -0,0 +1,1331 @@ +package com.nmggs.query.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.nmggs.query.common.config.LongStringTypeHandler; +import lombok.Data; + +import java.util.Date; + +/** + * @author: shuguang + * @date: 2025年09月26日 9:31 + * @description: ETC 门架计费扣费交易数据 + */ +@Data +@TableName("DCPC_GANTRY_PASS") +public class DCPCGantryPass { + + /** + * 计费交易编号(唯一索引) + */ + @TableField("TRADEID") + @JsonProperty("tradeId") + private String tradeId; + + /** + * 门架编号(全网唯一) + */ + @TableField("GANTRYID") + @JsonProperty("gantryId") + private String gantryId; + + /** + * 控制器序号 1-主机 2-备机1 + */ + @TableField("COMPUTERORDER") + @JsonProperty("computerOrder") + private Integer computerOrder; + + /** + * 小时批次号 yyyyMMddHH + */ + @TableField("HOURBATCHNO") + @JsonProperty("hourBatchNo") + private String hourBatchNo; + + /** + * 门架顺序号 方向+序号 + */ + @TableField("GANTRYORDERNUM") + @JsonProperty("gantryOrderNum") + private Integer gantryOrderNum; + + /** + * 当前门架HEX值 + */ + @TableField("GANTRYHEX") + @JsonProperty("gantryHex") + private String gantryHex; + + /** + * 门架类型 1路段 2省界入口 3省界出口 + */ + @TableField("GANTRYTYPE") + @JsonProperty("gantryType") + private String gantryType; + + /** + * 对向门架HEX值 + */ + @TableField("GANTRYHEXOPPOSITE") + @JsonProperty("gantryHexOpposite") + private String gantryHexOpposite; + + /** + * 计费交易时间 yyyy-MM-ddTHH:mm:ss + */ + @TableField("TRANSTIME") + @JsonProperty("transTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date transTime; + + /** + * 应收金额(分) + */ + @TableField("PAYFEE") + @JsonProperty("payFee") + private Long payFee; + + /** + * 交易金额(实收,分) + */ + @TableField("FEE") + @JsonProperty("fee") + private Long fee; + + /** + * 优惠金额(分) + */ + @TableField("DISCOUNTFEE") + @JsonProperty("discountFee") + private Long discountFee; + + /** + * 卡面扣费金额(分) + */ + @TableField("TRANSFEE") + @JsonProperty("transFee") + private Long transFee; + + /** + * 通行介质类型 1-OBU 2-CPC + */ + @TableField("MEDIATYPE") + @JsonProperty("mediaType") + private Integer mediaType; + + /** + * OBU单双片标识 1单片 2双片 + */ + @TableField("OBUSIGN") + @JsonProperty("obuSign") + private Integer obuSign; + + /** + * 收费单元编号组合 + */ + @TableField("TOLLINTERVALID") + @JsonProperty("tollIntervalId") + private String tollIntervalId; + + /** + * 收费单元处理标识组合 + */ + @TableField("TOLLINTERVALSIGN") + @JsonProperty("tollIntervalSign") + private String tollIntervalSign; + + /** + * 收费单元应收金额组合 + */ + @TableField("PAYFEEGROUP") + @JsonProperty("payFeeGroup") + private String payFeeGroup; + + /** + * 收费单元交易金额组合 + */ + @TableField("FEEGROUP") + @JsonProperty("feeGroup") + private String feeGroup; + + /** + * 收费单元优惠金额组合 + */ + @TableField("DISCOUNTFEEGROUP") + @JsonProperty("discountFeeGroup") + private String discountFeeGroup; + + /** + * 计费车辆车牌号码+颜色 + */ + @TableField("VEHICLEPLATE") + @JsonProperty("vehiclePlate") + private String vehiclePlate; + + /** + * 入口车型 + */ + @TableField("VEHICLETYPE") + @JsonProperty("vehicleType") + private Integer vehicleType; + + /** + * 识别车型 + */ + @TableField("IDENTIFYVEHICLETYPE") + @JsonProperty("identifyVehicleType") + private Integer identifyVehicleType; + + /** + * 车种 + */ + @TableField("VEHICLECLASS") + @JsonProperty("vehicleClass") + private Integer vehicleClass; + + /** + * 车辆状态标识 + */ + @TableField("VEHICLESIGN") + @JsonProperty("vehicleSign") + private String vehicleSign; + + /** + * TAC码 + */ + @TableField("TAC") + @JsonProperty("TAC") + private String tac; + + /** + * 交易类型标识 PBOC定义 + */ + @TableField("TRANSTYPE") + @JsonProperty("transType") + private String transType; + + /** + * 终端机编号 + */ + @TableField("TERMINALNO") + @JsonProperty("terminalNo") + private String terminalNo; + + /** + * PSAM卡脱机交易序列号 + */ + @TableField("TERMINALTRANSNO") + @JsonProperty("terminalTransNo") + private String terminalTransNo; + + /** + * IC卡交易序号 + */ + @TableField(value = "TRANSNO", typeHandler = LongStringTypeHandler.class) + @JsonProperty("transNo") + private Long transNo; + + /** + * 交易的服务类型 + */ + @TableField("SERVICETYPE") + @JsonProperty("serviceType") + private Integer serviceType; + + /** + * 算法标识 1-3DES 2-SM4 + */ + @TableField("ALGORITHMIDENTIFIER") + @JsonProperty("algorithmIdentifier") + private Integer algorithmIdentifier; + + /** + * 消费密钥版本号 + */ + @TableField("KEYVERSION") + @JsonProperty("keyVersion") + private String keyVersion; + + /** + * 天线ID编号 + */ + @TableField("ANTENNAID") + @JsonProperty("antennaID") + private Integer antennaId; + + /** + * 计费模块和计费参数版本号 + */ + @TableField("RATEVERSION") + @JsonProperty("rateVersion") + private String rateVersion; + + /** + * 交易耗时(毫秒) + */ + @TableField("CONSUMETIME") + @JsonProperty("consumeTime") + private Integer consumeTime; + + /** + * 通行状态 1有入口 2无入口 + */ + @TableField("PASSSTATE") + @JsonProperty("passState") + private Integer passState; + + /** + * 入口车道编号 + */ + @TableField("ENTOLLLANEID") + @JsonProperty("enTollLaneId") + private String enTollLaneId; + + /** + * 入口站HEX字符串 + */ + @TableField("ENTOLLSTATIONHEX") + @JsonProperty("enTollStationHex") + private String enTollStationHex; + + /** + * 入口交易时间 + */ + @TableField("ENTIME") + @JsonProperty("enTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date enTime; + + /** + * 入口车道类型 + */ + @TableField("ENLANETYPE") + @JsonProperty("enLaneType") + private String enLaneType; + + /** + * 通行标识ID + */ + @TableField("PASSID") + @JsonProperty("passId") + private String passId; + + /** + * 上一个门架HEX编号 + */ + @TableField("LASTGANTRYHEX") + @JsonProperty("lastGantryHex") + private String lastGantryHex; + + /** + * 通过上一个门架的时间 + */ + @TableField("LASTGANTRYTIME") + @JsonProperty("lastGantryTime") + private String lastGantryTime; + + /** + * OBU/CPC物理地址 + */ + @TableField("OBUMAC") + @JsonProperty("OBUMAC") + private String obuMac; + + /** + * OBU/CPC发行方标识 + */ + @TableField("OBUISSUEID") + @JsonProperty("OBUIssueID") + private String obuIssueId; + + /** + * OBU/CPC序号编码 + */ + @TableField("OBUSN") + @JsonProperty("OBUSN") + private String obuSn; + + /** + * OBU/CPC版本号 + */ + @TableField("OBUVERSION") + @JsonProperty("OBUVersion") + private Integer obuVersion; + + /** + * OBU/CPC起始日期 + */ + @TableField("OBUSTARTDATE") + @JsonProperty("OBUStartDate") + private Integer obuStartDate; + + /** + * OBU/CPC截止日期 + */ + @TableField("OBUENDDATE") + @JsonProperty("OBUEndDate") + private Integer obuEndDate; + + /** + * OBU/CPC电量百分比 + */ + @TableField("OBUELECTRICAL") + @JsonProperty("OBUElectrical") + private Integer obuElectrical; + + /** + * OBU/CPC状态 + */ + @TableField("OBUSTATE") + @JsonProperty("OBUState") + private String obuState; + + /** + * 标签内车牌号码 + */ + @TableField("OBUVEHICLEPLATE") + @JsonProperty("OBUVehiclePlate") + private String obuVehiclePlate; + + /** + * 标签内车型 + */ + @TableField("OBUVEHICLETYPE") + @JsonProperty("OBUVehicleType") + private Integer obuVehicleType; + + /** + * 车辆用户类型 + */ + @TableField("VEHICLEUSERTYPE") + @JsonProperty("vehicleUserType") + private Integer vehicleUserType; + + /** + * 车辆座位数/载重 + */ + @TableField("VEHICLESEAT") + @JsonProperty("vehicleSeat") + private Integer vehicleSeat; + + /** + * 车轴数 + */ + @TableField("AXLECOUNT") + @JsonProperty("axleCount") + private Integer axleCount; + + /** + * 车货总重(kg) + */ + @TableField("TOTALWEIGHT") + @JsonProperty("totalWeight") + private Integer totalWeight; + + /** + * 车辆长(dm) + */ + @TableField("VEHICLELENGTH") + @JsonProperty("vehicleLength") + private Integer vehicleLength; + + /** + * 车辆宽(dm) + */ + @TableField("VEHICLEWIDTH") + @JsonProperty("vehicleWidth") + private Integer vehicleWidth; + + /** + * 车辆高(dm) + */ + @TableField("VEHICLEHIGHT") + @JsonProperty("vehicleHight") + private Integer vehicleHight; + + /** + * CPU卡片网络编号 + */ + @TableField("CPUNETID") + @JsonProperty("CPUNetID") + private String cpuNetId; + + /** + * CPU卡片发行方标识 + */ + @TableField("CPUISSUEID") + @JsonProperty("CPUIssueID") + private String cpuIssueId; + + /** + * CPU内车牌号码 + */ + @TableField("CPUVEHICLEPLATE") + @JsonProperty("CPUVehiclePlate") + private String cpuVehiclePlate; + + /** + * CPU内车型 + */ + @TableField("CPUVEHICLETYPE") + @JsonProperty("CPUVehicleType") + private Integer cpuVehicleType; + + /** + * CPU起始日期 + */ + @TableField("CPUSTARTDATE") + @JsonProperty("CPUStartDate") + private Integer cpuStartDate; + + /** + * CPU截止日期 + */ + @TableField("CPUENDDATE") + @JsonProperty("CPUEndDate") + private Integer cpuEndDate; + + /** + * CPU用户卡版本号 + */ + @TableField("CPUVERSION") + @JsonProperty("CPUVersion") + private Integer cpuVersion; + + /** + * CPU卡类型 0默认 1储值 2记账 + */ + @TableField("CPUCARDTYPE") + @JsonProperty("CPUCardType") + private Integer cpuCardType; + + /** + * CPU卡编号 + */ + @TableField("CPUCARDID") + @JsonProperty("CPUCardId") + private String cpuCardId; + + /** + * 交易前余额(分) + */ + @TableField("BALANCEBEFORE") + @JsonProperty("balanceBefore") + private Long balanceBefore; + + /** + * 交易后余额(分) + */ + @TableField("BALANCEAFTER") + @JsonProperty("balanceAfter") + private Long balanceAfter; + + /** + * CPC卡过站信息数量 + */ + @TableField("GANTRYPASSCOUNT") + @JsonProperty("gantryPassCount") + private Integer gantryPassCount; + + /** + * CPC卡EF02过站信息 + */ + @TableField("GANTRYPASSINFO") + @JsonProperty("gantryPassInfo") + private String gantryPassInfo; + + /** + * CPC卡省内计费信息(弃用) + */ + @TableField("FEEPROVINFO") + @JsonProperty("feeProvInfo") + private String feeProvInfo; + + /** + * 读出的本省累计金额 + */ + @TableField("FEESUMLOCALBEFORE") + @JsonProperty("feeSumLocalBefore") + private Long feeSumLocalBefore; + + /** + * 写入的本省累计金额 + */ + @TableField("FEESUMLOCALAFTER") + @JsonProperty("feeSumLocalAfter") + private Long feeSumLocalAfter; + + /** + * 计费接口特情值 + */ + @TableField("FEECALCSPECIAL") + @JsonProperty("feeCalcSpecial") + private Integer feeCalcSpecial; + + /** + * 计费模块响应结果 0正常 负数为异常 + */ + @TableField("FEECALCRESULT") + @JsonProperty("feeCalcResult") + private Integer feeCalcResult; + + /** + * 计费模块返回信息1 + */ + @TableField("FEEINFO1") + @JsonProperty("feeInfo1") + private String feeInfo1; + + /** + * 计费模块返回信息2 + */ + @TableField("FEEINFO2") + @JsonProperty("feeInfo2") + private String feeInfo2; + + /** + * 计费模块返回信息3 + */ + @TableField("FEEINFO3") + @JsonProperty("feeInfo3") + private String feeInfo3; + + /** + * 本次交易前标签累计应收金额 + */ + @TableField("OBUPAYFEESUMBEFORE") + @JsonProperty("OBUpayFeeSumBefore") + private Long obuPayFeeSumBefore; + + /** + * 本次交易后标签累计应收金额 + */ + @TableField("OBUPAYFEESUMAFTER") + @JsonProperty("OBUpayFeeSumAfter") + private Long obuPayFeeSumAfter; + + /** + * 本次交易前标签累计优惠金额 + */ + @TableField("OBUDISCOUNTFEESUMBEFORE") + @JsonProperty("OBUdiscountFeeSumBefore") + private Long obuDiscountFeeSumBefore; + + /** + * 本次交易后标签累计优惠金额 + */ + @TableField("OBUDISCOUNTFEESUMAFTER") + @JsonProperty("OBUdiscountFeeSumAfter") + private Long obuDiscountFeeSumAfter; + + /** + * 本次交易前标签累计实收金额(省内) + */ + @TableField("OBUPROVFEESUMBEFORE") + @JsonProperty("OBUProvfeeSumBefore") + private Long obuProvFeeSumBefore; + + /** + * 本次交易后标签累计实收金额(省内) + */ + @TableField("OBUPROVFEESUMAFTER") + @JsonProperty("OBUProvfeeSumAfter") + private Long obuProvFeeSumAfter; + + /** + * 本次交易前卡片累计金额 + */ + @TableField("CARDFEESUMBEFORE") + @JsonProperty("cardfeeSumBefore") + private Long cardFeeSumBefore; + + /** + * 本次交易后卡片累计金额 + */ + @TableField("CARDFEESUMAFTER") + @JsonProperty("cardfeeSumAfter") + private Long cardFeeSumAfter; + + /** + * 本次交易前累计无卡次数 + */ + @TableField("NOCARDTIMESBEFORE") + @JsonProperty("noCardTimesBefore") + private Integer noCardTimesBefore; + + /** + * 本次交易后累计无卡次数 + */ + @TableField("NOCARDTIMESAFTER") + @JsonProperty("noCardTimesAfter") + private Integer noCardTimesAfter; + + /** + * 本次交易前累计省份数量 + */ + @TableField("PROVINCENUMBEFORE") + @JsonProperty("provinceNumBefore") + private Integer provinceNumBefore; + + /** + * 本次交易后累计省份数量 + */ + @TableField("PROVINCENUMAFTER") + @JsonProperty("provinceNumAfter") + private Integer provinceNumAfter; + + /** + * 本次交易前标签累计写入成功总量 + */ + @TableField("OBUTOTALTRADESUCCNUMBEFORE") + @JsonProperty("OBUTotalTradeSuccNumBefore") + private Integer obuTotalTradeSuccNumBefore; + + /** + * 本次交易后标签累计写入成功总量 + */ + @TableField("OBUTOTALTRADESUCCNUMAFTER") + @JsonProperty("OBUTotalTradeSuccNumAfter") + private Integer obuTotalTradeSuccNumAfter; + + /** + * 本次交易前标签累计交易成功次数(省内) + */ + @TableField("OBUPROVTRADESUCCNUMBEFORE") + @JsonProperty("OBUProvTradeSuccNumBefore") + private Integer obuProvTradeSuccNumBefore; + + /** + * 本次交易后标签累计交易成功次数(省内) + */ + @TableField("OBUPROVTRADESUCCNUMAFTER") + @JsonProperty("OBUProvTradeSuccNumAfter") + private Integer obuProvTradeSuccNumAfter; + + /** + * 标签写入结果 0成功 1失败 2不计费但写卡成功 + */ + @TableField("OBUTRADERESULT") + @JsonProperty("OBUTradeResult") + private Integer obuTradeResult; + + /** + * 交易类型 0复合+写卡 1仅标签 2仅复合 + */ + @TableField("TRADETYPE") + @JsonProperty("tradeType") + private Integer tradeType; + + /** + * 读取标签入口信息类型 0AA 1BB 2CC 3其他 + */ + @TableField("OBUINFOTYPEREAD") + @JsonProperty("OBUInfoTypeRead") + private Integer obuInfoTypeRead; + + /** + * 本次写入标签入口信息类型 0AA 1BB 2CC + */ + @TableField("OBUINFOTYPEWRITE") + @JsonProperty("OBUInfoTypeWrite") + private Integer obuInfoTypeWrite; + + /** + * 标签入口状态 1有入口 2无入口 + */ + @TableField("OBUPASSSTATE") + @JsonProperty("OBUPassState") + private Integer obuPassState; + + /** + * 计费车型 + */ + @TableField("FEEVEHICLETYPE") + @JsonProperty("feeVehicleType") + private Integer feeVehicleType; + + /** + * OBU中上一个门架HEX + */ + @TableField("OBULASTGANTRYHEX") + @JsonProperty("OBULastGantryHex") + private String obuLastGantryHex; + + /** + * OBU中通过上一个门架时间 + */ + @TableField("OBULASTGANTRYTIME") + @JsonProperty("OBULastGantryTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date obuLastGantryTime; + + /** + * 本次计费里程(米) + */ + @TableField("FEEMILEAGE") + @JsonProperty("feeMileage") + private Integer feeMileage; + + /** + * 本次交易前标签累计里程 + */ + @TableField("OBUMILEAGEBEFORE") + @JsonProperty("OBUMileageBefore") + private Long obuMileageBefore; + + /** + * 本次交易后标签累计里程 + */ + @TableField("OBUMILEAGEAFTER") + @JsonProperty("OBUMileageAfter") + private Long obuMileageAfter; + + /** + * 本次交易读取的EF04加密摘要 + */ + @TableField("TRADEREADCIPHERTEXT") + @JsonProperty("tradeReadCiphertext") + private String tradeReadCiphertext; + + /** + * 本次读取EF04加密摘要验证结果 0成功 1失败 + */ + @TableField("READCIPHERTEXTVERIFY") + @JsonProperty("readCiphertextVerify") + private Integer readCiphertextVerify; + + /** + * 本次交易生成的EF04加密摘要 + */ + @TableField("TRADEWRITECIPHERTEXT") + @JsonProperty("tradeWriteCiphertext") + private String tradeWriteCiphertext; + + /** + * 省界出口参考金额(分) + */ + @TableField("PROVMINFEE") + @JsonProperty("provMinFee") + private Long provMinFee; + + /** + * 本省累计通行金额计算方式 1最短路径 2最小费额 3其他 + */ + @TableField("PROVMINFEECALCMODE") + @JsonProperty("provMinFeeCalcMode") + private Integer provMinFeeCalcMode; + + /** + * 计费协议保留字段1 + */ + @TableField("FEESPARE1") + @JsonProperty("feeSpare1") + private Integer feeSpare1; + + /** + * 计费协议保留字段2 + */ + @TableField("FEESPARE2") + @JsonProperty("feeSpare2") + private Integer feeSpare2; + + /** + * 计费协议保留字段3 + */ + @TableField("FEESPARE3") + @JsonProperty("feeSpare3") + private String feeSpare3; + + /** + * 本省计费起点 + */ + @TableField("FEEPROVBEGINHEX") + @JsonProperty("feeProvBeginHex") + private String feeProvBeginHex; + + /** + * 计费模块计费模式 1无拟合路径 2拟合路径 + */ + @TableField("RATECOMPUTE") + @JsonProperty("rateCompute") + private Integer rateCompute; + + /** + * 计费模块拟合点总数 + */ + @TableField("RATEFITCOUNT") + @JsonProperty("rateFitCount") + private Integer rateFitCount; + + /** + * 本次交易前标签累计实收金额 + */ + @TableField("OBUFEESUMBEFORE") + @JsonProperty("OBUFeeSumBefore") + private Long obuFeeSumBefore; + + /** + * 本次交易后标签累计实收金额 + */ + @TableField("OBUFEESUMAFTER") + @JsonProperty("OBUFeeSumAfter") + private Long obuFeeSumAfter; + + /** + * 本次交易前标签累计应收金额(省内) + */ + @TableField("OBUPROVPAYFEESUMBEFORE") + @JsonProperty("OBUProvPayFeeSumBefore") + private Long obuProvPayFeeSumBefore; + + /** + * 本次交易后标签累计应收金额(省内) + */ + @TableField("OBUPROVPAYFEESUMAFTER") + @JsonProperty("OBUProvPayFeeSumAfter") + private Long obuProvPayFeeSumAfter; + + /** + * 本次计费拟合结果标识 0未拟合或成功 1失败 + */ + @TableField("PATHFITFLAG") + @JsonProperty("pathFitFlag") + private Integer pathFitFlag; + + /** + * 计费特情值组合 + */ + @TableField("FEECALCSPECIALS") + @JsonProperty("feeCalcSpecials") + private String feeCalcSpecials; + + /** + * 本省累计金额取整(分) + */ + @TableField("PAYFEEPROVSUMLOCAL") + @JsonProperty("payFeeProvSumLocal") + private Long payFeeProvSumLocal; + + /** + * PC-RSU接口协议版本号 + */ + @TableField("PCRSUVERSION") + @JsonProperty("PCRSUVersion") + private Integer pcRsuVersion; + + /** + * 本次写入CPC卡EF02过站信息 + */ + @TableField("GANTRYPASSINFOAFTER") + @JsonProperty("gantryPassInfoAfter") + private String gantryPassInfoAfter; + + /** + * 更新过站信息结果 1成功 2失败(弃用) + */ + @TableField("UPDATERESULT") + @JsonProperty("updateResult") + private Integer updateResult; + + /** + * CPC卡计费信息文件写入结果 0成功 1失败 + */ + @TableField("CPCFEETRADERESULT") + @JsonProperty("CPCFeeTradeResult") + private Integer cpcFeeTradeResult; + + /** + * 本次写入CPC EF04本省计费信息 + */ + @TableField("FEEPROVEF04") + @JsonProperty("feeProvEF04") + private String feeProvEF04; + + /** + * CPC卡是否进行全省路径拟合的标识 0未拟合 >0省内定义 + */ + @TableField("FITPROVFLAG") + @JsonProperty("fitProvFlag") + private Integer fitProvFlag; + + /** + * 读取CPC卡EF02已写门架数量 + */ + @TableField("GANTRYPASSCOUNTBEFORE") + @JsonProperty("gantryPassCountBefore") + private Integer gantryPassCountBefore; + + /** + * 拟合后的本省省界入口ETC门架HEX码 + */ + @TableField("FEEPROVBEGINHEXFIT") + @JsonProperty("feeProvBeginHexFit") + private String feeProvBeginHexFit; + + /** + * 拟合后的本省省界入口ETC门架通行时间 + */ + @TableField("FEEPROVBEGINTIMEFIT") + @JsonProperty("feeProvBeginTimeFit") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date feeProvBeginTimeFit; + + /** + * CPC本省省界入口ETC门架通行时间 + */ + @TableField("FEEPROVBEGINTIME") + @JsonProperty("feeProvBeginTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date feeProvBeginTime; + + /** + * CPC本省累计拆分金额 + */ + @TableField("FEESUMLOCALAFTEREF04") + @JsonProperty("feeSumLocalAfterEF04") + private Long feeSumLocalAfterEF04; + + /** + * CPC EF02上个门架的计费金额 + */ + @TableField("LASTGANTRYFEEPASS") + @JsonProperty("lastGantryFeePass") + private Integer lastGantryFeePass; + + /** + * CPC EF02上个门架的计费里程 + */ + @TableField("LASTGANTRYMILEPASS") + @JsonProperty("lastGantryMilePass") + private Integer lastGantryMilePass; + + /** + * 路侧单元厂商代码 + */ + @TableField("RSUMANUID") + @JsonProperty("RSUManuid") + private String rsuManuid; + + /** + * 计费协议数据结构版本号 + */ + @TableField("FEEDATAVERSION") + @JsonProperty("feeDataVersion") + private String feeDataVersion; + + /** + * 配置的反向门架阈值组合 + */ + @TableField("GANTRYHEXOPPOTIME") + @JsonProperty("gantryHexOppotime") + private String gantryHexOppotime; + + /** + * 本次交易后标签累计应收金额(门架拟合前) + */ + @TableField("OBUPAYFEESUMAFTERNOFIT") + @JsonProperty("OBUpayFeeSumAfterNoFit") + private Integer obuPayFeeSumAfterNoFit; + + /** + * 本次交易后标签累计实收金额(门架拟合前) + */ + @TableField("OBUFEESUMAFTERNOFIT") + @JsonProperty("OBUFeeSumAfterNoFit") + private Integer obuFeeSumAfterNoFit; + + /** + * 标签内车辆用户类型 + */ + @TableField("OBUVEHICLEUSERTYPE") + @JsonProperty("OBUVehicleUserType") + private Integer obuVehicleUserType; + + /** + * 交易前读取的本省或邻省计费起点 + */ + @TableField("FEEPROVBEGINHEXBEFORE") + @JsonProperty("feeProvBeginHexBefore") + private String feeProvBeginHexBefore; + + /** + * 门架拟合结果 + */ + @TableField("GANTRYFITRESULT") + @JsonProperty("gantryFitResult") + private Integer gantryFitResult; + + /** + * 门架拟合参数版本信息 + */ + @TableField("GANTRYFITVERSION") + @JsonProperty("gantryFitVersion") + private String gantryFitVersion; + + + + /** + * 门架拟合出的HEX集合 _分隔 + */ + @TableField("GANTRYFITHexs") + @JsonProperty("gantryFitHexs") + private String gantryFitHexs; + + /** + * 门架拟合出的收费单元集合 _分隔 |代收 + */ + @TableField("GANTRYFITTOLLS") + @JsonProperty("gantryFitTolls") + private String gantryFitTolls; + + /** + * 邻省拟合门架应收金额(分) + */ + @TableField("GANTRYFITNPROVPAYFEE") + @JsonProperty("gantryFitNProvPayfee") + private Long gantryFitNProvPayfee; + + /** + * 邻省拟合门架优惠金额(分) + */ + @TableField("GANTRYFITNPROVDISCONTEE") + @JsonProperty("gantryFitNProvDiscontfee") + private Long gantryFitNProvDiscontfee; + + /** + * 邻省拟合门架实收金额(分) + */ + @TableField("GANTRYFITNPROVREALFEE") + @JsonProperty("gantryFitNProvRealfee") + private Long gantryFitNProvRealfee; + + /** + * 邻省拟合门架里程(米) + */ + @TableField("GANTRYFITNPROVMILES") + @JsonProperty("gantryFitNProvMiles") + private Integer gantryFitNProvMiles; + + /** + * 邻省拟合门架应收金额组合 _分隔 |代收 + */ + @TableField("GANTRYFITNPROVPAYFEEGROUP") + @JsonProperty("gantryFitNProvPayfeeGroup") + private String gantryFitNProvPayfeeGroup; + + /** + * 邻省拟合门架优惠金额组合 _分隔 |代收 + */ + @TableField("GANTRYFITNPROVDISCONTEEGROUP") + @JsonProperty("gantryFitNProvDiscontfeeGroup") + private String gantryFitNProvDiscontfeeGroup; + + /** + * 邻省拟合门架实收金额组合 _分隔 |代收 + */ + @TableField("GANTRYFITNPROVREALFEEGROUP") + @JsonProperty("gantryFitNProvRealfeeGroup") + private String gantryFitNProvRealfeeGroup; + + /** + * 拟合后邻省全省累计应收金额(分) + */ + @TableField("GANTRYFITNPROVPAYFEESUM") + @JsonProperty("gantryFitNProvPayFeeSum") + private Long gantryFitNProvPayFeeSum; + + /** + * 拟合后邻省全省累计拆分金额(分) + */ + @TableField("GANTRYFITNPROVREALFEESUM") + @JsonProperty("gantryFitNProvRealFeeSum") + private Long gantryFitNProvRealFeeSum; + + /** + * 拟合后邻省全省累计里程(米) + */ + @TableField("GANTRYFITNPROVMILESUM") + @JsonProperty("gantryFitNProvMileSum") + private Integer gantryFitNProvMileSum; + + /** + * 邻省拟合门架预实收金额(分) + */ + @TableField("GANTRYFITNPROVPREREALFEE") + @JsonProperty("gantryFitNProvPreRealfee") + private Long gantryFitNProvPreRealfee; + + /** + * 邻省拟合门架实收金额描述 + */ + @TableField("PATHFITDESC") + @JsonProperty("pathfitDesc") + private String pathfitDesc; + + /** + * 邻省省份代码 + */ + @TableField("GANTRYFITNEIGHBORPROVCODE") + @JsonProperty("gantryFitNeighborProvCode") + private Integer gantryFitNeighborProvCode; + + /** + * 节假日状态 0非节假日 1节假日 + */ + @TableField("HOLIDAYSTATE") + @JsonProperty("holidayState") + private Integer holidayState; + + /** + * 卡片复合交易结果 0成功 1失败 + */ + @TableField("TRADERESULT") + @JsonProperty("tradeResult") + private Integer tradeResult; + + /** + * 计费文件中上一个门架HEX(弃用) + */ + @TableField("LASTGANTRYHEXFEE") + @JsonProperty("lastGantryHexFee") + private String lastGantryHexFee; + + /** + * 过站信息中上一个门架HEX + */ + @TableField("LASTGANTRYHEXPASS") + @JsonProperty("lastGantryHexPass") + private String lastGantryHexPass; + + /** + * 门架特情类型 |分隔 + */ + @TableField("SPECIALTYPE") + @JsonProperty("specialType") + private String specialType; + + /** + * 收费特情类型 + */ + @TableField("CHARGESSPECIALTYPE") + @JsonProperty("chargesSpecialType") + private String chargesSpecialType; + + /** + * 关键字段校验码 + */ + @TableField("VERIFYCODE") + @JsonProperty("verifyCode") + private String verifyCode; + + /** + * 干扰信号 1无 2有 + */ + @TableField("INTERRUPTSIGNAL") + @JsonProperty("interruptSignal") + private Integer interruptSignal; + + /** + * 车牌识别流水号 + */ + @TableField("VEHICLEPICID") + @JsonProperty("vehiclePicId") + private String vehiclePicId; + + /** + * 车尾识别流水号 + */ + @TableField("VEHICLETAILPICID") + @JsonProperty("vehicleTailPicId") + private String vehicleTailPicId; + + /** + * 匹配状态 0未处理 1有匹配 2无匹配 3反向 + */ + @TableField("MATCHSTATUS") + @JsonProperty("matchStatus") + private Integer matchStatus; + + /** + * 去重状态 0未处理 1有效 2重复 + */ + @TableField("VALIDSTATUS") + @JsonProperty("validStatus") + private Integer validStatus; + + /** + * 处理状态 0未处理 1已处理 + */ + @TableField("DEALSTATUS") + @JsonProperty("dealStatus") + private Integer dealStatus; + + /** + * 是否修正过 0未修正 1已修正 + */ + @TableField("ISFIXDATA") + @JsonProperty("isFixData") + private Integer isFixData; + + /** + * 同一收费单元成功关联流水 |分隔 + */ + @TableField("RELATEDTRADEID") + @JsonProperty("relatedTradeId") + private String relatedTradeId; + + /** + * 全部关联流水 |分隔 + */ + @TableField("ALLRELATEDTRADEID") + @JsonProperty("allRelatedTradeId") + private String allRelatedTradeId; + + /** + * 门架后台入库时间 + */ + @TableField("STATIONDBTIME") + @JsonProperty("stationDBTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date stationDbTime; + + /** + * 门架后台处理时间 + */ + @TableField("STATIONDEALTIME") + @JsonProperty("stationDealTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date stationDealTime; + + /** + * 门架后台去重时间 + */ + @TableField("STATIONVALIDTIME") + @JsonProperty("stationValidTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date stationValidTime; + + /** + * 门架后台匹配时间 + */ + @TableField("STATIONMATCHTIME") + @JsonProperty("stationMatchTime") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8") + private Date stationMatchTime; + /** + * 路段编号 + */ + @TableField("ROADNO") + @JsonProperty("roadno") + private Integer roadno; + /** + * 站点编码 + */ + @TableField("STANO") + @JsonProperty("stano") + private Integer stano; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCUploadGantryData.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCUploadGantryData.java new file mode 100644 index 0000000..6cf7731 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCUploadGantryData.java @@ -0,0 +1,20 @@ +package com.nmggs.query.entity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author: shuguang + * @date: 2025年09月26日 9:35 + * @description: + */ +@Data +public class DCPCUploadGantryData { + @JsonProperty("msgId") + private String msgId; + + @JsonProperty("tradeInfoList") + private List tradeInfoList; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCUploadReturnData.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCUploadReturnData.java new file mode 100644 index 0000000..6bd7ae8 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/DCPCUploadReturnData.java @@ -0,0 +1,19 @@ +package com.nmggs.query.entity; + +import lombok.Data; + +import java.util.List; + +/** + * @author: shuguang + * @date: 2025年09月26日 10:14 + * @description: + */ +@Data +public class DCPCUploadReturnData { + private Integer subCode; + private String info; + private String receiveTime; + private Integer successCount; + private List failList; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestExSta.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestExSta.java new file mode 100644 index 0000000..066d785 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestExSta.java @@ -0,0 +1,20 @@ +package com.nmggs.query.entity; + +import lombok.Data; + +/** + * @author: shuguang + * @date: 2025年09月25日 14:30 + * @description: + */ +@Data +public class RequestExSta { + + private String VehiclePlate; + private String dateStart; + private String dateEnd; + + private String authKey; + + private String md5; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestMinFee.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestMinFee.java new file mode 100644 index 0000000..dd5bd46 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestMinFee.java @@ -0,0 +1,20 @@ +package com.nmggs.query.entity; + +import lombok.Data; + +/** + * @author: shuguang + * @date: 2025年09月25日 14:30 + * @description: + */ +@Data +public class RequestMinFee { + + private String version; + private Integer subcomno; + private Integer stano; + + private String authKey; + + private String md5; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestParam.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestParam.java new file mode 100644 index 0000000..e3067fa --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestParam.java @@ -0,0 +1,18 @@ +package com.nmggs.query.entity; + +import lombok.Data; + +/** + * @author: shuguang + * @date: 2025年09月25日 14:30 + * @description: + */ +@Data +public class RequestParam { + + private String fileName; + + private String authKey; + + private String md5; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestVersion.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestVersion.java new file mode 100644 index 0000000..11c9195 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/RequestVersion.java @@ -0,0 +1,18 @@ +package com.nmggs.query.entity; + +import lombok.Data; + +/** + * @author: shuguang + * @date: 2025年09月25日 14:30 + * @description: + */ +@Data +public class RequestVersion { + + private Integer version; + + private String authKey; + + private String md5; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/entity/fx/EquipmentStatistics.java b/GetDataInterface/src/main/java/com/nmggs/query/entity/fx/EquipmentStatistics.java new file mode 100644 index 0000000..e03a8fa --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/entity/fx/EquipmentStatistics.java @@ -0,0 +1,25 @@ +package com.nmggs.query.entity.fx; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author: shuguang + * @date: 2025年09月18日 17:51 + * @description: + */ +@Data +@TableName("zdyh_equipment_statistics") +public class EquipmentStatistics { + @TableField("classdate") + private Date classdate; + @TableField("equipmentid") + private Integer equipmentid; + @TableField("departmentno") + private Integer departmentno; + @TableField("state") + private Integer state; +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/mapper/DCPCGantryPassMapper.java b/GetDataInterface/src/main/java/com/nmggs/query/mapper/DCPCGantryPassMapper.java new file mode 100644 index 0000000..21aee3d --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/mapper/DCPCGantryPassMapper.java @@ -0,0 +1,14 @@ +package com.nmggs.query.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nmggs.query.entity.DCPCGantryPass; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author: shuguang + * @date: 2025年09月26日 10:00 + * @description: + */ +@Mapper +public interface DCPCGantryPassMapper extends BaseMapper { +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/mapper/GantryTableMapper.java b/GetDataInterface/src/main/java/com/nmggs/query/mapper/GantryTableMapper.java new file mode 100644 index 0000000..cabc905 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/mapper/GantryTableMapper.java @@ -0,0 +1,15 @@ +package com.nmggs.query.mapper; + +import org.apache.ibatis.annotations.Mapper; + +import java.util.Map; + +/** + * @author: shuguang + * @date: 2025年09月26日 11:28 + * @description: + */ +@Mapper +public interface GantryTableMapper { + Map selectByGantryId(String gantryId); +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/mapper/GantryTableMapper.xml b/GetDataInterface/src/main/java/com/nmggs/query/mapper/GantryTableMapper.xml new file mode 100644 index 0000000..71ab416 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/mapper/GantryTableMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/GetDataInterface/src/main/java/com/nmggs/query/mapper/fx/EquipmentStatisticsMapper.java b/GetDataInterface/src/main/java/com/nmggs/query/mapper/fx/EquipmentStatisticsMapper.java new file mode 100644 index 0000000..2c869a8 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/mapper/fx/EquipmentStatisticsMapper.java @@ -0,0 +1,16 @@ +package com.nmggs.query.mapper.fx; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nmggs.query.entity.fx.EquipmentStatistics; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author: shuguang + * @date: 2025年09月18日 17:54 + * @description: + */ +@Mapper +@DS("fx") +public interface EquipmentStatisticsMapper extends BaseMapper { +} diff --git a/GetDataInterface/src/main/java/com/nmggs/query/mapper/fx/EquipmentStatisticsMapper.xml b/GetDataInterface/src/main/java/com/nmggs/query/mapper/fx/EquipmentStatisticsMapper.xml new file mode 100644 index 0000000..0ee34f2 --- /dev/null +++ b/GetDataInterface/src/main/java/com/nmggs/query/mapper/fx/EquipmentStatisticsMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/GetDataInterface/src/main/java/com/nmggs/query/service/AddInterfaceService.java b/GetDataInterface/src/main/java/com/nmggs/query/service/AddInterfaceService.java index ff3512b..71aba33 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/service/AddInterfaceService.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/service/AddInterfaceService.java @@ -49,4 +49,15 @@ public interface AddInterfaceService { * @date 2025-04-27 9:53 */ String QueryExStationTrans(Map params, String uuid); + + /** + * 上传ETC门架数据 + * + * @param params 输入参数 + * @param uuid uuid + * @return java.lang.String + * @author shuguang + * @date 2025-04-27 9:53 + */ + String uploadEtcGantryPassData(Map params, String uuid); } diff --git a/GetDataInterface/src/main/java/com/nmggs/query/service/impl/AddInterfaceServiceImpl.java b/GetDataInterface/src/main/java/com/nmggs/query/service/impl/AddInterfaceServiceImpl.java index 0abbd42..27f8151 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/service/impl/AddInterfaceServiceImpl.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/service/impl/AddInterfaceServiceImpl.java @@ -1,22 +1,36 @@ package com.nmggs.query.service.impl; import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.nmggs.query.common.config.ExecutionTimeLogger; +import com.nmggs.query.common.emnu.Constant; import com.nmggs.query.common.emnu.MessageEnum; import com.nmggs.query.common.exception.PPException; import com.nmggs.query.common.utils.CheckUtils; +import com.nmggs.query.common.utils.DateTimeUtil; import com.nmggs.query.common.utils.FileUtil; +import com.nmggs.query.common.utils.JsonUtil; import com.nmggs.query.common.utils.MD5Util; import com.nmggs.query.common.utils.PropertiesUtil; import com.nmggs.query.common.utils.SM4Utils; +import com.nmggs.query.entity.DCPCFailList; +import com.nmggs.query.entity.DCPCGantryPass; +import com.nmggs.query.entity.DCPCUploadGantryData; +import com.nmggs.query.entity.DCPCUploadReturnData; +import com.nmggs.query.entity.RequestExSta; +import com.nmggs.query.entity.RequestMinFee; +import com.nmggs.query.entity.RequestVersion; import com.nmggs.query.entity.ResData; import com.nmggs.query.mapper.AddInterfaceMapper; +import com.nmggs.query.mapper.DCPCGantryPassMapper; +import com.nmggs.query.mapper.GantryTableMapper; import com.nmggs.query.service.AddInterfaceService; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; @@ -29,6 +43,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -45,6 +60,10 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { @Resource private AddInterfaceMapper addInterfaceMapper; + @Resource + private DCPCGantryPassMapper dcpcGantryPassMapper; + @Resource + private GantryTableMapper gantryTableMapper; /** * 查询收费门架费率 @@ -59,11 +78,25 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { @ExecutionTimeLogger public String gantryfee(Map params, String uuid) { log.info("[uuid:" + uuid + "]-开始通过接口获取收费门架费率,参数为" + params); - // 鉴权码 String authKey = PropertiesUtil.getValue("authKey"); - int version = (Integer) params.get("version"); - String reqAuthKey = (String) params.get("authKey"); - String reqMd5 = (String) params.get("md5"); + String dataJson = JsonUtil.conversionJson(params, uuid); + // 解析响应数据 + ResData resData = JSON.parseObject(dataJson, ResData.class); + // 提取密钥和加密数据 + String returnedKey = resData.getKey(); + String encryptedData = resData.getData(); + + // 解密数据 + String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); + log.info("[uuid:" + uuid + "]-解密后的数据{}", decryptedData); + RequestVersion requestParam = JSON.parseObject(decryptedData, RequestVersion.class); + + + int version = requestParam.getVersion(); + String reqAuthKey = requestParam.getAuthKey(); + String reqMd5 = requestParam.getMd5(); + + String verifyMd5 = MD5Util.md5(version + authKey); log.info("[uuid:" + uuid + "]-鉴权码为:" + authKey + ",请求鉴权码为:" + reqAuthKey + ",请求md5为:" + reqMd5 + ",验证md5为:" + verifyMd5); CheckUtils.checkAddParams(authKey, reqAuthKey, reqMd5, verifyMd5); @@ -82,7 +115,7 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { String jsonResult = conversionJson(list, uuid); //对数据进行加密返回并携带加密密钥 result = encryptData(jsonResult, uuid); - log.info("[uuid:{}]-数据处理完成",uuid); + log.info("[uuid:{}]-数据处理完成", uuid); return result; } @@ -92,7 +125,7 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { try { // 生成SM4密钥 String key = SM4Utils.generateKey(); - log.info("[uuid:{}]-生成的SM4密钥为:{}",uuid,key); + log.info("[uuid:{}]-生成的SM4密钥为:{}", uuid, key); // 加密JSON数据 String encryptedJson = SM4Utils.sm4Encrypt(jsonResult, key); @@ -104,7 +137,7 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { // 推送数据 result = JSON.toJSONString(resData); } catch (Exception e) { - log.error("[uuid:{}]-加密或生成密钥时出错:{}",uuid,e.getMessage(),e); + log.error("[uuid:{}]-加密或生成密钥时出错:{}", uuid, e.getMessage(), e); throw new PPException(MessageEnum.加密失败.getCode(), MessageEnum.加密失败.getMessage()); } return result; @@ -123,11 +156,23 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { @ExecutionTimeLogger public String gantryinfo(Map params, String uuid) { log.info("[uuid:" + uuid + "]-开始通过接口获取连通关系数据,参数为" + params); - //鉴权码 String authKey = PropertiesUtil.getValue("authKey"); - int version = (Integer) params.get("version"); - String reqAuthKey = (String) params.get("authKey"); - String reqMd5 = (String) params.get("md5"); + String dataJson = JsonUtil.conversionJson(params, uuid); + // 解析响应数据 + ResData resData = JSON.parseObject(dataJson, ResData.class); + // 提取密钥和加密数据 + String returnedKey = resData.getKey(); + String encryptedData = resData.getData(); + + // 解密数据 + String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); + log.info("[uuid:" + uuid + "]-解密后的数据{}", decryptedData); + RequestVersion requestParam = JSON.parseObject(decryptedData, RequestVersion.class); + + + int version = requestParam.getVersion(); + String reqAuthKey = requestParam.getAuthKey(); + String reqMd5 = requestParam.getMd5(); String verifyMd5 = MD5Util.md5(version + authKey); log.info("[uuid:" + uuid + "]-鉴权码为:" + authKey + ",请求鉴权码为:" + reqAuthKey + ",请求md5为:" + reqMd5 + ",验证md5为:" + verifyMd5); CheckUtils.checkAddParams(authKey, reqAuthKey, reqMd5, verifyMd5); @@ -145,15 +190,15 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { String jsonResult = conversionJson(list, uuid); //对数据进行加密返回并携带加密密钥 result = encryptData(jsonResult, uuid); - log.info("[uuid:{}]-数据处理完成",uuid); + log.info("[uuid:{}]-数据处理完成", uuid); return result; } /** * 根据参数下载最小费额文件 * - * @param params 参数 - * @param uuid uuid + * @param params 参数 + * @param uuid uuid * @param response HttpServletResponse * @author shuguang * @date 2025-04-27 9:53 @@ -163,13 +208,26 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { @ExecutionTimeLogger public void minPath(Map params, String uuid, HttpServletResponse response) { log.info("[uuid:" + uuid + "]-开始通过接口根据参数下载最小费额文件,参数为" + params); - String version = (String) params.get("version"); - int subcomno = (Integer) params.get("subcomno"); - int stano = (Integer) params.get("stano"); - //鉴权码 String authKey = PropertiesUtil.getValue("authKey"); - String reqAuthKey = (String) params.get("authKey"); - String reqMd5 = (String) params.get("md5"); + String dataJson = JsonUtil.conversionJson(params, uuid); + // 解析响应数据 + ResData resData = JSON.parseObject(dataJson, ResData.class); + // 提取密钥和加密数据 + String returnedKey = resData.getKey(); + String encryptedData = resData.getData(); + + // 解密数据 + String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); + log.info("[uuid:" + uuid + "]-解密后的数据{}", decryptedData); + RequestMinFee requestParam = JSON.parseObject(decryptedData, RequestMinFee.class); + + + String version = requestParam.getVersion(); + int subcomno = requestParam.getSubcomno(); + int stano = requestParam.getStano(); + String reqAuthKey = requestParam.getAuthKey(); + String reqMd5 = requestParam.getMd5(); + String verifyMd5 = MD5Util.md5(version + subcomno + stano + authKey); log.info("[uuid:" + uuid + "]-鉴权码为:" + authKey + ",请求鉴权码为:" + reqAuthKey + ",请求md5为:" + reqMd5 + ",验证md5为:" + verifyMd5); CheckUtils.checkAddParams(authKey, reqAuthKey, reqMd5, verifyMd5); @@ -252,14 +310,24 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { public String QueryExStationTrans(Map params, String uuid) { String result; log.info("[uuid:" + uuid + "]-开始通过接口获取出口交易数据,参数为" + params); - String vehiclePlate = (String) params.get("VehiclePlate"); - String dateStart = (String) params.get("dateStart"); - String dateEnd = (String) params.get("dateEnd"); - //鉴权码 String authKey = PropertiesUtil.getValue("authKey"); - String reqAuthKey = (String) params.get("authKey"); - String reqMd5 = (String) params.get("md5"); - String verifyMd5 = MD5Util.md5(vehiclePlate+dateStart+dateEnd + authKey); + String dataJson = JsonUtil.conversionJson(params, uuid); + // 解析响应数据 + ResData resData = JSON.parseObject(dataJson, ResData.class); + // 提取密钥和加密数据 + String returnedKey = resData.getKey(); + String encryptedData = resData.getData(); + + // 解密数据 + String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); + log.info("[uuid:" + uuid + "]-解密后的数据{}", decryptedData); + RequestExSta requestParam = JSON.parseObject(decryptedData, RequestExSta.class); + String vehiclePlate = requestParam.getVehiclePlate(); + String dateStart = requestParam.getDateStart(); + String dateEnd = requestParam.getDateEnd(); + String reqAuthKey = requestParam.getAuthKey(); + String reqMd5 = requestParam.getMd5(); + String verifyMd5 = MD5Util.md5(vehiclePlate + dateStart + dateEnd + authKey); log.info("[uuid:" + uuid + "]-鉴权码为:" + authKey + ",请求鉴权码为:" + reqAuthKey + ",请求md5为:" + reqMd5 + ",验证md5为:" + verifyMd5); CheckUtils.checkAddParams(authKey, reqAuthKey, reqMd5, verifyMd5); List> list = addInterfaceMapper.selectExStationTransList(vehiclePlate, dateStart, dateEnd); @@ -270,7 +338,91 @@ public class AddInterfaceServiceImpl implements AddInterfaceService { String jsonResult = conversionMapToJson(map, uuid); //对数据进行加密返回并携带加密密钥 result = encryptData(jsonResult, uuid); - log.info("[uuid:{}]-数据处理完成",uuid); + log.info("[uuid:{}]-数据处理完成", uuid); + return result; + } + + /** + * 上传ETC门架数据 + * + * @param params 输入参数 + * @param uuid uuid + * @return java.lang.String + * @author shuguang + * @date 2025-04-27 9:53 + */ + @Override + @Transactional(rollbackFor = Exception.class) + @ExecutionTimeLogger + public String uploadEtcGantryPassData(Map params, String uuid) { + String result; + log.info("[uuid:" + uuid + "]-开始通过接口接收DCPC-ETC门架计费扣费交易数据,参数为" + params); + DCPCUploadReturnData returnData = new DCPCUploadReturnData(); + try { + String authKey = PropertiesUtil.getValue("authKey"); + String dataJson = JsonUtil.conversionJson(params, uuid); + // 解析响应数据 + ResData resData = JSON.parseObject(dataJson, ResData.class); + // 提取密钥和加密数据 + String returnedKey = resData.getKey(); + String encryptedData = resData.getData(); + // 解密数据 + String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); + log.info("[uuid:" + uuid + "]-解密后的数据{}", decryptedData); + DCPCUploadGantryData dcpcUploadGantryData = JSON.parseObject(decryptedData, DCPCUploadGantryData.class); + List tradeInfoList = dcpcUploadGantryData.getTradeInfoList(); + + returnData.setReceiveTime(DateTimeUtil.getFormateString(new Date(), Constant.YYYY_MM_DD_T_HH_MM_SS)); + int successCount = 0; + if (tradeInfoList != null && tradeInfoList.size() > 0) { + if (tradeInfoList.size() > 100) { + returnData.setSubCode(998); + returnData.setInfo("业务数组长度超出100"); + } else { + + for (DCPCGantryPass pass : tradeInfoList) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TRADEID", pass.getTradeId()); + boolean exists = dcpcGantryPassMapper.exists(queryWrapper); + if (!exists) { + //入库的时候STANO、ROADNO需要查询GANTRY_TABLE表获取 + Map gantryTable = gantryTableMapper.selectByGantryId(pass.getGantryId()); + if (gantryTable != null) { + pass.setStano(Integer.valueOf(gantryTable.get("STANO").toString())); + pass.setRoadno(Integer.valueOf(gantryTable.get("ROADNO").toString())); + dcpcGantryPassMapper.insert(pass); + successCount++; + }else { + DCPCFailList failList = new DCPCFailList(); + failList.setTradeId(pass.getTradeId()); + failList.setInfo(pass.getGantryId()+"门架信息不存在"); + returnData.getFailList().add(failList); + } + } else { + //重复记录不做入库 + DCPCFailList failList = new DCPCFailList(); + failList.setTradeId(pass.getTradeId()); + failList.setInfo("主键重复记录不做入库"); + returnData.getFailList().add(failList); + } + } + returnData.setSubCode(200); + returnData.setInfo("DCPC-ETC门架计费扣费交易数据接收成功"); + returnData.setSuccessCount(successCount); + } + } else { + returnData.setSubCode(401); + returnData.setInfo("业务数据为空"); + } + } catch (Exception e) { + log.error("[uuid:" + uuid + "]-DCPC-ETC门架计费扣费交易数据接收异常:" + e.getMessage(), e); + returnData.setSubCode(501); + returnData.setInfo("DCPC-ETC门架计费扣费交易数据接收异常"); + } + String jsonResult = JSON.toJSONString(returnData); + //对数据进行加密返回并携带加密密钥 + result = encryptData(jsonResult, uuid); + log.info("[uuid:{}]-接收DCPC-ETC门架计费扣费交易数据处理完成", uuid); return result; } diff --git a/GetDataInterface/src/main/java/com/nmggs/query/service/impl/GetDataServiceImpl.java b/GetDataInterface/src/main/java/com/nmggs/query/service/impl/GetDataServiceImpl.java index 788a2d2..f00677b 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/service/impl/GetDataServiceImpl.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/service/impl/GetDataServiceImpl.java @@ -1,12 +1,17 @@ package com.nmggs.query.service.impl; +import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.nmggs.query.common.config.ExecutionTimeLogger; import com.nmggs.query.common.emnu.MessageEnum; import com.nmggs.query.common.exception.PPException; import com.nmggs.query.common.utils.CheckUtils; +import com.nmggs.query.common.utils.JsonUtil; import com.nmggs.query.common.utils.PropertiesUtil; +import com.nmggs.query.common.utils.SM4Utils; +import com.nmggs.query.entity.RequestParam; +import com.nmggs.query.entity.ResData; import com.nmggs.query.mapper.InterfaceQueryMapper; import com.nmggs.query.service.GetDataService; import lombok.extern.slf4j.Slf4j; @@ -40,11 +45,22 @@ public class GetDataServiceImpl implements GetDataService { @ExecutionTimeLogger public String getData(Map params, String uuid) { log.info("[uuid:" + uuid + "]-开始通过接口获取基础信息,参数为"+params); - //鉴权码 String authKey = PropertiesUtil.getValue("authKey"); - String fileName = (String) params.get("fileName"); - String reqAuthKey = (String) params.get("authKey"); - String reqMd5 = (String) params.get("md5"); + String dataJson = JsonUtil.conversionJson(params, uuid); + // 解析响应数据 + ResData resData = JSON.parseObject(dataJson, ResData.class); + // 提取密钥和加密数据 + String returnedKey = resData.getKey(); + String encryptedData = resData.getData(); + + // 解密数据 + String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); + log.info("[uuid:" + uuid + "]-解密后的数据{}", decryptedData); + RequestParam requestParam = JSON.parseObject(decryptedData, RequestParam.class); + + String fileName = requestParam.getFileName(); + String reqAuthKey = requestParam.getAuthKey(); + String reqMd5 = requestParam.getMd5(); CheckUtils.checkParams(authKey, reqAuthKey, reqMd5, fileName); List> list; String result = null; @@ -53,7 +69,7 @@ public class GetDataServiceImpl implements GetDataService { log.info("[uuid:" + uuid + "]-当前获取的是收费公路业主信息"); list = interfaceQueryMapper.getBasicLinkOwnerDownloadReq15(); //收费公路信息 - } else if (fileName.contains("BASIC_TOLLROADDOWNLOAD_REdisplayedSideImageQ_15")) { + } else if (fileName.contains("BASIC_TOLLROADDOWNLOAD_REQ_15")) { log.info("[uuid:" + uuid + "]-当前获取的是收费公路信息"); list = interfaceQueryMapper.getBasicTollRoadDownloadReq15(); //收费路段信息 diff --git a/GetDataInterface/src/main/java/com/nmggs/query/service/impl/ZDYHDataServiceImpl.java b/GetDataInterface/src/main/java/com/nmggs/query/service/impl/ZDYHDataServiceImpl.java index b036b9e..b000fab 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/service/impl/ZDYHDataServiceImpl.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/service/impl/ZDYHDataServiceImpl.java @@ -7,13 +7,16 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.nmggs.query.common.config.ExecutionTimeLogger; import com.nmggs.query.common.exception.Result; +import com.nmggs.query.common.utils.DateTimeUtil; import com.nmggs.query.common.utils.PropertiesUtil; import com.nmggs.query.common.utils.SM4Utils; import com.nmggs.query.entity.ResData; import com.nmggs.query.entity.fx.EquipmentInfo; +import com.nmggs.query.entity.fx.EquipmentStatistics; import com.nmggs.query.entity.fx.UseInfo; import com.nmggs.query.entity.fx.WarningInfo; import com.nmggs.query.mapper.fx.EquipmentInfoMapper; +import com.nmggs.query.mapper.fx.EquipmentStatisticsMapper; import com.nmggs.query.mapper.fx.UseInfoMapper; import com.nmggs.query.mapper.fx.WarningInfoMapper; import com.nmggs.query.service.ZDYHDataService; @@ -39,6 +42,8 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { private UseInfoMapper useInfoMapper; @Resource private WarningInfoMapper warningInfoMapper; + @Resource + private EquipmentStatisticsMapper equipmentStatisticsMapper; /** * 接收重点隐患车辆设备信息 @@ -52,7 +57,7 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { @Override @ExecutionTimeLogger public Result getEquipmentInfo(Map params, String uuid) { - log.info("[uuid:{}]-开始接收重点隐患车辆设备信息" ,uuid); + log.info("[uuid:{}]-开始接收重点隐患车辆设备信息", uuid); String authKey = PropertiesUtil.getValue("authKey"); String dataJson = conversionJson(params, uuid); // 解析响应数据 @@ -65,9 +70,12 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); // 将解密后的数据解析为 EquipmentInfo 列表 List equipmentInfos = JSON.parseArray(decryptedData, EquipmentInfo.class); - int updateCount=0; - int insertCount=0; - if(equipmentInfos!=null && equipmentInfos.size()>0){ + int updateCount = 0; + int insertCount = 0; + int updateCount2 = 0; + int insertCount2 = 0; + Date classdate = DateTimeUtil.getDateByDay(new Date()); + if (equipmentInfos != null && equipmentInfos.size() > 0) { for (EquipmentInfo info : equipmentInfos) { Integer equipmentid = info.getEquipmentid(); info.setUpdatetime(new Date()); @@ -75,19 +83,35 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { queryWrapper.eq("equipmentid", equipmentid); boolean exists = equipmentInfoMapper.exists(queryWrapper); if (exists) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("equipmentid", equipmentid); equipmentInfoMapper.update(info, updateWrapper); updateCount++; - }else { + } else { equipmentInfoMapper.insert(info); insertCount++; } + QueryWrapper statisticsQueryWrapper = new QueryWrapper<>(); + statisticsQueryWrapper.eq("classdate", classdate) + .eq("equipmentid", equipmentid); + EquipmentStatistics statistics = new EquipmentStatistics(); + statistics.setClassdate(classdate); + statistics.setEquipmentid(equipmentid); + statistics.setState(info.getState()); + statistics.setDepartmentno(info.getDepartmentno()); + + boolean staExist = equipmentStatisticsMapper.exists(statisticsQueryWrapper); + if (!staExist) { + equipmentStatisticsMapper.insert(statistics); + insertCount2++; + }else { + equipmentStatisticsMapper.update(statistics, statisticsQueryWrapper); + updateCount2++; + } } } log.info("[uuid:{}]-接收重点隐患车辆设备信息完成,更新数量:{},插入数量:{}", uuid, updateCount, insertCount); - - + log.info("[uuid:{}]-更新设备状态统计表zdyh_equipment_statistics完成,更新数量:{},插入数量:{}", uuid, updateCount2, insertCount2); return Result.success("接收重点隐患车辆设备数据成功"); } @@ -103,7 +127,7 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { @Override @ExecutionTimeLogger public Result getUseFrequency(Map params, String uuid) { - log.info("[uuid:{}]-开始接收重点隐患车辆使用频次数据" ,uuid); + log.info("[uuid:{}]-开始接收重点隐患车辆使用频次数据", uuid); String authKey = PropertiesUtil.getValue("authKey"); String dataJson = conversionJson(params, uuid); // 解析响应数据 @@ -116,9 +140,9 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); // 将解密后的数据解析为 UseInfo列表 List infoList = JSON.parseArray(decryptedData, UseInfo.class); - int updateCount=0; - int insertCount=0; - if(infoList!=null && infoList.size()>0){ + int updateCount = 0; + int insertCount = 0; + if (infoList != null && infoList.size() > 0) { for (UseInfo info : infoList) { Integer equipmentid = info.getEquipmentid(); info.setUpdatetime(new Date()); @@ -127,12 +151,12 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { .eq("classdate", info.getClassdate()); boolean exists = useInfoMapper.exists(queryWrapper); if (exists) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("equipmentid", equipmentid) .eq("classdate", info.getClassdate()); useInfoMapper.update(info, updateWrapper); updateCount++; - }else { + } else { useInfoMapper.insert(info); insertCount++; } @@ -155,7 +179,7 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { */ @Override public Result getWarningData(Map params, String uuid) { - log.info("[uuid:{}]-开始接收重点隐患车辆预警结果数据" ,uuid); + log.info("[uuid:{}]-开始接收重点隐患车辆预警结果数据", uuid); String authKey = PropertiesUtil.getValue("authKey"); String dataJson = conversionJson(params, uuid); // 解析响应数据 @@ -168,9 +192,9 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey)); // 将解密后的数据解析为 WarningInfo 列表 List infoList = JSON.parseArray(decryptedData, WarningInfo.class); - int updateCount=0; - int insertCount=0; - if(infoList!=null && infoList.size()>0){ + int updateCount = 0; + int insertCount = 0; + if (infoList != null && infoList.size() > 0) { for (WarningInfo info : infoList) { Integer equipmentid = info.getEquipmentid(); info.setUpdatetime(new Date()); @@ -179,12 +203,12 @@ public class ZDYHDataServiceImpl implements ZDYHDataService { .eq("classdate", info.getClassdate()); boolean exists = warningInfoMapper.exists(queryWrapper); if (exists) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("equipmentid", equipmentid) .eq("classdate", info.getClassdate()); warningInfoMapper.update(info, updateWrapper); updateCount++; - }else { + } else { warningInfoMapper.insert(info); insertCount++; } diff --git a/GetDataInterface/src/main/java/com/nmggs/query/test/Test250825.java b/GetDataInterface/src/main/java/com/nmggs/query/test/Test250825.java index a9c950b..18d70b8 100644 --- a/GetDataInterface/src/main/java/com/nmggs/query/test/Test250825.java +++ b/GetDataInterface/src/main/java/com/nmggs/query/test/Test250825.java @@ -15,76 +15,86 @@ public class Test250825 { String fixedKey = "8c602c65fe6f57c4b721c5078bb8a916"; String s = SM4Utils.generateKey(); System.out.println("密钥"+s); - - String json ="[\n" + - " {\n" + - " \"classdate\": \"2025-09-15\",\n" + - " \"equipmentid\": 487,\n" + - " \"equipmentname\": \"高速二支队\u200C\u200C赤峰大队\",\n" + - " \"departmentno\": 16,\n" + - " \"departmentname\": \"高速二支队\",\n" + - " \"passcount\": 120,\n" + - " \"warncount\": 5,\n" + - " \"fatiguecount\": 3,\n" + - " \"truckfatiguecount\": 1,\n" + - " \"dangerfatiguecount\": 1,\n" + - " \"carfatiguecount\": 1,\n" + - " \"severefatiguecount\": 2,\n" + - " \"truckseverefatiguecount\": 1,\n" + - " \"dangerseverefatiguecount\": 1,\n" + - " \"carseverefatiguecount\": 1,\n" + - " \"speedcount\": 10,\n" + - " \"truckspeedcount\": 3,\n" + - " \"dangerspeedcount\": 2,\n" + - " \"carspeedcount\": 5,\n" + - " \"facilitycount\": 8,\n" + - " \"truckfacilitycount\": 3,\n" + - " \"dangerfacilitycount\": 2,\n" + - " \"carfacilitycount\": 3,\n" + - " \"feeevasioncount\": 5,\n" + - " \"truckfeeevasioncount\": 2,\n" + - " \"dangerfeeevasioncount\": 1,\n" + - " \"carfeeevasioncount\": 2\n" + - " },\n" + - " {\n" + - " \"classdate\": \"2025-09-16\",\n" + - " \"equipmentid\": 335,\n" + - " \"equipmentname\": \"高速一支队\u200C\u200C苏木山大队\",\n" + - " \"departmentno\": 15,\n" + - " \"departmentname\": \"高速一支队\",\n" + - " \"passcount\": 150,\n" + - " \"warncount\": 7,\n" + - " \"fatiguecount\": 4,\n" + - " \"truckfatiguecount\": 2,\n" + - " \"dangerfatiguecount\": 1,\n" + - " \"carfatiguecount\": 1,\n" + - " \"severefatiguecount\": 3,\n" + - " \"truckseverefatiguecount\": 1,\n" + - " \"dangerseverefatiguecount\": 1,\n" + - " \"carseverefatiguecount\": 1,\n" + - " \"speedcount\": 12,\n" + - " \"truckspeedcount\": 4,\n" + - " \"dangerspeedcount\": 3,\n" + - " \"carspeedcount\": 5,\n" + - " \"facilitycount\": 10,\n" + - " \"truckfacilitycount\": 4,\n" + - " \"dangerfacilitycount\": 3,\n" + - " \"carfacilitycount\": 3,\n" + - " \"feeevasioncount\": 6,\n" + - " \"truckfeeevasioncount\": 3,\n" + - " \"dangerfeeevasioncount\": 2,\n" + - " \"carfeeevasioncount\": 1\n" + - " }\n" + - "]"; - String sm4Encrypt = SM4Utils.sm4Encrypt(json, s); - ResData resData = new ResData(); - resData.setKey(SM4Utils.sm4Encrypt(s, fixedKey)); - resData.setData(sm4Encrypt); - // 推送数据 - String pushJson = JSON.toJSONString(resData); - System.out.println(pushJson); // - ResData returnResData = JSON.parseObject(pushJson, ResData.class); + //String json ="[\n" + + // " {\n" + + // " \"classdate\": \"2025-09-15\",\n" + + // " \"equipmentid\": 487,\n" + + // " \"equipmentname\": \"高速二支队\u200C\u200C赤峰大队\",\n" + + // " \"departmentno\": 16,\n" + + // " \"departmentname\": \"高速二支队\",\n" + + // " \"passcount\": 120,\n" + + // " \"warncount\": 5,\n" + + // " \"fatiguecount\": 3,\n" + + // " \"truckfatiguecount\": 1,\n" + + // " \"dangerfatiguecount\": 1,\n" + + // " \"carfatiguecount\": 1,\n" + + // " \"severefatiguecount\": 2,\n" + + // " \"truckseverefatiguecount\": 1,\n" + + // " \"dangerseverefatiguecount\": 1,\n" + + // " \"carseverefatiguecount\": 1,\n" + + // " \"speedcount\": 10,\n" + + // " \"truckspeedcount\": 3,\n" + + // " \"dangerspeedcount\": 2,\n" + + // " \"carspeedcount\": 5,\n" + + // " \"facilitycount\": 8,\n" + + // " \"truckfacilitycount\": 3,\n" + + // " \"dangerfacilitycount\": 2,\n" + + // " \"carfacilitycount\": 3,\n" + + // " \"feeevasioncount\": 5,\n" + + // " \"truckfeeevasioncount\": 2,\n" + + // " \"dangerfeeevasioncount\": 1,\n" + + // " \"carfeeevasioncount\": 2\n" + + // " },\n" + + // " {\n" + + // " \"classdate\": \"2025-09-16\",\n" + + // " \"equipmentid\": 335,\n" + + // " \"equipmentname\": \"高速一支队\u200C\u200C苏木山大队\",\n" + + // " \"departmentno\": 15,\n" + + // " \"departmentname\": \"高速一支队\",\n" + + // " \"passcount\": 150,\n" + + // " \"warncount\": 7,\n" + + // " \"fatiguecount\": 4,\n" + + // " \"truckfatiguecount\": 2,\n" + + // " \"dangerfatiguecount\": 1,\n" + + // " \"carfatiguecount\": 1,\n" + + // " \"severefatiguecount\": 3,\n" + + // " \"truckseverefatiguecount\": 1,\n" + + // " \"dangerseverefatiguecount\": 1,\n" + + // " \"carseverefatiguecount\": 1,\n" + + // " \"speedcount\": 12,\n" + + // " \"truckspeedcount\": 4,\n" + + // " \"dangerspeedcount\": 3,\n" + + // " \"carspeedcount\": 5,\n" + + // " \"facilitycount\": 10,\n" + + // " \"truckfacilitycount\": 4,\n" + + // " \"dangerfacilitycount\": 3,\n" + + // " \"carfacilitycount\": 3,\n" + + // " \"feeevasioncount\": 6,\n" + + // " \"truckfeeevasioncount\": 3,\n" + + // " \"dangerfeeevasioncount\": 2,\n" + + // " \"carfeeevasioncount\": 1\n" + + // " }\n" + + // "]"; + //String json ="{\"fileName\":\"BASIC_LINKOWNERDOWNLOAD_REQ_15_20250925111943000000.json\",\"authKey\":\"8c602c65fe6f57c4b721c5078bb8a916\",\"md5\":\"f9c7245154069df4f1f5b46115a71388\"}"; + //String sm4Encrypt = SM4Utils.sm4Encrypt(json, s); + //ResData resData = new ResData(); + //resData.setKey(SM4Utils.sm4Encrypt(s, fixedKey)); + //resData.setData(sm4Encrypt); + //// 推送数据 + //String pushJson = JSON.toJSONString(resData); + //System.out.println(pushJson); + // + + //String pushJson = "{\n" + + // " \"key\": \"F1m2UtAVAvgyA3F+/z9zsvWNQmarbzhCFfhrVZBhgfAyRRRGvmXZDx4peEXwAv9j\",\n" + + // " \"data\": \"kLgoY4eqf84MCan7fFTTibHMKVvpidaQICAD1LwSi/eumspzr7RhIZE/skQUZln/5SWW4Ep5S8G6LMIPy67BR5x79Qldj/TYVHsooUCWRoC0xGOMQAA896HvorjOxz4sW0BHtT/7ngp57IMvO8hV9HahTWW3fcVNzWppo9LkV2qZlvWoGoZEgdYUCXmSpjBNlUjMjk+BUR5Dp5Vh5JaAOQ==\"\n" + + // "}"; + String pushJson="{\n" + + " \"data\": \"VHtIhqoFZTimL3rv0yTera+wUyDpW1UIzKo2ETSr2bcj+KfMAOQGcPED7Nkv8OSJ8vVPcxfNCcH2a9T7HACLtLy4mwI3/c+Blwx8Nal4qRlNXGqAYs52/hq5FDkqv9VQtNHCsdK2PKHjJRgutN5dSCl1fs7gKgBCyWZsIukXRliyCsYmdc7MJFkT8rTJx6okdjaslSzt/Tcvfa0dMQbp+JVOpdLT+1ku7Okw/u1cyQJwpnsE91RTAxKPpBnzkrBdWODamQ8ORqHz6Bzmtc4zqKyBEsw5t9uR8LbwZ7iviP1jsjv00hzGWavz+25/qcBmGlC+BEQYr8E1SGj//p51dPTKp8Sy4gj2xkFmzWcDrF+CH4vaRUy4xUwv+/+x8BfL3VaQUJ7O1IrNks6kbJRbAEwhQARtLjFQOf2wiMh+HFyd4MMsmTPClp2S7a4AHGNNi6MKmDArqYOYlHtXXdgqg0usJ50X47t7F1ZYvRFFx7v/svculmgPWCqma5+qgEeEESvJhfYCvlDDVaIMnVOf4YRyGHp/yYUj/vM8ZTx6bzdMW05VVH+V8NesGzGQKb6l\",\n" + + " \"key\": \"Sz/6H1ZrpW1uJQOmp/aeueOhvom4SVdk5+2ONatgcxAyRRRGvmXZDx4peEXwAv9j\"\n" + + "}"; + ResData returnResData = JSON.parseObject(pushJson, ResData.class); String resDataKey = returnResData.getKey(); String deReturnKey = SM4Utils.sm4Decrypt(resDataKey, fixedKey); String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(), deReturnKey); diff --git a/GetDataInterface/src/main/resources/version/1.0.1.txt b/GetDataInterface/src/main/resources/version/1.0.2.txt similarity index 92% rename from GetDataInterface/src/main/resources/version/1.0.1.txt rename to GetDataInterface/src/main/resources/version/1.0.2.txt index 4bdda91..c32fce2 100644 --- a/GetDataInterface/src/main/resources/version/1.0.1.txt +++ b/GetDataInterface/src/main/resources/version/1.0.2.txt @@ -11,3 +11,4 @@ 出口交易查询http://ip:port/GetDataInterface/baseinfo/QueryExStationTrans 同时增加返回json进行SM4加密,文件也进行SM4加密 2 2025年09月10日 1.0.1 修改通过堡垒机转发相关请求 +3 2025年09月28日 1.0.2 增加ETC 门架计费扣费交易数据上传接口/DCPC/uploadEtcGantryPassData diff --git a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/config/CorsConfig.class b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/config/CorsConfig.class index 4bdf779..39dd449 100644 Binary files a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/config/CorsConfig.class and b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/config/CorsConfig.class differ diff --git a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/emnu/Constant.class b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/emnu/Constant.class index 4b5ee9d..648ea84 100644 Binary files a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/emnu/Constant.class and b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/common/emnu/Constant.class differ diff --git a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/controller/AddInterfaceController.class b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/controller/AddInterfaceController.class index 1eb1dfd..8d5e5d2 100644 Binary files a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/controller/AddInterfaceController.class and b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/controller/AddInterfaceController.class differ diff --git a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/AddInterfaceService.class b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/AddInterfaceService.class index 3df11f0..1274091 100644 Binary files a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/AddInterfaceService.class and b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/AddInterfaceService.class differ diff --git a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class index 1f590a7..a364dac 100644 Binary files a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class and b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class differ diff --git a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class index 6a83fe9..a51ba0d 100644 Binary files a/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class and b/GetDataInterface/target/GetDataInterface/WEB-INF/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class differ diff --git a/GetDataInterface/target/classes/com/nmggs/query/common/config/CorsConfig.class b/GetDataInterface/target/classes/com/nmggs/query/common/config/CorsConfig.class index 4bdf779..39dd449 100644 Binary files a/GetDataInterface/target/classes/com/nmggs/query/common/config/CorsConfig.class and b/GetDataInterface/target/classes/com/nmggs/query/common/config/CorsConfig.class differ diff --git a/GetDataInterface/target/classes/com/nmggs/query/common/emnu/Constant.class b/GetDataInterface/target/classes/com/nmggs/query/common/emnu/Constant.class index 4b5ee9d..648ea84 100644 Binary files a/GetDataInterface/target/classes/com/nmggs/query/common/emnu/Constant.class and b/GetDataInterface/target/classes/com/nmggs/query/common/emnu/Constant.class differ diff --git a/GetDataInterface/target/classes/com/nmggs/query/controller/AddInterfaceController.class b/GetDataInterface/target/classes/com/nmggs/query/controller/AddInterfaceController.class index 1eb1dfd..8d5e5d2 100644 Binary files a/GetDataInterface/target/classes/com/nmggs/query/controller/AddInterfaceController.class and b/GetDataInterface/target/classes/com/nmggs/query/controller/AddInterfaceController.class differ diff --git a/GetDataInterface/target/classes/com/nmggs/query/service/AddInterfaceService.class b/GetDataInterface/target/classes/com/nmggs/query/service/AddInterfaceService.class index 3df11f0..1274091 100644 Binary files a/GetDataInterface/target/classes/com/nmggs/query/service/AddInterfaceService.class and b/GetDataInterface/target/classes/com/nmggs/query/service/AddInterfaceService.class differ diff --git a/GetDataInterface/target/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class b/GetDataInterface/target/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class index 1f590a7..a364dac 100644 Binary files a/GetDataInterface/target/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class and b/GetDataInterface/target/classes/com/nmggs/query/service/impl/AddInterfaceServiceImpl.class differ diff --git a/GetDataInterface/target/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class b/GetDataInterface/target/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class index 6a83fe9..a51ba0d 100644 Binary files a/GetDataInterface/target/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class and b/GetDataInterface/target/classes/com/nmggs/query/service/impl/GetDataServiceImpl.class differ