pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java
@@ -42,7 +42,7 @@ sb.append(orderNo == null?"未知":orderNo) ; sb.append("\n") ; sb.append(" 开泵/阀时间 : ") ; sb.append(openDt == null?"未知": openDt) ; sb.append(openDt == null?"未知":openDt) ; sb.append("\n") ; sb.append(" 水表累计水量 : ") ; sb.append(waterTotalAmount == null?"未知":waterTotalAmount) ; pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Org.java
@@ -14,6 +14,7 @@ // Ym("ym", "元谋"), // Pj("pj", "片角镇"), Sp("sp", "沙盘"), Jyg("ym", "嘉峪关"); @EnumValue @@ -50,8 +51,10 @@ // }else if(tag.equals(Pj.tag)){ // return Pj ; // } if( tag.equals(Jyg.tag)){ if(tag.equals(Jyg.tag)){ return Jyg ; }else if(tag.equals(Sp.tag)) { return Sp; } return null ; } pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml
@@ -5,8 +5,8 @@ #name: pj type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver # url: jdbc:mysql://192.168.91.73:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://192.168.40.166:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://192.168.40.166:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://8.140.179.55:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull username: root password: dysql,;.abc!@# druid: pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml
New file @@ -0,0 +1,64 @@ # 数据源配置 spring: datasource: #配置数据源 sp: #name: sp type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://8.140.179.55:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull username: root password: dysql,;.abc!@# druid: # 数据源名称:当存在多个数据源时,设置名字可以很方便的来进行区分,默认自动生成名称,格式是:"DataSource-" + System.identityHashCode(this) name: druid-mysql-sp #配置初始化大小、最小、最大 initialSize: 10 minIdle: 10 maxActive: 200 # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁 maxWait: 60000 #配置间隔多久进行一次检测,检测需要关闭的空闲连接,单位毫秒。 默认是60s,太长可能会导致无法及时检测到连接中断 timeBetweenEvictionRunsMillis: 60000 #配置一个连接在连接池中的最小生存时间、最大生存时间,超过最大生存时间会被移除,单位毫秒。 minEvictableIdleTimeMillis: 300000 maxEvictableIdleTimeMillis: 900000 #探活、验证链接有效性的查询,新版本默认使用mysqlPing代替 #validation-query: select 1 #注释掉,采用默认的mysqlPing #配置从连接池获取连接时,当连接空闲时间大于timeBetweenEvictionRunsMillis时是否检查连接有效性,true每次都检查;false不检查。 testWhileIdle: true #配置从连接池获取连接时和向连接池归还连接时,是否检查连接有效性 #每次获取或归还连接都检测太频繁,除非特别重要或网络特别不可靠等情况,建议用testWhileIdle + timeBetweenEvictionRunsMillis代替。--> testOnBorrow: false testOnReturn: false #配置是否定期探活、探活间隔, 默认120s keepAlive: true #keepAliveBetweenTimeMillis must be greater than timeBetweenEvictionRunsMillis keepAliveBetweenTimeMillis: 1200000 #配置一个连接最大使用次数,避免长时间使用相同连接造成服务器端负载不均衡。 phyMaxUseCount: 1000 #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。 poolPreparedStatements: false #要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100 maxOpenPreparedStatements: -1 #指定每个连接上PSCache的大小 maxPoolPreparedStatementPerConnectionSize: 20 #属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: #监控统计用的filter:stat,日志用的filter:log4j,防御sql注入的filter:wall filters: stat,wall,config webStatFilter: # 添加过滤规则 urlPattern: /* # 忽略过滤格式 exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" statViewServlet: # 设置ip白名单 # allow: 127.0.0.1 # 设置ip黑名单,优先级高于白名单 deny: # 设置控制台管理用户 # loginUsername: root # loginPassword: root # 是否可以重置数据 resetEnable: false # 开启druid监控页面 enabled: true pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml
@@ -5,4 +5,4 @@ allow-bean-definition-overriding: true #设置为true时,后定义的bean会覆盖之前定义的相同名称的bean datasource: #配置数据源 #多个数据源名称在此配置,要求与spring。datasource。[ym][pj]中的一致 names: ym, pj names: ym, pj, sp pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
@@ -3,9 +3,7 @@ datasource: #配置数据源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull username: root password: dysql,;.abc!@# druid: pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp #actutor的web端口 management: pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp user: defaultTrueRandomFalsePassword: true #true:采用默认密码,false:系统产生随机密码 defaultPassword: "abc_123" pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp #actutor的web端口 management: pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp #actutor的web端口 management: pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Alarm.java
New file @@ -0,0 +1,25 @@ package com.dy.pipIrrRemote.common.dto; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-07-04 11:44 * @LastEditTime 2024-07-04 11:44 * @Description 报警值子类 */ @Data public class Alarm extends DtoBase { public static final long serialVersionUID = 202407041337001L; /** * 剩余水量报警值 */ private Integer waterAlarm; /** * 剩余金额报警值 */ private Integer moneyAlarm; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/CommandDeal.java
New file @@ -0,0 +1,22 @@ package com.dy.pipIrrRemote.common.dto; import jakarta.validation.constraints.NotBlank; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-07-04 14:01 * @LastEditTime 2024-07-04 14:01 * @Description 通用处理子类,用于通用处理接口 */ @Data public class CommandDeal extends DtoBase { public static final long serialVersionUID = 202407041401001L; /** * 功能码 */ @NotBlank(message = "功能码不能为空") private String commandCode; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Domain.java
New file @@ -0,0 +1,35 @@ package com.dy.pipIrrRemote.common.dto; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-07-05 8:55 * @LastEditTime 2024-07-05 8:55 * @Description 域名对象,包含通道号、域名、IP、端口号 */ @Data public class Domain extends DtoBase { public static final long serialVersionUID = 202407050857001L; /** * IP通道号,取值范围:1,2 */ private Integer channel; /** * 域名 */ private String domain; /** * IP地址 */ private String ip; /** * 端口号 */ private Integer port; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/DrivenWell.java
New file @@ -0,0 +1,25 @@ package com.dy.pipIrrRemote.common.dto; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-07-04 16:43 * @LastEditTime 2024-07-04 16:43 * @Description 机井子类 */ @Data public class DrivenWell extends DtoBase { public static final long serialVersionUID = 202407041644001L; /** * 机井年最大用水量 */ private Integer maxAmountYear; /** * 水位下限 */ private Double limitLevel; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/WaterConsumption.java
New file @@ -0,0 +1,20 @@ package com.dy.pipIrrRemote.common.dto; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-07-05 8:35 * @LastEditTime 2024-07-05 8:35 * @Description 终端年拥水量对象 */ @Data public class WaterConsumption extends DtoBase { public static final long serialVersionUID = 202407050835001L; /** * 设备终端年用水量 */ private Integer maxAmountYear; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/result/RemoteResultCode.java
@@ -26,7 +26,7 @@ * RTU */ RTU_NOT_EXIST(20001, "阀控器不存在"), //RTU_ADDR_CANNOT_BE_NULL(20002, "阀控器地址不能为空"); CLIENT_CARD_NOT_EXIST(30001, "水卡不存在"); pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
@@ -5,20 +5,19 @@ import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo; import com.dy.common.mw.protocol.p206V202404.CodeV202404; import com.dy.common.mw.protocol.p206V202404.downVos.ComCd10Vo; import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; import com.dy.common.mw.protocol.p206V202404.downVos.*; import com.dy.common.util.IDLongGenerator; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrGlobal.command.ComSupport; import com.dy.pipIrrGlobal.command.dto.Param; import com.dy.pipIrrRemote.common.CommandSv; import com.dy.pipIrrRemote.common.dto.Addr; import com.dy.pipIrrRemote.common.dto.DtoBase; import com.dy.pipIrrRemote.common.dto.*; import com.dy.pipIrrRemote.result.RemoteResultCode; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; @@ -28,6 +27,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Objects; import java.util.Optional; /** * @author ZhuBaoMin @@ -42,10 +42,79 @@ @RequiredArgsConstructor public class RtuCtrl extends ComSupport { private final CommandSv commandSv; protected static String controllerType = "57"; private final IDLongGenerator idLongGenerator; private String rtuResultSendWebUrl = "http://127.0.0.1:8081/remote/comRes/receive" ; @Value("${mw.rtuCallbackUrl_rm}") private String rtuCallbackUrl_rm; /** * 通用处理接口 * 97 清除用水记录 * 98 清除充值记录 * 99 清除日记录 * 9A 清除年用水量 * 50 查询终端地址 * @param po * @param bindingResult * @return */ @PostMapping(path = "common_deal", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> commonDeal(@RequestBody @Valid CommandDeal po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = po.getIntakeId(); Long operator = po.getOperator(); Long comId = idLongGenerator.generate(); // 获取系统参数 if(!setuped) { setUp(); } // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); // 获取功能码 String commandCode = po.getCommandCode(); if(protocol.equals("p206V202404")) { // 创建视图 ComCdXyVo param = new ComCdXyVo(); param.controllerType = controllerType; param.projectNo = projectNo; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { // 创建视图 Com97Vo param = new Com97Vo() ; return BaseResponseUtils.buildSuccess(""); } else { return BaseResponseUtils.buildFail("系统暂不支持该协议"); } } /** * 设置设备终端地址 @@ -103,7 +172,7 @@ myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuResultSendWebUrl); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { @@ -119,21 +188,22 @@ } /** * 清除设备终端用水记录 * 设置设备终端剩余水量和剩余金额报警值 * @param po * @param bindingResult * @return */ @PostMapping(path = "clear_usage_record", consumes = MediaType.APPLICATION_JSON_VALUE) @PostMapping(path = "set_alarm", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> clearUsageRecord(@RequestBody @Valid DtoBase po, BindingResult bindingResult) { public BaseResponse<Boolean> setAlarm(@RequestBody @Valid Alarm po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } //String commandCode = CodeV202404.cd_97; Long intakeId = po.getIntakeId(); Integer waterAlarm = Optional.ofNullable(po.getWaterAlarm()).orElse(0); Integer moneyAlarm = Optional.ofNullable(po.getMoneyAlarm()).orElse(0); Long operator = po.getOperator(); Long comId = idLongGenerator.generate(); @@ -153,12 +223,14 @@ String commandCode = null; if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_97; commandCode = CodeV202404.cd_16; // 创建视图 ComCdXyVo param = new ComCdXyVo(); ComCd16Vo param = new ComCd16Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.waterAlarm = waterAlarm; param.moneyAlarm = moneyAlarm; /** * 构造命令、发送命令并处理请求结果及执行结果 @@ -173,7 +245,301 @@ myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuResultSendWebUrl); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_10; // 创建视图 Com97Vo param = new Com97Vo() ; return BaseResponseUtils.buildSuccess(""); } else { return BaseResponseUtils.buildFail("系统暂不支持该协议"); } } /** * 设置机井年最大开采量和水位下限 * @param po * @param bindingResult * @return */ @PostMapping(path = "set_well", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setWell(@RequestBody @Valid DrivenWell po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = po.getIntakeId(); Integer maxAmountYear = Optional.ofNullable(po.getMaxAmountYear()).orElse(0); Double limitLevel = Optional.ofNullable(po.getLimitLevel()).orElse(0.0); Long operator = po.getOperator(); Long comId = idLongGenerator.generate(); // 获取系统参数 if(!setuped) { setUp(); } // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String commandCode = null; if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_22; // 创建视图 ComCd22Vo param = new ComCd22Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.maxAmountYear = maxAmountYear; param.limitLevel = limitLevel; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_10; // 创建视图 Com97Vo param = new Com97Vo() ; return BaseResponseUtils.buildSuccess(""); } else { return BaseResponseUtils.buildFail("系统暂不支持该协议"); } } /** * 设置设备终端年用水量 * @param po * @param bindingResult * @return */ @PostMapping(path = "set_max_amount", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setMaxAmount(@RequestBody @Valid WaterConsumption po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = po.getIntakeId(); Integer maxAmountYear = Optional.ofNullable(po.getMaxAmountYear()).orElse(0); Long operator = po.getOperator(); Long comId = idLongGenerator.generate(); // 获取系统参数 if(!setuped) { setUp(); } // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String commandCode = null; if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_26; // 创建视图 ComCd26Vo param = new ComCd26Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.maxAmountYear = maxAmountYear; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_10; // 创建视图 Com97Vo param = new Com97Vo() ; return BaseResponseUtils.buildSuccess(""); } else { return BaseResponseUtils.buildFail("系统暂不支持该协议"); } } /** * 设置设备终端IP地址 * @param po * @param bindingResult * @return */ @PostMapping(path = "set_ip", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setIp(@RequestBody @Valid Domain po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = po.getIntakeId(); Integer channel = po.getChannel(); String ip = po.getIp(); Integer port = po.getPort(); Long operator = po.getOperator(); Long comId = idLongGenerator.generate(); // 获取系统参数 if(!setuped) { setUp(); } // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String commandCode = null; if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_21; // 创建视图 ComCd21Vo param = new ComCd21Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.channel = channel; param.ip = ip; param.port = port; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_10; // 创建视图 Com97Vo param = new Com97Vo() ; return BaseResponseUtils.buildSuccess(""); } else { return BaseResponseUtils.buildFail("系统暂不支持该协议"); } } /** * 设置设备终端域名 * @param po * @param bindingResult * @return */ @PostMapping(path = "set_domain", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setDomain(@RequestBody @Valid Domain po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = po.getIntakeId(); Integer channel = po.getChannel(); String domain = po.getDomain(); Integer port = po.getPort(); Long operator = po.getOperator(); Long comId = idLongGenerator.generate(); // 获取系统参数 if(!setuped) { setUp(); } // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String commandCode = null; if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_23; // 创建视图 ComCd23Vo param = new ComCd23Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.channel = channel; param.domain = domain; param.port = port; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp #actutor的web端口 management: pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -411,7 +411,19 @@ return BaseResponseUtils.buildErrorMsg(SellResultCode.CANCEL_FAIL_WRITE_CANCELL_ERROR.getMessage()); } return BaseResponseUtils.buildSuccess(true) ; //return BaseResponseUtils.buildSuccess(true) ; cardNumS = String.valueOf(cardNum).trim(); if(cardNumS.substring(0,2).equals("10")) { cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13); } cardNum = Long.valueOf(cardNumS); Map map_response = new HashMap(); map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo()))); map_response.put("orderNumber", rec); map_response.put("cardNum", cardNum); return BaseResponseUtils.buildSuccess(map_response) ; } /** @@ -507,7 +519,18 @@ return BaseResponseUtils.buildErrorMsg(SellResultCode.LOSS_FAIL_WRITE_LOSS_ERROR.getMessage()); } return BaseResponseUtils.buildSuccess(true) ; //return BaseResponseUtils.buildSuccess(true) ; cardNumS = String.valueOf(cardNum).trim(); if(cardNumS.substring(0,2).equals("10")) { cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13); } cardNum = Long.valueOf(cardNumS); Map map_response = new HashMap(); map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo()))); map_response.put("orderNumber", rec); map_response.put("cardNum", cardNum); return BaseResponseUtils.buildSuccess(map_response) ; } /** @@ -598,7 +621,19 @@ return BaseResponseUtils.buildErrorMsg(SellResultCode.REVERSAL_FAIL_WRITE_REVERSAL_ERROR.getMessage()); } return BaseResponseUtils.buildSuccess(true) ; //return BaseResponseUtils.buildSuccess(true) ; cardNumS = String.valueOf(cardNum).trim(); if(cardNumS.substring(0,2).equals("10")) { cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13); } cardNum = Long.valueOf(cardNumS); Map map_response = new HashMap(); map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo()))); map_response.put("orderNumber", rec); map_response.put("cardNum", cardNum); return BaseResponseUtils.buildSuccess(map_response) ; } /** @@ -778,7 +813,19 @@ return BaseResponseUtils.buildErrorMsg(SellResultCode.UNLOCK_FAIL_WRITE_UNLOCK_ERROR.getMessage()); } return BaseResponseUtils.buildSuccess(true) ; //return BaseResponseUtils.buildSuccess(true) ; cardNumS = String.valueOf(cardNum).trim(); if(cardNumS.substring(0,2).equals("10")) { cardNumS = cardNumS.substring(6, 12) + cardNumS.substring(13); } cardNum = Long.valueOf(cardNumS); Map map_response = new HashMap(); map_response.put("projectNo", String.format("%02x", Integer.parseInt(cardOperateSv.getProjectNo()))); map_response.put("orderNumber", rec); map_response.put("cardNum", cardNum); return BaseResponseUtils.buildSuccess(map_response) ; } /** pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp #actutor的web端口 management: pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp #actutor的web端口 management: pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: include: global, database, database-ym, database-pj include: global, database, database-ym, database-pj, database-sp #actutor的web端口 management: