whycxzp
2023-05-23 446eeed29c0a743b49b369732bad0163b98e18aa
更新webSocket接口
3个文件已修改
1个文件已添加
186 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/BattdischargePlanController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattdischargePlanService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/FaultUploadService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/taskPersonalWebSocket.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/BattdischargePlanController.java
@@ -86,7 +86,8 @@
    @ApiOperation("获取年度放电任务量统计-组内")
    @GetMapping("myPlanCount")
    public Response getMyPlanCount(){
        return service.getMyPlanCount();
        int userId = ActionUtil.getUser().getUId().intValue();
        return service.getMyPlanCount(userId);
    }
    @ApiOperation("获取年度放电任务量统计-管理")
src/main/java/com/whyc/service/BattdischargePlanService.java
@@ -421,8 +421,7 @@
    }
    public Response getMyPlanCount() {
        int userId = ActionUtil.getUser().getUId().intValue();
    public Response getMyPlanCount(int userId) {
        Map<String,Integer> map = new HashMap<>();
        int year = Calendar.getInstance().get(Calendar.YEAR);
        List<BattdischargePlan> planList = mapper.getPlanCount(userId, year);
src/main/java/com/whyc/service/FaultUploadService.java
@@ -86,7 +86,9 @@
        Date now = new Date();
        String uploadStartTime = null;
        String uploadEndTime = null;
        if(timeType == 1){
        if(timeType == null) {
            //不操作
        }else if(timeType == 1){
            //本月
            Calendar monthStart = Calendar.getInstance();
            monthStart.setTime(now);
@@ -142,7 +144,7 @@
            }
            uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());
        }else{
        }else if(timeType ==3){
            //年度
            Calendar monthStart = Calendar.getInstance();
            monthStart.setTime(now);
@@ -311,6 +313,27 @@
    public Response getMyUploadStatusCount(int userId) {
        Map<String,Integer> map = new HashMap<>();
        FaultUpload upload = new FaultUpload();
        //年度
        Calendar monthStart = Calendar.getInstance();
        monthStart.set(Calendar.MONTH,0);
        monthStart.set(Calendar.DAY_OF_MONTH,1);
        monthStart.set(Calendar.HOUR_OF_DAY, 0);
        monthStart.set(Calendar.MINUTE, 0);
        monthStart.set(Calendar.SECOND, 0);
        Calendar monthEnd = Calendar.getInstance();
        //设置为1号,当前日期既为本月第一天
        monthEnd.set(Calendar.MONTH,11);
        monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
        monthEnd.set(Calendar.HOUR_OF_DAY, 23);
        monthEnd.set(Calendar.MINUTE, 59);
        monthEnd.set(Calendar.SECOND, 59);
        String uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
        String uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());
        upload.setUploadStartTime(uploadStartTime);
        upload.setUploadEndTime(uploadEndTime);
        List<FaultUpload> list = mapper.getList(userId, upload);
        List<FaultUpload> confirmedList = list.stream().filter(temp -> temp.getStatus() == 1).collect(Collectors.toList());
        List<FaultUpload> myList = list.stream().filter(temp -> temp.getUploadUserId() == userId).collect(Collectors.toList());
src/main/java/com/whyc/webSocket/taskPersonalWebSocket.java
New file
@@ -0,0 +1,153 @@
package com.whyc.webSocket;
import com.whyc.config.WebSocketConfig;
import com.whyc.dto.Response;
import com.whyc.pojo.FaultUpload;
import com.whyc.pojo.UserInf;
import com.whyc.service.BattdischargePlanService;
import com.whyc.service.FaultUploadService;
import com.whyc.service.KPIService;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpSession;
import javax.swing.*;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.util.HashMap;
import java.util.Map;
@Component
@ServerEndpoint(value = "/taskPersonal", encoders = WebSocketEncoder.class, configurator = WebSocketConfig.class)
public class taskPersonalWebSocket {
    private Session session;
    private Thread thread;
    private volatile boolean runFlag = true;
    private volatile Map<String, Thread> threadMap = new HashMap<>();
    private volatile Map<Long, Boolean> threadFlagMap = new HashMap<>();
    private static final int executeTime = 5000;
    private static FaultUploadService faultUploadService;
    private static BattdischargePlanService battdischargePlanService;
    private HttpSession httpSession;
    @Autowired
    public void setFaultUploadService(FaultUploadService faultUploadService) {
        taskPersonalWebSocket.faultUploadService = faultUploadService;
    }
    @Autowired
    public void setBattdischargePlanService(BattdischargePlanService battdischargePlanService) {
        taskPersonalWebSocket.battdischargePlanService = battdischargePlanService;
    }
    @OnOpen
    public void onOpen(Session session, EndpointConfig config) {
        this.session = session;
        this.httpSession = (HttpSession) config.getUserProperties().get("httpSession");
    }
    @OnMessage
    public void onMessage(Session session, String message) {
        //UserInf user = (UserInf) this.httpSession.getAttribute("user");
        //final int userId = user.getUId().intValue();
        final int userId = 1090;
        FaultUpload upload = ActionUtil.getGson().fromJson(message, FaultUpload.class);
        thread = new Thread("Thread_TaskPersonal") {
            @Override
            public void run() {
                while (runFlag && !isInterrupted()) {
                    Thread thread = currentThread();
                    threadFlagMap.put(thread.getId(), true);
                    try {
                        Map<String, Response> map = getTaskPersonal(userId, upload);
                        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);
    }
    //获取管理员的数据
    public Map getTaskPersonal(int userId, FaultUpload upload) {
        Map<String, Object> res = new HashMap<>();
        Response myPlanCount;
        try{
            myPlanCount = battdischargePlanService.getMyPlanCount(userId);
        }catch (Exception e){
            myPlanCount = new Response().setII(0,e.getCause().toString());
        }
        res.put("dischargeTask",myPlanCount);
        Response myFaultUpload;
        try{
            myFaultUpload = faultUploadService.getMyUploadStatusCount(userId);
        }catch (Exception e){
            myFaultUpload = new Response().setII(0,e.getCause().toString());
        }
        res.put("faultUploadTask",myFaultUpload);
        Response faultUploadTypeCount;
        try {
            faultUploadTypeCount = faultUploadService.getTypeCount(null,userId);
        }catch (Exception e){
            faultUploadTypeCount = new Response().setII(0,e.getCause().toString());
        }
        res.put("faultUploadTypeCount",faultUploadTypeCount);
        Response pageList;
        try{
            pageList = faultUploadService.listPage(upload.getPageNum(),upload.getPageSize(),upload,userId);
        }catch (Exception e){
            pageList = new Response().setII(0,e.getCause().toString());
        }
        res.put("pageList",pageList);
        return res;
    }
    @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());
    }
}