pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayLastMapper.xml
@@ -206,7 +206,7 @@ and rldl.dt <= #{endDt,jdbcType=DATE} </if> </where> ORDER BY rldl.id DESC ORDER BY rld.dt DESC , rld.loss_amount DESC <if test="pageCurr != null and pageSize != null"> LIMIT ${(pageCurr-1)*pageSize}, ${pageSize} </if> pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
@@ -196,7 +196,7 @@ and rld.dt <= #{endDt,jdbcType=DATE} </if> </where> ORDER BY rld.id DESC ORDER BY rld.dt DESC , rld.loss_amount DESC <if test="pageCurr != null and pageSize != null"> LIMIT ${(pageCurr-1)*pageSize}, ${pageSize} </if> pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/AutomaticClose.java
@@ -1,12 +1,15 @@ package com.dy.pipIrrRemote.common.dto; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; /** * @author ZhuBaoMin * @date 2024-07-23 10:36 * @LastEditTime 2024-07-23 10:36 * @Description 自动关阀(定时关阀、定量关阀)传输对象 * @Description 自动关阀开阀传输对象 */ @Data @@ -19,6 +22,12 @@ private Long vcId; /** * 计划开阀时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date plannedOpenTime; /** * 用水时长,拥有定时关阀 */ private Integer minutes; @@ -27,4 +36,5 @@ * 预用水量,拥有定量关阀 */ private Integer waterAmount; } pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/clientAmountDay/ClientAmountDayCtrl.java
@@ -16,10 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -56,7 +53,7 @@ }) @GetMapping(path = "/getClientAmountDayHistory") @SsoAop() public BaseResponse<QueryResultVo<List<VoClientAmountDay>>> getClientAmountDayHistory(@RequestBody ClientAmountDayQueryVo vo) { public BaseResponse<QueryResultVo<List<VoClientAmountDay>>> getClientAmountDayHistory(@RequestParam ClientAmountDayQueryVo vo) { try { QueryResultVo<List<VoClientAmountDay>> res = clientAmountDaySv.getClientAmountDayHistory(vo); return BaseResponseUtils.buildSuccess(res); @@ -84,7 +81,7 @@ }) @GetMapping(path = "/getClientAmountDayLast") @SsoAop() public BaseResponse<QueryResultVo<List<VoClientAmountDay>>> getClientAmountDayLast(@RequestBody ClientAmountDayQueryVo vo) { public BaseResponse<QueryResultVo<List<VoClientAmountDay>>> getClientAmountDayLast(@RequestParam ClientAmountDayQueryVo vo) { try { QueryResultVo<List<VoClientAmountDay>> res = clientAmountDaySv.getClientAmountDayLast(vo); return BaseResponseUtils.buildSuccess(res); pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/controllerAlarmState/ControllerAlarmStateCtrl.java
@@ -16,10 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -56,7 +53,7 @@ }) @GetMapping(path = "/getControllerAlarmStateHistory") @SsoAop() public BaseResponse<QueryResultVo<List<VoControllerAlarmState>>> getControllerAlarmStateHistory(@RequestBody ControllerAlarmStateQueryVo vo) { public BaseResponse<QueryResultVo<List<VoControllerAlarmState>>> getControllerAlarmStateHistory(@RequestParam ControllerAlarmStateQueryVo vo) { try { QueryResultVo<List<VoControllerAlarmState>> res = controllerAlarmStateSv.getControllerAlarmStateHistory(vo); return BaseResponseUtils.buildSuccess(res); @@ -85,7 +82,7 @@ }) @GetMapping(path = "/getControllerAlarmStateLast") @SsoAop() public BaseResponse<QueryResultVo<List<VoControllerAlarmState>>> getControllerAlarmStateLast(@RequestBody ControllerAlarmStateQueryVo vo) { public BaseResponse<QueryResultVo<List<VoControllerAlarmState>>> getControllerAlarmStateLast(@RequestParam ControllerAlarmStateQueryVo vo) { try { QueryResultVo<List<VoControllerAlarmState>> res = controllerAlarmStateSv.getControllerAlarmStateLast(vo); return BaseResponseUtils.buildSuccess(res); pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/intakeAmountDay/IntakeAmountDayCtrl.java
@@ -16,10 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -55,7 +52,7 @@ }) @GetMapping(path = "/getIntakeAmountDayHistory") @SsoAop() public BaseResponse<QueryResultVo<List<VoIntakeAmountDay>>> getIntakeAmountDayHistory(@RequestBody IntakeAmountDayQueryVo vo) { public BaseResponse<QueryResultVo<List<VoIntakeAmountDay>>> getIntakeAmountDayHistory(@RequestParam IntakeAmountDayQueryVo vo) { try { QueryResultVo<List<VoIntakeAmountDay>> res = intakeAmountDaySv.getIntakeAmountDayHistory(vo); return BaseResponseUtils.buildSuccess(res); @@ -82,7 +79,7 @@ }) @GetMapping(path = "/getIntakeAmountDayLast") @SsoAop() public BaseResponse<QueryResultVo<List<VoIntakeAmountDay>>> getIntakeAmountDayLast(@RequestBody IntakeAmountDayQueryVo vo) { public BaseResponse<QueryResultVo<List<VoIntakeAmountDay>>> getIntakeAmountDayLast(@RequestParam IntakeAmountDayQueryVo vo) { try { QueryResultVo<List<VoIntakeAmountDay>> res = intakeAmountDaySv.getIntakeAmountDayLast(vo); return BaseResponseUtils.buildSuccess(res); pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/lossDay/LossDayCtrl.java
@@ -19,10 +19,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -59,7 +56,7 @@ }) @GetMapping(path = "/getLossDayHistory") @SsoAop() public BaseResponse<QueryResultVo<List<VoLossDay>>> getLossDayHistory(@RequestBody LossDayQueryVo vo) { public BaseResponse<QueryResultVo<List<VoLossDay>>> getLossDayHistory(@RequestParam LossDayQueryVo vo) { try { QueryResultVo<List<VoLossDay>> res = lossDaySv.getLossDayHistory(vo); return BaseResponseUtils.buildSuccess(res); @@ -86,7 +83,7 @@ }) @GetMapping(path = "/getLossDayLast") @SsoAop() public BaseResponse<QueryResultVo<List<VoLossDay>>> getLossDayLast(@RequestBody LossDayQueryVo vo) { public BaseResponse<QueryResultVo<List<VoLossDay>>> getLossDayLast(@RequestParam LossDayQueryVo vo) { try { QueryResultVo<List<VoLossDay>> res = lossDaySv.getLossDayLast(vo); return BaseResponseUtils.buildSuccess(res); pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java
@@ -3,10 +3,7 @@ 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.Com98Vo; import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com99Vo; import com.dy.common.mw.protocol.p206V1_0_0.downVos.ComA0Vo; 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.ComCd15Vo; import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo; @@ -38,6 +35,7 @@ import org.springframework.web.bind.annotation.*; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -500,6 +498,218 @@ } /** * 计划开阀定时关阀 * @param automaticClose * @param bindingResult * @return */ @PostMapping(path = "planed_open_timed_close", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> planedOpenTimedClose(@RequestBody @Valid AutomaticClose automaticClose, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = automaticClose.getIntakeId(); Long vcId = automaticClose.getVcId(); Date plannedOpenTime = automaticClose.getPlannedOpenTime(); Integer minutes = automaticClose.getMinutes(); Long operator = automaticClose.getOperator(); Long comId = idLongGenerator.generate(); Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); Integer day = Integer.parseInt(String.format("%td", plannedOpenTime)); Integer hour = Integer.parseInt(String.format("%tH", plannedOpenTime)); Integer minute = Integer.parseInt(String.format("%tM", plannedOpenTime)); /** * 如果农户选择了虚拟卡,则使用该虚拟卡 * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡 * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡 */ if(vcId == null) { vcId = commandSv.getVcIdByIntakeId(intakeId); if(vcId == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); } } // 虚拟卡ID换虚拟卡对象 VoVirtualCard vc = commandSv.getVcById(vcId); if(vc == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); } String vcNum = vc.getVcNum().toString(); Double moneyRemain = vc.getMoney(); // 获取水价 Double waterPrice = commandSv.getPrice(); // 取水口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 orgTag = job_rtu.getString("orgTag"); comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); // 生成订单号 String orderNo = generateOrderNo(); String commandCode = null; if(protocol.equals("p206V202404")) { return BaseResponseUtils.buildSuccess(); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_A1; // 创建视图 ComA1Vo param = new ComA1Vo(); param.setIcCardNo(vcNum); param.setMoneyRemain(moneyRemain); param.setWaterPrice(waterPrice); param.setMinutes(minutes); param.setYear(year); param.setMonth(month); param.setDay(day); param.setHour(hour); param.setMinute(minute); param.setOrderNo(orderNo); /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.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 { return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议"); } } /** * 计划开阀定量关阀 * @param automaticClose * @param bindingResult * @return */ @PostMapping(path = "planed_open_quantify_close", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> planedOpenQuantifyClose(@RequestBody @Valid AutomaticClose automaticClose, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = automaticClose.getIntakeId(); Long vcId = automaticClose.getVcId(); Date plannedOpenTime = automaticClose.getPlannedOpenTime(); Integer waterAmount = automaticClose.getWaterAmount(); Long operator = automaticClose.getOperator(); Long comId = idLongGenerator.generate(); Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); Integer day = Integer.parseInt(String.format("%td", plannedOpenTime)); Integer hour = Integer.parseInt(String.format("%tH", plannedOpenTime)); Integer minute = Integer.parseInt(String.format("%tM", plannedOpenTime)); /** * 如果农户选择了虚拟卡,则使用该虚拟卡 * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡 * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡 */ if(vcId == null) { vcId = commandSv.getVcIdByIntakeId(intakeId); if(vcId == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); } } // 虚拟卡ID换虚拟卡对象 VoVirtualCard vc = commandSv.getVcById(vcId); if(vc == null) { return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); } String vcNum = vc.getVcNum().toString(); Double moneyRemain = vc.getMoney(); // 获取水价 Double waterPrice = commandSv.getPrice(); // 取水口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 orgTag = job_rtu.getString("orgTag"); comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); // 生成订单号 String orderNo = generateOrderNo(); String commandCode = null; if(protocol.equals("p206V202404")) { return BaseResponseUtils.buildSuccess(); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_A2; // 创建视图 ComA2Vo param = new ComA2Vo(); param.setIcCardNo(vcNum); param.setMoneyRemain(moneyRemain); param.setWaterPrice(waterPrice); param.setWaterAmount(waterAmount); param.setYear(year); param.setMonth(month); param.setDay(day); param.setHour(hour); param.setMinute(minute); param.setOrderNo(orderNo); /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.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 { return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议"); } } /** * 根据操作员ID获取未关阀记录 * @param operator * @return pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
@@ -3,10 +3,7 @@ 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.Com98Vo; import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com99Vo; import com.dy.common.mw.protocol.p206V1_0_0.downVos.ComA0Vo; 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.ComCd15Vo; import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo; @@ -37,6 +34,7 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -499,6 +497,218 @@ } /** * 计划开阀定时关阀 * @param automaticClose * @param bindingResult * @return */ @PostMapping(path = "planed_open_timed_close", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> planedOpenTimedClose(@RequestBody @Valid AutomaticClose automaticClose, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = automaticClose.getIntakeId(); Long vcId = automaticClose.getVcId(); Date plannedOpenTime = automaticClose.getPlannedOpenTime(); Integer minutes = automaticClose.getMinutes(); Long operator = automaticClose.getOperator(); Long comId = idLongGenerator.generate(); Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); Integer day = Integer.parseInt(String.format("%td", plannedOpenTime)); Integer hour = Integer.parseInt(String.format("%tH", plannedOpenTime)); Integer minute = Integer.parseInt(String.format("%tM", plannedOpenTime)); /** * 如果农户选择了虚拟卡,则使用该虚拟卡 * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡 * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡 */ if(vcId == null) { vcId = commandSv.getVcIdByIntakeId(intakeId); if(vcId == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } } // 虚拟卡ID换虚拟卡对象 VoVirtualCard vc = commandSv.getVcById(vcId); if(vc == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } String vcNum = vc.getVcNum().toString(); Double moneyRemain = vc.getMoney(); // 获取水价 Double waterPrice = commandSv.getPrice(); // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); } 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 orderNo = generateOrderNo(); String commandCode = null; if(protocol.equals("p206V202404")) { return BaseResponseUtils.buildSuccess(); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_A1; // 创建视图 ComA1Vo param = new ComA1Vo(); param.setIcCardNo(vcNum); param.setMoneyRemain(moneyRemain); param.setWaterPrice(waterPrice); param.setMinutes(minutes); param.setYear(year); param.setMonth(month); param.setDay(day); param.setHour(hour); param.setMinute(minute); param.setOrderNo(orderNo); /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setVcId(vcId); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else { return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议"); } } /** * 计划开阀定量关阀 * @param automaticClose * @param bindingResult * @return */ @PostMapping(path = "planed_open_quantify_close", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public BaseResponse<Boolean> planedOpenQuantifyClose(@RequestBody @Valid AutomaticClose automaticClose, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = automaticClose.getIntakeId(); Long vcId = automaticClose.getVcId(); Date plannedOpenTime = automaticClose.getPlannedOpenTime(); Integer waterAmount = automaticClose.getWaterAmount(); Long operator = automaticClose.getOperator(); Long comId = idLongGenerator.generate(); Integer year = Integer.parseInt(String.format("%tY", plannedOpenTime)); Integer month = Integer.parseInt(String.format("%tm", plannedOpenTime)); Integer day = Integer.parseInt(String.format("%td", plannedOpenTime)); Integer hour = Integer.parseInt(String.format("%tH", plannedOpenTime)); Integer minute = Integer.parseInt(String.format("%tM", plannedOpenTime)); /** * 如果农户选择了虚拟卡,则使用该虚拟卡 * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡 * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡 */ if(vcId == null) { vcId = commandSv.getVcIdByIntakeId(intakeId); if(vcId == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } } // 虚拟卡ID换虚拟卡对象 VoVirtualCard vc = commandSv.getVcById(vcId); if(vc == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } String vcNum = vc.getVcNum().toString(); Double moneyRemain = vc.getMoney(); // 获取水价 Double waterPrice = commandSv.getPrice(); // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); } 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 orderNo = generateOrderNo(); String commandCode = null; if(protocol.equals("p206V202404")) { return BaseResponseUtils.buildSuccess(); } else if(protocol.equals("p206V1_0_1")) { // 获取功能码 commandCode = CodeV1_0_1.cd_A2; // 创建视图 ComA2Vo param = new ComA2Vo(); param.setIcCardNo(vcNum); param.setMoneyRemain(moneyRemain); param.setWaterPrice(waterPrice); param.setWaterAmount(waterAmount); param.setYear(year); param.setMonth(month); param.setDay(day); param.setHour(hour); param.setMinute(minute); param.setOrderNo(orderNo); /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)2); myParam.setCommandCode(commandCode); myParam.setCommandName(CodeV202404.getCodeName(commandCode)); myParam.setIntakeId(intakeId); myParam.setRtuAddr(rtuAddr); myParam.setProtocol(protocol); myParam.setVcId(vcId); myParam.setParam(param); myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); myParam.setOperator(operator); return dealWithCommandResult(myParam); } else { return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议"); } } /** * 根据操作员ID获取未关阀记录 * * @param operator pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/AutomaticClose.java
@@ -1,6 +1,9 @@ package com.dy.pipIrrWechat.command.dto; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; /** * @author ZhuBaoMin @@ -18,6 +21,12 @@ private Long vcId; /** * 计划开阀时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date plannedOpenTime; /** * 用水时长,拥有定时关阀 */ private Integer minutes;