pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com37Vo.java
@@ -1,10 +1,13 @@ package com.dy.common.mw.protocol.p206V1_0_0.downVos; import lombok.Data; /** * @Author: liurunyu * @Date: 2024/6/29 7:08 * @Description */ @Data public class Com37Vo { public Integer seconds ;//流量采集周期(秒)(大于1) } pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com38Vo.java
@@ -1,10 +1,14 @@ package com.dy.common.mw.protocol.p206V1_0_0.downVos; import lombok.Data; /** * @Author: liurunyu * @Date: 2024/6/29 7:08 * @Description */ @Data public class Com38Vo { public Double remainMoneyAlarm ;//用户余额报警值(大于1.0) } pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com39Vo.java
@@ -1,10 +1,13 @@ package com.dy.common.mw.protocol.p206V1_0_0.downVos; import lombok.Data; /** * @Author: liurunyu * @Date: 2024/6/29 7:08 * @Description */ @Data public class Com39Vo { public Double batteryVoltAlarm ;//电池电压报警值(大于0.1) } pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComXyVo.java
New file @@ -0,0 +1,15 @@ package com.dy.common.mw.protocol.p206V1_0_0.downVos; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-07-20 9:35 * @LastEditTime 2024-07-20 9:35 * @Description */ @Data public class ComXyVo { public String commandCode; // 命令码 } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
@@ -178,8 +178,9 @@ com.type = commandTypeOuter; com.rtuResultSendWebUrl = rtuResultSendWebUrl; com.param = param; if(param != null) { com.param = param; } return com; } @@ -190,7 +191,7 @@ * @return */ protected BaseResponse<Data> dealWithCallBack(Long comId, Command com) { CompletableFuture<Data> feature = new CompletableFuture<>(); CompletableFuture<JSONObject> feature = new CompletableFuture<>(); features.put(comId, feature); try { // 发送命令 @@ -202,9 +203,10 @@ return BaseResponseUtils.buildErrorMsg(job_param.getString("message")); } Data resultData = feature.get(180, TimeUnit.SECONDS); JSONObject resultData = feature.get(180, TimeUnit.SECONDS); features.remove(comId); Long commandId = Long.parseLong(resultData.getCommandId()); Long commandId = resultData.getLong("commandId"); if (commandId.equals(comId)) { return BaseResponseUtils.buildSuccess(resultData); } else { @@ -283,7 +285,8 @@ rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte) 0); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); //return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); return BaseResponseUtils.buildErrorMsg(response_CallBack.getMsg()); } // 回调超时 @@ -301,27 +304,7 @@ return BaseResponseUtils.buildErrorMsg(CommandResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); } // 回调成功,再判断执行是否成功 JSONObject job_content = (JSONObject) JSON.toJSON(response_CallBack.getContent()); JSONObject job_subData = (JSONObject) job_content.getJSONObject("subData").getJSONObject("subData"); Boolean dealResult = job_subData.getBoolean("success"); if (!dealResult) { /** * 执行失败 * 更新执行结果、返回结果时间、结果内容 */ rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte) 0); rmCommandHistory.setResultTime(new Date()); //rmCommandHistory.setResultText((JSONObject)JSON.toJSON(response_CallBack.getContent())); rmCommandHistory.setResultText(response_CallBack.getContent().toString()); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); } /** * 执行成功 * 如果是开关阀:更改虚拟卡状态:是否使用中、最后操作、最后操作时间 * 更新执行结果、返回结果时间、结果内容 * 返回回调内容 @@ -340,8 +323,7 @@ } // 回调返回的内容,回调结果写入命令日志表的任务由中间件完成 Data myData = (Data) response_CallBack.getContent(); return BaseResponseUtils.buildSuccess(myData); return response_CallBack; } } pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml
@@ -5,9 +5,9 @@ #name: pj type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver 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://127.0.0.1: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 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
@@ -5,9 +5,9 @@ #name: sp type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.40.166:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://192.168.40.166:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://127.0.0.1:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://8.140.179.55:3306/pipIrr_sp?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull 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: pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml
@@ -5,9 +5,9 @@ #name: ym type: com.alibaba.druid.pool.DruidDataSource driverClassName: 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://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-global/src/main/resources/application-global.yml
@@ -72,7 +72,7 @@ pipIrr: global: dev: false #是否开发阶段,true或false dev: true #是否开发阶段,true或false dsName: ym #开发阶段,设置临时的数据库名称 mw: webPort: 8070 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/MidResultActionError.java
@@ -1,26 +1,24 @@ package com.dy.rtuMw.server.forTcp; import com.dy.common.mw.protocol.MidResult; import com.dy.common.mw.protocol.MidResultAction; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.dy.common.mw.protocol.MidResult; import com.dy.common.mw.protocol.MidResultError; import com.dy.common.mw.protocol.MidResultAction; public class MidResultActionError implements MidResultAction { private static Logger log = LogManager.getLogger(MidResultActionError.class.getName()); @Override public void doAction(MidResult result) { if(result != null && result instanceof MidResultError){ MidResultError rs = (MidResultError)result ; log.error("解析或构造" + (rs.protocolName==null?"":("通信协议" + rs.protocolName + "的")) + "RTU" + (rs.rtuAddr==null?"":("(地址" + rs.rtuAddr + ")" )) + "数据出错" + (rs.message == null?"":(":" + rs.message))); if(rs.e != null){ log.error(rs.e); rs.e.printStackTrace(); } } //if(result != null && result instanceof MidResultError){ // MidResultError rs = (MidResultError)result ; // log.error("解析或构造" + (rs.protocolName==null?"":("通信协议" + rs.protocolName + "的")) + "RTU" + (rs.rtuAddr==null?"":("(地址" + rs.rtuAddr + ")" )) + "数据出错" + (rs.message == null?"":(":" + rs.message))); // if(rs.e != null){ // log.error(rs.e); // rs.e.printStackTrace(); // } //} } } } pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
@@ -3,9 +3,9 @@ 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://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-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java
@@ -1,8 +1,8 @@ package com.dy.pipIrrRemote.common; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.dy.common.mw.protocol.Data; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrGlobal.command.ComSupport; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; @@ -25,18 +25,21 @@ @RequestMapping(path="comRes") public class CommandResultCtrl extends ComSupport { @PostMapping(path = "receive", consumes = MediaType.APPLICATION_JSON_VALUE) public BaseResponse<String> receive(@RequestBody Data data) { Long comId = 0L; if(data.getCommandId() != null) { comId = Long.parseLong(data.getCommandId()); } public void receive(@RequestBody Data data) { JSONObject job_data = (JSONObject) JSON.toJSON(data); //System.out.println(job_data.toJSONString()); JSONObject job_subData = job_data.getJSONObject("subData").getJSONObject("subData"); CompletableFuture<Data> feature = (CompletableFuture<Data>) features.get(comId); JSONObject job_response = new JSONObject(); job_response.put("data", job_subData); job_response.put("commandCode", job_data.getString("code")); job_response.put("commandId", job_data.getString("commandId")); CompletableFuture<JSONObject> feature = (CompletableFuture<JSONObject>) features.get(job_data.getLong("commandId")); if(feature != null) { feature.complete(data); feature.complete(job_response); }else{ log.error("feature is null"); feature.complete(new JSONObject()); } return BaseResponseUtils.buildSuccess("ok"); } } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Alarm.java
@@ -1,5 +1,7 @@ package com.dy.pipIrrRemote.common.dto; import jakarta.validation.constraints.DecimalMin; import jakarta.validation.constraints.NotBlank; import lombok.Data; /** @@ -14,12 +16,20 @@ public static final long serialVersionUID = 202407041337001L; /** * 剩余水量报警值 * 功能码 */ private Integer waterAlarm; @NotBlank(message = "功能码不能为空") private String commandCode; /** * 剩余金额报警值 * 电池电压报警值(大于0.1) */ private Integer moneyAlarm; @DecimalMin(value = "1.0", message = "用户余额报警值不能小于1.0") public Double batteryVoltAlarm; /** * 用户余额报警值(大于1.0) */ @DecimalMin(value = "1.0", message = "用户余额报警值不能小于1.0") private Double remainMoneyAlarm; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/CollectPeriod.java
New file @@ -0,0 +1,31 @@ package com.dy.pipIrrRemote.common.dto; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-07-20 10:37 * @LastEditTime 2024-07-20 10:37 * @Description 采集周期对象,用于设置流量采集周期接口 */ @Data public class CollectPeriod extends DtoBase { public static final long serialVersionUID = 202407201038001L; /** * 功能码 */ @NotBlank(message = "功能码不能为空") private String commandCode; /** * 流量采集周期(秒)(大于1) */ @NotNull(message = "流量采集周期不能为空") @Min(value = 1, message = "流量采集周期不能小于1") private Integer seconds; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/CommandGet.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/CommandDeal.java @@ -11,7 +11,7 @@ */ @Data public class CommandDeal extends DtoBase { public class CommandGet extends DtoBase { public static final long serialVersionUID = 202407041401001L; /** pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Domain.java
@@ -1,5 +1,6 @@ package com.dy.pipIrrRemote.common.dto; import jakarta.validation.constraints.NotBlank; import lombok.Data; /** @@ -14,6 +15,12 @@ public static final long serialVersionUID = 202407050857001L; /** * 功能码 */ @NotBlank(message = "功能码不能为空") private String commandCode; /** * IP通道号,取值范围:1,2 */ private Integer channel; pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
@@ -3,21 +3,25 @@ import com.alibaba.fastjson2.JSONObject; import com.dy.common.aop.SsoAop; 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.p206V1_0_0.downVos.*; import com.dy.common.mw.protocol.p206V202404.CodeV202404; import com.dy.common.mw.protocol.p206V202404.downVos.*; import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; 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.*; import com.dy.pipIrrRemote.common.dto.Alarm; import com.dy.pipIrrRemote.common.dto.CollectPeriod; import com.dy.pipIrrRemote.common.dto.CommandGet; import com.dy.pipIrrRemote.common.dto.Domain; import com.dy.pipIrrRemote.result.RemoteResultCode; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.http.MediaType; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; @@ -27,7 +31,9 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Objects; import java.util.Optional; //import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo; //import com.dy.common.mw.protocol.p206V1_0_0.downVos.ComXyVo; /** * @author ZhuBaoMin @@ -39,7 +45,7 @@ @Slf4j @RestController @RequestMapping(path="rtu") @RequiredArgsConstructor //@RequiredArgsConstructor public class RtuCtrl extends ComSupport { private final CommandSv commandSv; private final IDLongGenerator idLongGenerator; @@ -48,20 +54,38 @@ private String rtuCallbackUrl_rm; /** * 通用处理接口 * 97 清除用水记录 * 98 清除充值记录 * 99 清除日记录 * 9A 清除年用水量 * 50 查询终端地址 * @param po * @param bindingResult * @return * pro_mw:属性 * tag从控制器中获取 * key_mw:url的key */ @PostMapping(path = "common_deal", consumes = MediaType.APPLICATION_JSON_VALUE) private Environment env = null; private String pro_mw = "mw"; private String key_mw = "comSendUrl"; @Autowired public RtuCtrl(CommandSv commandSv, IDLongGenerator idLongGenerator, Environment env) { this.commandSv = commandSv; this.idLongGenerator = idLongGenerator; this.env = env; } /** * 通用查询接口 * p206V1_0_1 * 66 查询IP和端口 * 67 查询流量采集周期 * 68 查询用户余额报警值 * 69 查询电池电压报警值 * 6A 查询阀门堵转电流值 * 6B 查询阀门超时时间 * @param po 查询传入对象 * @param bindingResult * @return 查询结果 */ @PostMapping(path = "common_get", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> commonDeal(@RequestBody @Valid CommandDeal po, BindingResult bindingResult) { public BaseResponse<Boolean> commonGet(@RequestBody @Valid CommandGet po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } @@ -82,6 +106,8 @@ } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String orgTag = job_rtu.getString("orgTag"); comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); // 获取功能码 String commandCode = po.getCommandCode(); @@ -109,55 +135,8 @@ return dealWithCommandResult(myParam); } else if(protocol.equals("p206V1_0_1")) { // 创建视图 Com97Vo param = new Com97Vo() ; return BaseResponseUtils.buildSuccess(""); } else { return BaseResponseUtils.buildFail("系统暂不支持该协议"); } } /** * 设置设备终端地址 * @param addr 设置设备终端地址传入对象 * @param bindingResult * @return */ @PostMapping(path = "set_addr", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setAddr(@RequestBody @Valid Addr addr, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = addr.getIntakeId(); String newRtuAddr = addr.getNewRtuAddr(); Long operator = addr.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_10; // 创建视图 ComCd10Vo param = new ComCd10Vo() ; param.controllerType = controllerType; param.projectNo = projectNo; param.rtuNewAddr = newRtuAddr; ComXyVo param = new ComXyVo(); param.setCommandCode(commandCode); /** * 构造命令、发送命令并处理请求结果及执行结果 @@ -166,44 +145,37 @@ */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setCommandName(CodeV1_0_1.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); //myParam.setVcId(vcId); 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_alarm", consumes = MediaType.APPLICATION_JSON_VALUE) @PostMapping(path = "set_collect_period", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setAlarm(@RequestBody @Valid Alarm po, BindingResult bindingResult) { public BaseResponse<Boolean> setCollectPeriod(@RequestBody @Valid CollectPeriod po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } 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(); @@ -219,18 +191,17 @@ } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String orgTag = job_rtu.getString("orgTag"); comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); String commandCode = null; // 获取功能码 String commandCode = po.getCommandCode(); if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_16; return BaseResponseUtils.buildSuccess(""); } else if(protocol.equals("p206V1_0_1")) { // 创建视图 ComCd16Vo param = new ComCd16Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.waterAlarm = waterAlarm; param.moneyAlarm = moneyAlarm; Com37Vo param = new Com37Vo(); param.setSeconds(po.getSeconds()); /** * 构造命令、发送命令并处理请求结果及执行结果 @@ -239,44 +210,37 @@ */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setCommandName(CodeV1_0_1.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); //myParam.setVcId(vcId); 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_well", consumes = MediaType.APPLICATION_JSON_VALUE) @PostMapping(path = "set_ip_port", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setWell(@RequestBody @Valid DrivenWell po, BindingResult bindingResult) { public BaseResponse<Boolean> setIpPort(@RequestBody @Valid Domain 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(); @@ -292,18 +256,18 @@ } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String orgTag = job_rtu.getString("orgTag"); comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); String commandCode = null; // 获取功能码 String commandCode = po.getCommandCode(); if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_22; return BaseResponseUtils.buildSuccess(""); } else if(protocol.equals("p206V1_0_1")) { // 创建视图 ComCd22Vo param = new ComCd22Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.maxAmountYear = maxAmountYear; param.limitLevel = limitLevel; Com21Vo param = new Com21Vo(); param.setIp(po.getIp()); param.setPort(po.getPort()); /** * 构造命令、发送命令并处理请求结果及执行结果 @@ -312,43 +276,37 @@ */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setCommandName(CodeV1_0_1.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); //myParam.setVcId(vcId); 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) @PostMapping(path = "set_remain_money_alarm", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setMaxAmount(@RequestBody @Valid WaterConsumption po, BindingResult bindingResult) { public BaseResponse<Boolean> setRemainMoneyAlarm(@RequestBody @Valid Alarm 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(); @@ -364,17 +322,17 @@ } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String orgTag = job_rtu.getString("orgTag"); comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); String commandCode = null; // 获取功能码 String commandCode = po.getCommandCode(); if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_26; return BaseResponseUtils.buildSuccess(""); } else if(protocol.equals("p206V1_0_1")) { // 创建视图 ComCd26Vo param = new ComCd26Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.maxAmountYear = maxAmountYear; Com38Vo param = new Com38Vo(); param.setRemainMoneyAlarm(po.getRemainMoneyAlarm()); /** * 构造命令、发送命令并处理请求结果及执行结果 @@ -383,45 +341,37 @@ */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setCommandName(CodeV1_0_1.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); //myParam.setVcId(vcId); 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) @PostMapping(path = "set_battery_volt_alarm", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> setIp(@RequestBody @Valid Domain po, BindingResult bindingResult) { public BaseResponse<Boolean> setBatteryVoltAlarm(@RequestBody @Valid Alarm 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(); @@ -437,19 +387,17 @@ } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); String orgTag = job_rtu.getString("orgTag"); comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); String commandCode = null; // 获取功能码 String commandCode = po.getCommandCode(); if(protocol.equals("p206V202404")) { // 获取功能码 commandCode = CodeV202404.cd_21; return BaseResponseUtils.buildSuccess(""); } else if(protocol.equals("p206V1_0_1")) { // 创建视图 ComCd21Vo param = new ComCd21Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.channel = channel; param.ip = ip; param.port = port; Com39Vo param = new Com39Vo(); param.setBatteryVoltAlarm(po.getBatteryVoltAlarm()); /** * 构造命令、发送命令并处理请求结果及执行结果 @@ -458,99 +406,20 @@ */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setCommandName(CodeV1_0_1.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); //myParam.setVcId(vcId); 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")) { // 获取功能码 commandCode = CodeV1_0_1.cd_10; // 创建视图 Com97Vo param = new Com97Vo() ; return BaseResponseUtils.buildSuccess(""); } else { return BaseResponseUtils.buildFail("系统暂不支持该协议"); } } } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java
@@ -116,9 +116,11 @@ if(vc == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); } if(vc.getInUse() == 1) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage()); } //嘉峪关项目虚拟卡不扣费,不做使用中判断 //if(vc.getInUse() == 1) { // return BaseResponseUtils.buildErrorMsg(RemoteResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage()); //} // 获取水价 Double waterPrice = commandSv.getPrice(); @@ -484,91 +486,91 @@ * @param bindingResult * @return */ @PostMapping(path = "usability", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> usability(@RequestBody @Valid Usability usability, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = usability.getIntakeId(); Boolean valid = usability.getValid(); Long operator = usability.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")) { if(valid) { // 获取功能码 commandCode = CodeV202404.cd_30; // 创建视图 ComCd31Vo param = new ComCd31Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.valid = true; /** * 构造命令、发送命令并处理请求结果及执行结果 * 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 { // 获取功能码 commandCode = CodeV202404.cd_31; // 创建视图 ComCd31Vo param = new ComCd31Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.valid = false; /** * 构造命令、发送命令并处理请求结果及执行结果 * 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")) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION.getMessage()); } else { return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议"); } } //@PostMapping(path = "usability", consumes = MediaType.APPLICATION_JSON_VALUE) //@Transactional(rollbackFor = Exception.class) //@SsoAop() //public BaseResponse<Boolean> usability(@RequestBody @Valid Usability usability, BindingResult bindingResult) { // if(bindingResult != null && bindingResult.hasErrors()){ // return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); // } // // Long intakeId = usability.getIntakeId(); // Boolean valid = usability.getValid(); // Long operator = usability.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")) { // if(valid) { // // 获取功能码 // commandCode = CodeV202404.cd_30; // // // 创建视图 // ComCd31Vo param = new ComCd31Vo(); // param.controllerType = controllerType; // param.projectNo = projectNo; // param.valid = true; // // /** // * 构造命令、发送命令并处理请求结果及执行结果 // * 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 { // // 获取功能码 // commandCode = CodeV202404.cd_31; // // // 创建视图 // ComCd31Vo param = new ComCd31Vo(); // param.controllerType = controllerType; // param.projectNo = projectNo; // param.valid = false; // // /** // * 构造命令、发送命令并处理请求结果及执行结果 // * 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")) { // return BaseResponseUtils.buildErrorMsg(RemoteResultCode.THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION.getMessage()); // } else { // return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议"); // } //} }