1、完善靳总协议的控制器报警及状态处理;
2、报警及状态数据库表(最新+历史)增加字段电池电压报警、阀门报警。
| | |
| | | * @return |
| | | */ |
| | | String getVcCardNumOfMax(@Param("areaCode") String areaCode); |
| | | |
| | | /** |
| | | * 一个取水口上占用的虚拟卡状态变成不占用 |
| | | * @param intakeId |
| | | * @return |
| | | */ |
| | | void updateVcCardNoUseStateByIntakeId(@Param("intakeId")Long intakeId) ; |
| | | } |
| | |
| | | */ |
| | | public Byte stateIcEnable; |
| | | |
| | | /** |
| | | * 电池电压(1:报警,0:正常) |
| | | */ |
| | | public Byte alarmBatteryVolt; |
| | | |
| | | /** |
| | | * 阀门报警(1:报警,0:正常) |
| | | */ |
| | | public Byte alarmValve; |
| | | |
| | | } |
| | |
| | | */ |
| | | public Byte stateIcEnable; |
| | | |
| | | /** |
| | | * 电池电压(1:报警,0:正常) |
| | | */ |
| | | public Byte alarmBatteryVolt; |
| | | |
| | | /** |
| | | * 阀门报警(1:报警,0:正常) |
| | | */ |
| | | public Byte alarmValve; |
| | | |
| | | } |
| | |
| | | <result column="alarm_ele_exceed" jdbcType="TINYINT" property="alarmEleExceed" /> |
| | | <result column="alarm_ele_low_volt" jdbcType="TINYINT" property="alarmEleLowVolt" /> |
| | | <result column="state_ic_enable" jdbcType="TINYINT" property="stateIcEnable" /> |
| | | <result column="alarm_battery_volt" jdbcType="TINYINT" property="alarmBatteryVolt" /> |
| | | <result column="alarm_valve" jdbcType="TINYINT" property="alarmValve" /> |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, controller_id, intake_id, rtu_addr, dt, rtu_dt, valve_state, alarm_remain_water, |
| | | alarm0_water_remain, alarm_exceed_year, alarm_water_meter_fault, alarm_loss, alarm_water_meter_break, |
| | | alarm_ele_meter_fault, alarm0_money_remain, alarm_inner_door, alarm_outer_door, alarm_ele_miss, |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | |
| | | alarm_loss, alarm_water_meter_break, alarm_ele_meter_fault, |
| | | alarm0_money_remain, alarm_inner_door, alarm_outer_door, |
| | | alarm_ele_miss, alarm_ele_exceed, alarm_ele_low_volt, |
| | | state_ic_enable) |
| | | state_ic_enable,alarm_battery_volt,alarm_valve) |
| | | values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, |
| | | #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP}, |
| | | #{valveState,jdbcType=TINYINT}, #{alarmRemainWater,jdbcType=TINYINT}, #{alarm0WaterRemain,jdbcType=TINYINT}, |
| | |
| | | #{alarmLoss,jdbcType=TINYINT}, #{alarmWaterMeterBreak,jdbcType=TINYINT}, #{alarmEleMeterFault,jdbcType=TINYINT}, |
| | | #{alarm0MoneyRemain,jdbcType=TINYINT}, #{alarmInnerDoor,jdbcType=TINYINT}, #{alarmOuterDoor,jdbcType=TINYINT}, |
| | | #{alarmEleMiss,jdbcType=TINYINT}, #{alarmEleExceed,jdbcType=TINYINT}, #{alarmEleLowVolt,jdbcType=TINYINT}, |
| | | #{stateIcEnable,jdbcType=TINYINT}) |
| | | #{stateIcEnable,jdbcType=TINYINT}, #{alarmBatteryVolt,jdbcType=TINYINT}, #{alarmValve,jdbcType=TINYINT}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory"> |
| | | <!--@mbg.generated--> |
| | |
| | | <if test="stateIcEnable != null"> |
| | | state_ic_enable, |
| | | </if> |
| | | <if test="alarmBatteryVolt != null"> |
| | | alarm_battery_volt, |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | alarm_valve, |
| | | </if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | |
| | | </if> |
| | | <if test="stateIcEnable != null"> |
| | | #{stateIcEnable,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmBatteryVolt != null"> |
| | | #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | </trim> |
| | | </insert> |
| | |
| | | <if test="stateIcEnable != null"> |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmBatteryVolt != null"> |
| | | alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | </set> |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | |
| | | alarm_ele_miss = #{alarmEleMiss,jdbcType=TINYINT}, |
| | | alarm_ele_exceed = #{alarmEleExceed,jdbcType=TINYINT}, |
| | | alarm_ele_low_volt = #{alarmEleLowVolt,jdbcType=TINYINT}, |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT} |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT}, |
| | | alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | </mapper> |
| | |
| | | <result column="alarm_ele_exceed" jdbcType="TINYINT" property="alarmEleExceed" /> |
| | | <result column="alarm_ele_low_volt" jdbcType="TINYINT" property="alarmEleLowVolt" /> |
| | | <result column="state_ic_enable" jdbcType="TINYINT" property="stateIcEnable" /> |
| | | <result column="alarm_battery_volt" jdbcType="TINYINT" property="alarmBatteryVolt" /> |
| | | <result column="alarm_valve" jdbcType="TINYINT" property="alarmValve" /> |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, controller_id, intake_id, rtu_addr, dt, rtu_dt, valve_state, alarm_remain_water, |
| | | alarm0_water_remain, alarm_exceed_year, alarm_water_meter_fault, alarm_loss, alarm_water_meter_break, |
| | | alarm_ele_meter_fault, alarm0_money_remain, alarm_inner_door, alarm_outer_door, alarm_ele_miss, |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | |
| | | alarm_loss, alarm_water_meter_break, alarm_ele_meter_fault, |
| | | alarm0_money_remain, alarm_inner_door, alarm_outer_door, |
| | | alarm_ele_miss, alarm_ele_exceed, alarm_ele_low_volt, |
| | | state_ic_enable) |
| | | state_ic_enable,alarm_battery_volt,alarm_valve) |
| | | values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, |
| | | #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP}, |
| | | #{valveState,jdbcType=TINYINT}, #{alarmRemainWater,jdbcType=TINYINT}, #{alarm0WaterRemain,jdbcType=TINYINT}, |
| | | #{alarmExceedYear,jdbcType=TINYINT}, #{alarmWaterMeterFault,jdbcType=TINYINT}, |
| | | #{alarmLoss,jdbcType=TINYINT}, #{alarmWaterMeterBreak,jdbcType=TINYINT}, #{alarmEleMeterFault,jdbcType=TINYINT}, |
| | | #{alarm0MoneyRemain,jdbcType=TINYINT}, #{alarmInnerDoor,jdbcType=TINYINT}, #{alarmOuterDoor,jdbcType=TINYINT}, |
| | | #{alarmEleMiss,jdbcType=TINYINT}, #{alarmEleExceed,jdbcType=TINYINT}, #{alarmEleLowVolt,jdbcType=TINYINT}, |
| | | #{stateIcEnable,jdbcType=TINYINT}) |
| | | #{alarmEleMiss,jdbcType=TINYINT}, #{alarmEleExceed,jdbcType=TINYINT}, #{alarmEleLowVolt,jdbcType=TINYINT}, |
| | | #{stateIcEnable,jdbcType=TINYINT}, #{alarmBatteryVolt,jdbcType=TINYINT}, #{alarmValve,jdbcType=TINYINT}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast"> |
| | | <!--@mbg.generated--> |
| | |
| | | <if test="stateIcEnable != null"> |
| | | state_ic_enable, |
| | | </if> |
| | | <if test="alarmBatteryVolt != null"> |
| | | alarm_battery_volt, |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | alarm_valve, |
| | | </if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | |
| | | </if> |
| | | <if test="stateIcEnable != null"> |
| | | #{stateIcEnable,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmBatteryVolt != null"> |
| | | #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | </trim> |
| | | </insert> |
| | |
| | | <if test="stateIcEnable != null"> |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmBatteryVolt != null"> |
| | | alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | </set> |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | |
| | | alarm_ele_miss = #{alarmEleMiss,jdbcType=TINYINT}, |
| | | alarm_ele_exceed = #{alarmEleExceed,jdbcType=TINYINT}, |
| | | alarm_ele_low_volt = #{alarmEleLowVolt,jdbcType=TINYINT}, |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT} |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT}, |
| | | alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | </mapper> |
| | |
| | | create_time = #{createTime,jdbcType=TIMESTAMP} |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | |
| | | <update id="updateVcCardNoUseStateByIntakeId" parameterType="java.lang.Long"> |
| | | update se_virtual_card |
| | | set in_use = 0, |
| | | intake_id = null |
| | | where intake_id = #{intakeId,jdbcType=BIGINT} |
| | | </update> |
| | | <!--验证农户是否拥有指定名称的虚拟卡--> |
| | | <select id="getRecordCountByName" resultType="java.lang.Integer"> |
| | | SELECT COUNT(*) AS recordCount |
| | |
| | | ORDER BY vc_num desc |
| | | LIMIT 0,1 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | import com.dy.pipIrrGlobal.daoPr.PrControllerMapper; |
| | | import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.*; |
| | | import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrController; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp; |
| | | import com.dy.pipIrrGlobal.pojoRm.*; |
| | |
| | | private RmLossHistoryMapper rmLossHistoryMapperDao ;//控制器漏损水量统计历史数据DAO |
| | | @Autowired |
| | | private RmCommandHistoryMapper rmCommandHistoryDao ;//远程命令日志相关 |
| | | @Autowired |
| | | private SeVirtualCardMapper seVirtualCardDao ;//虚拟卡相关 |
| | | |
| | | //@Autowired |
| | | //@Lazy |
| | |
| | | this.rmAlarmStateHistoryMapperDao.insert(po) ; |
| | | } |
| | | |
| | | /** |
| | | * 变更虚拟卡占用状态 |
| | | * @param intakeId |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateVirCardNoUseState(Long intakeId){ |
| | | this.seVirtualCardDao.updateVcCardNoUseStateByIntakeId(intakeId); ; |
| | | } |
| | | |
| | | |
| | | ///////////////////////////////////////////////// |
| | |
| | | package com.dy.rtuMw.server.rtuData.p206V1_0_0; |
| | | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.*; |
| | | import com.dy.common.util.DateTime; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory; |
| | | import com.dy.rtuMw.server.rtuData.TaskSurpport; |
| | | import com.dy.rtuMw.server.rtuData.dbSv.DbSv; |
| | | import com.dy.common.mw.protocol.Data; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataAlarmVo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataStateVo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.pipIrrGlobal.pojoPr.PrController; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast; |
| | |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/1/15 21:59 |
| | | * @LastEditTime 2024/1/15 21:59 |
| | | * @Date 2024/6/11 17:19 |
| | | * @Description |
| | | */ |
| | | public class TkDealAlarmStatus extends TaskSurpport { |
| | |
| | | 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.dataCd81Vo 与 dV1_0_1.dataCdC0Vo 不会同时有值 |
| | | try{ |
| | | // if(dV1_0_1.dataCd81Vo != null){ |
| | | // if(dV1_0_1.dataCd81Vo.alarmVo != null || dV1_0_1.dataCd81Vo.stateVo != null){ |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.rtuDt, dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ; |
| | | // this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.rtuDt, dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ; |
| | | // } |
| | | // } else if(dV1_0_1.dataCdC0Vo != null){ |
| | | // if(dV1_0_1.dataCdC0Vo.alarmVo != null || dV1_0_1.dataCdC0Vo.stateVo != null){ |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.rtuDt, dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ; |
| | | // this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.rtuDt, dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ; |
| | | // } |
| | | // } |
| | | }catch (Exception e){ |
| | | if(dV1_0_1 != null && dV1_0_1.subData != null){ |
| | | //dV1_0_1.dataCd81Vo、 dV1_0_1.dataCd84Vo 与 dV1_0_1.dataCdC0Vo 不会同时有值 |
| | | Object cdObj = dV1_0_1.subData ; |
| | | try { |
| | | if (cdObj instanceof DataCd81Vo) { |
| | | DataCd81Vo dataCd81Vo = (DataCd81Vo)cdObj ; |
| | | if (dataCd81Vo.alarmVo != null || dataCd81Vo.stateVo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId); |
| | | DbSv sv = (DbSv) objs[0]; |
| | | PrController controller = (PrController) objs[1]; |
| | | this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1_0_1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo); |
| | | this.saveHistory(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1_0_1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo); |
| | | } |
| | | } else if (cdObj instanceof DataCd84Vo) { |
| | | DataCd84Vo dataCd84Vo = (DataCd84Vo)cdObj ; |
| | | if (dataCd84Vo.alarmVo != null || dataCd84Vo.stateVo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId); |
| | | DbSv sv = (DbSv) objs[0]; |
| | | PrController controller = (PrController) objs[1]; |
| | | this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1_0_1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo); |
| | | this.saveHistory(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1_0_1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo); |
| | | } |
| | | } else if (cdObj instanceof DataCdC0Vo) { |
| | | DataCdC0Vo dataCdC0Vo = (DataCdC0Vo)cdObj ; |
| | | if (dataCdC0Vo.alarmVo != null || dataCdC0Vo.stateVo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId); |
| | | DbSv sv = (DbSv) objs[0]; |
| | | PrController controller = (PrController) objs[1]; |
| | | this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1_0_1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo); |
| | | this.saveHistory(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1_0_1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("保存控制器报警和状态数据时发生异常", e); |
| | | } |
| | | } |
| | |
| | | * @param stateVo 状态对象 |
| | | */ |
| | | private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, String rtuDt, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception { |
| | | // RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ; |
| | | // if(po == null){ |
| | | // po = new RmAlarmStateLast(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(rtuDt), |
| | | // alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve, |
| | | // stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ; |
| | | // sv.saveRmAlarmStateLast(po) ; |
| | | // }else{ |
| | | // po = this.update(controller, po, rtuDt, dV1_0_1, alarmVo, stateVo) ; |
| | | // sv.updateRmAlarmStateLast(po); |
| | | // } |
| | | RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ; |
| | | if(po == null){ |
| | | po = new RmAlarmStateLast(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(rtuDt), |
| | | stateVo==null?null:stateVo.working,//状态-阀门/泵(1打开、0关闭) |
| | | (byte)0,//剩余水量报警 (1:小于报警上限报警 0:正常) |
| | | (byte)0,//剩余水量为0关泵/阀 (1:剩余水量为0关泵 0:正常) |
| | | (byte)0,//年用水量大于限制水量报警(1:报警 0:正常) |
| | | alarmVo==null?null:alarmVo.meter,// 流量计故障(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.loss,// 漏损(偷水)报警(1:报警, 0:正常) |
| | | (byte)0,//流量计损坏(正常通讯但瞬时为0)报警(1:报警,0:正常) |
| | | (byte)0,//电表故障报警(1:报警,0:正常) |
| | | (byte)0,//剩余金额为0(1:报警,0:正常) |
| | | (byte)0,//控制器内门报警(1:报警,0:正常) |
| | | (byte)0,//控制器外门打开报警(1:报警,0:正常) |
| | | (byte)0,//交流缺项报警(1:报警,0:正常) |
| | | (byte)0,//交流过流报警(1:报警,0:正常) |
| | | (byte)0,//三相电欠压报警(1:报警,0:正常) |
| | | stateVo==null?null:stateVo.icCard,//IC卡状态(1、有效,0:无效) ; |
| | | alarmVo==null?null:alarmVo.batteryVolt,//电池电压(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.valve//阀门报警(1:报警,0:正常) |
| | | ); |
| | | sv.saveRmAlarmStateLast(po) ; |
| | | }else{ |
| | | po = this.update(controller, po, rtuDt, dV1_0_1, alarmVo, stateVo) ; |
| | | this.updateVirCardNoUseState(sv, controller, stateVo) ; |
| | | sv.updateRmAlarmStateLast(po); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param stateVo 状态对象 |
| | | */ |
| | | private void saveHistory(DbSv sv, PrController controller, String rtuAddr, String rtuDt, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception { |
| | | // RmAlarmStateHistory po = new RmAlarmStateHistory(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(rtuDt), |
| | | // alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve, |
| | | // stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ; |
| | | // sv.saveRmAlarmStateHistory(po) ; |
| | | RmAlarmStateHistory po = new RmAlarmStateHistory(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(rtuDt), |
| | | stateVo==null?null:stateVo.working,//状态-阀门/泵(1打开、0关闭) |
| | | (byte)0,//剩余水量报警 (1:小于报警上限报警 0:正常) |
| | | (byte)0,//剩余水量为0关泵/阀 (1:剩余水量为0关泵 0:正常) |
| | | (byte)0,//年用水量大于限制水量报警(1:报警 0:正常) |
| | | alarmVo==null?null:alarmVo.meter,// 流量计故障(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.loss,// 漏损(偷水)报警(1:报警, 0:正常) |
| | | (byte)0,//流量计损坏(正常通讯但瞬时为0)报警(1:报警,0:正常) |
| | | (byte)0,//电表故障报警(1:报警,0:正常) |
| | | (byte)0,//剩余金额为0(1:报警,0:正常) |
| | | (byte)0,//控制器内门报警(1:报警,0:正常) |
| | | (byte)0,//控制器外门打开报警(1:报警,0:正常) |
| | | (byte)0,//交流缺项报警(1:报警,0:正常) |
| | | (byte)0,//交流过流报警(1:报警,0:正常) |
| | | (byte)0,//三相电欠压报警(1:报警,0:正常) |
| | | stateVo==null?null:stateVo.icCard,//IC卡状态(1、有效,0:无效) ; |
| | | alarmVo==null?null:alarmVo.batteryVolt,//电池电压(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.valve//阀门报警(1:报警,0:正常) |
| | | ); |
| | | sv.saveRmAlarmStateHistory(po) ; |
| | | } |
| | | |
| | | |
| | | private RmAlarmStateLast update(PrController controller, RmAlarmStateLast po, String rtuDt, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception { |
| | | // 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(rtuDt) ; |
| | | // if(alarmVo != null){ |
| | | // po.bateryvolt = alarmVo.batteryVolt ; |
| | | // po.loss = alarmVo.loss ; |
| | | // po.meter = alarmVo.meter ; |
| | | // po.valve = alarmVo.valve ; |
| | | // }else{ |
| | | // po.bateryvolt = null ; |
| | | // po.loss = null ; |
| | | // po.meter = null ; |
| | | // po.valve = null ; |
| | | // } |
| | | // if(stateVo != null){ |
| | | // po.iccard = stateVo.icCard ; |
| | | // po.working = stateVo.working ; |
| | | // po.valvestate = stateVo.valve ; |
| | | // }else{ |
| | | // po.iccard = null ; |
| | | // po.working = null ; |
| | | // po.valvestate = null ; |
| | | // } |
| | | 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(rtuDt) ; |
| | | if(alarmVo != null){ |
| | | po.alarmBatteryVolt = alarmVo.batteryVolt ; |
| | | po.alarmLoss = alarmVo.loss ; |
| | | po.alarmWaterMeterBreak = alarmVo.meter ; |
| | | po.alarmValve = alarmVo.valve ; |
| | | }/*else{ |
| | | po.alarmBatteryVolt = null ; |
| | | po.alarmLoss = null ; |
| | | po.alarmWaterMeterBreak = null ; |
| | | po.alarmValve = null ; |
| | | }*/ |
| | | if(stateVo != null){ |
| | | po.stateIcEnable = stateVo.icCard ; |
| | | po.valveState = stateVo.working ; |
| | | //po.valvestate = stateVo.valve ; |
| | | }/*else{ |
| | | po.stateIcEnable = null ; |
| | | po.valveState = null ; |
| | | //po.valvestate = null ; |
| | | }*/ |
| | | return po ; |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 虚拟卡在取水中的占用状态改为非应用状态 |
| | | */ |
| | | private void updateVirCardNoUseState(DbSv sv, |
| | | PrController controller, |
| | | DataStateVo stateVo){ |
| | | if(stateVo != null){ |
| | | if(stateVo.working != null && stateVo.working.byteValue() == 0){ |
| | | //阀门关闭状态 |
| | | if(controller != null && controller.getIntakeId() != null){ |
| | | //虚拟卡在取水中的占用状态改为非应用状态 |
| | | sv.updateVirCardNoUseState(controller.getIntakeId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | alarmVo==null?null:alarmVo.alarmEleMiss, |
| | | alarmVo==null?null:alarmVo.alarmEleExceed, |
| | | alarmVo==null?null:alarmVo.alarmEleLowVolt, |
| | | alarmVo==null?null:alarmVo.stateIcEnable |
| | | alarmVo==null?null:alarmVo.stateIcEnable, |
| | | (byte)0,//电池电压(1:报警,0:正常) |
| | | (byte)0//阀门报警(1:报警,0:正常) |
| | | ) ; |
| | | sv.saveRmAlarmStateLast(po) ; |
| | | }else{ |
| | | po = this.update(po, controller, rtuDt, alarmVo, receiveDt) ; |
| | | this.updateVirCardNoUseState(sv, controller, alarmVo) ; |
| | | sv.updateRmAlarmStateLast(po); |
| | | } |
| | | } |
| | |
| | | alarmVo==null?null:alarmVo.alarmEleMiss, |
| | | alarmVo==null?null:alarmVo.alarmEleExceed, |
| | | alarmVo==null?null:alarmVo.alarmEleLowVolt, |
| | | alarmVo==null?null:alarmVo.stateIcEnable |
| | | alarmVo==null?null:alarmVo.stateIcEnable, |
| | | (byte)0,//电池电压(1:报警,0:正常) |
| | | (byte)0//阀门报警(1:报警,0:正常) |
| | | ) ; |
| | | sv.saveRmAlarmStateHistory(po) ; |
| | | } |
| | |
| | | } |
| | | return po ; |
| | | } |
| | | |
| | | /** |
| | | * 虚拟卡在取水中的占用状态改为非应用状态 |
| | | */ |
| | | private void updateVirCardNoUseState(DbSv sv, |
| | | PrController controller, |
| | | AlarmVo alarmVo){ |
| | | if(alarmVo != null){ |
| | | if(alarmVo.statePump != null && alarmVo.statePump.byteValue() == 0){ |
| | | //阀门关闭状态 |
| | | if(controller != null && controller.getIntakeId() != null){ |
| | | //虚拟卡在取水中的占用状态改为非应用状态 |
| | | sv.updateVirCardNoUseState(controller.getIntakeId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | <!-- 识别非命令应答上行数据 --> |
| | | <task id="TkFindReportV202404" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindReportV202404"> |
| | | <task id="TkDealAlarmStatusV202404" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatusV202404" /> |
| | | <task id="TkDealTimingReportV202404" name="控制器定点上报数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealTimingReportV202404" /> |
| | | <task id="TkDealTimingReportV202404" name="控制器定时上报数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealTimingReportV202404" /> |
| | | </task> |
| | | <!-- 识别命令响应数据 --> |
| | | <task id="TkFindComResponseV202404" name="识别响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindComResponseV202404"> |