From f4040d9bc0426f9075f68a2e26ee8732ab714ac1 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期二, 01 七月 2025 14:43:40 +0800 Subject: [PATCH] remote模块,增加表阀一体机协议的10、21、35、36、37、38命令功能 --- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdCtrl.java | 225 ++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdCtrl.java | 232 ++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdDto.java | 33 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdCtrl.java | 130 ++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdDto.java | 30 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdCtrl.java | 232 ++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdSv.java | 15 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdDto.java | 33 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdSv.java | 80 ++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd21/CdDto.java | 3 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdParam.java | 33 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdSv.java | 80 ++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdDto.java | 30 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdDto.java | 21 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdParam.java | 21 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdParam.java | 26 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdSv.java | 80 ++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdParam.java | 33 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdCtrl.java | 225 ++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdSv.java | 80 ++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdParam.java | 26 23 files changed, 1,673 insertions(+), 7 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdCtrl.java new file mode 100644 index 0000000..75d04c1 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdCtrl.java @@ -0,0 +1,130 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd10; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.aop.SsoAop; +import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo; +import com.dy.common.util.Callback; +import com.dy.common.util.IPUtils; +import com.dy.common.util.NumUtil; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrRemote.common.dto.DtoBase; +import com.dy.pipIrrRemote.monitor.common.ComCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: liurunyu + * @Date: 2025/5/15 10:42 + * @Description + */ +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "璁剧疆璁惧缁堢鍦板潃") +@RestController("p202404V201Cd10Ctrl") +@RequestMapping(path = "p202404V201/cd10") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends ComCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String ComCode = "10" ; + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, ComCode, dto, bindingResult); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType) + .rtuNewAddr(dto.rtuNewAddr)//鎺у埗鍣ㄦ柊鍦板潃 + .build(); + res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam ; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, null); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(DtoBase dto) { + if(dto != null){ + CdDto myo = (CdDto) dto ; + //鍦板潃绀轰緥 37142501020100013 + if(!NumUtil.isPlusIntNumber(myo.rtuNewAddr)){ + return "鎺у埗鍣ㄦ柊鍦板潃涓嶆纭�" ; + } + if(myo.rtuNewAddr.length() != 17 || myo.rtuNewAddr.startsWith("0")){ + return "鎺у埗鍣ㄦ柊鍦板潃涓嶆纭�" ; + } + } + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + msg = RtuSuccessMsg ; + }else { + String json = codeData.toJSONString(); + DataCdXyVo cvo = JSON.parseObject(json, DataCdXyVo.class) ; + if(cvo != null){ + msg = cvo.toStr(false) ; + }else{ + msg = RtuSuccessMsg ; + } + } + }else{ + msg = RtuSuccessMsg ; + } + return msg; + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdDto.java new file mode 100644 index 0000000..325e1e3 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdDto.java @@ -0,0 +1,21 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd10; + +import com.dy.pipIrrRemote.common.dto.DtoBase; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/5/15 10:42 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends DtoBase { + public static final long serialVersionUID = 202505151042001L; + @NotEmpty(message = "鎺у埗鍣ㄦ柊鍦板潃涓嶈兘涓虹┖") + public String rtuNewAddr ;//鎺у埗鍣ㄦ柊鍦板潃 +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdParam.java new file mode 100644 index 0000000..91521ba --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdParam.java @@ -0,0 +1,21 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd10; + +import com.dy.pipIrrRemote.monitor.common.CdParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/5/15 10:42 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends CdParameter { + public Integer channel ;//IP閫氶亾鍙�(鍙栧�艰寖鍥� 1銆�2). + public String rtuNewAddr ;//鎺у埗鍣ㄦ柊鍦板潃 + } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdSv.java new file mode 100644 index 0000000..ebc5670 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd10/CdSv.java @@ -0,0 +1,15 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd10; + +import com.dy.pipIrrRemote.monitor.common.ComSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Author: liurunyu + * @Date: 2025/5/15 10:42 + * @Description + */ +@Slf4j +@Service("cd10Sv") +public class CdSv extends ComSv { +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd21/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd21/CdDto.java index cf0da7a..345ff18 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd21/CdDto.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd21/CdDto.java @@ -1,6 +1,7 @@ package com.dy.pipIrrRemote.monitor.p202404V201.cd21; import com.dy.pipIrrRemote.common.dto.DtoBase; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; @@ -17,7 +18,7 @@ public static final long serialVersionUID = 202505151042001L; @NotNull(message = "IP閫氶亾鍙蜂笉鑳戒负绌�") public Integer channel ;//IP閫氶亾鍙�(鍙栧�艰寖鍥� 1銆�2). - @NotNull(message = "IP涓嶈兘涓虹┖") + @NotEmpty(message = "IP涓嶈兘涓虹┖") public String ip ;//IP锛堜緥濡� 125.235.35.89锛� @NotNull(message = "绔彛鍙蜂笉鑳戒负绌�") public Integer port ;//绔彛鍙凤紙0~65536锛� diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdCtrl.java new file mode 100644 index 0000000..101e22d --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdCtrl.java @@ -0,0 +1,225 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd35; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.aop.SsoAop; +import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo; +import com.dy.common.util.Callback; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.common.dto.DtoBase; +import com.dy.pipIrrRemote.monitor.common.ComCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 08:30 + * @Description + */ +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "APP绔繙绋嬪畾鏃跺紑鍚按娉�/闃�闂�") +@RestController("p202404V201Cd35Ctrl") +@RequestMapping(path = "p202404V201/cd35") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends ComCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String ComCode = "35" ; + + private static final Double MaxRemainMoney = com.dy.pipIrrRemote.monitor.p202404V201.cd92.CdCtrl.MaxRemainMoney;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, ComCode, dto, bindingResult); + if (res == null) { + if(dto.vtCardId == null || "".equals(dto.vtCardId.trim())){ + Long vtId = sv.selectVcIdByIntakeId(dto.getIntakeId()) ; + if(vtId == null) { + return BaseResponseUtils.buildErrorMsg("璇烽�夋嫨涓�寮犺櫄鎷熷崱"); + }else{ + dto.vtCardId = vtId.toString() ; + } + } + VoVirtualCard vcPo = sv.selectClientVtCardById(Long.parseLong(dto.vtCardId.trim())) ; + if(vcPo == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒板啘鎴疯櫄鎷熷崱") ; + } + if(vcPo.getInUse().booleanValue()){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱宸茬粡琚崰鐢紝涓嶈兘鍐嶅簲鐢ㄥ叾寮�闃�") ; + } + if(vcPo.getMoney() <= 0.0){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濅负0锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + if(vcPo.getMoney() >= MaxRemainMoney){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + MaxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + Double waterPrice = sv.selectWaterPrice() ; + if(waterPrice == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒版按浠�") ; + } + String orderNo = RandomStringUtils.randomNumeric(16) ; + CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType) + .icCardNo("" + vcPo.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + .waterRemain(0.0)//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .moneyRemain(vcPo.getMoney())//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .waterPrice(waterPrice)//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .elePrice(0.0)//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .orderNo(orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + .minutes(dto.minutes)//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛� + .build(); + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, new Callback() { + @Override + public void call(Object obj) { + Boolean success = (Boolean) obj; + if(success){ + // 娣诲姞甯哥敤鍙栨按鍙f垨鏇存柊浣跨敤淇℃伅 + sv.addOrUpdateOftenUseIntake(dto.getOperator(), dto.getIntakeId()) ; + //寮�闃�鎴愬姛锛岃櫄鎷熷崱璁板綍涓婃爣璁板凡琚崰鐢� + sv.setVcUsed(vcPo.getId(), dto.getIntakeId()); + //璁板綍寮�闃�鍛戒护锛屼互澶囪繙绋嬪叧闃� + RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId()); + if(comOpen == null){ + RmCommandOpen po = newRmCommandOpen(comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.saveCommandOpen(po); + }else{ + setRmCommandOpen(comOpen, comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.updateCommandOpen(comOpen); + } + } + } + @Override + public void call(Object... objs) { + } + @Override + public void exception(Exception e) { + } + }); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(DtoBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + msg = RtuSuccessMsg ; + }else { + String json = codeData.toJSONString(); + DataCd92_A2Vo cvo = JSON.parseObject(json, DataCd92_A2Vo.class) ; + if(cvo != null){ + if(callback != null){ + if(cvo.opResult != null && cvo.opResult.byteValue() == (byte)1){ + callback.call(true);//寮�闃�鎴愬姛 + }else{ + callback.call(false);//寮�闃�澶辫触 + } + } + msg = cvo.toStr(false) ; + }else{ + msg = RtuSuccessMsg ; + } + } + }else{ + msg = RtuSuccessMsg ; + } + return msg; + } + + private RmCommandOpen newRmCommandOpen(Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + RmCommandOpen po = new RmCommandOpen() ; + this.setRmCommandOpen(po, comId, protocol, comCode, comName, intakeId, rtuAddr, vcNum, orderNo, operator); + return po ; + } + private void setRmCommandOpen(RmCommandOpen po, + Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + po.comId = comId ; + po.protocol = protocol ; + po.commandCode = comCode ; + po.commandName = comName ; + po.intakeId = intakeId ; + po.rtuAddr = rtuAddr ; + po.vcNum = vcNum ; + po.orderNo = orderNo ; + po.operator = operator ; + po.sendTime = new Date() ; + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdDto.java new file mode 100644 index 0000000..95e4eb3 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdDto.java @@ -0,0 +1,30 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd35; + +import com.dy.pipIrrRemote.common.dto.DtoBase; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 08:30 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends DtoBase { + + public static final long serialVersionUID = 202505130833001L; + + @NotEmpty(message = "鐢ㄦ埛铏氭嫙鍗′笉鑳戒负绌�") + public String vtCardId ;//鐢ㄦ埛鍗�(铏氭嫙鍗�)搴忓垪鍙凤紙17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + + @NotNull(message = "鐢ㄦ按鏃堕暱涓嶈兘涓虹┖") + @Min(value = 1, message = "鐢ㄦ按鏃堕暱涓嶈兘灏忎簬1") + @Max(value = 9999, message = "鐢ㄦ按鏃堕暱涓嶈兘澶т簬9999") + public Integer minutes ;//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdParam.java new file mode 100644 index 0000000..db66565 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdParam.java @@ -0,0 +1,26 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd35; + +import com.dy.pipIrrRemote.monitor.common.CdParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 08:30 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends CdParameter { + public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99 + public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + public Integer minutes ;//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdSv.java new file mode 100644 index 0000000..32bbf49 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd35/CdSv.java @@ -0,0 +1,80 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd35; + +import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; +import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; +import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper; +import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.monitor.common.ComSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 08:30 + * @Description + */ +@Slf4j +@Service("cd35Sv") +public class CdSv extends ComSv { + @Autowired + protected SeVirtualCardMapper seVirtualCardDao ; + @Autowired + protected PrWaterPriceMapper prWaterPriceDao ; + @Autowired + protected PrIntakeVcMapper prIntakeVcDao ; + @Autowired + protected RmCommandOpenMapper rmCommandOpenDao ; + + public VoVirtualCard selectClientVtCardById(Long id){ + return seVirtualCardDao.getVcById(id) ; + } + public Double selectWaterPrice(){ + return prWaterPriceDao.getPrice() ; + } + /** + * 鏍规嵁鍙栨按鍙D鑾峰彇涓庝箣缁戝畾铏氭嫙鍗D + * @param intakeId + * @return + */ + public Long selectVcIdByIntakeId(Long intakeId) { + return prIntakeVcDao.getVcIdByIntakeId(intakeId); + } + /** + * 璁剧疆铏氭嫙鍗¤鍗犵敤 + */ + @Transactional(rollbackFor = Exception.class) + public void setVcUsed(Long id, Long intakeId){ + SeVirtualCard po = new SeVirtualCard() ; + po.setId(id); + po.setIntakeId(intakeId); + po.setInUse((byte)1); + po.setOpenTime(new Date()); + seVirtualCardDao.updateByPrimaryKeySelective(po); + } + + public RmCommandOpen getCommandOpen(Long intakeId){ + List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ; + if(list != null && list.size() > 0){ + return list.get(0) ; + } + return null ; + } + + @Transactional(rollbackFor = Exception.class) + public void saveCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.insert(po) ; + } + + @Transactional(rollbackFor = Exception.class) + public void updateCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.updateByPrimaryKeySelective(po) ; + } +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdCtrl.java new file mode 100644 index 0000000..7073b2e --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdCtrl.java @@ -0,0 +1,225 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd36; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.aop.SsoAop; +import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo; +import com.dy.common.util.Callback; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.common.dto.DtoBase; +import com.dy.pipIrrRemote.monitor.common.ComCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:01 + * @Description + */ +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "APP绔繙绋嬪畾閲忓紑鍚按娉�/闃�闂�") +@RestController("p202404V201Cd36Ctrl") +@RequestMapping(path = "p202404V201/cd36") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends ComCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String ComCode = "36" ; + + private static final Double MaxRemainMoney = com.dy.pipIrrRemote.monitor.p202404V201.cd92.CdCtrl.MaxRemainMoney;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, ComCode, dto, bindingResult); + if (res == null) { + if(dto.vtCardId == null || "".equals(dto.vtCardId.trim())){ + Long vtId = sv.selectVcIdByIntakeId(dto.getIntakeId()) ; + if(vtId == null) { + return BaseResponseUtils.buildErrorMsg("璇烽�夋嫨涓�寮犺櫄鎷熷崱"); + }else{ + dto.vtCardId = vtId.toString() ; + } + } + VoVirtualCard vcPo = sv.selectClientVtCardById(Long.parseLong(dto.vtCardId.trim())) ; + if(vcPo == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒板啘鎴疯櫄鎷熷崱") ; + } + if(vcPo.getInUse().booleanValue()){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱宸茬粡琚崰鐢紝涓嶈兘鍐嶅簲鐢ㄥ叾寮�闃�") ; + } + if(vcPo.getMoney() <= 0.0){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濅负0锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + if(vcPo.getMoney() >= MaxRemainMoney){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + MaxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + Double waterPrice = sv.selectWaterPrice() ; + if(waterPrice == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒版按浠�") ; + } + String orderNo = RandomStringUtils.randomNumeric(16) ; + CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType) + .icCardNo("" + vcPo.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + .waterRemain(0.0)//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .moneyRemain(vcPo.getMoney())//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .waterPrice(waterPrice)//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .elePrice(0.0)//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .orderNo(orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + .waterAmount(dto.waterAmount)//棰勭敤姘撮噺锛�0~9999 m3锛� + .build(); + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, new Callback() { + @Override + public void call(Object obj) { + Boolean success = (Boolean) obj; + if(success){ + // 娣诲姞甯哥敤鍙栨按鍙f垨鏇存柊浣跨敤淇℃伅 + sv.addOrUpdateOftenUseIntake(dto.getOperator(), dto.getIntakeId()) ; + //寮�闃�鎴愬姛锛岃櫄鎷熷崱璁板綍涓婃爣璁板凡琚崰鐢� + sv.setVcUsed(vcPo.getId(), dto.getIntakeId()); + //璁板綍寮�闃�鍛戒护锛屼互澶囪繙绋嬪叧闃� + RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId()); + if(comOpen == null){ + RmCommandOpen po = newRmCommandOpen(comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.saveCommandOpen(po); + }else{ + setRmCommandOpen(comOpen, comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.updateCommandOpen(comOpen); + } + } + } + @Override + public void call(Object... objs) { + } + @Override + public void exception(Exception e) { + } + }); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(DtoBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + msg = RtuSuccessMsg ; + }else { + String json = codeData.toJSONString(); + DataCd92_A2Vo cvo = JSON.parseObject(json, DataCd92_A2Vo.class) ; + if(cvo != null){ + if(callback != null){ + if(cvo.opResult != null && cvo.opResult.byteValue() == (byte)1){ + callback.call(true);//寮�闃�鎴愬姛 + }else{ + callback.call(false);//寮�闃�澶辫触 + } + } + msg = cvo.toStr(false) ; + }else{ + msg = RtuSuccessMsg ; + } + } + }else{ + msg = RtuSuccessMsg ; + } + return msg; + } + + private RmCommandOpen newRmCommandOpen(Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + RmCommandOpen po = new RmCommandOpen() ; + this.setRmCommandOpen(po, comId, protocol, comCode, comName, intakeId, rtuAddr, vcNum, orderNo, operator); + return po ; + } + private void setRmCommandOpen(RmCommandOpen po, + Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + po.comId = comId ; + po.protocol = protocol ; + po.commandCode = comCode ; + po.commandName = comName ; + po.intakeId = intakeId ; + po.rtuAddr = rtuAddr ; + po.vcNum = vcNum ; + po.orderNo = orderNo ; + po.operator = operator ; + po.sendTime = new Date() ; + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdDto.java new file mode 100644 index 0000000..92fd113 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdDto.java @@ -0,0 +1,30 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd36; + +import com.dy.pipIrrRemote.common.dto.DtoBase; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:01 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends DtoBase { + + public static final long serialVersionUID = 202505130833001L; + + @NotEmpty(message = "鐢ㄦ埛铏氭嫙鍗′笉鑳戒负绌�") + public String vtCardId ;//鐢ㄦ埛鍗�(铏氭嫙鍗�)搴忓垪鍙凤紙17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + + @NotNull(message = "鐢ㄦ按閲忎笉鑳戒负绌�") + @Min(value = 1, message = "鐢ㄦ按閲忎笉鑳藉皬浜�1") + @Max(value = 9999, message = "鐢ㄦ按閲忎笉鑳藉ぇ浜�9999") + public Integer waterAmount ;//棰勭敤姘撮噺锛�0~9999 m3锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdParam.java new file mode 100644 index 0000000..7fb5b22 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdParam.java @@ -0,0 +1,26 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd36; + +import com.dy.pipIrrRemote.monitor.common.CdParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:01 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends CdParameter { + public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99 + public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + public Integer waterAmount ;//棰勭敤姘撮噺锛�0~9999 m3锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdSv.java new file mode 100644 index 0000000..d8f2c3f --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd36/CdSv.java @@ -0,0 +1,80 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd36; + +import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; +import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; +import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper; +import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.monitor.common.ComSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:01 + * @Description + */ +@Slf4j +@Service("cd36Sv") +public class CdSv extends ComSv { + @Autowired + protected SeVirtualCardMapper seVirtualCardDao ; + @Autowired + protected PrWaterPriceMapper prWaterPriceDao ; + @Autowired + protected PrIntakeVcMapper prIntakeVcDao ; + @Autowired + protected RmCommandOpenMapper rmCommandOpenDao ; + + public VoVirtualCard selectClientVtCardById(Long id){ + return seVirtualCardDao.getVcById(id) ; + } + public Double selectWaterPrice(){ + return prWaterPriceDao.getPrice() ; + } + /** + * 鏍规嵁鍙栨按鍙D鑾峰彇涓庝箣缁戝畾铏氭嫙鍗D + * @param intakeId + * @return + */ + public Long selectVcIdByIntakeId(Long intakeId) { + return prIntakeVcDao.getVcIdByIntakeId(intakeId); + } + /** + * 璁剧疆铏氭嫙鍗¤鍗犵敤 + */ + @Transactional(rollbackFor = Exception.class) + public void setVcUsed(Long id, Long intakeId){ + SeVirtualCard po = new SeVirtualCard() ; + po.setId(id); + po.setIntakeId(intakeId); + po.setInUse((byte)1); + po.setOpenTime(new Date()); + seVirtualCardDao.updateByPrimaryKeySelective(po); + } + + public RmCommandOpen getCommandOpen(Long intakeId){ + List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ; + if(list != null && list.size() > 0){ + return list.get(0) ; + } + return null ; + } + + @Transactional(rollbackFor = Exception.class) + public void saveCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.insert(po) ; + } + + @Transactional(rollbackFor = Exception.class) + public void updateCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.updateByPrimaryKeySelective(po) ; + } +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdCtrl.java new file mode 100644 index 0000000..c282baf --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdCtrl.java @@ -0,0 +1,232 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd37; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.aop.SsoAop; +import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo; +import com.dy.common.util.Callback; +import com.dy.common.util.DateTime; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.common.dto.DtoBase; +import com.dy.pipIrrRemote.monitor.common.ComCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:30 + * @Description + */ +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "APP绔鍒掕繙绋嬪畾鏃跺紑鍚按娉�/闃�闂�") +@RestController("p202404V201Cd37Ctrl") +@RequestMapping(path = "p202404V201/cd37") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends ComCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String ComCode = "37" ; + + private static final Double MaxRemainMoney = com.dy.pipIrrRemote.monitor.p202404V201.cd92.CdCtrl.MaxRemainMoney;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, ComCode, dto, bindingResult); + if (res == null) { + if(dto.vtCardId == null || "".equals(dto.vtCardId.trim())){ + Long vtId = sv.selectVcIdByIntakeId(dto.getIntakeId()) ; + if(vtId == null) { + return BaseResponseUtils.buildErrorMsg("璇烽�夋嫨涓�寮犺櫄鎷熷崱"); + }else{ + dto.vtCardId = vtId.toString() ; + } + } + VoVirtualCard vcPo = sv.selectClientVtCardById(Long.parseLong(dto.vtCardId.trim())) ; + if(vcPo == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒板啘鎴疯櫄鎷熷崱") ; + } + if(vcPo.getInUse().booleanValue()){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱宸茬粡琚崰鐢紝涓嶈兘鍐嶅簲鐢ㄥ叾寮�闃�") ; + } + if(vcPo.getMoney() <= 0.0){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濅负0锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + if(vcPo.getMoney() >= MaxRemainMoney){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + MaxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + Double waterPrice = sv.selectWaterPrice() ; + if(waterPrice == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒版按浠�") ; + } + String orderNo = RandomStringUtils.randomNumeric(16) ; + int[] ymdHms = DateTime.yyyy_MM_dd_HH_MM_SS_2_ymdhmsGroup(dto.ymdHms) ; + CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType) + .icCardNo("" + vcPo.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + .waterRemain(0.0)//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .moneyRemain(vcPo.getMoney())//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .waterPrice(waterPrice)//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .elePrice(0.0)//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .orderNo(orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + .year(ymdHms[0])//骞� + .month(ymdHms[1])//鏈� + .day(ymdHms[2])//鏃� + .hour(ymdHms[3])//鏃� + .minute(ymdHms[4])//鍒� + .minutes(dto.minutes)//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛� + .build(); + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, new Callback() { + @Override + public void call(Object obj) { + Boolean success = (Boolean) obj; + if(success){ + // 娣诲姞甯哥敤鍙栨按鍙f垨鏇存柊浣跨敤淇℃伅 + sv.addOrUpdateOftenUseIntake(dto.getOperator(), dto.getIntakeId()) ; + //寮�闃�鎴愬姛锛岃櫄鎷熷崱璁板綍涓婃爣璁板凡琚崰鐢� + sv.setVcUsed(vcPo.getId(), dto.getIntakeId()); + //璁板綍寮�闃�鍛戒护锛屼互澶囪繙绋嬪叧闃� + RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId()); + if(comOpen == null){ + RmCommandOpen po = newRmCommandOpen(comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.saveCommandOpen(po); + }else{ + setRmCommandOpen(comOpen, comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.updateCommandOpen(comOpen); + } + } + } + @Override + public void call(Object... objs) { + } + @Override + public void exception(Exception e) { + } + }); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(DtoBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + msg = RtuSuccessMsg ; + }else { + String json = codeData.toJSONString(); + DataCd92_A2Vo cvo = JSON.parseObject(json, DataCd92_A2Vo.class) ; + if(cvo != null){ + if(callback != null){ + if(cvo.opResult != null && cvo.opResult.byteValue() == (byte)1){ + callback.call(true);//寮�闃�鎴愬姛 + }else{ + callback.call(false);//寮�闃�澶辫触 + } + } + msg = cvo.toStr(false) ; + }else{ + msg = RtuSuccessMsg ; + } + } + }else{ + msg = RtuSuccessMsg ; + } + return msg; + } + + private RmCommandOpen newRmCommandOpen(Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + RmCommandOpen po = new RmCommandOpen() ; + this.setRmCommandOpen(po, comId, protocol, comCode, comName, intakeId, rtuAddr, vcNum, orderNo, operator); + return po ; + } + private void setRmCommandOpen(RmCommandOpen po, + Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + po.comId = comId ; + po.protocol = protocol ; + po.commandCode = comCode ; + po.commandName = comName ; + po.intakeId = intakeId ; + po.rtuAddr = rtuAddr ; + po.vcNum = vcNum ; + po.orderNo = orderNo ; + po.operator = operator ; + po.sendTime = new Date() ; + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdDto.java new file mode 100644 index 0000000..568c6ee --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdDto.java @@ -0,0 +1,33 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd37; + +import com.dy.pipIrrRemote.common.dto.DtoBase; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:30 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends DtoBase { + + public static final long serialVersionUID = 202505130833001L; + + @NotEmpty(message = "鐢ㄦ埛铏氭嫙鍗′笉鑳戒负绌�") + public String vtCardId ;//鐢ㄦ埛鍗�(铏氭嫙鍗�)搴忓垪鍙凤紙17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + + @NotEmpty(message = "璁″垝寮�闃�鏃堕棿涓嶈兘涓虹┖") + public String ymdHms ;//骞存湀鏃ユ椂鍒嗙锛堟牸寮弝yyy-MM-dd HH:mm:SS锛� + + @NotNull(message = "鐢ㄦ按鏃堕暱涓嶈兘涓虹┖") + @Min(value = 1, message = "鐢ㄦ按鏃堕暱涓嶈兘灏忎簬1") + @Max(value = 9999, message = "鐢ㄦ按鏃堕暱涓嶈兘澶т簬9999") + public Integer minutes ;//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdParam.java new file mode 100644 index 0000000..b5ba5dd --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdParam.java @@ -0,0 +1,33 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd37; + +import com.dy.pipIrrRemote.monitor.common.CdParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:30 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends CdParameter { + public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99 + public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + + public Integer year ; //璁″垝寮�闃�鏃堕棿---骞� + public Integer month ;//璁″垝寮�闃�鏃堕棿---鏈� + public Integer day ;//璁″垝寮�闃�鏃堕棿---鏃� + public Integer hour ;//璁″垝寮�闃�鏃堕棿---鏃� + public Integer minute ;//璁″垝寮�闃�鏃堕棿---鍒� + + public Integer minutes ;//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdSv.java new file mode 100644 index 0000000..ed7db47 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd37/CdSv.java @@ -0,0 +1,80 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd37; + +import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; +import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; +import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper; +import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.monitor.common.ComSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:30 + * @Description + */ +@Slf4j +@Service("cd37Sv") +public class CdSv extends ComSv { + @Autowired + protected SeVirtualCardMapper seVirtualCardDao ; + @Autowired + protected PrWaterPriceMapper prWaterPriceDao ; + @Autowired + protected PrIntakeVcMapper prIntakeVcDao ; + @Autowired + protected RmCommandOpenMapper rmCommandOpenDao ; + + public VoVirtualCard selectClientVtCardById(Long id){ + return seVirtualCardDao.getVcById(id) ; + } + public Double selectWaterPrice(){ + return prWaterPriceDao.getPrice() ; + } + /** + * 鏍规嵁鍙栨按鍙D鑾峰彇涓庝箣缁戝畾铏氭嫙鍗D + * @param intakeId + * @return + */ + public Long selectVcIdByIntakeId(Long intakeId) { + return prIntakeVcDao.getVcIdByIntakeId(intakeId); + } + /** + * 璁剧疆铏氭嫙鍗¤鍗犵敤 + */ + @Transactional(rollbackFor = Exception.class) + public void setVcUsed(Long id, Long intakeId){ + SeVirtualCard po = new SeVirtualCard() ; + po.setId(id); + po.setIntakeId(intakeId); + po.setInUse((byte)1); + po.setOpenTime(new Date()); + seVirtualCardDao.updateByPrimaryKeySelective(po); + } + + public RmCommandOpen getCommandOpen(Long intakeId){ + List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ; + if(list != null && list.size() > 0){ + return list.get(0) ; + } + return null ; + } + + @Transactional(rollbackFor = Exception.class) + public void saveCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.insert(po) ; + } + + @Transactional(rollbackFor = Exception.class) + public void updateCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.updateByPrimaryKeySelective(po) ; + } +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdCtrl.java new file mode 100644 index 0000000..a900eca --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdCtrl.java @@ -0,0 +1,232 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd38; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.aop.SsoAop; +import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo; +import com.dy.common.util.Callback; +import com.dy.common.util.DateTime; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.common.dto.DtoBase; +import com.dy.pipIrrRemote.monitor.common.ComCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:47 + * @Description + */ +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "APP绔繙绋嬭鍒掑畾閲忓紑鍚按娉�/闃�闂�") +@RestController("p202404V201Cd38Ctrl") +@RequestMapping(path = "p202404V201/cd38") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends ComCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String ComCode = "38" ; + + private static final Double MaxRemainMoney = com.dy.pipIrrRemote.monitor.p202404V201.cd92.CdCtrl.MaxRemainMoney;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, ComCode, dto, bindingResult); + if (res == null) { + if(dto.vtCardId == null || "".equals(dto.vtCardId.trim())){ + Long vtId = sv.selectVcIdByIntakeId(dto.getIntakeId()) ; + if(vtId == null) { + return BaseResponseUtils.buildErrorMsg("璇烽�夋嫨涓�寮犺櫄鎷熷崱"); + }else{ + dto.vtCardId = vtId.toString() ; + } + } + VoVirtualCard vcPo = sv.selectClientVtCardById(Long.parseLong(dto.vtCardId.trim())) ; + if(vcPo == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒板啘鎴疯櫄鎷熷崱") ; + } + if(vcPo.getInUse().booleanValue()){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱宸茬粡琚崰鐢紝涓嶈兘鍐嶅簲鐢ㄥ叾寮�闃�") ; + } + if(vcPo.getMoney() <= 0.0){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濅负0锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + if(vcPo.getMoney() >= MaxRemainMoney){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + MaxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + } + Double waterPrice = sv.selectWaterPrice() ; + if(waterPrice == null){ + return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒版按浠�") ; + } + String orderNo = RandomStringUtils.randomNumeric(16) ; + int[] ymdHms = DateTime.yyyy_MM_dd_HH_MM_SS_2_ymdhmsGroup(dto.ymdHms) ; + CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType) + .icCardNo("" + vcPo.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + .waterRemain(0.0)//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .moneyRemain(vcPo.getMoney())//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + .waterPrice(waterPrice)//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .elePrice(0.0)//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + .orderNo(orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + .year(ymdHms[0])//骞� + .month(ymdHms[1])//鏈� + .day(ymdHms[2])//鏃� + .hour(ymdHms[3])//鏃� + .minute(ymdHms[4])//鍒� + .waterAmount(dto.waterAmount)//棰勭敤姘撮噺锛�0~9999 m3锛� + .build(); + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, new Callback() { + @Override + public void call(Object obj) { + Boolean success = (Boolean) obj; + if(success){ + // 娣诲姞甯哥敤鍙栨按鍙f垨鏇存柊浣跨敤淇℃伅 + sv.addOrUpdateOftenUseIntake(dto.getOperator(), dto.getIntakeId()) ; + //寮�闃�鎴愬姛锛岃櫄鎷熷崱璁板綍涓婃爣璁板凡琚崰鐢� + sv.setVcUsed(vcPo.getId(), dto.getIntakeId()); + //璁板綍寮�闃�鍛戒护锛屼互澶囪繙绋嬪叧闃� + RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId()); + if(comOpen == null){ + RmCommandOpen po = newRmCommandOpen(comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.saveCommandOpen(po); + }else{ + setRmCommandOpen(comOpen, comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ; + sv.updateCommandOpen(comOpen); + } + } + } + @Override + public void call(Object... objs) { + } + @Override + public void exception(Exception e) { + } + }); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(DtoBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + msg = RtuSuccessMsg ; + }else { + String json = codeData.toJSONString(); + DataCd92_A2Vo cvo = JSON.parseObject(json, DataCd92_A2Vo.class) ; + if(cvo != null){ + if(callback != null){ + if(cvo.opResult != null && cvo.opResult.byteValue() == (byte)1){ + callback.call(true);//寮�闃�鎴愬姛 + }else{ + callback.call(false);//寮�闃�澶辫触 + } + } + msg = cvo.toStr(false) ; + }else{ + msg = RtuSuccessMsg ; + } + } + }else{ + msg = RtuSuccessMsg ; + } + return msg; + } + + private RmCommandOpen newRmCommandOpen(Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + RmCommandOpen po = new RmCommandOpen() ; + this.setRmCommandOpen(po, comId, protocol, comCode, comName, intakeId, rtuAddr, vcNum, orderNo, operator); + return po ; + } + private void setRmCommandOpen(RmCommandOpen po, + Long comId, + String protocol, + String comCode, + String comName, + Long intakeId, + String rtuAddr, + Long vcNum, + String orderNo, + Long operator){ + po.comId = comId ; + po.protocol = protocol ; + po.commandCode = comCode ; + po.commandName = comName ; + po.intakeId = intakeId ; + po.rtuAddr = rtuAddr ; + po.vcNum = vcNum ; + po.orderNo = orderNo ; + po.operator = operator ; + po.sendTime = new Date() ; + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdDto.java new file mode 100644 index 0000000..67027c3 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdDto.java @@ -0,0 +1,33 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd38; + +import com.dy.pipIrrRemote.common.dto.DtoBase; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:47 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends DtoBase { + + public static final long serialVersionUID = 202505130833001L; + + @NotEmpty(message = "鐢ㄦ埛铏氭嫙鍗′笉鑳戒负绌�") + public String vtCardId ;//鐢ㄦ埛鍗�(铏氭嫙鍗�)搴忓垪鍙凤紙17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + + @NotEmpty(message = "璁″垝寮�闃�鏃堕棿涓嶈兘涓虹┖") + public String ymdHms ;//骞存湀鏃ユ椂鍒嗙锛堟牸寮弝yyy-MM-dd HH:mm:SS锛� + + @NotNull(message = "鐢ㄦ按閲忎笉鑳戒负绌�") + @Min(value = 1, message = "鐢ㄦ按閲忎笉鑳藉皬浜�1") + @Max(value = 9999, message = "鐢ㄦ按閲忎笉鑳藉ぇ浜�9999") + public Integer waterAmount ;//棰勭敤姘撮噺锛�0~9999 m3锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdParam.java new file mode 100644 index 0000000..f96de36 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdParam.java @@ -0,0 +1,33 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd38; + +import com.dy.pipIrrRemote.monitor.common.CdParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:47 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends CdParameter { + public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛� + public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99 + public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99 + public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣 + public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級 + + public Integer year ; //璁″垝寮�闃�鏃堕棿---骞� + public Integer month ;//璁″垝寮�闃�鏃堕棿---鏈� + public Integer day ;//璁″垝寮�闃�鏃堕棿---鏃� + public Integer hour ;//璁″垝寮�闃�鏃堕棿---鏃� + public Integer minute ;//璁″垝寮�闃�鏃堕棿---鍒� + + public Integer waterAmount ;//棰勭敤姘撮噺锛�0~9999 m3锛� +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdSv.java new file mode 100644 index 0000000..281338b --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd38/CdSv.java @@ -0,0 +1,80 @@ +package com.dy.pipIrrRemote.monitor.p202404V201.cd38; + +import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; +import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; +import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper; +import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; +import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; +import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.monitor.common.ComSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * @Author: liurunyu + * @Date: 2025/6/30 9:47 + * @Description + */ +@Slf4j +@Service("cd38Sv") +public class CdSv extends ComSv { + @Autowired + protected SeVirtualCardMapper seVirtualCardDao ; + @Autowired + protected PrWaterPriceMapper prWaterPriceDao ; + @Autowired + protected PrIntakeVcMapper prIntakeVcDao ; + @Autowired + protected RmCommandOpenMapper rmCommandOpenDao ; + + public VoVirtualCard selectClientVtCardById(Long id){ + return seVirtualCardDao.getVcById(id) ; + } + public Double selectWaterPrice(){ + return prWaterPriceDao.getPrice() ; + } + /** + * 鏍规嵁鍙栨按鍙D鑾峰彇涓庝箣缁戝畾铏氭嫙鍗D + * @param intakeId + * @return + */ + public Long selectVcIdByIntakeId(Long intakeId) { + return prIntakeVcDao.getVcIdByIntakeId(intakeId); + } + /** + * 璁剧疆铏氭嫙鍗¤鍗犵敤 + */ + @Transactional(rollbackFor = Exception.class) + public void setVcUsed(Long id, Long intakeId){ + SeVirtualCard po = new SeVirtualCard() ; + po.setId(id); + po.setIntakeId(intakeId); + po.setInUse((byte)1); + po.setOpenTime(new Date()); + seVirtualCardDao.updateByPrimaryKeySelective(po); + } + + public RmCommandOpen getCommandOpen(Long intakeId){ + List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ; + if(list != null && list.size() > 0){ + return list.get(0) ; + } + return null ; + } + + @Transactional(rollbackFor = Exception.class) + public void saveCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.insert(po) ; + } + + @Transactional(rollbackFor = Exception.class) + public void updateCommandOpen(RmCommandOpen po){ + rmCommandOpenDao.updateByPrimaryKeySelective(po) ; + } +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java index bbad1d9..bcb00a2 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java @@ -45,7 +45,7 @@ private static final String ComCode = "92" ; - private static final Double maxRemainMoney = 9999.9999D ;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� + public static final Double MaxRemainMoney = 9999.9999D ;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� @Autowired private CdSv sv ; @@ -83,8 +83,8 @@ if(vcPo.getMoney() <= 0.0){ return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濅负0锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; } - if(vcPo.getMoney() >= maxRemainMoney){ - return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + maxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + if(vcPo.getMoney() >= MaxRemainMoney){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + MaxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; } Double waterPrice = sv.selectWaterPrice() ; if(waterPrice == null){ diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java index 2cb9cd0..e1acabb 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java @@ -45,7 +45,7 @@ private static final String ComCode = "A2" ; - private static final Double maxRemainMoney = 9999.9999D ;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� + private static final Double MaxRemainMoney = com.dy.pipIrrRemote.monitor.p202404V201.cd92.CdCtrl.MaxRemainMoney;//鍗忚鏀寔鐨勫墿浣欓噾棰濇渶澶у�� @Autowired private CdSv sv ; @@ -83,8 +83,8 @@ if(vcPo.getMoney() <= 0.0){ return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濅负0锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; } - if(vcPo.getMoney() >= maxRemainMoney){ - return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + maxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; + if(vcPo.getMoney() >= MaxRemainMoney){ + return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濆ぇ浜庡崗璁敮鎸佺殑鏈�澶у��" + MaxRemainMoney + "锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ; } Double waterPrice = sv.selectWaterPrice() ; if(waterPrice == null){ -- Gitblit v1.8.0