From ed093002ab4882ca377430b2f8506cb5ed72fdbd Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期三, 04 十二月 2024 14:11:10 +0800 Subject: [PATCH] power实时推送 --- src/main/java/com/whyc/pojo/StationInf.java | 2 src/main/java/com/whyc/service/PowerRealRt2Service.java | 7 src/main/java/com/whyc/pojo/PowerInf.java | 8 src/main/java/com/whyc/service/PowerBattRtService.java | 7 src/main/java/com/whyc/pojo/PowerBattRt.java | 57 ++++ src/main/java/com/whyc/service/PowerRealRt1Service.java | 7 src/main/java/com/whyc/mapper/PowerInfMapper.java | 6 src/main/java/com/whyc/service/PowerInfService.java | 75 +++++ src/main/java/com/whyc/pojo/PowerRealRt2.java | 170 +++++++++++++ src/main/java/com/whyc/mapper/PowerRealRt2Mapper.java | 6 src/main/java/com/whyc/service/PowerRealRt3Service.java | 7 src/main/java/com/whyc/webSocket/PowerSocket.java | 126 +++++++++ src/main/java/com/whyc/mapper/PowerBattRtMapper.java | 6 src/main/java/com/whyc/pojo/PowerRealRt3.java | 86 ++++++ src/main/java/com/whyc/mapper/PowerRealRt3Mapper.java | 6 src/main/java/com/whyc/mapper/PowerRealRt1Mapper.java | 6 src/main/java/com/whyc/pojo/PowerRealRt1.java | 182 ++++++++++++++ 17 files changed, 763 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/whyc/mapper/PowerBattRtMapper.java b/src/main/java/com/whyc/mapper/PowerBattRtMapper.java new file mode 100644 index 0000000..69923e8 --- /dev/null +++ b/src/main/java/com/whyc/mapper/PowerBattRtMapper.java @@ -0,0 +1,6 @@ +package com.whyc.mapper; + +import com.whyc.pojo.PowerBattRt; + +public interface PowerBattRtMapper extends CustomMapper<PowerBattRt>{ +} \ No newline at end of file diff --git a/src/main/java/com/whyc/mapper/PowerInfMapper.java b/src/main/java/com/whyc/mapper/PowerInfMapper.java new file mode 100644 index 0000000..b64f7ca --- /dev/null +++ b/src/main/java/com/whyc/mapper/PowerInfMapper.java @@ -0,0 +1,6 @@ +package com.whyc.mapper; + +import com.whyc.pojo.PowerInf; + +public interface PowerInfMapper extends CustomMapper<PowerInf>{ +} \ No newline at end of file diff --git a/src/main/java/com/whyc/mapper/PowerRealRt1Mapper.java b/src/main/java/com/whyc/mapper/PowerRealRt1Mapper.java new file mode 100644 index 0000000..cd367e6 --- /dev/null +++ b/src/main/java/com/whyc/mapper/PowerRealRt1Mapper.java @@ -0,0 +1,6 @@ +package com.whyc.mapper; + +import com.whyc.pojo.PowerRealRt1; + +public interface PowerRealRt1Mapper extends CustomMapper<PowerRealRt1>{ +} \ No newline at end of file diff --git a/src/main/java/com/whyc/mapper/PowerRealRt2Mapper.java b/src/main/java/com/whyc/mapper/PowerRealRt2Mapper.java new file mode 100644 index 0000000..d2a06f2 --- /dev/null +++ b/src/main/java/com/whyc/mapper/PowerRealRt2Mapper.java @@ -0,0 +1,6 @@ +package com.whyc.mapper; + +import com.whyc.pojo.PowerRealRt2; + +public interface PowerRealRt2Mapper extends CustomMapper<PowerRealRt2>{ +} \ No newline at end of file diff --git a/src/main/java/com/whyc/mapper/PowerRealRt3Mapper.java b/src/main/java/com/whyc/mapper/PowerRealRt3Mapper.java new file mode 100644 index 0000000..4a20b11 --- /dev/null +++ b/src/main/java/com/whyc/mapper/PowerRealRt3Mapper.java @@ -0,0 +1,6 @@ +package com.whyc.mapper; + +import com.whyc.pojo.PowerRealRt3; + +public interface PowerRealRt3Mapper extends CustomMapper<PowerRealRt3>{ +} \ No newline at end of file diff --git a/src/main/java/com/whyc/pojo/PowerBattRt.java b/src/main/java/com/whyc/pojo/PowerBattRt.java new file mode 100644 index 0000000..6dd7878 --- /dev/null +++ b/src/main/java/com/whyc/pojo/PowerBattRt.java @@ -0,0 +1,57 @@ +package com.whyc.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author lxw + * @since 2024-12-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(schema = "db_power_rt",value = "tb_power_batt_rt") +@ApiModel(value="PowerBattRt瀵硅薄", description="") +public class PowerBattRt implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "鑷涓婚敭") + @TableId(value = "num", type = IdType.AUTO) + private Long num; + + @ApiModelProperty(value = "鐢垫簮ID") + private Integer powerId; + + @ApiModelProperty(value = "璁板綍鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date recordTime; + + @ApiModelProperty(value = "鍗曚綋缂栧彿") + private Integer monNum; + + @ApiModelProperty(value = "鍗曚綋鐢靛帇") + private Float monVol; + + @ApiModelProperty(value = "鍗曚綋鍐呴樆") + private Float monRes; + + @ApiModelProperty(value = "鍗曚綋娓╁害") + private Float monTmp; + + +} diff --git a/src/main/java/com/whyc/pojo/PowerInf.java b/src/main/java/com/whyc/pojo/PowerInf.java index b18ca24..e005871 100644 --- a/src/main/java/com/whyc/pojo/PowerInf.java +++ b/src/main/java/com/whyc/pojo/PowerInf.java @@ -45,5 +45,13 @@ @ApiModelProperty("鐩存祦杈撳嚭鐢靛帇涓嬮檺闃堝��") private Float dcoutvolLowLimit; + @TableField("power_ip") + @ApiModelProperty("鐢垫簮ip") + private String powerIp; + + @TableField("dev_type") + @ApiModelProperty("鐢垫簮绫诲瀷锛�1<鍖呭惈鐢垫簮瀹炴椂rt>锛�2<鍖呭惈鐢垫簮瀹炴椂rt>锛�3<涓嶅寘鍚數婧愬疄鏃秗t>") + private Integer devType; + } \ No newline at end of file diff --git a/src/main/java/com/whyc/pojo/PowerRealRt1.java b/src/main/java/com/whyc/pojo/PowerRealRt1.java new file mode 100644 index 0000000..ba85d8a --- /dev/null +++ b/src/main/java/com/whyc/pojo/PowerRealRt1.java @@ -0,0 +1,182 @@ +package com.whyc.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author lxw + * @since 2024-12-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(schema = "db_power_rt",value = "tb_power_real_rt1") +@ApiModel(value="PowerRealRt1瀵硅薄", description="") +public class PowerRealRt1 implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "鑷涓婚敭") + @TableId(value = "num", type = IdType.AUTO) + private Long num; + + private Integer powerId; + + @ApiModelProperty(value = "璁板綍鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date recordTime; + + private Float charOutVol; + + private Float charOutCurr; + + private Float groupVol; + + private Float groupCurr; + + private Float groupTmp; + + private Float busVol; + + private Float ac1Vola; + + private Float ac1Volb; + + private Float ac1Volc; + + private Float ac2Vola; + + private Float ac2Volb; + + private Float ac2Volc; + + private Float busVolPositive; + + private Float busVolNegative; + + private Float busResPositive; + + private Float busResNegative; + + private Integer charJunFloat; + + private Integer charOpenClose; + + private Integer charModelError; + + private Integer charOutOvervol; + + private Integer charOutLessvol; + + private Integer battOvervol; + + private Integer battLessvol; + + private Integer battMonOvervol; + + private Integer battMonLessvol; + + private Integer battState; + + private Integer controlBusOvervol; + + private Integer controlBusLessvol; + + private Integer insualBusVolError; + + private Integer controlBusPositiveError; + + private Integer controlBusNegativeError; + + private Integer insualBusAcvolOvervol; + + private Integer battPatrolDetectorError; + + private Integer insualError; + + private Integer acin1Qf11; + + private Integer acin1Qf12; + + private Integer charOutBusDk11; + + private Integer charOutBattDk12; + + private Integer battOutQf1; + + private Integer busSwitchN1lzk; + + private Integer ac1Fault; + + private Integer ac2Fault; + + private Integer mainSwitchFault; + + private Integer feederTripFault; + + private Integer thunderFault; + + private Integer feedersCommFault; + + private Integer dcFeeder7to9Switch1; + + private Integer dcFeeder7Switch; + + private Integer dcFeeder7Bus1Zk11; + + private Integer dcFeeder7Bus2Zk12; + + private Integer dcFeeder8Switch; + + private Integer dcFeeder8Bus1Zk11; + + private Integer dcFeeder8Bus2Zk12; + + private Integer dcFeeder9Switch; + + private Integer dcFeeder9Bus1Zk11; + + private Integer dcFeeder9Bus2Zk12; + + private Integer acFeeder7Switch; + + private Integer acFeeder7Acin1Q11; + + private Integer acFeeder7Acin2Q12; + + private Integer acFeeder7Acin1Fault; + + private Integer acFeeder7Acin2Fault; + + private Integer acFeeder9Switch; + + private Integer acFeeder9Acin1Q11; + + private Integer acFeeder9Acin2Q12; + + private Integer acFeeder9Acin1Fault; + + private Integer acFeeder9Acin2Fault; + + private Integer insualCommFault; + + private Integer insualInsualFault; + + private Integer insualMiainCommFault; + + +} diff --git a/src/main/java/com/whyc/pojo/PowerRealRt2.java b/src/main/java/com/whyc/pojo/PowerRealRt2.java new file mode 100644 index 0000000..d38f522 --- /dev/null +++ b/src/main/java/com/whyc/pojo/PowerRealRt2.java @@ -0,0 +1,170 @@ +package com.whyc.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author lxw + * @since 2024-12-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(schema = "db_power_rt",value = "tb_power_real_rt2") +@ApiModel(value="PowerRealRt2瀵硅薄", description="") +public class PowerRealRt2 implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "鑷涓婚敭") + @TableId(value = "num", type = IdType.AUTO) + private Long num; + + private Integer powerId; + + @ApiModelProperty(value = "璁板綍鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date recordTime; + + private Float charOutVol; + + private Float charOutCurr; + + private Float groupVol; + + private Float groupCurr; + + private Float groupTmp; + + private Float busVol; + + private Float ac1Vola; + + private Float ac1Volb; + + private Float ac1Volc; + + private Float ac2Vola; + + private Float ac2Volb; + + private Float ac2Volc; + + private Float busVolPositive; + + private Float busVolNegative; + + private Float busResPositive; + + private Float busResNegative; + + private Integer charJunFloat; + + private Integer charOpenClose; + + private Integer charModelError; + + private Integer charOutOvervol; + + private Integer charOutLessvol; + + private Integer battOvervol; + + private Integer battLessvol; + + private Integer battMonOvervol; + + private Integer battMonLessvol; + + private Integer battState; + + private Integer controlBusOvervol; + + private Integer controlBusLessvol; + + private Integer insualBusVolError; + + private Integer controlBusPositiveError; + + private Integer controlBusNegativeError; + + private Integer insualBusAcvolOvervol; + + private Integer battPatrolDetectorError; + + private Integer insualError; + + private Integer acin2Qf21; + + private Integer acin2Qf22; + + private Integer charOutBusDk21; + + private Integer charOutBattDk22; + + private Integer battOutQf1; + + private Integer ac1Fault; + + private Integer ac2Fault; + + private Integer mainSwitchFault; + + private Integer feederTripFault; + + private Integer thunderFault; + + private Integer feedersCommFault; + + private Integer dcFeeder7to9Switch1; + + private Integer dcFeeder7Switch; + + private Integer dcFeeder7Bus1Zk21; + + private Integer dcFeeder7Bus2Zk22; + + private Integer dcFeeder8Switch; + + private Integer dcFeeder8Bus1Zk21; + + private Integer dcFeeder8Bus2Zk22; + + private Integer dcFeeder9Switch; + + private Integer dcFeeder9Bus1Zk21; + + private Integer dcFeeder9Bus2Zk22; + + private Integer acFeeder8Switch; + + private Integer acFeeder8Acin1Q11; + + private Integer acFeeder8Acin2Q12; + + private Integer acFeeder8Acin1Fault; + + private Integer acFeeder8Acin2Fault; + + private Integer insualCommFault; + + private Integer insualInsualFault; + + private Integer insualMiainCommFault; + + +} diff --git a/src/main/java/com/whyc/pojo/PowerRealRt3.java b/src/main/java/com/whyc/pojo/PowerRealRt3.java new file mode 100644 index 0000000..f17e505 --- /dev/null +++ b/src/main/java/com/whyc/pojo/PowerRealRt3.java @@ -0,0 +1,86 @@ +package com.whyc.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author lxw + * @since 2024-12-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(schema = "db_power_rt",value = "tb_power_real_rt3") +@ApiModel(value="PowerRealRt3瀵硅薄", description="") +public class PowerRealRt3 implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "鑷涓婚敭") + @TableId(value = "num", type = IdType.AUTO) + private Long num; + + private Integer powerId; + + @ApiModelProperty(value = "璁板綍鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date recordTime; + + private Float charOutVol; + + private Float charOutCurr; + + private Float ac1Vola; + + private Float ac1Volb; + + private Float ac1Volc; + + private Float ac2Vola; + + private Float ac2Volb; + + private Float ac2Volc; + + private Integer charJunFloat; + + private Integer charOpenClose; + + private Integer charModelError; + + private Integer charOutOvervol; + + private Integer charOutLessvol; + + private Integer acin3Qf31; + + private Integer acin3Qf32; + + private Integer charOutBatt1Dk31; + + private Integer charOutBatt2Dk31; + + private Integer ac1Fault; + + private Integer ac2Fault; + + private Integer mainSwitchFault; + + private Integer thunderFault; + + +} diff --git a/src/main/java/com/whyc/pojo/StationInf.java b/src/main/java/com/whyc/pojo/StationInf.java index 0c5bc2e..848026f 100644 --- a/src/main/java/com/whyc/pojo/StationInf.java +++ b/src/main/java/com/whyc/pojo/StationInf.java @@ -28,7 +28,7 @@ @TableField("stype") - @ApiModelProperty("鏈烘埧绫诲瀷: 1<鐢垫睜缁�> 2<鐢垫簮>") + @ApiModelProperty("鏈烘埧绫诲瀷: 0<鍖呭惈鐢垫睜缁勫拰鐢垫簮>1<鐢垫睜缁�> 2<鐢垫簮>") private Integer stype; @TableField(exist = false) diff --git a/src/main/java/com/whyc/service/PowerBattRtService.java b/src/main/java/com/whyc/service/PowerBattRtService.java new file mode 100644 index 0000000..8456715 --- /dev/null +++ b/src/main/java/com/whyc/service/PowerBattRtService.java @@ -0,0 +1,7 @@ +package com.whyc.service; + +import org.springframework.stereotype.Service; + +@Service +public class PowerBattRtService { +} \ No newline at end of file diff --git a/src/main/java/com/whyc/service/PowerInfService.java b/src/main/java/com/whyc/service/PowerInfService.java new file mode 100644 index 0000000..8123cf4 --- /dev/null +++ b/src/main/java/com/whyc/service/PowerInfService.java @@ -0,0 +1,75 @@ +package com.whyc.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.whyc.dto.Response; +import com.whyc.mapper.*; +import com.whyc.pojo.PowerBattRt; +import com.whyc.pojo.PowerInf; +import com.whyc.pojo.PowerRealRt1; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class PowerInfService { + @Autowired(required = false) + private PowerInfMapper mapper; + + @Autowired(required = false) + private PowerBattRtMapper powerRtmapper; + + @Autowired(required = false) + private PowerRealRt1Mapper realRt1Mapper; + + @Autowired(required = false) + private PowerRealRt2Mapper realRt2Mapper; + + @Autowired(required = false) + private PowerRealRt3Mapper realRt3Mapper; + + //鏍规嵁id鑾峰彇鐢垫簮淇℃伅 + public Map<String,Object> getInfById(int powerId) { + Map<String,Object> map=new HashMap<>(); + QueryWrapper wrapper=new QueryWrapper(); + wrapper.eq("power_id",powerId); + wrapper.last("limit 1"); + PowerInf pinf=mapper.selectOne(wrapper); + Integer devType=pinf.getDevType(); + map.put("devType",devType); + if(devType!=3){//绗笁绉嶄笉鍖呭惈鍗曚綋瀹炴椂 + List<PowerBattRt> list=getBattRt(powerId); + map.put("battRt",list); + } + Object obj=getRealRt(powerId,devType); + map.put("realRt"+devType,obj); + return map; + } + //鑾峰彇鐢电數婧愪俊鎭� + private Object getRealRt(int powerId,int devType) { + QueryWrapper wrapper=new QueryWrapper(); + wrapper.eq("power_id",powerId); + wrapper.last("limit 1"); + Object obj=null; + if(devType==1){ + obj=realRt1Mapper.selectOne(wrapper); + } + if(devType==2){ + obj=realRt2Mapper.selectOne(wrapper); + } + if(devType==3){ + obj=realRt3Mapper.selectOne(wrapper); + } + return obj; + } + + //鑾峰彇鐢垫簮鐢垫睜缁勪俊鎭� + private List<PowerBattRt> getBattRt(int powerId) { + QueryWrapper wrapper=new QueryWrapper(); + wrapper.eq("power_id",powerId); + List<PowerBattRt> list=mapper.selectList(wrapper); + return list; + } +} \ No newline at end of file diff --git a/src/main/java/com/whyc/service/PowerRealRt1Service.java b/src/main/java/com/whyc/service/PowerRealRt1Service.java new file mode 100644 index 0000000..b817f52 --- /dev/null +++ b/src/main/java/com/whyc/service/PowerRealRt1Service.java @@ -0,0 +1,7 @@ +package com.whyc.service; + +import org.springframework.stereotype.Service; + +@Service +public class PowerRealRt1Service { +} \ No newline at end of file diff --git a/src/main/java/com/whyc/service/PowerRealRt2Service.java b/src/main/java/com/whyc/service/PowerRealRt2Service.java new file mode 100644 index 0000000..b16b3d8 --- /dev/null +++ b/src/main/java/com/whyc/service/PowerRealRt2Service.java @@ -0,0 +1,7 @@ +package com.whyc.service; + +import org.springframework.stereotype.Service; + +@Service +public class PowerRealRt2Service { +} \ No newline at end of file diff --git a/src/main/java/com/whyc/service/PowerRealRt3Service.java b/src/main/java/com/whyc/service/PowerRealRt3Service.java new file mode 100644 index 0000000..85c9803 --- /dev/null +++ b/src/main/java/com/whyc/service/PowerRealRt3Service.java @@ -0,0 +1,7 @@ +package com.whyc.service; + +import org.springframework.stereotype.Service; + +@Service +public class PowerRealRt3Service { +} \ No newline at end of file diff --git a/src/main/java/com/whyc/webSocket/PowerSocket.java b/src/main/java/com/whyc/webSocket/PowerSocket.java new file mode 100644 index 0000000..c3da6d4 --- /dev/null +++ b/src/main/java/com/whyc/webSocket/PowerSocket.java @@ -0,0 +1,126 @@ +package com.whyc.webSocket; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.whyc.config.WebSocketConfig; +import com.whyc.dto.Response; +import com.whyc.factory.ThreadPoolExecutorFactory; +import com.whyc.pojo.PowerInf; +import com.whyc.pojo.RtState; +import com.whyc.pojo.StationInf; +import com.whyc.service.*; +import com.whyc.util.ActionUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpSession; +import javax.websocket.*; +import javax.websocket.server.ServerEndpoint; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * packageName com.whyc.websocket + * + * @author lxw + * @version JDK 8 + * @className PowerSocket (姝ゅ浠lass涓轰緥) + * @date 2024/6/15 + * @description TODO + */ +@Component +@ServerEndpoint(value = "/power", encoders = WebSocketEncoder.class) +public class PowerSocket{ + private Session session; + + private Thread thread; + + private volatile boolean runFlag = true; + + private volatile Map<String, Thread> threadMap = new HashMap<>(); + + + private static final int executeTime = 5000; + + private static PowerInfService pinfService; + + private volatile Map<Long,Boolean> threadFlagMap = new HashMap<>(); + + + @Autowired + public void setPowerInfService(PowerInfService pinfService) { + PowerSocket.pinfService = pinfService; + } + + + @OnOpen + public void onOpen(Session session) { + this.session = session; + } + + @OnMessage + public void onMessage(Session session, String message) { + int powerId=Integer.valueOf(message); + thread = new Thread("Thread_PowerSocket") { + @Override + public void run() { + while (runFlag && !isInterrupted()) { + Thread thread = currentThread(); + threadFlagMap.put(thread.getId(), true); + try { + Map<String,Object> map=getPowerRt(powerId); + if (session.isOpen()) { + //鎺ㄩ�佷俊鎭� + synchronized (session) { + session.getBasicRemote().sendObject(new Response().set(1, map)); + } + threadFlagMap.put(thread.getId(), false); + } + sleep(executeTime); + } catch (Exception e) { + interrupt(); + } + } + } + }; + thread.start(); + threadFlagMap.put(thread.getId(),true); + //鍋滄鑰佺殑socket绾跨▼ + Thread threadBefore = threadMap.get(session.getId()); + if(threadBefore !=null && threadBefore.isAlive()){ + while (threadFlagMap.get(threadBefore.getId())){ + } + threadBefore.interrupt(); + } + //灏嗙嚎绋嬪瓨鍌�,渚夸簬璋冪敤瀹氫綅 + threadMap.put(session.getId(), this.thread); + } + //鑾峰彇鐢垫簮鐨勫疄鏃舵暟鎹� + private Map<String,Object> getPowerRt(int powerId) { + Map<String,Object> map=pinfService.getInfById(powerId); + return map; + } + + @OnClose + public void onClose(CloseReason closeReason){ + System.err.println("closeReason = " + closeReason); + runFlag = false; + if (thread != null && thread.isAlive()) { + thread.interrupt(); + } + threadMap.remove(session.getId()); + } + + @OnError + public void onError(Throwable error) { + error.printStackTrace(); + if (thread != null && thread.isAlive()) { + thread.interrupt(); + } + threadMap.remove(session.getId()); + } +} \ No newline at end of file -- Gitblit v1.9.1