Commit 277664af by zhaojg

新增

parent 4d01f3a1
This diff is collapsed. Click to expand it.
# Getting Started
### Reference Documentation
For further reference, please consider the following sections:
* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/3.3.5/maven-plugin)
* [Create an OCI image](https://docs.spring.io/spring-boot/3.3.5/maven-plugin/build-image.html)
* [Spring Web](https://docs.spring.io/spring-boot/3.3.5/reference/web/servlet.html)
### Guides
The following guides illustrate how to use some features concretely:
* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)
* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)
* [Building REST services with Spring](https://spring.io/guides/tutorials/rest/)
### Maven Parent overrides
Due to Maven's design, elements are inherited from the parent POM to the project POM. While most of the inheritance is
fine, it also inherits unwanted elements like `<license>` and `<developers>` from the parent. To prevent this, the
project POM contains empty overrides for these elements. If you manually switch to a different parent and actually want
the inheritance, you need to remove those overrides.
This diff is collapsed. Click to expand it.
<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.3.2
@REM
@REM Optional ENV vars
@REM MVNW_REPOURL - repo url base for downloading maven distribution
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
@SET __MVNW_CMD__=
@SET __MVNW_ERROR__=
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
@SET PSModulePath=
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
)
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
@SET __MVNW_PSMODULEP_SAVE=
@SET __MVNW_ARG0_NAME__=
@SET MVNW_USERNAME=
@SET MVNW_PASSWORD=
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
@echo Cannot start maven from wrapper >&2 && exit /b 1
@GOTO :EOF
: end batch / begin powershell #>
$ErrorActionPreference = "Stop"
if ($env:MVNW_VERBOSE -eq "true") {
$VerbosePreference = "Continue"
}
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
if (!$distributionUrl) {
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
}
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
"maven-mvnd-*" {
$USE_MVND = $true
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
$MVN_CMD = "mvnd.cmd"
break
}
default {
$USE_MVND = $false
$MVN_CMD = $script -replace '^mvnw','mvn'
break
}
}
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
if ($env:MVNW_REPOURL) {
$MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
}
$distributionUrlName = $distributionUrl -replace '^.*/',''
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
if ($env:MAVEN_USER_HOME) {
$MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
}
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
exit $?
}
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
}
# prepare tmp dir
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
trap {
if ($TMP_DOWNLOAD_DIR.Exists) {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
}
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
# Download and Install Apache Maven
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
Write-Verbose "Downloading from: $distributionUrl"
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
$webclient = New-Object System.Net.WebClient
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
# If specified, validate the SHA-256 sum of the Maven distribution zip file
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
if ($distributionSha256Sum) {
if ($USE_MVND) {
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
}
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
}
}
# unzip and move
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
try {
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
} catch {
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
Write-Error "fail to move MAVEN_HOME"
}
} finally {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<version>2.1.4.RELEASE</version>
<artifactId>spring-boot-starter-parent</artifactId>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>GHDB</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.cigem</groupId>
<artifactId>data-sync-lib</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.2.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-core</artifactId>
<version>0.0.1-RC18</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>cigem-snapshots</id>
<name>Snapshots Repository</name>
<url>http://116.211.238.43:8081/repository/maven-snapshots/</url>
</repository>
<repository>
<id>cigem-release</id>
<name>Release Repository</name>
<url>http://116.211.238.43:8081/repository/maven-releases/</url>
</repository>
</repositories>
</project>
package com.brilliance;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GhdbApplication {
public static void main(String[] args) {
SpringApplication.run(GhdbApplication.class, args);
}
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ComBo {
public String str;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
/**
* 传感器信息
*/
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class DeviceInfo {
/**
* 设备类型
*/
public String DEVICETYPENAME;
/**
* 设备编码
*/
public String DEVICECODE;
/**
* 设备型号
*/
public String GUID;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
/**
* 传感器信息
*/
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class Receipt {
/**
* 数字凭证编号
*/
public String receiptNum;
/**
* 凭证编号
*/
public String receiptNo;
/**
* 购买日期
*/
public String buyDate;
/**
* 起息日期
*/
public String startDate;
/**
* 印密
*/
public String seal;
/**
* 年度
*/
public String year;
/**
* 期次
*/
public String period;
/**
* 期限
*/
public String deadline;
/**
* 年利率
*/
public String rate;
/**
* 到期日期
*/
public String endDate;
/**
* 柜员号
*/
public String tellerNum;
/**
* 账号
*/
public String accountNum;
/**
* 户名
*/
public String accountName;
/**
* 金额
*/
public String money;
/**
* 兑取日期
*/
public String redemptionDate;
/**
* 计息天数
*/
public String interestAccDays;
/**
* 利息
*/
public String interest;
/**
* 经办
*/
public String operator;
/**
* 当前状态
*/
public String status;
/**
* 备案编号
*/
public String recordNum;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
/**
* 传感器信息
*/
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class ReceiptInfo {
/**
* no
*/
public String no;
/**
* 购买日期
*/
public String buyDate;
/**
* 起息日期
*/
public String startDate;
/**
* 年度
*/
public String year;
/**
* 期次
*/
public String count;
/**
* 期限
*/
public String timeLimit;
/**
* 年利率
*/
public String rate;
/**
* 到期日期
*/
public String endDate;
/**
* 账号
*/
public String accountNum;
/**
* 户名
*/
public String accountName;
/**
* 大写金额
*/
public String bigMoney;
/**
* 金额小写
*/
public String money;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqAvgOnlineRateBo {
/**
* 开始时间格式:2024-10-20
*/
public String startDate;
/**
* 结束时间格式:2024-11-06
*/
public String endDate;
/**
* 6位行政区划代码 不传表示获取全国的
*/
public String areaCode;
/**
* 厂商名称
*/
public String manufacturerName;
/**
* 监测项集合,多个逗号隔开
*/
public String typeArr;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqDBDataPointsBo {
/**
* 传感器编号
*/
public String sensorcode;
/**
* 开始时间
*/
public String start;
/**
* 结束时间
*/
public String end;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqDeviceAndSensorCountBo {
/**
* 开始时间 格式:2024-10-20 00:00:00
*/
public String startTime;
/**
* 结束时间 格式:2024-10-20 00:00:00
*/
public String endTime;
/**
* 6位省、市、县行政区划编码
*/
public String areaCode;
/**
* 传感器类型,多个逗号隔开 支持:雨量、地表位移、裂缝、倾角等
*/
public String deviceType;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqEarthReportBo {
/**
* 震中纬度,十进制
*/
public String lon;
/**
* 震中纬度,十进制
*/
public String lat;
/**
* 地震时间,格式:2023-12-02 01:36:33
*/
public String time;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqEarthReportTrendDataBo {
/**
* 震中纬度,十进制
*/
public String lon;
/**
* 震中纬度,十进制
*/
public String lat;
/**
* 地震时间,格式:2023-12-02 01:36:33
*/
public String time;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqImportReportBo {
/**
* 事件名称
*/
public String eventname;
/**
* 期次,从1开始
*/
public String period;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqMonitorDeviceListBo {
/**
* 监测点编号
*/
public String monitorpointcode;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqOnlineRateOfMonthBo {
/**
* 4位年份
*/
public String year;
/**
* 6位省、市、县行政区划编码
*/
public String areaCode;
/**
* 监测项集合,多个逗号隔开 不传默认查设备的在线率,支持:滑坡仪、设备、传感器、雨量、地表位移、裂缝、倾角、加速度、土壤含水率、泥水位
*/
public String typeArr;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqOnlineRateRankBo {
/**
* 分组类型:1按省,2按厂商
*/
public String type;
}
package com.brilliance.bo;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class ReqQryMonitorPointAllBo {
public String key;
public String year;
public String MONITORTYPE;
public String MODELEXIST;
public String DOMEXIST;
public String WARNLEVEL;
public String STARTTHREATSPOPULATION;
public String ENDTHREATSPOPULATION;
public String STARTDISASTERSCALE;
public String ENDDISASTERSCALE;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqWarnMsgDisposeRateBo {
/**
* 开始时间 格式:2024-10-20 00:00:00
*/
public String startTime;
/**
* 结束时间 格式:2024-10-20 00:00:00
*/
public String endTime;
/**
* 6位省、市、县行政区划编码
*/
public String areaCode;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqWarnMsgDisposeRateOfMonthBo {
/**
* 4位年份
*/
public String year;
/**
* 6位省、市、县行政区划编码
*/
public String areaCode;
}
package com.brilliance.bo;
import lombok.Data;
@Data
public class ReqWeatherReportBo {
/**
* 日期,格式:2024-10-05
*/
public String date;
/**
* 期数,支持1、2
*/
public String period;
/**
* 气象预报小时类型,支持24、72
*/
public String hour;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspAvgOnlineRateBo {
/**
* 行政区划名称
*/
public String name;
/**
* 设备在线率
*/
public Double rate;
/**
* 设备个数
*/
public Integer rtuCount;
/**
* 滑坡仪在线率
*/
public Double monitorRate;
/**
* 滑坡仪个数
*/
public Integer monitorCount;
/**
* 传感器在线率
*/
public Double sensorRate;
/**
* 传感器个数
*/
public Integer sensorCount;
/**
* 雨量在线率
*/
public Double ylRate;
/**
* 雨量个数
*/
public Integer ylCount;
}
package com.brilliance.bo;
import lombok.Data;
import java.util.List;
/**
* 公共返回
*/
@Data
public class RspComBo<T> {
public Integer resultcode;
public String message;
public Integer type;
public String otherinfo;
public List<T> resultdata;
}
package com.brilliance.bo;
import lombok.Data;
import java.util.List;
/**
* 公共返回
*/
@Data
public class RspComObjBo<T> {
public Integer resultcode;
public String message;
public Integer type;
public String otherinfo;
public T resultdata;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
import java.util.List;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspDBDataPointsBo {
public String SensorCode;
public String SensorType;
public String SensorTypeCode;
public String SensorTypeGroup;
public String SensorLongitude;
public String SensorLatitude;
public String MonitorPointName;
public String MonitorPointCode;
public String ProvinceName;
public String CityName;
public String CountryName;
public List<SensorDataInfo> DataList;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
import java.util.List;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspDeviceAndSensorCountBo {
/**
* 设备集合
*/
public List<DeviceInfo> DeviceList;
/**
* 传感器集合
*/
public List<SensorAInfo> SensorList;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspEarthReportTrendDataBo {
/**
* 传感器编码
*/
public String SENSORCODE;
/**
* 趋势日期
*/
public String time;
/**
* 趋势数据值,地表位移x、y、z用逗号分隔
*/
public String value;
}
package com.brilliance.bo;
import lombok.Data;
import java.util.List;
/**
* 公共返回
*/
@Data
public class RspFileComBo {
public Integer resultcode;
public String message;
public Integer type;
public String otherinfo;
public String resultdata;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
import java.util.List;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspMonitorDeviceListBo {
/**
* 设备编码
*/
public String DEVICECODE;
/**
* 设备SN
*/
public String SN;
/**
* 地理位置
*/
public String LOCATION;
/**
* 设备纬度
*/
public String LATITUDE;
/**
* 设备经度
*/
public String LONGITUDE;
/**
* 设备类型
*/
public String DEVICETYPENAME;
/**
* 厂商
*/
public String MANUFACTURER;
/**
* 监测点名称
*/
public String MONITORPOINTNAME;
/**
* 设备下传感器集合
*/
public List<SensorInfo> SensorList;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspMonitorPointAllBo{
/**
* 监测点编号
*/
public String MONITORPOINTCODE;
/**
* 监测点名称
*/
public String MONITORPOINTNAME;
/**
* 地理位置
*/
public String LOCATION;
/**
* 纬度
*/
public String LATITUDE;
/**
* 经度
*/
public String LONGITUDE;
/**
* 高程
*/
public String ELEVATION;
/**
* 监测建设部门
*/
public String BUILDUNIT;
/**
* 监测责任部门
*/
public String MONITORUNIT;
/**
* 监测运维部门
*/
public String YWUNIT;
/**
* 施工单位
*/
public String SGDW;
/**
* 设备厂商
*/
public String MANUFACTURER;
/**
* 灾害类型
*/
public String MONITORTYPE;
/**
* 有无三维模型:有、无
*/
public String MODELEXIST;
/**
* 有无正射影像:有、无
*/
public String DOMEXIST;
/**
* 预警等级:1-4分别对应红橙黄蓝,null表示无预警
*/
public String WARNLEVEL;
/**
* 威胁人数,单位人
*/
public String THREATSPOPULATION;
/**
* 规模等级:灾害为崩塌、滑坡、泥石流时表示体积,为地面塌陷、地面沉降时表示面积,为地裂缝时表示长度
*/
public String DISASTERSCALE;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspOnlineRateOfMonthBo {
/**
* 月份
*/
public String month;
/**
* 设备在线率
*/
public Double rate;
/**
* 设备个数
*/
public Integer rtuCount;
/**
* 滑坡仪在线率
*/
public Double monitorRate;
/**
* 滑坡仪个数
*/
public Integer monitorCount;
/**
* 传感器在线率
*/
public Double sensorRate;
/**
* 传感器个数
*/
public Integer sensorCount;
/**
* 雨量在线率
*/
public Double ylRate;
/**
* 雨量个数
*/
public Integer ylCount;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspOnlineRateRankBo {
/**
* 名称
*/
public String name;
/**
* 全称
*/
public String fullname;
/**
* 在线率
*/
public Double onlineRate;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
import java.util.List;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspWarnMsgDisposeRateBo {
/**
* 省份名称
*/
public String provincename;
/**
* 预警消息个数
*/
public String num;
/**
*处置消息个数
*/
public String closenum;
/**
*处置率
*/
public String closeper;
/**
*虚警消息个
*/
public String falsenum;
/**
*虚警率
*/
public String falseper;
/**
* 红色预警消息个数
*/
public String rednum;
/**
* 红色处置消息个数
*/
public String redcloseper;
/**
* 橙色预警消息个数
*/
public String orangenum;
/**
* 橙色处置消息个数
*/
public String orangecloseper;
/**
* 黄色预警消息个数
*/
public String yellownum;
/**
*黄色处置消息个数
*/
public String yellowcloseper;
/**
*蓝预警消息个数
*/
public String bluenum;
/**
*蓝色处置消息个数
*/
public String bluecloseper;
/**
*数据异常消息个数
*/
public String datanum;
/**
*数据异常消息占比
*/
public String datacloseper;
/**
*设备维护
*/
public String devicemainnum;
/**
*设备维护占比
*/
public String devicemaincloseper;
/**
*设备遭到破坏
*/
public String damagenum;
/**
*设备遭到破坏占比
*/
public String damagecloseper;
/**
*模型待优化
*/
public String modelnum;
/**
*模型待优化占比
*/
public String modelcloseper;
/**
*
*/
public String children;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class RspWarnMsgDisposeRateOfMonthBo {
/**
* 月份
*/
public String month;
/**
* 预警个数
*/
public Integer num;
/**
* 已处置个数
*/
public Integer closenum;
/**
* 处置率
*/
public Double closeper;
/**
*虚警个数
*/
public Integer falsenum;
/**
* 虚警率
*/
public Double falseper;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
/**
* 传感器信息
*/
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class SensorAInfo {
/**
* 设备类型
*/
public String DEVICETYPENAME;
/**
* 传感器编码
*/
public String SENSORCODE;
/**
* 设备型号
*/
public String GUID;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
/**
* 传感器信息
*/
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class SensorDataInfo {
public String value;
public String totalValue;
public String Time;
public String DataStorageTime;
public String no;
public String strVal;
public String tag;
}
package com.brilliance.bo;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.Data;
/**
* 传感器信息
*/
@Data
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY, getterVisibility=JsonAutoDetect.Visibility.NONE)
public class SensorInfo {
/**
* 传感器编码
*/
public String SENSORCODE;
/**
* 地理位置
*/
public String LOCATION;
/**
* 传感器纬度
*/
public String LATITUDE;
/**
* 传感器经度
*/
public String LONGITUDE;
/**
* 传感器类型
*/
public String DEVICETYPENAME;
/**
* 厂商
*/
public String MANUFACTURER;
}
package com.brilliance.controller;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.*;
import com.brilliance.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/cigem")
@RestController
public class ComController {
@Autowired
private QryMonitorPointAllService qryMonitorPointAllService;
@Autowired
private QryAvgOnlineRateService qryAvgOnlineRateService;
@Autowired
private QryOnlineRateRankService qryOnlineRateRankService;
@Autowired
private QryMonitorDeviceListService qryMonitorDeviceListService;
@Autowired
private QryDBDataPointsService qryDBDataPointsService;
@Autowired
private QryEarthReportService qryEarthReportService;
@Autowired
private QryImportReportService qryImportReportService;
@Autowired
private QryWeatherReportService qryWeatherReportService;
@Autowired
private QryEarthReportTrendDataService qryEarthReportTrendDataService;
@Autowired
private QryDeviceAndSensorCountService qryDeviceAndSensorCountService;
@Autowired
private QryWarnMsgDisposeRateService qryWarnMsgDisposeRateService;
@Autowired
private QryOnlineRateOfMonthService qryOnlineRateOfMonthService;
@Autowired
private QryWarnMsgDisposeRateOfMonthService qryWarnMsgDisposeRateOfMonthService;
/**
* 测试
* @param comBo
* @return
*/
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String queryStationChang(@RequestBody ComBo comBo){
return comBo.str;
}
/**
* 2.3.4.监测点列表
* @param
* @return
*/
@RequestMapping(value = "/getMonitorPointAll", method = RequestMethod.POST)
@ResponseBody
public RspComBo<RspMonitorPointAllBo> getMonitorPointAll(@RequestBody ReqQryMonitorPointAllBo req) throws Exception {
return qryMonitorPointAllService.qryMonitorPointAll(req);
}
/**
* 2.3.11.不同时间段不同地区设备在线率
* @param
* @return
*/
@RequestMapping(value = "/getAvgOnlineRate", method = RequestMethod.POST)
@ResponseBody
public JSONObject getAvgOnlineRate(@RequestBody ReqAvgOnlineRateBo req) throws Exception {
return qryAvgOnlineRateService.getAvgOnlineRate(req);
}
/**
* 2.3.12.各省/厂商设备在线率及排名
* @param
* @return
*/
@RequestMapping(value = "/getOnlineRateRank", method = RequestMethod.POST)
@ResponseBody
public RspComBo<RspOnlineRateRankBo> getOnlineRateRank(@RequestBody ReqOnlineRateRankBo req) throws Exception {
return qryOnlineRateRankService.getOnlineRateRank(req);
}
/**
* 2.3.6.监测点下设备及传感器列表
* @param
* @return
*/
@RequestMapping(value = "/getMonitorDeviceList", method = RequestMethod.POST)
@ResponseBody
public RspComBo<RspMonitorDeviceListBo> getMonitorDeviceList(@RequestBody ReqMonitorDeviceListBo req) throws Exception {
return qryMonitorDeviceListService.getMonitorDeviceList(req);
}
/**
* 2.3.7.监测数据获取
* @param
* @return
*/
@RequestMapping(value = "/getDBDataPoints", method = RequestMethod.POST)
@ResponseBody
public RspComBo<RspDBDataPointsBo> getDBDataPoints(@RequestBody ReqDBDataPointsBo req) throws Exception {
return qryDBDataPointsService.getDBDataPoints(req);
}
/**
* 2.3.9.地震速报数据获取
* @param
* @return
*/
@RequestMapping(value = "/getEarthReport", method = RequestMethod.POST)
@ResponseBody
public RspFileComBo getEarthReport(@RequestBody ReqEarthReportBo req) throws Exception {
return qryEarthReportService.getEarthReport(req);
}
/**
* 2.3.10.重大事件速报数据获取
* @param
* @return
*/
@RequestMapping(value = "/getImportReport", method = RequestMethod.POST)
@ResponseBody
public RspFileComBo getImportReport(@RequestBody ReqImportReportBo req) throws Exception {
return qryImportReportService.getImportReport(req);
}
/**
* 2.3.13.气象速报数据获取
* @param
* @return
*/
@RequestMapping(value = "/getWeatherReport", method = RequestMethod.POST)
@ResponseBody
public RspFileComBo getWeatherReport(@RequestBody ReqWeatherReportBo req) throws Exception {
return qryWeatherReportService.getWeatherReport(req);
}
/**
* 2.3.14.地震二期速报未来24小时趋势数据获取
* @param
* @return
*/
@RequestMapping(value = "/getEarthReportTrendData", method = RequestMethod.POST)
@ResponseBody
public RspComBo<RspEarthReportTrendDataBo> getEarthReportTrendData(@RequestBody ReqEarthReportTrendDataBo req) throws Exception {
return qryEarthReportTrendDataService.getEarthReportTrendData(req);
}
/**
* 2.3.15.不同时间段不同地区设备和传感器类型和个数
* @param
* @return
*/
@RequestMapping(value = "/getDeviceAndSensorCount", method = RequestMethod.POST)
@ResponseBody
public JSONObject getDeviceAndSensorCount(@RequestBody ReqDeviceAndSensorCountBo req) throws Exception {
return qryDeviceAndSensorCountService.getDeviceAndSensorCount(req);
}
/**
* 2.3.16.不同时间段不同地区预警处置和虚警情况
* @param
* @return
*/
@RequestMapping(value = "/getWarnMsgDisposeRate", method = RequestMethod.POST)
@ResponseBody
public RspComObjBo<RspWarnMsgDisposeRateBo> getWarnMsgDisposeRate(@RequestBody ReqWarnMsgDisposeRateBo req) throws Exception {
return qryWarnMsgDisposeRateService.getWarnMsgDisposeRate(req);
}
/**
* 2.3.17.按年统计每月在线率
* @param
* @return
*/
@RequestMapping(value = "/getOnlineRateOfMonth", method = RequestMethod.POST)
@ResponseBody
public JSONObject getOnlineRateOfMonth(@RequestBody ReqOnlineRateOfMonthBo req) throws Exception {
return qryOnlineRateOfMonthService.getOnlineRateOfMonth(req);
}
/**
* 2.3.18.按年统计每月处置率、虚警率
* @param
* @return
*/
@RequestMapping(value = "/getWarnMsgDisposeRateOfMonth", method = RequestMethod.POST)
@ResponseBody
public RspComBo<RspWarnMsgDisposeRateOfMonthBo> getWarnMsgDisposeRateOfMonth(@RequestBody ReqWarnMsgDisposeRateOfMonthBo req) throws Exception {
return qryWarnMsgDisposeRateOfMonthService.getWarnMsgDisposeRateOfMonth(req);
}
}
package com.brilliance.service;
import com.brilliance.bo.RspComBo;
/**
* 公共服务
*/
public interface ComService {
/**
* 测试
* @return
*/
RspComBo qryMessge();
}
package com.brilliance.service;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.*;
/**
* 2.3.11.不同时间段不同地区设备在线率
*/
public interface QryAvgOnlineRateService {
/**
* 2.3.11.不同时间段不同地区设备在线率
* @return
*/
JSONObject getAvgOnlineRate(ReqAvgOnlineRateBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.*;
/**
* 2.3.7.监测数据获取
*/
public interface QryDBDataPointsService {
/**
* 2.3.7.监测数据获取
* @return
*/
RspComBo<RspDBDataPointsBo> getDBDataPoints(ReqDBDataPointsBo req) throws Exception;
}
package com.brilliance.service;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.*;
/**
* 2.3.15.不同时间段不同地区设备和传感器类型和个数
*/
public interface QryDeviceAndSensorCountService {
/**
* 2.3.15.不同时间段不同地区设备和传感器类型和个数
* @return
*/
JSONObject getDeviceAndSensorCount(ReqDeviceAndSensorCountBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.*;
/**
* 2.3.9.地震速报数据获取
*/
public interface QryEarthReportService {
/**
* 2.3.9.地震速报数据获取
* @return
*/
RspFileComBo getEarthReport(ReqEarthReportBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.*;
/**
* 2.3.14.地震二期速报未来24小时趋势数据获取
*/
public interface QryEarthReportTrendDataService {
/**
* 2.3.14.地震二期速报未来24小时趋势数据获取
* @return
*/
RspComBo<RspEarthReportTrendDataBo> getEarthReportTrendData(ReqEarthReportTrendDataBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.ReqEarthReportBo;
import com.brilliance.bo.ReqImportReportBo;
import com.brilliance.bo.RspFileComBo;
/**
* 2.3.10.重大事件速报数据获取
*/
public interface QryImportReportService {
/**
* 2.3.10.重大事件速报数据获取
* @return
*/
RspFileComBo getImportReport(ReqImportReportBo req) throws Exception;
}
package com.brilliance.service;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.ReqAvgOnlineRateBo;
import com.brilliance.bo.RspComBo;
import com.brilliance.bo.RspMonitorPointAllBo;
/**
* 2.3.19.关键字查询厂商集合
*/
public interface QryManuInfosBySimpleNameService {
/**
* 2.3.19.关键字查询厂商集合
* @return
*/
RspComBo<String> getManuInfosBySimpleName(String req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.*;
/**
* 2.3.6.监测点下设备及传感器列表
*/
public interface QryMonitorDeviceListService {
/**
* 2.3.6.监测点下设备及传感器列表
* @return
*/
RspComBo<RspMonitorDeviceListBo> getMonitorDeviceList(ReqMonitorDeviceListBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.ReqQryMonitorPointAllBo;
import com.brilliance.bo.RspComBo;
import com.brilliance.bo.RspMonitorPointAllBo;
/**
* 2.3.4.监测点列表
*/
public interface QryMonitorPointAllService {
/**
* 2.3.4.监测点列表
* @return
*/
RspComBo<RspMonitorPointAllBo> qryMonitorPointAll(ReqQryMonitorPointAllBo req) throws Exception;
}
package com.brilliance.service;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.*;
/**
* 2.3.17.按年统计每月在线率
*/
public interface QryOnlineRateOfMonthService {
/**
* 2.3.17.按年统计每月在线率
* @return
*/
JSONObject getOnlineRateOfMonth(ReqOnlineRateOfMonthBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.*;
/**
* 2.3.12.各省/厂商设备在线率及排名
*/
public interface QryOnlineRateRankService {
/**
* 2.3.12.各省/厂商设备在线率及排名
* @return
*/
RspComBo<RspOnlineRateRankBo> getOnlineRateRank(ReqOnlineRateRankBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.*;
/**
* 2.3.18.按年统计每月处置率、虚警率
*/
public interface QryWarnMsgDisposeRateOfMonthService {
/**
* 2.3.18.按年统计每月处置率、虚警率
* @return
*/
RspComBo<RspWarnMsgDisposeRateOfMonthBo> getWarnMsgDisposeRateOfMonth(ReqWarnMsgDisposeRateOfMonthBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.*;
/**
* 2.3.16.不同时间段不同地区预警处置和虚警情况
*/
public interface QryWarnMsgDisposeRateService {
/**
* 2.3.16.不同时间段不同地区预警处置和虚警情况
* @return
*/
RspComObjBo<RspWarnMsgDisposeRateBo> getWarnMsgDisposeRate(ReqWarnMsgDisposeRateBo req) throws Exception;
}
package com.brilliance.service;
import com.brilliance.bo.ReqEarthReportBo;
import com.brilliance.bo.ReqWeatherReportBo;
import com.brilliance.bo.RspFileComBo;
/**
* 2.3.13.气象速报数据获取
*/
public interface QryWeatherReportService {
/**
* 2.3.13.气象速报数据获取
* @return
*/
RspFileComBo getWeatherReport(ReqWeatherReportBo req) throws Exception;
}
package com.brilliance.service.impl;
import com.brilliance.bo.RspComBo;
import com.brilliance.service.ComService;
import org.springframework.stereotype.Service;
@Service
public class ComServiceImpl implements ComService {
@Override
public RspComBo qryMessge() {
return null;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryAvgOnlineRateService;
import com.brilliance.service.QryManuInfosBySimpleNameService;
import com.brilliance.utils.InitUtils;
import com.brilliance.utils.SensorConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryAvgOnlineRateServiceImpl implements QryAvgOnlineRateService {
public final EspEncryption _encryption;
public final IShareService _shareService;
@Autowired
private QryManuInfosBySimpleNameService qryManuInfosBySimpleNameService;
public QryAvgOnlineRateServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public JSONObject getAvgOnlineRate(ReqAvgOnlineRateBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryAvgOnlineRateService入参:"+req.toString());
//根据关键字查询厂商集合
if(!StringUtils.isEmpty(req.manufacturerName)){
JSONObject rsp = new JSONObject();
RspComBo<String> temp = qryManuInfosBySimpleNameService.getManuInfosBySimpleName(req.manufacturerName);
if(null != temp && 1==temp.getType()){
if(null != temp.getResultdata() && temp.getResultdata().size() > 0) {
req.manufacturerName = temp.getResultdata().get(0);
}else {
rsp.put("type",temp.getType());
rsp.put("resultcode",temp.getResultcode());
rsp.put("message","根据厂商简称:"+req.manufacturerName+" ,未能找到对应的厂商信息,请确认简称后重试");
rsp.put("otherinfo",temp.getOtherinfo());
rsp.put("resultdata",temp.getResultdata());
return rsp;
}
}else {
rsp.put("type",temp.getType());
rsp.put("resultcode",temp.getResultcode());
rsp.put("message","根据厂商简称:"+req.manufacturerName+" ,查询厂商信息失败,请稍后重试");
rsp.put("otherinfo",temp.getOtherinfo());
rsp.put("resultdata",temp.getResultdata());
return rsp;
}
}
Map<String, String> p = new HashMap<>();
p.put("startDate", req.startDate);
p.put("endDate", req.endDate);
p.put("areaCode", req.areaCode);
p.put("manufacturerName", req.manufacturerName);
p.put("typeArr", req.typeArr);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getAvgOnlineRate(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
JSONObject json = JSONObject.parseObject(jsonStr);
JSONArray jsonArray = json.getJSONArray("resultdata");
if(null != jsonArray && jsonArray.size() > 0 ) {
String type = SensorConstant.getName(req.typeArr.split("[,,;;、.]")[0]);
log.info("type:"+type);
if(jsonArray.getJSONObject(0).containsKey(type)){
jsonArray.sort((o2, o1) -> (Double.compare(((JSONObject) o1).getDouble(type), ((JSONObject) o2).getDouble(type))));
}else {
jsonArray.sort((o2, o1) -> (Double.compare(((JSONObject) o1).getDouble("rate"), ((JSONObject) o2).getDouble("rate"))));
}
}
return json;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.IBusinessService;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.impl.BusinessService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryDBDataPointsService;
import com.brilliance.service.QryMonitorDeviceListService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryDBDataPointsServiceImpl implements QryDBDataPointsService {
public final IBusinessService _businessService;
public final EspEncryption _encryption;
public QryDBDataPointsServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
IBusinessService iBusinessService = new BusinessService(iCommunicationService);
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
this._businessService = iBusinessService;
this._encryption = espEncryption;
}
@Override
public RspComBo<RspDBDataPointsBo> getDBDataPoints(ReqDBDataPointsBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:",cod);
Map<String, String> p = new HashMap<>();
p.put("sensorcode", req.sensorcode);
p.put("start", req.start);
p.put("end", req.end);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _businessService.getDBDataPoints(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComBo<RspDBDataPointsBo> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComBo<RspDBDataPointsBo>>() {});
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryAvgOnlineRateService;
import com.brilliance.service.QryDeviceAndSensorCountService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryDeviceAndSensorCountServiceImpl implements QryDeviceAndSensorCountService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryDeviceAndSensorCountServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public JSONObject getDeviceAndSensorCount(ReqDeviceAndSensorCountBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryDeviceAndSensorCountService入参:"+req.toString());
Map<String, String> p = new HashMap<>();
p.put("startTime", req.startTime);
p.put("endTime", req.endTime);
p.put("areaCode", req.areaCode);
p.put("deviceType", req.deviceType);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.body(JSONObject.toJSONString(p))
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getDeviceAndSensorCount(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
return JSONObject.parseObject(jsonStr);
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.*;
import com.brilliance.service.QryEarthReportService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryEarthReportServiceImpl implements QryEarthReportService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryEarthReportServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspFileComBo getEarthReport(ReqEarthReportBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:",cod);
Map<String, String> p = new HashMap<>();
p.put("lon", req.lon);
p.put("lat", req.lat);
p.put("time", req.time);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.body(JSONObject.toJSONString(p))
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getEarthReport(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspFileComBo rsp = JSONObject.parseObject(jsonStr, RspFileComBo.class);
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.IBusinessService;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.BusinessService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryEarthReportTrendDataService;
import com.brilliance.service.QryMonitorDeviceListService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryEarthReportTrendDataServiceImpl implements QryEarthReportTrendDataService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryEarthReportTrendDataServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspComBo<RspEarthReportTrendDataBo> getEarthReportTrendData(ReqEarthReportTrendDataBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:",cod);
Map<String, String> p = new HashMap<>();
p.put("lon", req.lon);
p.put("lat", req.lat);
p.put("time", req.time);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.body(JSONObject.toJSONString(p))
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getEarthReportTrendData(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComBo<RspEarthReportTrendDataBo> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComBo<RspEarthReportTrendDataBo>>() {});
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.ReqEarthReportBo;
import com.brilliance.bo.ReqImportReportBo;
import com.brilliance.bo.RspFileComBo;
import com.brilliance.service.QryEarthReportService;
import com.brilliance.service.QryImportReportService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryImportReportServiceImpl implements QryImportReportService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryImportReportServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspFileComBo getImportReport(ReqImportReportBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:",cod);
Map<String, String> p = new HashMap<>();
p.put("eventname", req.eventname);
p.put("period", req.period);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.body(JSONObject.toJSONString(p))
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getImportReport(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspFileComBo rsp = JSONObject.parseObject(jsonStr, RspFileComBo.class);
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.ReqAvgOnlineRateBo;
import com.brilliance.bo.RspComBo;
import com.brilliance.service.QryAvgOnlineRateService;
import com.brilliance.service.QryManuInfosBySimpleNameService;
import com.brilliance.utils.InitUtils;
import com.brilliance.utils.SensorConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryManuInfosBySimpleNameServiceImpl implements QryManuInfosBySimpleNameService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryManuInfosBySimpleNameServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspComBo<String> getManuInfosBySimpleName(String req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryAvgOnlineRateService入参:"+req);
Map<String, String> p = new HashMap<>();
p.put("simplename", req);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getManuInfosBySimpleName(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComBo<String> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComBo<String>>() {});
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.IBusinessService;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.impl.BusinessService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryMonitorDeviceListService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryMonitorDeviceListServiceImpl implements QryMonitorDeviceListService {
public final IBusinessService _businessService;
public final EspEncryption _encryption;
public QryMonitorDeviceListServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
IBusinessService iBusinessService = new BusinessService(iCommunicationService);
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
this._businessService = iBusinessService;
this._encryption = espEncryption;
}
@Override
public RspComBo<RspMonitorDeviceListBo> getMonitorDeviceList(ReqMonitorDeviceListBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:",cod);
Map<String, String> p = new HashMap<>();
p.put("monitorpointcode", req.monitorpointcode);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _businessService.getMonitorDeviceList(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComBo<RspMonitorDeviceListBo> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComBo<RspMonitorDeviceListBo>>() {});
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.IBusinessService;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.impl.BusinessService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.ReqQryMonitorPointAllBo;
import com.brilliance.bo.RspComBo;
import com.brilliance.bo.RspMonitorPointAllBo;
import com.brilliance.service.QryMonitorPointAllService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@Slf4j
@Service
public class QryMonitorPointAllServiceImpl implements QryMonitorPointAllService {
public final IBusinessService _businessService;
public final EspEncryption _encryption;
public QryMonitorPointAllServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
IBusinessService iBusinessService = new BusinessService(iCommunicationService);
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
this._businessService = iBusinessService;
this._encryption = espEncryption;
}
@Override
public RspComBo<RspMonitorPointAllBo> qryMonitorPointAll(ReqQryMonitorPointAllBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryMonitorPointAllService入参:"+req.toString());
Map<String, String> p = new HashMap<>();
p.put("key", req.key);
p.put("year", req.year);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _businessService.getMonitorPointAll(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComBo<RspMonitorPointAllBo> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComBo<RspMonitorPointAllBo>>() {});
if(null != rsp.getResultdata() && rsp.getResultdata().size() > 0){
for (Iterator<RspMonitorPointAllBo> it = rsp.getResultdata().iterator(); it.hasNext();) {
RspMonitorPointAllBo value = it.next();
//灾害类型
if (!StringUtils.isEmpty(req.MONITORTYPE) && (StringUtils.isEmpty(value.getMONITORTYPE()) || !value.getMONITORTYPE().contains(req.MONITORTYPE))) {
it.remove();
continue;
}
//有无三维模型:有、无
if (!StringUtils.isEmpty(req.MODELEXIST) && (StringUtils.isEmpty(value.getMODELEXIST()) || !value.getMODELEXIST().contains(req.MODELEXIST))) {
it.remove();
continue;
}
//有无正射影像:有、无
if (!StringUtils.isEmpty(req.DOMEXIST) && (StringUtils.isEmpty(value.getDOMEXIST()) || !value.getDOMEXIST().contains(req.DOMEXIST))) {
it.remove();
continue;
}
//预警等级:1-4分别对应红橙黄蓝,5表示无预警
if (!StringUtils.isEmpty(req.WARNLEVEL) && "5".equals(req.WARNLEVEL) && !StringUtils.isEmpty(value.getWARNLEVEL()) ) {
it.remove();
continue;
}
if (!StringUtils.isEmpty(req.WARNLEVEL) && !"5".equals(req.WARNLEVEL) && (StringUtils.isEmpty(value.getWARNLEVEL()) || !value.getWARNLEVEL().contains(req.WARNLEVEL))) {
it.remove();
continue;
}
//威胁人数,单位人
if ((!StringUtils.isEmpty(req.STARTTHREATSPOPULATION) && (StringUtils.isEmpty(value.getTHREATSPOPULATION()) || Integer.parseInt(value.getTHREATSPOPULATION()) < Integer.parseInt(req.STARTTHREATSPOPULATION)))
|| (!StringUtils.isEmpty(req.ENDTHREATSPOPULATION) && (StringUtils.isEmpty(value.getTHREATSPOPULATION()) || Integer.parseInt(value.getTHREATSPOPULATION()) > Integer.parseInt(req.ENDTHREATSPOPULATION)))) {
it.remove();
continue;
}
//威胁人数,单位人
if (!StringUtils.isEmpty(req.STARTDISASTERSCALE) && (StringUtils.isEmpty(value.getDISASTERSCALE()) || Integer.parseInt(value.getDISASTERSCALE()) < Integer.parseInt(req.STARTDISASTERSCALE))
|| !StringUtils.isEmpty(req.ENDDISASTERSCALE) && (StringUtils.isEmpty(value.getDISASTERSCALE()) || Integer.parseInt(value.getDISASTERSCALE()) > Integer.parseInt(req.ENDDISASTERSCALE))) {
it.remove();
continue;
}
}
}
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryDeviceAndSensorCountService;
import com.brilliance.service.QryOnlineRateOfMonthService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryOnlineRateOfMonthServiceImpl implements QryOnlineRateOfMonthService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryOnlineRateOfMonthServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public JSONObject getOnlineRateOfMonth(ReqOnlineRateOfMonthBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryOnlineRateOfMonthService入参:"+req.toString());
Map<String, String> p = new HashMap<>();
p.put("year", req.year);
p.put("areaCode", req.areaCode);
p.put("typeArr", req.typeArr);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getOnlineRateOfMonth(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
return JSONObject.parseObject(jsonStr);
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryAvgOnlineRateService;
import com.brilliance.service.QryOnlineRateRankService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryOnlineRateRankServiceImpl implements QryOnlineRateRankService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryOnlineRateRankServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspComBo<RspOnlineRateRankBo> getOnlineRateRank(ReqOnlineRateRankBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryOnlineRateRankService入参:"+req.toString());
Map<String, String> p = new HashMap<>();
p.put("type", req.type);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getOnlineRateRank(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComBo<RspOnlineRateRankBo> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComBo<RspOnlineRateRankBo>>() {});
if(null != rsp.getResultdata() && rsp.getResultdata().size() > 0) {
Collections.sort(rsp.getResultdata(), new Comparator<RspOnlineRateRankBo>() {
@Override
public int compare(RspOnlineRateRankBo o1, RspOnlineRateRankBo o2) {
return Double.compare(o2.getOnlineRate(), o1.getOnlineRate());
}
});
}
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryOnlineRateOfMonthService;
import com.brilliance.service.QryWarnMsgDisposeRateOfMonthService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryWarnMsgDisposeRateOfMonthServiceImpl implements QryWarnMsgDisposeRateOfMonthService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryWarnMsgDisposeRateOfMonthServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspComBo<RspWarnMsgDisposeRateOfMonthBo> getWarnMsgDisposeRateOfMonth(ReqWarnMsgDisposeRateOfMonthBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryWarnMsgDisposeRateOfMonthService入参:"+req.toString());
Map<String, String> p = new HashMap<>();
p.put("year", req.year);
p.put("areaCode", req.areaCode);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.params(p)
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getWarnMsgDisposeRateOfMonth(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComBo<RspWarnMsgDisposeRateOfMonthBo> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComBo<RspWarnMsgDisposeRateOfMonthBo>>() {});
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.*;
import com.brilliance.service.QryDeviceAndSensorCountService;
import com.brilliance.service.QryWarnMsgDisposeRateService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryWarnMsgDisposeRateServiceImpl implements QryWarnMsgDisposeRateService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryWarnMsgDisposeRateServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspComObjBo<RspWarnMsgDisposeRateBo> getWarnMsgDisposeRate(ReqWarnMsgDisposeRateBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:"+cod);
log.info("QryWarnMsgDisposeRateService入参:"+req.toString());
Map<String, String> p = new HashMap<>();
p.put("startTime", req.startTime);
p.put("endTime", req.endTime);
p.put("areaCode", req.areaCode);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.body(JSONObject.toJSONString(p))
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getWarnMsgDisposeRate(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspComObjBo<RspWarnMsgDisposeRateBo> rsp = JSONObject.parseObject(jsonStr, new TypeReference<RspComObjBo<RspWarnMsgDisposeRateBo>>() {});
return rsp;
}
}
package com.brilliance.service.impl;
import cn.cigem.data.sync.model.PayloadContent;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.IShareService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import cn.cigem.data.sync.service.impl.ShareService;
import cn.cigem.data.sync.utility.PayloadWrapperUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.ReqEarthReportBo;
import com.brilliance.bo.ReqWeatherReportBo;
import com.brilliance.bo.RspFileComBo;
import com.brilliance.service.QryEarthReportService;
import com.brilliance.service.QryWeatherReportService;
import com.brilliance.utils.InitUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class QryWeatherReportServiceImpl implements QryWeatherReportService {
public final EspEncryption _encryption;
public final IShareService _shareService;
public QryWeatherReportServiceImpl() {
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
IShareService iShareService = new ShareService(iCommunicationService);
this._encryption = espEncryption;
this._shareService = iShareService;
}
@Override
public RspFileComBo getWeatherReport(ReqWeatherReportBo req) throws Exception {
int cod = _encryption.initiate();
log.info("建立与加解密网关的通讯结果:",cod);
Map<String, String> p = new HashMap<>();
p.put("date", req.date);
p.put("period", req.period);
p.put("hour", req.hour);
byte[] jsonBytes = JSON.toJSONBytes(PayloadContent.builder()
.body(JSONObject.toJSONString(p))
.build());
byte[] encrypt = _encryption.encrypt(jsonBytes);
String payload = PayloadWrapperUtil.byte2hex(encrypt);
String result = _shareService.getWeatherReport(payload);
String jsonStr = new String(_encryption.decrypt(PayloadWrapperUtil.hex2byte(result)));
jsonStr = jsonStr.substring(1,jsonStr.length()-1).replace("\\","");
RspFileComBo rsp = JSONObject.parseObject(jsonStr, RspFileComBo.class);
return rsp;
}
}
package com.brilliance.utils;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class ConfigReader {
public static void main(String[] args) {
Properties prop = new Properties();
try {
// 加载config.properties文件
prop.load(new FileInputStream("/config.properties"));
// 获取属性值
String secretID = prop.getProperty("secretID");
String secretKey = prop.getProperty("secretKey");
System.out.println("Access Key: " + secretID);
System.out.println("Secret Key: " + secretKey);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
package com.brilliance.utils;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class DataUtils {
/**
* 2.3.2.数据加密
* @param data
* @return
*/
public static byte[] encrypt(byte[] data){
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
log.info("加密前数据 ====="+data);
log.info("加密后数据 ====="+espEncryption.encrypt(data));
return espEncryption.encrypt(data);
}
/**
* 2.3.3.数据解密
* @param data
* @return
*/
public byte[] decrypt(byte[] data){
ICommunicationService iCommunicationService = InitUtils.init();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
log.info("解密前数据 ====="+new String(data));
log.info("解密后数据 ====="+espEncryption.decrypt(data));
return espEncryption.decrypt(data);
}
}
package com.brilliance.utils;
import cn.cigem.data.sync.config.CommunicationConfig;
import cn.cigem.data.sync.service.IBusinessService;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.IEncryption;
import cn.cigem.data.sync.service.ISecretService;
import cn.cigem.data.sync.service.impl.BusinessService;
import cn.cigem.data.sync.service.impl.CommunicationService;
import cn.cigem.data.sync.service.impl.EspEncryption;
import cn.cigem.data.sync.service.impl.SecretService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
/**
* 建立与加解密网关的通讯
*/
public class Demo {
/**
* 建立与加解密网关的通讯
* @return
* @throws Exception
*/
public static int initiate() throws Exception {
ICommunicationService iCommunicationService = before();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
int cod = espEncryption.initiate();
System.out.println("cod ====="+cod);
return cod;
}
/**
* 2.3.2.数据加密
* @param data
* @return
*/
public static byte[] encrypt(byte[] data){
ICommunicationService iCommunicationService = before();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
System.out.println("cod ====="+espEncryption.encrypt(data));
return espEncryption.encrypt(data);
}
/**
* 2.3.3.数据解密
* @param data
* @return
*/
public byte[] decrypt(byte[] data){
ICommunicationService iCommunicationService = before();
ISecretService iSecretService = new SecretService(iCommunicationService);
EspEncryption espEncryption = new EspEncryption(iSecretService);
return espEncryption.decrypt(data);
}
/**
* 2.3.4.监测点列表
* @return
*/
public String getMonitorPointAll(String payload){
ICommunicationService iCommunicationService = before();
IBusinessService iBusinessService = new BusinessService(iCommunicationService);
return iBusinessService.getMonitorPointAll(payload);
}
public static ICommunicationService before(){
RestTemplate restTemplate = new RestTemplate();
CommunicationConfig communicationConfig = new CommunicationConfig();
communicationConfig.setAccessKey("621b965d7ee24dbc");
communicationConfig.setSecretKey("fb7e13e69b6648d59dcaaf4800d1c349");
ICommunicationService iCommunicationService = new CommunicationService(restTemplate,communicationConfig);
return iCommunicationService;
}
public static void main(String[] args) throws Exception {
initiate();
byte[] bytes = "test".getBytes(StandardCharsets.UTF_8);
encrypt(bytes);
}
}
package com.brilliance.utils;
import cn.cigem.data.sync.config.CommunicationConfig;
import cn.cigem.data.sync.service.ICommunicationService;
import cn.cigem.data.sync.service.impl.CommunicationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
@Slf4j
public class InitUtils {
/**
* 建立连接
* @return
*/
public static ICommunicationService init(){
// 创建Properties对象
Properties properties = new Properties();
try {
// 加载config.properties文件
InputStream inputStream = InitUtils.class.getClassLoader().getResourceAsStream("config.properties");
properties.load(inputStream);
inputStream.close();
} catch (IOException ex) {
ex.printStackTrace();
}
// 获取属性值
String accessKey = properties.getProperty("accessKey");
String secretKey = properties.getProperty("secretKey");
log.info("accessKey++++++++:"+accessKey);
log.info("secretKey+++++++:"+secretKey);
RestTemplate restTemplate = new RestTemplate();
CommunicationConfig communicationConfig = new CommunicationConfig();
communicationConfig.setAccessKey(accessKey);
communicationConfig.setSecretKey(secretKey);
ICommunicationService iCommunicationService = new CommunicationService(restTemplate,communicationConfig);
return iCommunicationService;
}
}
package com.brilliance.utils;
import com.brilliance.bo.Receipt;
import com.itextpdf.kernel.pdf.PdfDocument;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDTextField;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class ReceiptDemo2Utils {
public static void main(String[] args) throws IOException {
// 创建一个Date对象,表示当前日期和时间
Date now = new Date();
// 创建一个SimpleDateFormat对象,并定义日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
// 使用format方法格式化日期
String formattedDate = dateFormat.format(now);
String str = new Date().getTime()+"";
String id = formattedDate + str.substring(str.length()-8);
String templatePath = ".\\src\\main\\resources\\doc\\receipt.pdf";
String outputPath = "C:\\Users\\zhaojg\\.m2\\repository\\cn\\receipt"+id+".pdf";
//String fontPath = "C:\\Windows\\FONTS\\simkai.ttf";
/*File file = new File("123.pdf");
System.out.println("File Path:"+file.getAbsolutePath());
System.out.println("File Path:"+file.getCanonicalPath());*/
try ( PDDocument document = Loader.loadPDF(new File(templatePath))) {
// 移除所有安全限制
document.setAllSecurityToBeRemoved(true);
// 获取表单
PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm();
if (acroForm == null) {
System.out.println("No form found in the document.");
return;
}
Receipt receipt = new Receipt();
receipt.setReceiptNum(id);
receipt.setReceiptNo(id);
receipt.setBuyDate("2022/3/12");
receipt.setStartDate("2022/3/12");
receipt.setSeal("印密");
receipt.setYear("2022");
receipt.setPeriod("01");
receipt.setDeadline("三年");
receipt.setRate("3.45%");
receipt.setEndDate("2025/3/12");
receipt.setTellerNum("9527");
receipt.setAccountNum("130503196701010001");
receipt.setAccountName("张三");
receipt.setMoney("人民币一亿五千壹百九十二万一千一百一十一元一毛五分整 RMB1,000,000.00");
receipt.setRedemptionDate("2023/3/12");
receipt.setInterestAccDays("365");
receipt.setInterest("34500");
receipt.setOperator("经办员");
receipt.setStatus("有效");
receipt.setRecordNum("NO."+id);
// 准备数据
Map<String, String> data = new HashMap<>();
data.put("receiptNum", receipt.receiptNum);
data.put("receiptNo", receipt.receiptNo);
data.put("buyDate", receipt.buyDate);
data.put("startDate", receipt.startDate);
data.put("seal", receipt.seal);
data.put("year", receipt.year);
data.put("period", receipt.period);
data.put("deadline", receipt.deadline);
data.put("rate", receipt.rate);
data.put("endDate", receipt.endDate);
data.put("tellerNum", receipt.tellerNum);
data.put("accountNum", receipt.accountNum);
data.put("accountName", receipt.accountName);
data.put("money", receipt.money);
data.put("redemptionDate", receipt.redemptionDate);
data.put("interestAccDays", receipt.interestAccDays);
data.put("interest", receipt.interest);
data.put("operator", receipt.operator);
data.put("status", receipt.status);
data.put("recordNum", receipt.recordNum);
// 设置 NeedAppearances 标志
acroForm.setNeedAppearances(true);
// 加载并嵌入字体
//PDType0Font font = PDType0Font.load(document, new File(fontPath));
// 填充表单字段
for (Map.Entry<String, String> entry : data.entrySet()) {
PDTextField field = (PDTextField) acroForm.getField(entry.getKey());
if (field != null) {
field.setValue(entry.getValue());
// 确保文本域不是只读外观
field.setReadOnly(true);
// 设置默认外观字符串,包含字体名称和大小
//String defaultAppearance = "/" + font.getFontDescriptor().getFontName() + " 12 Tf 0 g";
//field.setDefaultAppearance(defaultAppearance);
}
}
// 保存更新后的文档
document.save(new File(outputPath));
document.close();
}
}
}
\ No newline at end of file
package com.brilliance.utils;
import com.brilliance.bo.Receipt;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class ReceiptDemoUtils {
public static void main(String[] args) throws Exception {
// 创建一个Date对象,表示当前日期和时间
Date now = new Date();
// 创建一个SimpleDateFormat对象,并定义日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
// 使用format方法格式化日期
String formattedDate = dateFormat.format(now);
String str = new Date().getTime()+"";
String id = formattedDate + str.substring(str.length()-8);
String templatePath = ".\\doc\\receipt.pdf";
String outputPath = "C:\\Users\\zhaojg\\.m2\\repository\\cn\\receipt"+id+".pdf";
// 创建PdfDocument对象,指定输入和输出文件路径
PdfDocument pdfDoc = new PdfDocument(new PdfReader(templatePath), new PdfWriter(outputPath));
// 获取表单
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
Receipt receipt = new Receipt();
receipt.setReceiptNum(id);
receipt.setReceiptNo(id);
receipt.setBuyDate("2022/3/12");
receipt.setStartDate("2022/3/12");
receipt.setSeal("印密");
receipt.setYear("2022");
receipt.setPeriod("01");
receipt.setDeadline("三年");
receipt.setRate("3.45%");
receipt.setEndDate("2025/3/12");
receipt.setTellerNum("9527");
receipt.setAccountNum("130503196701010001");
receipt.setAccountName("张三");
receipt.setMoney("人民币壹百万元整 RMB1,000,000.00");
receipt.setRedemptionDate("2023/3/12");
receipt.setInterestAccDays("365");
receipt.setInterest("34500");
receipt.setOperator("经办员");
receipt.setStatus("有效");
receipt.setRecordNum("NO."+id);
Map<String, PdfFormField> fields = form.getFormFields();
// 准备数据
Map<String, String> data = new HashMap<>();
data.put("receiptNum", receipt.receiptNum);
data.put("receiptNo", receipt.receiptNo);
data.put("buyDate", receipt.buyDate);
data.put("startDate", receipt.startDate);
data.put("seal", receipt.seal);
data.put("year", receipt.year);
data.put("period", receipt.period);
data.put("deadline", receipt.deadline);
data.put("rate", receipt.rate);
data.put("endDate", receipt.endDate);
data.put("tellerNum", receipt.tellerNum);
data.put("accountNum", receipt.accountNum);
data.put("accountName", receipt.accountName);
data.put("money", receipt.money);
data.put("redemptionDate", receipt.redemptionDate);
data.put("interestAccDays", receipt.interestAccDays);
data.put("interest", receipt.interest);
data.put("operator", receipt.operator);
data.put("status", receipt.status);
data.put("recordNum", receipt.recordNum);
// 填充表单字段
for (Map.Entry<String, String> entry : data.entrySet()) {
if (fields.containsKey(entry.getKey())) {
fields.get(entry.getKey()).setValue(entry.getValue());
}
}
// 更新表单(如果需要)
form.flattenFields();
// 关闭文档
pdfDoc.close();
}
}
\ No newline at end of file
package com.brilliance.utils;
import com.brilliance.bo.Receipt;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
public class ReceiptUtils {
public static void main(String[] args) throws Exception {
// 创建一个Date对象,表示当前日期和时间
Date now = new Date();
// 创建一个SimpleDateFormat对象,并定义日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
// 使用format方法格式化日期
String formattedDate = dateFormat.format(now);
String str = new Date().getTime()+"";
String id = formattedDate + str.substring(str.length()-8);
String templateFilePath = ".\\doc\\receipt.pdf";
String pdfFilePath = "C:\\Users\\zhaojg\\.m2\\repository\\cn\\receipt"+id+".pdf";
Receipt receipt = new Receipt();
receipt.setReceiptNum(id);
receipt.setReceiptNo(id);
receipt.setBuyDate("2022/3/12");
receipt.setStartDate("2022/3/12");
receipt.setSeal("印密");
receipt.setYear("2022");
receipt.setPeriod("01");
receipt.setDeadline("三年");
receipt.setRate("3.45%");
receipt.setEndDate("2025/3/12");
receipt.setTellerNum("9527");
receipt.setAccountNum("130503196701010001");
receipt.setAccountName("张三");
receipt.setMoney("人民币壹百万元整 RMB1,000,000.00");
receipt.setRedemptionDate("2023/3/12");
receipt.setInterestAccDays("365");
receipt.setInterest("34500");
receipt.setOperator("经办员");
receipt.setStatus("有效");
receipt.setRecordNum("NO."+id);
buildPdf(templateFilePath,pdfFilePath,receipt);
}
/**
* 根据PDF模版生成PDF文件
*
* @param templateFilePath PDF模版文件路径
* @param pdfFilePath pdf文件保存路径
* @param receipt
*/
public static void buildPdf(String templateFilePath, String pdfFilePath, Receipt receipt) throws Exception {
// 表单域数据填充
HashMap<String, String> data = new HashMap<>();
data.put("receiptNum", receipt.receiptNum);
data.put("receiptNo", receipt.receiptNo);
data.put("buyDate", receipt.buyDate);
data.put("startDate", receipt.startDate);
data.put("seal", receipt.seal);
data.put("year", receipt.year);
data.put("period", receipt.period);
data.put("deadline", receipt.deadline);
data.put("rate", receipt.rate);
data.put("endDate", receipt.endDate);
data.put("tellerNum", receipt.tellerNum);
data.put("accountNum", receipt.accountNum);
data.put("accountName", receipt.accountName);
data.put("money", receipt.money);
data.put("redemptionDate", receipt.redemptionDate);
data.put("interestAccDays", receipt.interestAccDays);
data.put("interest", receipt.interest);
data.put("operator", receipt.operator);
data.put("status", receipt.status);
data.put("recordNum", receipt.recordNum);
createPDF(templateFilePath, data, true, pdfFilePath);
}
/**
* 根据PDF模版生成PDF文件
*
* @param templateFilePath PDF模版文件路径
* @param data 表单域数据
* @param formFlattening false:生成后的PDF文件表单域仍然可编辑 true:生成后的PDF文件表单域不可编辑
* @param pdfFilePath 生成PDF的文件路径
*/
private static void createPDF(String templateFilePath, HashMap<String, String> data,
boolean formFlattening, String pdfFilePath) throws Exception {
PdfReader reader = null;
ByteArrayOutputStream bos = null;
PdfStamper pdfStamper = null;
FileOutputStream fos = null;
try {
// 读取PDF模版文件
reader = new PdfReader(templateFilePath);
// 输出流
bos = new ByteArrayOutputStream();
// 构建PDF对象
pdfStamper = new PdfStamper(reader, bos);
// 获取表单数据
AcroFields form = pdfStamper.getAcroFields();
// 使用中文字体 使用 AcroFields填充值的不需要在程序中设置字体,在模板文件中设置字体为中文字体 Adobe 宋体 std L
//BaseFont bfChinese = BaseFont.createFont("STKaiti-Std-Regular", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//com.itextpdf.text.Font font = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);
//form.addSubstitutionFont(bfChinese);
// 表单赋值
for (String key : data.keySet()) {
form.setField(key, data.get(key));
//form.setFieldProperty(key, "textfont", bfChinese, null);
//form.setFieldProperty(key, "textalignment", PdfFormField.ALIGN_CENTER, null);
// 也可以指定字体
//form.setFieldProperty(key, "textfont", bfChinese, null);
//form.setFieldProperty(key, "textalignment",1, null);
// 获取文本框的矩形区域(用于计算居中位置)
/*Rectangle rect = form.getFieldPositions(key).get(0).position;
float x = rect.getLeft() + (rect.getRight() - rect.getLeft()) / 2;
float y = rect.getBorder() + (rect.getTop() - rect.getBottom()) / 2;
// 设置文本框的文本对齐方式为居中(在iText中,对齐方式的值为左对齐:0, 居中:1, 右对齐:2)
form.setFieldProperty(key, "textalignment", 1, null);
// 填充汉字内容(这里以"张三"为例)
form.setField(key, data.get(key));
// 设置内容的位置为计算得到的居中位置
form.setFieldProperty(key, "textx", x, null);
form.setFieldProperty(key, "texty", y, null);*/
}
//设置生成的PDF文件不可编辑
pdfStamper.setFormFlattening(true);
pdfStamper.close();
fos = new FileOutputStream(pdfFilePath);
fos.write(bos.toByteArray());
fos.flush();
} finally {
if (null != fos) {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (null != bos) {
try {
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (null != reader) {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
private static void addTextToPdfCenter(AcroFields form, PdfStamper stamper, String text,String fieldName,BaseFont baseFont){
// 通过模板表单单元格名获取所在页和坐标,左下角为起点
int pageNo = form.getFieldPositions(fieldName).get(0).page;
Rectangle signRect = form.getFieldPositions(fieldName).get(0).position;
// 获取操作的页面
PdfContentByte contentByte = stamper.getOverContent(pageNo);
//创建表单
PdfPTable table = new PdfPTable(1);
//获取当前模板表单宽度
float totalWidth = signRect.getRight() - signRect.getLeft() - 1;
//设置新表单宽度
table.setTotalWidth(totalWidth);
//设置中文格式
Font font = new Font(baseFont);
//设置单元格格式
PdfPCell cell = new PdfPCell(new Phrase(text,font));
//设置单元格高度
cell.setFixedHeight(signRect.getTop()-signRect.getBottom()-1);
cell.setBorderWidth(0);
//设置垂直居中
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
//设置水平居中
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
//添加到表单中
table.addCell(cell);
//写入pdf
table.writeSelectedRows(0, -1, signRect.getLeft(), signRect.getTop(), contentByte);
}
}
package com.brilliance.utils;
import org.springframework.util.StringUtils;
/**
* 传感器类型
*/
public class SensorConstant {
public static final String SENSOR_SB_CODE="rate";
public static final String SENSOR_SB = "设备";
public static final String SENSOR_CGQ_CODE="sensor";
public static final String SENSOR_CGQ = "传感器";
public static final String SENSOR_HPY_CODE="monitor";
public static final String SENSOR_HPY = "滑坡仪";
public static final String SENSOR_LF_CODE="lf";
public static final String SENSOR_LF = "裂缝";
public static final String SENSOR_DBWY_CODE="gp";
public static final String SENSOR_DBWY = "地表位移";
public static final String SENSOR_SBWY_CODE="sw";
public static final String SENSOR_SBWY = "深部位移";
public static final String SENSOR_JSD_CODE="js";
public static final String SENSOR_JSD = "加速度";
public static final String SENSOR_QJ_CODE="qj";
public static final String SENSOR_QJ = "倾角";
public static final String SENSOR_ZD_CODE="zd";
public static final String SENSOR_ZD = "振动";
public static final String SENSOR_YINGLI_CODE="yl";
public static final String SENSOR_YINGLI = "应力";
public static final String SENSOR_TYL_CODE="ty";
public static final String SENSOR_TYL = "土压力";
public static final String SENSOR_CS_CODE="cs";
public static final String SENSOR_CS = "次声";
public static final String SENSOR_DS_CODE="ds";
public static final String SENSOR_DS = "地声";
public static final String SENSOR_YL_CODE="yl";
public static final String SENSOR_YL= "雨量";
public static final String SENSOR_QW_CODE="qw";
public static final String SENSOR_QW = "气温";
public static final String SENSOR_TRWD_CODE="tw";
public static final String SENSOR_TRWD = "土壤温度";
public static final String SENSOR_TRHSL_CODE="hs";
public static final String SENSOR_TRHSL = "土壤含水率";
public static final String SENSOR_DBSW_CODE="db";
public static final String SENSOR_DBSW = "地表水温";
public static final String SENSOR_DB_CODE="db";
public static final String SENSOR_DB = "地表水位";
public static final String SENSOR_DXSW_CODE="dx";
public static final String SENSOR_DXSW = "地下水温";
public static final String SENSOR_DX_CODE="dx";
public static final String SENSOR_DX = "地下水位";
public static final String SENSOR_KXSWD_CODE="sy";
public static final String SENSOR_KXSWD= "孔隙水温度";
public static final String SENSOR_SY_CODE="sy";
public static final String SENSOR_SY = "孔隙水压力";
public static final String SENSOR_ST_CODE="st";
public static final String SENSOR_ST= "渗透压力";
public static final String SENSOR_LS_CODE="ls";
public static final String SENSOR_LS= "流速";
public static final String SENSOR_CJ_CODE="cj";
public static final String SENSOR_CJ = "沉降";
public static final String SENSOR_QY_CODE="qy";
public static final String SENSOR_QY= "气压";
public static final String SENSOR_SP_CODE="sp";
public static final String SENSOR_SP= "视频";
public static final String SENSOR_NW_CODE="nw";
public static final String SENSOR_NW = "泥水位";
public static final String SENSOR_LD_CODE="ld";
public static final String SENSOR_LD= "雷达";
public static final String SENSOR_LB_CODE="lb";
public static final String SENSOR_LB= "预警喇叭";
public static String getName(String sensor){
if(StringUtils.isEmpty(sensor)) return "rate";
String name ="rate";
switch(sensor){
case SensorConstant.SENSOR_CGQ:
name = SensorConstant.SENSOR_CGQ_CODE;
break;
case SensorConstant.SENSOR_HPY:
name = SensorConstant.SENSOR_HPY_CODE;
break;
case SensorConstant.SENSOR_LF:
name = SensorConstant.SENSOR_LF_CODE;
break;
case SensorConstant.SENSOR_DBWY:
name = SensorConstant.SENSOR_DBWY_CODE;
break;
case SensorConstant.SENSOR_SBWY:
name = SensorConstant.SENSOR_SBWY_CODE;
break;
case SensorConstant.SENSOR_JSD:
name = SensorConstant.SENSOR_JSD_CODE;
break;
case SensorConstant.SENSOR_QJ:
name = SensorConstant.SENSOR_QJ_CODE;
break;
case SensorConstant.SENSOR_ZD:
name = SensorConstant.SENSOR_ZD_CODE;
break;
case SensorConstant.SENSOR_YINGLI:
name = SensorConstant.SENSOR_YINGLI_CODE;
break;
case SensorConstant.SENSOR_TYL:
name = SensorConstant.SENSOR_TYL_CODE;
break;
case SensorConstant.SENSOR_CS:
name = SensorConstant.SENSOR_CS_CODE;
break;
case SensorConstant.SENSOR_DS:
name = SensorConstant.SENSOR_DS_CODE;
break;
case SensorConstant.SENSOR_YL:
name = SensorConstant.SENSOR_YL_CODE;
break;
case SensorConstant.SENSOR_QW:
name = SensorConstant.SENSOR_QW_CODE;
break;
case SensorConstant.SENSOR_TRWD:
name = SensorConstant.SENSOR_TRWD_CODE;
break;
case SensorConstant.SENSOR_TRHSL:
name = SensorConstant.SENSOR_TRHSL_CODE;
break;
case SensorConstant.SENSOR_DBSW:
name = SensorConstant.SENSOR_DBSW_CODE;
break;
case SensorConstant.SENSOR_DB:
name = SensorConstant.SENSOR_DB_CODE;
break;
case SensorConstant.SENSOR_DXSW:
name = SensorConstant.SENSOR_DXSW_CODE;
break;
case SensorConstant.SENSOR_DX:
name = SensorConstant.SENSOR_DX_CODE;
break;
case SensorConstant.SENSOR_KXSWD:
name = SensorConstant.SENSOR_KXSWD_CODE;
break;
case SensorConstant.SENSOR_SY:
name = SensorConstant.SENSOR_SY_CODE;
break;
case SensorConstant.SENSOR_ST:
name = SensorConstant.SENSOR_ST_CODE;
break;
case SensorConstant.SENSOR_LS:
name = SensorConstant.SENSOR_LS_CODE;
break;
case SensorConstant.SENSOR_CJ:
name = SensorConstant.SENSOR_CJ_CODE;
break;
case SensorConstant.SENSOR_QY:
name = SensorConstant.SENSOR_QY_CODE;
break;
case SensorConstant.SENSOR_SP:
name = SensorConstant.SENSOR_SP_CODE;
break;
case SensorConstant.SENSOR_NW:
name = SensorConstant.SENSOR_NW_CODE;
break;
case SensorConstant.SENSOR_LD:
name = SensorConstant.SENSOR_LD_CODE;
break;
case SensorConstant.SENSOR_LB:
name = SensorConstant.SENSOR_LB_CODE;
break;
default:break;
}
if(!"rate".equals(name)){
name = name + "Rate";
}
return name ;
}
}
package com.example.demo;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.TypeReference;
import com.brilliance.bo.ReqQryMonitorPointAllBo;
import com.brilliance.bo.RspComBo;
import com.brilliance.bo.RspMonitorPointAllBo;
import com.brilliance.utils.SensorConstant;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
@Slf4j
public class Dem {
public static void main(String[] args) {
/*String jsonStr = "{\"otherinfo\":null,\"resultdata\":[{\"monitorCount\":5858,\"ylRate\":\"94.06\",\"rate\":\"90.97\",\"name\":\"甘肃省\",\"rtuCount\":16530,\"ylCount\":2243,\"monitorRate\":\"85.79\"},{\"monitorCount\":1002,\"ylRate\":\"94.07\",\"rate\":\"94.22\",\"name\":\"兰州市\",\"rtuCount\":2884,\"ylCount\":190,\"monitorRate\":\"90.04\"},{\"monitorCount\":16,\"ylRate\":\"100\",\"rate\":\"98.54\",\"name\":\"金昌市\",\"rtuCount\":53,\"ylCount\":17,\"monitorRate\":\"97.18\"},{\"monitorCount\":119,\"ylRate\":\"84.53\",\"rate\":\"89.03\",\"name\":\"白银市\",\"rtuCount\":323,\"ylCount\":58,\"monitorRate\":\"80.2\"},{\"monitorCount\":873,\"ylRate\":\"97.27\",\"rate\":\"93.21\",\"name\":\"天水市\",\"rtuCount\":2347,\"ylCount\":301,\"monitorRate\":\"88.98\"},{\"monitorCount\":20,\"ylRate\":\"81.25\",\"rate\":\"90.5\",\"name\":\"武威市\",\"rtuCount\":55,\"ylCount\":16,\"monitorRate\":\"85\"},{\"monitorCount\":23,\"ylRate\":\"100\",\"rate\":\"99.95\",\"name\":\"张掖市\",\"rtuCount\":65,\"ylCount\":25,\"monitorRate\":\"100\"},{\"monitorCount\":785,\"ylRate\":\"97.27\",\"rate\":\"94.43\",\"name\":\"平凉市\",\"rtuCount\":2105,\"ylCount\":274,\"monitorRate\":\"90.28\"},{\"monitorCount\":20,\"ylRate\":\"100\",\"rate\":\"96.37\",\"name\":\"酒泉市\",\"rtuCount\":64,\"ylCount\":23,\"monitorRate\":\"88.39\"},{\"monitorCount\":229,\"ylRate\":\"95.86\",\"rate\":\"89.34\",\"name\":\"庆阳市\",\"rtuCount\":745,\"ylCount\":117,\"monitorRate\":\"81.38\"},{\"monitorCount\":633,\"ylRate\":\"97.14\",\"rate\":\"92.74\",\"name\":\"定西市\",\"rtuCount\":1925,\"ylCount\":361,\"monitorRate\":\"86.21\"},{\"monitorCount\":1313,\"ylRate\":\"90.58\",\"rate\":\"87.66\",\"name\":\"陇南市\",\"rtuCount\":3583,\"ylCount\":513,\"monitorRate\":\"83.76\"},{\"monitorCount\":402,\"ylRate\":\"93.99\",\"rate\":\"91.43\",\"name\":\"临夏回族自治州\",\"rtuCount\":1080,\"ylCount\":153,\"monitorRate\":\"86.6\"},{\"monitorCount\":423,\"ylRate\":\"88.95\",\"rate\":\"80.71\",\"name\":\"甘南藏族自治州\",\"rtuCount\":1302,\"ylCount\":195,\"monitorRate\":\"68.38\"}],\"resultcode\":1,\"type\":1,\"message\":\"\"}";
//String jsonStr = "{\"otherinfo\":null,\"resultdata\":[]}";
JSONObject json = JSONObject.parseObject(jsonStr);
JSONArray jsonArray = json.getJSONArray("resultdata");
System.out.println("jsonArray:"+json);
log.info("log:"+json);
System.out.println("jsonArray:"+(jsonArray.size()));
String req = "泥水位";
System.out.println("req:"+ SensorConstant.getName(req.split(",")[0]));
if(null != jsonArray && jsonArray.size() > 0 ) {
String type = SensorConstant.getName(req.split(",")[0]);
if(jsonArray.getJSONObject(0).containsKey(type)){
jsonArray.sort((o2, o1) -> (Double.compare(((JSONObject) o1).getDouble(type), ((JSONObject) o2).getDouble(type))));
}else {
jsonArray.sort((o2, o1) -> (Double.compare(((JSONObject) o1).getDouble("rate"), ((JSONObject) o2).getDouble("rate"))));
}
}
System.out.println("+++++++++:"+json);*/
String str = null;
log.info("str:"+(null==str));
log.info("str:"+(""==str));
ReqQryMonitorPointAllBo bo = new ReqQryMonitorPointAllBo();
bo.setWARNLEVEL("5");
log.info("bo:"+bo.toString());
log.info("bo:"+("5".equals(bo.getWARNLEVEL())));
}
}
package com.example.demo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.*;
import java.util.Date;
@Slf4j
public class FileDown {
public static void main(String[] args) {
String file_url = "https://www.caghp.org.cn/cdntencentalisuanzhecombaidufile?i=/202204/202204130845019hNx4VHmdMyZXgx143.pdf";
String path = "C:\\Users\\zhaojg\\.m2\\repository\\cn\\";
String res = "ERR";
int bytesum = 0;
int byteread = 0;
try {
URL url = new URL(file_url);
File uploadDir = new File(path);
//验证存储路径是否存在,不存在则自动创建文件夹
if ( !uploadDir.exists()){ uploadDir.mkdirs(); }
//采用时间戳对下载文件命名
String timeStr =new Date().getTime()+"";
String newFileName =timeStr+"u";
//通过路径获取文件后缀
String saveUrl = path + newFileName+".jpg";
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
FileOutputStream fs = new FileOutputStream(saveUrl);
byte[] buffer = new byte[1204];
int length;
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
fs.write(buffer, 0, byteread);
}
fs.close();
inStream.close();
res = saveUrl;
log.info("下载完成了!");
} catch (MalformedURLException e) {
log.info("下载异常1:"+e);
throw new RuntimeException(e);
} catch (FileNotFoundException e) {
log.info("下载异常2:"+e);
throw new RuntimeException(e);
} catch (IOException e) {
log.info("下载异常3:"+e);
throw new RuntimeException(e);
}
}
}
\ No newline at end of file
package com.example.demo;
import com.itextpdf.text.pdf.PdfReader;
import java.io.IOException;
public class PdfRead {
public static void main(String[] args) {
try {
PdfReader reader = new PdfReader("C:\\Users\\zhaojg\\.m2\\repository\\cn\\123.pdf");
reader.close();
} catch (IOException e) {
// 损坏的PDF文档处理逻辑
e.printStackTrace();
}
}
}
package com.example.demo;
import com.alibaba.fastjson.JSONObject;
import com.brilliance.bo.ReceiptInfo;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Hashtable;
import java.util.UUID;
public class ReceiptGenerator {
public static void main(String[] args) throws IOException, WriterException {
// 创建一个Date对象,表示当前日期和时间
Date now = new Date();
// 创建一个SimpleDateFormat对象,并定义日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
// 使用format方法格式化日期
String formattedDate = dateFormat.format(now);
String str = new Date().getTime()+"";
String id = formattedDate + str.substring(str.length()-8);;//随机字符,这里是用雪花算法生成的字符串id
ReceiptInfo receiptInfo = new ReceiptInfo();
receiptInfo.setNo(id);
receiptInfo.setBuyDate("2022/3/12");
receiptInfo.setStartDate("2022/3/12");
receiptInfo.setYear("2022");
receiptInfo.setCount("01");
receiptInfo.setTimeLimit("三年");
receiptInfo.setRate("3.45%");
receiptInfo.setEndDate("2025/3/12");
receiptInfo.setAccountNum("130503196701010001");
receiptInfo.setAccountName("张三");
receiptInfo.setBigMoney("人民币壹百万元整");
receiptInfo.setMoney("RMB1,000,000.00");
int rowheight = 45;//行高
int startHeight = 60;//余留上方像素
int startWidth = 15;//余留左方像素
int imageHeight = 360;
int imageWidth =950;
//得到图片缓冲区
BufferedImage bi = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_RGB);//INT精确度达到一定,RGB三原色,高度70,宽度150
//得到它的绘制环境(这张图片的笔)
//Graphics2D g2 = (Graphics2D) bi.getGraphics();
Graphics2D g2 =bi.createGraphics();
//设置颜色
g2.setColor(new Color(158, 213, 213));
g2.fillRect(0,0,imageWidth,imageHeight);//填充整张图片(其实就是设置背景颜色)
//画横线
for (int j = 0; j < 3; j++) {
g2.setColor(Color.darkGray);
g2.drawLine(startWidth, startHeight + (j + 1) * rowheight, imageWidth - 15,
startHeight + (j + 1) * rowheight);
}
g2.setColor(Color.darkGray);
g2.drawLine(startWidth, startHeight + 6 * rowheight, imageWidth - 15,
startHeight + 6 * rowheight);
// 画竖线
int rightLine;
g2.setColor(Color.gray);
for (int k = 0; k < 7; k++) {
rightLine = startWidth + k * (131);
g2.drawLine(rightLine, startHeight + rowheight, rightLine,
startHeight + 3 * rowheight);
}
for (int k = 0; k < 2; k++) {
rightLine = startWidth + k * (imageWidth - startWidth * 2 );
g2.drawLine(rightLine, startHeight + rowheight, rightLine,
startHeight + 6 * rowheight);
}
g2.setColor(Color.BLACK);//设置背景颜色
//插入二维码
byte[] qrCode = getQRCodeImage(JSONObject.toJSONString(receiptInfo),40,40);
InputStream buffIn = new ByteArrayInputStream(qrCode, 0, qrCode.length);
Image bufferedImage =(Image) ImageIO.read(buffIn);
g2.drawImage(bufferedImage,startWidth,10,null); //向图片左上插入二维码
g2.setFont(new Font("黑体",Font.BOLD,20)); //设置字体:字体、字号、大小
g2.drawString("中国人民共和国凭证式国债收款凭证", startWidth*19, rowheight);
//以上画好了底图,开始插入票据信息
g2.setFont(new Font("宋体", Font.CENTER_BASELINE, 15));
g2.setColor(Color.red);
//表头填充
g2.drawString("中国建设银行", startWidth, startHeight+rowheight-3);
g2.setFont(new Font("宋体", Font.CENTER_BASELINE, 15));
g2.setColor(Color.BLACK);
g2.drawString("NO."+ receiptInfo.getNo(),imageWidth - startWidth * 13, startHeight+rowheight-3);
//调整字体
g2.setFont(new Font("宋体", Font.CENTER_BASELINE, 17));
//第一行填充
g2.drawString("购买日期",startWidth*2, startHeight+rowheight*2-10);
//第一行填充
g2.drawString("起息日期",startWidth*2 + 130, startHeight+rowheight*2-10);
//第一行填充
g2.drawString("年度",startWidth*2 + 130 * 2, startHeight+rowheight*2-10);
//第一行填充
g2.drawString("期次",startWidth*2 + 130 * 3, startHeight+rowheight*2-10);
//第一行填充
g2.drawString("期限",startWidth*2 + 130 * 4, startHeight+rowheight*2-10);
//第一行填充
g2.drawString("年利率",startWidth*2 + 130 * 5, startHeight+rowheight*2-10);
//第一行填充
g2.drawString("到期日期",startWidth*2 + 130 * 6, startHeight+rowheight*2-10);
//第二行填充
g2.drawString(receiptInfo.getBuyDate(),startWidth*2, startHeight+rowheight*3-10);
//第二行填充
g2.drawString(receiptInfo.getStartDate(),startWidth*2 + 130, startHeight+rowheight*3-10);
//第二行填充
g2.drawString(receiptInfo.getYear(),startWidth*2 + 130 * 2, startHeight+rowheight*3-10);
//第二行填充
g2.drawString(receiptInfo.getCount(),startWidth*2 + 130 * 3, startHeight+rowheight*3-10);
//第二行填充
g2.drawString(receiptInfo.getTimeLimit(),startWidth*2 + 130 * 4, startHeight+rowheight*3-10);
//第二行填充
g2.drawString(receiptInfo.getRate(),startWidth*2 + 130 * 5, startHeight+rowheight*3-10);
//第二行填充
g2.drawString(receiptInfo.getEndDate(),startWidth*2 + 130 * 6, startHeight+rowheight*3-10);
//第三行填充
g2.drawString("账号:"+receiptInfo.getAccountNum(),startWidth*2, startHeight+rowheight*4-10);
//第三行填充
g2.drawString("户名:"+receiptInfo.getAccountName(),startWidth*2 + 130 * 4, startHeight+rowheight*4-10);
//第四行填充
g2.drawString("金额:"+receiptInfo.getBigMoney()+" "+receiptInfo.getMoney(),startWidth*2, startHeight+rowheight*5-10);
//底部填充
g2.drawString("银行签章(纸质专用)",startWidth*45, startHeight+rowheight*6-20);
//调整字体
g2.setFont(new Font("宋体", Font.BOLD, 18));
//因为2D画图画字体会有锯齿,而graphics2D类有抗锯齿和画笔柔顺的开关,设置如下
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
Stroke s = new BasicStroke(imageWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER);
g2.setStroke(s);
//保存图片 JPEG表示保存格式
ImageIO.write(bi,"JPEG",new FileOutputStream("C:\\Users\\zhaojg\\.m2\\repository\\cn\\"+id+".jpg"));
}
//生成二维码
// 编码格式
private static final String CHARSET = "utf-8";
private static byte[] getQRCodeImage(String text, int width, int height) throws WriterException, IOException {
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
hints.put(EncodeHintType.MARGIN, 1);
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream);
byte[] pngData = pngOutputStream.toByteArray();
return pngData;
}
}
package com.example.demo;
import lombok.extern.slf4j.Slf4j;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Iterator;
import java.util.List;
@Slf4j
public class Test {
public static void main(String[] args) throws Exception {
Demo demo = new Demo();
//demo.main();
//2.3.5
//demo.getMonitorPointInfo();
//2.3.6
//demo.getMonitorDeviceList();
//2.3.7
//demo.getDBDataPoints();
//2.3.9
//emo.getEarthReport();
//2.3.10
//demo.getImportReport();
//2.3.11
//demo.getAvgOnlineRate();
//2.3.12
//demo.getOnlineRateRank();
//2.3.13
//demo.getWeatherReport();
//2.3.14
//demo.getEarthReportTrendData();
//2.3.15
//demo.getDeviceAndSensorCount();
//2.3.16
//demo.getWarnMsgDisposeRate();
//2.3.17
//demo.getOnlineRateOfMonth();
//2.3.18
//demo.getWarnMsgDisposeRateOfMonth();
//2.3.19
demo.getManuInfosBySimpleName();
/*String sourceFilePath = "C:\\Users\\zhaojg\\Documents\\input.txt";
String destinationFilePath = "C:\\Users\\zhaojg\\Documents\\output.doc";
try (FileInputStream fis = new FileInputStream(sourceFilePath);
FileOutputStream fos = new FileOutputStream(destinationFilePath)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
byte[] decodedBytes = Base64.getDecoder().decode(new String(buffer));
fos.write(decodedBytes);
}
System.out.println("File copied
successfully.");
} catch (IOException e) {
e.printStackTrace();
}*/
/*List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
log.info("___________"+list.toString());
for (Iterator<String> it = list.iterator(); it.hasNext();) {
String value = it.next();
if (value.equals( "3")) {
it.remove(); // ok
}
}
log.info("++++++++++"+list.toString());*/
}
}
spring.application.name=GHDB
server.port=30007
cigem.communication.access-key=621b965d7ee24dbc
cigem.communication.secret-key=fb7e13e69b6648d59dcaaf4800d1c349
cigem.communication.encryption-type=esp
accessKey=621b965d7ee24dbc
secretKey=fb7e13e69b6648d59dcaaf4800d1c349
\ No newline at end of file
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- status log4j2内部日志级别 -->
<configuration status="INFO">
<!-- 全局参数 -->
<Properties>
<Property name="basePath">/home/ubuntu/java/log/</Property>
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1}:%L -%m%n</Property>
<Property name="displayName">Cigem</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT" follow="true">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
</Console>
<!-- 文件 每次运行程序会自动清空,由append属性决定 -->
<File name="error" fileName="${basePath}/${displayName}_error.log" append="false">
<!-- 指定error 级别的日志 -->
<ThresholdFilter level="ERROR" onMatch="ACCEPT"
onMismatch="DENY"/>
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
</File>
<!-- 滚动文件 -->
<RollingFile name="rollingFile" fileName="${basePath}/${displayName}.log"
filePattern="${basePath}/${displayName}_%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
<!-- 按大小划分 -->
<SizeBasedTriggeringPolicy size="50 MB"/>
</RollingFile>
<RollingFile name="rollingFile" fileName="${basePath}/${displayName}.log"
filePattern="${basePath}/${displayName}_%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
<!-- 按大小划分 -->
<SizeBasedTriggeringPolicy size="50 MB"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.springframework" level="INFO"/>
<Logger name="com.alibaba" level="WARN"/>
<Logger name="com.brilliance" level="INFO"/>
<Root level="INFO">
<AppenderRef ref="console"></AppenderRef>
<AppenderRef ref="error"></AppenderRef>
<AppenderRef ref="rollingFile"></AppenderRef>
</Root>
</Loggers>
</configuration>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment