pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/cert/WxCertUtil.java
@@ -26,6 +26,7 @@ Resource resource = resourceLoader.getResource(key_pem); InputStream in = resource.getInputStream() ; byte[] bs = new byte[in.available()] ; in.read(bs) ; return bs ; } pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -637,10 +637,14 @@ <select id="getLargeOpenCountClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli WHERE (SELECT COUNT(*) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount} <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null"> (SELECT COUNT(*) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount} </if> </where> </select> <!--获取指定时间段内开阀次数超过指定值的农户--> @@ -652,10 +656,14 @@ cli.phone, cli.idCard FROM se_client cli WHERE (SELECT COUNT(*) <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null"> (SELECT COUNT(*) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount} </if> </where> ORDER BY cli.id <trim prefix="limit "> <if test="start != null and count != null"> @@ -668,10 +676,14 @@ <select id="getSmallOpenCountClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli WHERE (SELECT COUNT(*) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{openCount} <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null"> (SELECT COUNT(*) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{openCount} </if> </where> </select> <!--获取指定时间段内开阀次数低于指定值的农户--> @@ -683,10 +695,14 @@ cli.phone, cli.idCard FROM se_client cli WHERE (SELECT COUNT(*) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{openCount} <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null"> (SELECT COUNT(*) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{openCount} </if> </where> ORDER BY cli.id <trim prefix="limit "> <if test="start != null and count != null"> @@ -699,10 +715,14 @@ <select id="getLargeWaterConsumptionClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli WHERE (SELECT SUM(his.cl_this_amount) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption} <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null"> (SELECT SUM(his.cl_this_amount) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption} </if> </where> </select> <!--获取指定时间段内用水量超过指定值的农户--> @@ -714,10 +734,14 @@ cli.phone, cli.idCard FROM se_client cli WHERE (SELECT SUM(his.cl_this_amount) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption} <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null"> (SELECT SUM(his.cl_this_amount) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption} </if> </where> ORDER BY cli.id <trim prefix="limit "> <if test="start != null and count != null"> @@ -730,10 +754,14 @@ <select id="getLargeAmountSpentClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli WHERE (SELECT SUM(his.cl_this_money) <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null"> (SELECT SUM(his.cl_this_money) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent} </if> </where> </select> <!--获取指定时间段内消费金额超过指定值的农户--> <select id="getLargeAmountSpentClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient"> @@ -744,10 +772,14 @@ cli.phone, cli.idCard FROM se_client cli WHERE (SELECT SUM(his.cl_this_money) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent} <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null"> (SELECT SUM(his.cl_this_money) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent} </if> </where> ORDER BY cli.id <trim prefix="limit "> <if test="start != null and count != null"> @@ -760,10 +792,14 @@ <select id="getLargeWaterDurationClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli WHERE (SELECT SUM(his.cl_this_time) <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null"> (SELECT SUM(his.cl_this_time) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration} </if> </where> </select> <!--获取指定时间段内用水时长超过指定值的农户--> @@ -775,10 +811,14 @@ cli.phone, cli.idCard FROM se_client cli WHERE (SELECT SUM(his.cl_this_time) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration} <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null"> (SELECT SUM(his.cl_this_time) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration} </if> </where> ORDER BY cli.id <trim prefix="limit "> <if test="start != null and count != null"> pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
@@ -189,7 +189,7 @@ } /** * 本地调用,例如重任务树中某个任务下发的命令(如清空命令) * 本地调用,例如任务树中某个任务下发的命令(如清空命令) * @param com * @return */ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -101,7 +101,7 @@ --> <resource rtuLogDir="rtuLogs/" rtuLogFileMaxSize="1000000" rtuLogFileMaxSize="1000" rtuLogFileMaxCount="2" monitorInterval="2" saveDbInterval="10" pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java
@@ -1,12 +1,17 @@ package com.dy.pipIrrMwTestWeb; import com.dy.pipIrrGlobal.cert.WxCertUtil; import com.dy.pipIrrMwTestWeb.p206V202404test.CommandP206V202404Ctrl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.FilterType; import org.springframework.core.io.ResourceLoader; import java.io.InputStream; @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //禁止启动数据库连接池 @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrMwTestWeb"}, @@ -28,10 +33,39 @@ }) } ) public class PipIrrMwTestWebApplication{ public class PipIrrMwTestWebApplication implements CommandLineRunner { @Autowired private ResourceLoader resourceLoader; public static void main(String[] args) { SpringApplication.run(PipIrrMwTestWebApplication.class, args); } /** * Spring容器启动完成后,执行下面方法 * @param args 参数 * @throws Exception 异常 */ @Override public void run(String... args) throws Exception { try{ //等待一下 Thread.sleep(500L); }catch (Exception e){ e.printStackTrace(); } finally { this.test() ; } } private void test() throws Exception{ InputStream in = WxCertUtil.getCert_p12InputStream(resourceLoader) ; System.out.println(in.available()); System.out.println("====================="); byte[] bs = WxCertUtil.getKey_pemBytes(resourceLoader) ; System.out.println(new String(bs)); } } pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V202404test/ComSupportP206V202404.java
@@ -19,8 +19,10 @@ * @Description */ public class ComSupportP206V202404 { protected static final String mwIp = "romq9311819.vicp.fun" ; //http://romq9311819.vicp.fun:16583 protected static final String mwPort = "16583" ; //protected static final String mwIp = "romq9311819.vicp.fun" ; //http://romq9311819.vicp.fun:16583 //protected static final String mwPort = "16583" ; protected static final String mwIp = "127.0.0.1" ; protected static final String mwPort = "8071" ; protected static String mwUrlTest = "http://" + mwIp + ":" + mwPort + "/rtuMw/com/test" ; protected static String mwUrlSendCom = "http://" + mwIp + ":" + mwPort + "/rtuMw/com/send" ; pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V202404test/CommandP206V202404Ctrl.java
@@ -18,53 +18,58 @@ public class CommandP206V202404Ctrl extends ComSupportP206V202404 { @GetMapping(path = "test") public BaseResponse<String> test(String com) { public BaseResponse<String> test(String rtuAddr, String com) { BaseResponse<String> rt = null ; if(com == null){ if(rtuAddr == null || rtuAddr.trim().equals("")){ rt = this.connect() ;//连接通信中间件测试 }else{ try{ if(com.equals("10")){ rt = this.cd10() ; }else if(com.equals("15")){ rt = this.cd15() ; }else if(com.equals("16")){ rt = this.cd16() ; }else if(com.equals("21")){ rt = this.cd21() ; }else if(com.equals("22")){ rt = this.cd22() ; }else if(com.equals("23")){ rt = this.cd23() ; }else if(com.equals("24")){ rt = this.cd24() ; }else if(com.equals("26")){ rt = this.cd26() ; }else if(com.equals("31")){ rt = this.cd31() ; }else if(com.equals("55")){ rt = this.cd55(1) ; }else if(com.equals("65")){ rt = this.cd65(1) ; }else if(com.equals("86")){ rt = this.cd86() ; }else if(com.equals("87")){ rt = this.cd87() ; }else if(com.equals("92")){ rt = this.cd92() ; }else if(com.equals("93")){ rt = this.cd93() ; }else if(com.equals("9C")){ rt = this.cd9C() ; }else if(com.equals("A2")){ rt = this.cdA2() ; }else if(com.equals("A3")){ rt = this.cdA3() ; }else{ rt = this.cdXY(com) ;//发送固定参数XY的命令, 例命令CodeV202404.cd_9C this.rtuAddr = rtuAddr ; if(com == null || com.trim().equals("")){ rt = this.connect() ;//连接通信中间件测试 }else{ try{ if(com.equals("10")){ rt = this.cd10() ; }else if(com.equals("15")){ rt = this.cd15() ; }else if(com.equals("16")){ rt = this.cd16() ; }else if(com.equals("21")){ rt = this.cd21() ; }else if(com.equals("22")){ rt = this.cd22() ; }else if(com.equals("23")){ rt = this.cd23() ; }else if(com.equals("24")){ rt = this.cd24() ; }else if(com.equals("26")){ rt = this.cd26() ; }else if(com.equals("31")){ rt = this.cd31() ; }else if(com.equals("55")){ rt = this.cd55(1) ; }else if(com.equals("65")){ rt = this.cd65(1) ; }else if(com.equals("86")){ rt = this.cd86() ; }else if(com.equals("87")){ rt = this.cd87() ; }else if(com.equals("92")){ rt = this.cd92() ; }else if(com.equals("93")){ rt = this.cd93() ; }else if(com.equals("9C")){ rt = this.cd9C() ; }else if(com.equals("A2")){ rt = this.cdA2() ; }else if(com.equals("A3")){ rt = this.cdA3() ; }else{ rt = this.cdXY(com) ;//发送固定参数XY的命令, 例命令CodeV202404.cd_9C } }catch (Exception e){ e.printStackTrace(); } }catch (Exception e){ e.printStackTrace(); } } return rt ; pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/resources/log4j2.yml
New file @@ -0,0 +1,73 @@ Configuration: #status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出;可以设置成Off(关闭)或Error(只输出错误信息) status: Error Properties: # 定义全局变量 Property: #日志文件存储的目录 - name: log.path value: ./logs #日志文件存储名称 - name: project.name value: mwTestWeb #定义输出器,可以输出到控制台和文件. Appenders: #输出到控制台 Console: #Appender命名 name: CONSOLE target: SYSTEM_OUT ThresholdFilter: level: debug #输出日志级别,输出日志时,首先由Loggers.Root.level或Loggers.Logger.level判断是否输出,然后再由本level判断是否输出 onMatch: ACCEPT #onMatch=ACCEPT 大于等于 "level" 配置的等级地日志输出 onMismatch: DENY #onMismatch=DENY 小于 "level" 配置的等级地日志不输出 #日志内容样式 PatternLayout: #%n-换行 #%m-日志内容,输出代码中指定的日志信息 #%p-输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL #%r-程序启动到现在的毫秒数 #%%- 输出一个"%" 字符 #%t-当前线程名 #%d-日期和时间, 常用的格式有%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS} #%l-同%F%L%C%M #%F-java源文件名 #%L-java源码行数 #%C-java类名,%C{1}输出最后一个元素 #%M-java方法名 pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n" # 输出到文件,超过10MB归档 RollingFile: - name: ROLLING_FILE ignoreExceptions: false fileName: ${log.path}/${project.name}.log filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz" ThresholdFilter: level: error #输出日志级别,输出日志时,首先由Loggers.Root.level或Loggers.Logger.level判断是否输出,然后再由本level判断是否输出 onMatch: ACCEPT #onMatch=ACCEPT 大于等于 "level" 配置的等级地日志输出 onMismatch: DENY #onMismatch=DENY 小于 "level" 配置的等级地日志不输出 #日志内容样式 PatternLayout: pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n" Policies: SizeBasedTriggeringPolicy: size: "10 MB" DefaultRolloverStrategy: max: 1000 Loggers: Root: level: info #日志输出级别,共有8个级别,按照从低到高为:all < trace < debug < info < warn < error < fatal < off AppenderRef: #Root的子节点,用来指定该日志输出到哪个Appender. - ref: CONSOLE #输出日志时,首先由本level判断是否输出,然后再由上面的Appenders.Console.ThresholdFilter.level判断是否输出 - ref: ROLLING_FILE #输出日志时,首先由本level判断是否输出,然后再由上面的Appenders.RollingFile.ThresholdFilter.level判断是否输出 # 为包配置特殊的Log级别,方便调试, # 不受Loggers.Root.level限制 Logger: - name: com.dy.pipIrrGlobal.daoBa additivity: false #去除重复的log level: debug #输出日志级别 AppenderRef: - ref: CONSOLE #输出日志时,首先由本.level判断是否输出,然后再由上面的Appenders.Console.ThresholdFilter.level判断是否输出 - ref: ROLLING_FILE #输出日志时,首先由本level判断是否输出,然后再由上面的Appenders.RollingFile.ThresholdFilter.level判断是否输出 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
@@ -47,16 +47,14 @@ */ public QueryResultVo<List<VoClient>> getLargeOpenCountClients(OpenCountQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 * 补齐起止时间 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { if(timeStop != null && timeStop != "") { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); @@ -85,16 +83,14 @@ */ public QueryResultVo<List<VoClient>> getSmallOpenCountClients(OpenCountQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 * 补齐起止时间 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { if(timeStop != null && timeStop != "") { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); @@ -123,16 +119,14 @@ */ public QueryResultVo<List<VoClient>> getLargeWaterConsumptionClients(WaterConsumptionQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 * 补齐起止时间 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { if(timeStop != null && timeStop != "") { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); @@ -165,12 +159,10 @@ */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { if(timeStop != null && timeStop != "") { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); @@ -203,12 +195,10 @@ */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { if(timeStop != null && timeStop != "") { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/AmountSpentQO.java
@@ -18,6 +18,6 @@ /** * 消费金额 */ @NotNull(message = "消费金额不能为空") // @NotNull(message = "消费金额不能为空") private Double amountSpent; } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/CommonQO.java
@@ -27,6 +27,6 @@ * 结束时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @NotBlank(message = "结束时间不能为空") // @NotBlank(message = "结束时间不能为空") private String timeStop; } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/OpenCountQO.java
@@ -18,6 +18,6 @@ /** * 开阀次数 */ @NotNull(message = "开阀次数不能为空") // @NotNull(message = "开阀次数不能为空") private Integer openCount; } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/WaterConsumptionQO.java
@@ -18,6 +18,6 @@ /** * 指定的用水量 */ @NotNull(message = "用水量不能为空") // @NotNull(message = "用水量不能为空") private Double waterConsumption; } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/WaterDurationQO.java
@@ -18,6 +18,6 @@ /** * 用水时长 */ @NotNull(message = "用水时长不能为空") // @NotNull(message = "用水时长不能为空") private Integer waterDuration; }