| | |
| | | public static final String cd_39 = "39" ;//设置电池电压报警值 |
| | | public static final String cd_3A = "3A" ;//设置阀门堵转电流 |
| | | public static final String cd_3B = "3B" ;//设置阀门超时时间 |
| | | public static final String cd_3C = "3C" ;//设置自报周期(未实现) |
| | | public static final String cd_3C = "3C" ;//设置自报周期 |
| | | public static final String cd_3D = "3D" ;//设置阶梯水价 |
| | | public static final String cd_3E = "3E" ;//设置黑名单(未实现) |
| | | public static final String cd_50 = "50" ;//查询遥测站终端地址 |
| | |
| | | public static final String cd_81 = "81" ;//随机自报报 |
| | | public static final String cd_83 = "83" ;//遥测站开关阀自报 |
| | | public static final String cd_84 = "84" ;//开阀工作报 |
| | | public static final String cd_85 = "85" ;//APP开阀工作报 |
| | | public static final String cd_91 = "91" ;//清空历史记录 |
| | | public static final String cd_92 = "92" ;//遥控启动阀门 |
| | | public static final String cd_93 = "93" ;//遥控关闭阀门 |
| | |
| | | public static final String cd_99 = "99" ;//定时关阀开阀 |
| | | public static final String cd_A0 = "A0" ;//定量关阀开阀 |
| | | public static final String cd_B0 = "B0" ;//查询实时数据(未实现) |
| | | public static final String cd_C0 = "C0" ;//遥测站自报实时数据 |
| | | public static final String cd_C0 = "C0" ;//遥测站整点上报实时数据 |
| | | |
| | | public static String getCodeName(String code) { |
| | | String name = (code.equals(cd_02) ? "链路检测" : |
| | |
| | | (code.equals(cd_81) ? "随机自报" : |
| | | (code.equals(cd_83) ? "开关阀自报" : |
| | | (code.equals(cd_84) ? "开阀工作报" : |
| | | (code.equals(cd_85) ? "APP开阀工作报" : |
| | | (code.equals(cd_91) ? "清空历史记录" : |
| | | (code.equals(cd_92) ? "遥控启动阀门" : |
| | | (code.equals(cd_93) ? "遥控关闭阀门" : |
| | |
| | | (code.equals(cd_A0) ? "定量关阀开阀" : |
| | | (code.equals(cd_B0) ? "查询实时数据" : |
| | | (code.equals(cd_C0) ? "自报实时数据" : |
| | | "")))))))))))))))))))))))))))))))))))))))))) ; |
| | | ""))))))))))))))))))))))))))))))))))))))))) ; |
| | | return name ; |
| | | } |
| | | |
| | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" 控制器地址 : " + (rtuAddr==null?"":rtuAddr) + "\n") ; |
| | | sb.append(" 接收数据时间 : " + (dt==null?"":dt) + "\n") ; |
| | | sb.append(" 终端数据:\n") ; |
| | | if(subData != null){ |
| | | sb.append(subData.toString()) ; |
| | |
| | | cdData.type = opType ; |
| | | |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex + 1 ; |
| | | //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | | //累计流量:5字节BCD码,取值范围0~99999999.99,单位为m3。 |
| | | cdData.totalAmount = 0.0D ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 10000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 1000000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 100000000.0 ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.totalAmount += tpInt/100.0 ; |
| | | |
| | | index += 5 ; |
| | | //用水户号数据格式:5字节BCD码低位在前高位在后。 |
| | | cdData.icCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ; |
| | | index += 5 ; |
| | | |
| | | index += 5 ; |
| | | //IC卡号格式:4字节HEX码低位在前高位在后。 |
| | | cdData.icCardAddr = ByteUtil.bytesToHex(bs, index, index + 3) ; |
| | | index += 4 ; |
| | | |
| | | index += 4 ; |
| | | //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。 |
| | | cdData.remainMoney = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 3) ; |
| | | cdData.remainMoney += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt * 10000.0 ; |
| | | |
| | | index += 4 ; |
| | | //用水户用水开始时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。 |
| | | cdData.openDt = GlParse.parseTp(bs, index) ; |
| | | |
| | |
| | | dV1.subData = cdData ; |
| | | |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | cdData.opType = bs[index] ; |
| | | //cdData.opType = bs[index] ; |
| | | |
| | | index++ ; |
| | | cdData.cardType = bs[index] ; |
| | | //index++ ; |
| | | //cdData.cardType = bs[index] ; |
| | | |
| | | index++ ; |
| | | cdData.cardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ; |
| | | //index++ ; |
| | | //cdData.cardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ; |
| | | |
| | | index += 4 ; |
| | | //index += 4 ; |
| | | //用水户号数据格式:5字节BCD码低位在前高位在后。 |
| | | cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ; |
| | | |
| | | index += 5 ; |
| | | //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。 |
| | | cdData.remainMoney = 0.0D ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 3) ; |
| | | cdData.remainMoney += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt * 10000.0 ; |
| | | |
| | | index += 4 ; |
| | | //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | | cdData.totalAmount = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.totalAmount += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 10000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 1000000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 100000000.0 ; |
| | | |
| | | index += 5 ; |
| | | //瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h。 |
| | | cdData.instantAmount = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.instantAmount += tpInt/1000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.instantAmount += tpInt/10.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.instantAmount += tpInt * 10.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.instantAmount += tpInt * 1000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.instantAmount += tpInt * 100000.0 ; |
| | | |
| | | index += 5 ; |
| | | cdData.alarmVo = GlParse.parseAlarm(bs, index) ; |
| | | index += 2 ; |
| | | cdData.stateVo = GlParse.parseState(bs, index) ; |
| | |
| | | @Data |
| | | public class DataCd84Vo { |
| | | |
| | | public Byte opType;//开关阀类型(1:刷卡开阀;2:刷卡关阀;3:中心站开阀;4:中心站关阀;5:欠费关阀;6:流量计故障关阀;7:紧急关闭;8:用户远程开阀;9:用户远程关阀;10:开关阀卡关阀;11:开关阀卡刷卡卡开阀;) |
| | | public Byte cardType ;//卡类型(1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡) |
| | | public String cardAddr ;//IC卡地址(8位字符) |
| | | //public Byte opType;//开关阀类型(1:刷卡开阀;2:刷卡关阀;3:中心站开阀;4:中心站关阀;5:欠费关阀;6:流量计故障关阀;7:紧急关闭;8:用户远程开阀;9:用户远程关阀;10:开关阀卡关阀;11:开关阀卡刷卡卡开阀;) |
| | | //public Byte cardType ;//卡类型(1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡) |
| | | //public String cardAddr ;//IC卡地址(8位字符) |
| | | public String cardNo ;//IC卡编号 |
| | | public Double remainMoney ;//剩余金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元 |
| | | public Double totalAmount; //累计流量(本次开阀以来的累计流量):5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | | public Double totalAmount; //累计流量(水表上的累计流量):5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | | public Double instantAmount; //瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h。 |
| | | public String rtuDt ;//控制器时钟 |
| | | |
| | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 终端开阀工作报:\n"); |
| | | sb.append(" 开阀类型:"); |
| | | sb.append(opType==null?"未知": CommonV1_0_1.openCloseValveType(opType)); |
| | | sb.append("\n"); |
| | | sb.append(" IC卡类型:"); |
| | | sb.append(cardType==null?"未知":CommonV1_0_1.icCardType(cardType)) ; |
| | | sb.append("\n"); |
| | | sb.append(" IC卡地址:"); |
| | | sb.append(cardAddr); |
| | | sb.append("\n"); |
| | | // sb.append(" 开阀类型:"); |
| | | // sb.append(opType==null?"未知": CommonV1_0_1.openCloseValveType(opType)); |
| | | // sb.append("\n"); |
| | | // sb.append(" IC卡类型:"); |
| | | // sb.append(cardType==null?"未知":CommonV1_0_1.icCardType(cardType)) ; |
| | | // sb.append("\n"); |
| | | // sb.append(" IC卡地址:"); |
| | | // sb.append(cardAddr); |
| | | // sb.append("\n"); |
| | | sb.append(" IC卡编号:"); |
| | | sb.append(cardNo); |
| | | sb.append("\n"); |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; |
| | | import com.dy.common.po.BaseEntity; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | |
| | | @ToString |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public class RmCommandHistory { |
| | | public class RmCommandHistory implements BaseEntity { |
| | | public static final long serialVersionUID = 202401151517005L; |
| | | |
| | | /** |
| | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdC0Vo; |
| | | import com.dy.common.po.BaseEntity; |
| | | import com.dy.common.util.DateTime; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | |
| | | public Double lossAmount; |
| | | |
| | | |
| | | public void valueFrom(DataV1_0_1 dV1_0_1, DataCdC0Vo cdData) throws Exception{ |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd1(dV1_0_1.dt); |
| | | this.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt); |
| | | this.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); |
| | | this.lossAmount = cdData.lossAmount ;// 损失流量(从0时到当前的漏损累计流量,24时一个周期,0时归0)单位为m3。 |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdC0Vo; |
| | | import com.dy.common.po.BaseEntity; |
| | | import com.dy.common.util.DateTime; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | |
| | | @Schema(description = "日漏损量(m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | public Double lossAmount; |
| | | |
| | | public void valueFrom(DataV1_0_1 dV1_0_1, DataCdC0Vo cdData) throws Exception{ |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd1(dV1_0_1.dt); |
| | | this.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt); |
| | | this.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); |
| | | this.lossAmount = cdData.lossAmount ;// 损失流量(从0时到当前的漏损累计流量,24时一个周期,0时归0)单位为m3。 |
| | | } |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.dy.common.po.BaseEntity; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | @Schema(name = "控制器开关阀上报最新数据") |
| | | public class RmOpenCloseValveLast { |
| | | public class RmOpenCloseValveLast implements BaseEntity { |
| | | |
| | | public static final long serialVersionUID = 202402231602001L; |
| | | /** |
| | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd84Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.DataV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo; |
| | | import com.dy.common.po.BaseEntity; |
| | |
| | | this.waterMeterTransVolt = cdData.waterMeterTransVolt ; |
| | | this.waterMeterWorkVolt = cdData.waterMeterWorkVolt ; |
| | | } |
| | | |
| | | |
| | | public void valueFrom(DataV1_0_1 dV1_0_1, DataCd84Vo cdData) throws Exception{ |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt); |
| | | this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); |
| | | //this.orderNo = cdData.orderNo ; |
| | | //this.icCardAddr = cdData.icCardAddr ; |
| | | this.icCardNo = cdData.cardNo ; |
| | | //this.waterLevel = cdData.waterLevel ; |
| | | //this.waterPress = cdData.waterPress ; |
| | | this.waterInstant = cdData.instantAmount ; |
| | | this.waterTotal = cdData.totalAmount ; |
| | | //this.eleTotal = cdData.eleTotal ; |
| | | this.moneyRemain = cdData.remainMoney ; |
| | | //this.waterRemain = cdData.waterRemain ; |
| | | //this.thisEle = cdData.thisEle ; |
| | | //this.thisWater = cdData.thisWater ; |
| | | //this.thisMoney = cdData.thisMoney ; |
| | | //this.thisDuration = cdData.thisDuration ; |
| | | //this.waterPrice = cdData.waterPrice ; |
| | | //this.elePrice = cdData.elePrice ; |
| | | //this.aVolt = cdData.aVolt ; |
| | | //this.bVolt = cdData.bVolt ; |
| | | //this.cVolt = cdData.cVolt ; |
| | | //this.aCurrent = cdData.aCurrent ; |
| | | //this.bCurrent = cdData.bCurrent ; |
| | | //this.cCurrent = cdData.cCurrent ; |
| | | //this.batteryVolt = cdData.batteryVolt ; |
| | | //this.waterMeterTransVolt = cdData.waterMeterTransVolt ; |
| | | //this.waterMeterWorkVolt = cdData.waterMeterWorkVolt ; |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd84Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.DataV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo; |
| | | import com.dy.common.po.BaseEntity; |
| | |
| | | this.waterMeterTransVolt = cdData.waterMeterTransVolt ; |
| | | this.waterMeterWorkVolt = cdData.waterMeterWorkVolt ; |
| | | } |
| | | |
| | | |
| | | public void valueFrom(DataV1_0_1 dV1_0_1, DataCd84Vo cdData) throws Exception{ |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt); |
| | | this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); |
| | | //this.orderNo = cdData.orderNo ; |
| | | //this.icCardAddr = cdData.icCardAddr ; |
| | | this.icCardNo = cdData.cardNo ; |
| | | //this.waterLevel = cdData.waterLevel ; |
| | | //this.waterPress = cdData.waterPress ; |
| | | this.waterInstant = cdData.instantAmount ; |
| | | this.waterTotal = cdData.totalAmount ; |
| | | //this.eleTotal = cdData.eleTotal ; |
| | | this.moneyRemain = cdData.remainMoney ; |
| | | //this.waterRemain = cdData.waterRemain ; |
| | | //this.thisEle = cdData.thisEle ; |
| | | //this.thisWater = cdData.thisWater ; |
| | | //this.thisMoney = cdData.thisMoney ; |
| | | //this.thisDuration = cdData.thisDuration ; |
| | | //this.waterPrice = cdData.waterPrice ; |
| | | //this.elePrice = cdData.elePrice ; |
| | | //this.aVolt = cdData.aVolt ; |
| | | //this.bVolt = cdData.bVolt ; |
| | | //this.cVolt = cdData.cVolt ; |
| | | //this.aCurrent = cdData.aCurrent ; |
| | | //this.bCurrent = cdData.bCurrent ; |
| | | //this.cCurrent = cdData.cCurrent ; |
| | | //this.batteryVolt = cdData.batteryVolt ; |
| | | //this.waterMeterTransVolt = cdData.waterMeterTransVolt ; |
| | | //this.waterMeterWorkVolt = cdData.waterMeterWorkVolt ; |
| | | } |
| | | } |
| | |
| | | import com.dy.common.mw.protocol.Data; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd83CloseVo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd83OpenVo; |
| | | import com.dy.common.util.DateTime; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrController; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory; |
| | |
| | | |
| | | //类ID,一定与Tree.xml配置文件中配置一致 |
| | | public static final String taskId = "TkDealCloseValveReport" ; |
| | | |
| | | /** |
| | | * 执行节点任务: 处理控制器关阀上报 |
| | | * @param data 需要处理的数据 |
| | |
| | | @Override |
| | | public void execute(Object data) { |
| | | Data d = (Data) data; |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCd83CloseVo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // try{ |
| | | // this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83CloseVo) ; |
| | | // }catch (Exception e){ |
| | | // log.error("保存控制器关阀上报时发生异常", e); |
| | | // } |
| | | // } |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) d.getSubData(); |
| | | Object cdObj = dV1_0_1.subData; |
| | | if (cdObj != null && cdObj instanceof DataCd83CloseVo) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, (DataCd83CloseVo)cdObj) ; |
| | | }catch (Exception e){ |
| | | log.error("保存控制器开阀上报时发生异常", e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 保存数据 |
| | | * @param sv 服务 |
| | |
| | | package com.dy.rtuMw.server.rtuData.p206V1_0_0; |
| | | |
| | | import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp; |
| | | import com.dy.rtuMw.server.rtuData.TaskSurpport; |
| | | import com.dy.rtuMw.server.rtuData.dbSv.DbSv; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public void execute(Object data) { |
| | | //此任务无具体业务逻辑,只是在任务xml配置文件中,框住其子任务节点 |
| | | this.toNextTasks(data); |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | PrControllerTramp tramp = (PrControllerTramp)objs[2] ; |
| | | if(tramp == null){ |
| | | this.toNextTasks(data); |
| | | } |
| | | } |
| | | } |
| | |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/1/15 16:29 |
| | |
| | | PrControllerTramp tramp = (PrControllerTramp)objs[2] ; |
| | | if(tramp != null){ |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | sv.savePrConctrollerTramp(tramp); |
| | | if(tramp.id == null){ |
| | | sv.savePrConctrollerTramp(tramp); |
| | | }else{ |
| | | tramp.findDt = new Date() ; |
| | | sv.updatePrConctrollerTramp(tramp) ; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | @Override |
| | | public void execute(Object data) { |
| | | Data d = (Data) data; |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | if (dV1_0_1 != null && dV1_0_1.subData != null && dV1_0_1.subData instanceof DataCdC0Vo) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId); |
| | | DbSv sv = (DbSv) objs[0]; |
| | | PrController controller = (PrController) objs[1]; |
| | | try { |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, (DataCdC0Vo)dV1_0_1.subData); |
| | | } catch (Exception e) { |
| | | log.error("保存遥测站自报实时数据中的漏损数据时发生异常", e); |
| | | } |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) d.getSubData();//前面任务已经判断不为null |
| | | Object cdObj = dV1_0_1.subData; |
| | | if (cdObj != null && cdObj instanceof DataCdC0Vo){ |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, (DataCdC0Vo)cdObj); |
| | | }catch (Exception e){ |
| | | log.error("保存遥测站自报实时数据中的漏损数据时发生异常", e); |
| | | } |
| | | } |
| | | } |
| | |
| | | this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCdC0Vo, poLast); |
| | | sv.saveRmLossLast(poLast); |
| | | }else{ |
| | | //这种情况不存在(收到数据的日期早于本地记录中的日期,此种情况不会存在) |
| | | //这种情况不存在(RTU时钟早于本地记录中的RTU时钟(RTU穿越回过去了,可能时钟重置了),此种情况不处理) |
| | | } |
| | | } |
| | | } |
| | |
| | | * @param controller |
| | | * @param rtuAddr |
| | | * @param dV1_0_1 |
| | | * @param dataCdC0Vo |
| | | * @param cdData |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | private RmLossLast newRmLossLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo)throws Exception { |
| | | RmLossLast po = new RmLossLast(null, null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(), |
| | | rtuAddr, |
| | | DateTime.dateFrom_yyyy_MM_dd1(dV1_0_1.dt), |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt), |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt), |
| | | dataCdC0Vo.lossAmount) ; |
| | | private RmLossLast newRmLossLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo cdData)throws Exception { |
| | | RmLossLast po = new RmLossLast() ; |
| | | po.controllerId = controller==null?null:controller.getId(); |
| | | po.intakeId = controller==null?null:controller.getIntakeId(); |
| | | po.rtuAddr = rtuAddr; |
| | | po.valueFrom(dV1_0_1, cdData) ; |
| | | return po ; |
| | | } |
| | | |
| | |
| | | * @param controller |
| | | * @param rtuAddr |
| | | * @param dV1_0_1 |
| | | * @param dataCdC0Vo |
| | | * @param cdData |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | private RmLossHistory newRmLossHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo)throws Exception { |
| | | RmLossHistory po = new RmLossHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(), |
| | | rtuAddr, |
| | | DateTime.dateFrom_yyyy_MM_dd1(dV1_0_1.dt), |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt), |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt), |
| | | dataCdC0Vo.lossAmount) ; |
| | | private RmLossHistory newRmLossHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo cdData)throws Exception { |
| | | RmLossHistory po = new RmLossHistory() ; |
| | | po.controllerId = controller==null?null:controller.getId(); |
| | | po.intakeId = controller==null?null:controller.getIntakeId(); |
| | | po.rtuAddr = rtuAddr; |
| | | po.valueFrom(dV1_0_1, cdData); |
| | | return po ; |
| | | } |
| | | |
| | |
| | | po.valueFrom(dV1_0_1, cdData); |
| | | sv.updateRmOnHourReportLast(po); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | import com.dy.common.mw.protocol.Data; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd83OpenVo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd84Vo; |
| | | import com.dy.common.util.DateTime; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrController; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory; |
| | |
| | | @Override |
| | | public void execute(Object data) { |
| | | Data d = (Data) data; |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | if (dV1_0_1 != null && dV1_0_1.subData != null) { |
| | | if(dV1_0_1.subData instanceof DataCd83OpenVo){ |
| | | DataCd83OpenVo vo83 = (DataCd83OpenVo)dV1_0_1.subData ; |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, vo83) ; |
| | | }catch (Exception e){ |
| | | log.error("保存控制器开阀上报时发生异常", e); |
| | | } |
| | | } |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) d.getSubData(); |
| | | Object cdObj = dV1_0_1.subData; |
| | | if (cdObj != null && cdObj instanceof DataCd83OpenVo) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, (DataCd83OpenVo)cdObj) ; |
| | | }catch (Exception e){ |
| | | log.error("保存控制器开阀上报时发生异常", e); |
| | | } |
| | | } |
| | | } |
| | |
| | | import com.dy.common.mw.protocol.Data; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd84Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.util.DateTime; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrController; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmWorkReportHistory; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmWorkReportLast; |
| | |
| | | @Override |
| | | public void execute(Object data) { |
| | | Data d = (Data) data; |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCd84Vo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // try{ |
| | | // this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd84Vo) ; |
| | | // }catch (Exception e){ |
| | | // log.error("保存控制器阀开工作报时发生异常", e); |
| | | // } |
| | | // } |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) d.getSubData();//前面任务已经判断不为null |
| | | Object cdObj = dV1_0_1.subData; |
| | | if (cdObj != null && cdObj instanceof DataCd84Vo) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, (DataCd84Vo)cdObj) ; |
| | | }catch (Exception e){ |
| | | log.error("保存控制器阀开工作报时发生异常", e); |
| | | } |
| | | } |
| | | } |
| | | /** |
| | |
| | | * @param controller |
| | | * @param rtuAddr |
| | | * @param dV1_0_1 |
| | | * @param dataCd84Vo |
| | | * @param cdData |
| | | */ |
| | | private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception { |
| | | // RmWorkReportLast po = sv.getRmWorkReportLast(rtuAddr) ; |
| | | // if(po == null){ |
| | | // po = new RmWorkReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(), |
| | | // rtuAddr, |
| | | // DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt), |
| | | // DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt), |
| | | // dataCd84Vo.cardNo, |
| | | // dataCd84Vo.totalAmount, |
| | | // dataCd84Vo.instantAmount, |
| | | // dataCd84Vo.remainMoney) ; |
| | | // sv.saveRmWorkReportLast(po) ; |
| | | // }else{ |
| | | // po.controllerId = controller==null?null:controller.getId(); |
| | | // po.intakeId = controller==null?null:controller.getIntakeId(); |
| | | // |
| | | // po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt); |
| | | // po.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt); |
| | | // po.icCardNo = dataCd84Vo.cardNo; |
| | | // po.totalAmount = dataCd84Vo.totalAmount; |
| | | // po.instantAmount = dataCd84Vo.instantAmount; |
| | | // po.remainMoney = dataCd84Vo.remainMoney; |
| | | // sv.updateRmWorkReportLast(po); |
| | | // } |
| | | private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo cdData) throws Exception { |
| | | RmWorkReportLast po = sv.getRmWorkReportLast(rtuAddr) ; |
| | | if(po == null){ |
| | | po = new RmWorkReportLast() ; |
| | | po.controllerId = controller==null?null:controller.getId(); |
| | | po.intakeId = controller==null?null:controller.getIntakeId(); |
| | | po.rtuAddr = rtuAddr; |
| | | po.valueFrom(dV1_0_1, cdData); |
| | | sv.saveRmWorkReportLast(po) ; |
| | | }else{ |
| | | po.controllerId = controller==null?null:controller.getId(); |
| | | po.intakeId = controller==null?null:controller.getIntakeId(); |
| | | po.valueFrom(dV1_0_1, cdData); |
| | | sv.updateRmWorkReportLast(po); |
| | | } |
| | | } |
| | | /** |
| | | * 保存阀开工作报历史数据 |
| | |
| | | * @param controller |
| | | * @param rtuAddr |
| | | * @param dV1_0_1 |
| | | * @param dataCd84Vo |
| | | * @param cdData |
| | | */ |
| | | private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception { |
| | | // RmWorkReportHistory po = new RmWorkReportHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(), |
| | | // rtuAddr, |
| | | // DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt), |
| | | // DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt), |
| | | // dataCd84Vo.cardNo, |
| | | // dataCd84Vo.totalAmount, |
| | | // dataCd84Vo.instantAmount, |
| | | // dataCd84Vo.remainMoney) ; |
| | | // sv.saveRmWorkReportHistory(po) ; |
| | | private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo cdData) throws Exception { |
| | | RmWorkReportHistory po = new RmWorkReportHistory(); |
| | | po.controllerId = controller==null?null:controller.getId(); |
| | | po.intakeId = controller==null?null:controller.getIntakeId(); |
| | | po.rtuAddr = rtuAddr; |
| | | po.valueFrom(dV1_0_1, cdData); |
| | | sv.saveRmWorkReportHistory(po) ; |
| | | } |
| | | |
| | | |
| | |
| | | package com.dy.rtuMw.server.rtuData.p206V202404; |
| | | |
| | | import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp; |
| | | import com.dy.rtuMw.server.rtuData.TaskSurpport; |
| | | import com.dy.rtuMw.server.rtuData.dbSv.DbSv; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | |
| | | */ |
| | | @Override |
| | | public void execute(Object data) { |
| | | //此任务无具体业务逻辑,只是在任务xml配置文件中,框住其子任务节点 |
| | | this.toNextTasks(data); |
| | | Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ; |
| | | PrControllerTramp tramp = (PrControllerTramp)objs[2] ; |
| | | if(tramp == null){ |
| | | this.toNextTasks(data); |
| | | } |
| | | } |
| | | } |
| | |
| | | tramp.findDt = new Date() ; |
| | | sv.updatePrConctrollerTramp(tramp) ; |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | <!-- 识别非命令应答上行数据 --> |
| | | <task id="TkFindReport" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkFindReport"> |
| | | <task id="TkDealAlarmStatus" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealAlarmStatus" /> |
| | | <task id="TkDealOnHourReport" name="控制器自报数据(整点报)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealOnHourReport" /> |
| | | <task id="TkDealWorkReport" name="控制器阀开工作上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealWorkReport" /> |
| | | <task id="TkDealOpenValveReport" name="控制器开阀上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealOpenValveReport" /> |
| | | <task id="TkDealCloseValveReport" name="控制器关阀上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealCloseValveReport" /> |
| | | <task id="TkDealLoss" name="控制器漏损统计(待新协议出来后修改实现)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealLoss" /> |
| | | <task id="TkDealOnHourReport" name="控制器自报数据(整点报)(功能码C0)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealOnHourReport" /> |
| | | <task id="TkDealWorkReport" name="控制器阀开工作上报(功能码84)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealWorkReport" /> |
| | | <task id="TkDealOpenValveReport" name="控制器开阀上报(功能码83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealOpenValveReport" /> |
| | | <task id="TkDealCloseValveReport" name="控制器关阀上报(功能码83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealCloseValveReport" /> |
| | | <task id="TkDealLoss" name="控制器漏损统计(功能码C0)(待新协议出来后修改实现)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealLoss" /> |
| | | </task> |
| | | <!-- 识别命令响应数据 --> |
| | | <task id="TkFindComResponse" name="识别响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkFindComResponse"> |