|
@@ -0,0 +1,64 @@
|
|
|
+package com.bz.smart_city.kafka;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.bz.smart_city.dao.pay.PayControlRecordMapper;
|
|
|
+import com.bz.smart_city.entity.pay.PayControlRecord;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.kafka.clients.consumer.ConsumerRecord;
|
|
|
+import org.springframework.kafka.annotation.KafkaListener;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description
|
|
|
+ * @auto wangli
|
|
|
+ * @data 2021/1/20 8:55
|
|
|
+ */
|
|
|
+@Component
|
|
|
+@Slf4j
|
|
|
+public class ValveStateConsumer {
|
|
|
+ @Resource
|
|
|
+ private PayControlRecordMapper payControlRecordMapper;
|
|
|
+
|
|
|
+ @KafkaListener(topics = {"billing_valveStatus_receiving"})
|
|
|
+ public void listener(ConsumerRecord<String, String> record){
|
|
|
+
|
|
|
+ Optional<String> msg = Optional.ofNullable(record.value());
|
|
|
+ if(msg.isPresent()){
|
|
|
+ log.info("kafka阀门接口数据,{}",msg.get());
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSON.parseObject(msg.get());
|
|
|
+ String valueState = jsonObject.getString("meterStatus"); //阀门状态: 0关阀 1开阀 2 无阀,3异常
|
|
|
+ String meterNo = jsonObject.getString("meterNo");
|
|
|
+
|
|
|
+ //更新设备信息的阀门阀门状态
|
|
|
+ payControlRecordMapper.updateDeviceValveState(valueState,meterNo);
|
|
|
+ //更新阀控记录(最后一条)
|
|
|
+ PayControlRecord payControlRecord = payControlRecordMapper.findControlRecordByMetercode(meterNo);
|
|
|
+
|
|
|
+ Integer state =Integer.valueOf(valueState);
|
|
|
+
|
|
|
+ if(payControlRecord != null && payControlRecord .getResult() == 0){ //执行中的才更新
|
|
|
+ if (payControlRecord.getType() == 0) { //0关阀操作
|
|
|
+ if(state == 0){ // 阀门为关阀则执行成功
|
|
|
+ payControlRecordMapper.updateControlRecordResult(1,state,payControlRecord.getId());
|
|
|
+ }else
|
|
|
+ if(state == 3){ // 阀门为异常则执行失败
|
|
|
+ payControlRecordMapper.updateControlRecordResult(2,state,payControlRecord.getId());
|
|
|
+ }
|
|
|
+ }else if (payControlRecord.getType() == 1) { //1开阀操作
|
|
|
+ if(state == 1){ // 阀门为开阀则执行成功
|
|
|
+ payControlRecordMapper.updateControlRecordResult(1,state,payControlRecord.getId());
|
|
|
+ }else
|
|
|
+ if(state == 3){ // 阀门为异常则执行失败
|
|
|
+ payControlRecordMapper.updateControlRecordResult(2,state,payControlRecord.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|