WgController.java 11.9 KB
package com.sincere.weigeng.controller;

import com.sincere.common.dto.smartCampus.SchoolDto;
import com.sincere.common.dto.smartCampus.StudentCardDto;
import com.sincere.common.dto.smartCampus.UpdateCardDto;
import com.sincere.common.dto.smartCampus.UserDto;
import com.sincere.common.dto.xiaoan.SendFailDto;
import com.sincere.common.dto.xiaoan.SendMessageDto;
import com.sincere.common.dto.xiaoan.SendSuccessDto;
import com.sincere.weigeng.Watch1200;
import com.sincere.weigeng.Watch1300;
import com.sincere.weigeng.feign.SmFeign;
import com.sincere.weigeng.feign.XaFeign;
import com.sincere.weigeng.logs.LogName;
import com.sincere.weigeng.logs.LoggerUtils;
import com.sincere.weigeng.utils.WatchServer;
import com.sincere.weigeng.vo.*;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.socket.DatagramPacket;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author chen
 * @version 1.0
 * @date 2019/10/14 0014 9:12
 */
@RestController
@Api(value = "微耕")
public class WgController {

    private static final Logger Log_orderSuccess = LoggerUtils.Logger(LogName.orderSuccess);
    private static final Logger Log_orderFail = LoggerUtils.Logger(LogName.orderFail);

    @Autowired
    SmFeign smFeign;

    @Autowired
    XaFeign xaFeign;

    @Autowired
    Watch1200 watch1200;

    @Autowired
    Watch1300 watch1300;

    public ChannelHandlerContext getContext(long sno) {
        ChannelHandlerContext context1200 = watch1200.getContext(sno);
        ChannelHandlerContext context1300 = watch1300.getContext(sno);
        if (context1200 == null) {
            return context1300;
        } else {
            return context1200;
        }
    }

    public DatagramPacket getPacket(long sno) {
        DatagramPacket packet1200 = watch1200.getPacket(sno);
        DatagramPacket packet1300 = watch1300.getPacket(sno);
        if (packet1200 == null) {
            return packet1300;
        } else {
            return packet1200;
        }
    }

    @RequestMapping(value = "openDoor1", method = RequestMethod.GET)
    public void openDoor1() {
        OpenDoorVo openDoorVo = new OpenDoorVo();
        openDoorVo.setId(1);
        openDoorVo.setSn(253163272);
        openDoorVo.setType(1);
        openDoorVo.setDoorNo(1);
        this.openDoor(openDoorVo);
    }

    @RequestMapping(value = "openDoor2", method = RequestMethod.GET)
    public void openDoor2() {
        OpenDoorVo openDoorVo = new OpenDoorVo();
        openDoorVo.setId(1);
        openDoorVo.setSn(253160793);
        openDoorVo.setType(1);
        openDoorVo.setDoorNo(1);
        this.openDoor(openDoorVo);
    }

    @RequestMapping(value = "setTime", method = RequestMethod.GET)
    public void setTime(long sn) {
        WatchServer.setTime(xaFeign, getContext(sn), getPacket(sn), sn, "48");
    }

    @ApiOperation("远程开门")
    @RequestMapping(value = "openDoor", method = RequestMethod.POST)
    public boolean openDoor(@RequestBody OpenDoorVo openDoorVo) {
        String functionId = smFeign.selectOutOrderId(openDoorVo.getType(), openDoorVo.getId());
        long messageId = WatchServer.openDoor(xaFeign, getContext(openDoorVo.getSn()), getPacket(openDoorVo.getSn()), openDoorVo.getSn(), functionId, openDoorVo.getDoorNo(), null);
        SendMessageDto message = getResult(messageId);
        if (message.getCorrect() == 1) {
            Log_orderSuccess.info("web端远程开门成功!");
        } else {
            Log_orderFail.info("远程开门失败");
        }
        return message.getCorrect() == 1;
    }

    @ApiOperation("设置考勤时段")
    @RequestMapping(value = "setAttendanceTime", method = RequestMethod.POST)
    public boolean setAttendanceTime(@RequestBody AttendanceTimeVo attendanceTimeVo) {
        String functionId = smFeign.selectOutOrderId(attendanceTimeVo.getType(), attendanceTimeVo.getId());
        List<Long> result = WatchServer.SetAttendanceTime(xaFeign, getContext(attendanceTimeVo.getSn()), getPacket(attendanceTimeVo.getSn()), attendanceTimeVo.getSn(), functionId, attendanceTimeVo.getShiduan(),
                attendanceTimeVo.getStart(), attendanceTimeVo.getEnd(), attendanceTimeVo.getIsMonday(), attendanceTimeVo.getIsTuesday(),
                attendanceTimeVo.getIsWednesday(), attendanceTimeVo.getIsThursday(), attendanceTimeVo.getIsFriday(),
                attendanceTimeVo.getIsSaturday(), attendanceTimeVo.getIsWeekend(), attendanceTimeVo.getShiqu());
        boolean isSuccess = true;
        for (Long messageId : result) {
            SendMessageDto message = getResult(messageId);
            if (message.getCorrect() == 1) {
                Log_orderSuccess.info("设备" + attendanceTimeVo.getSn() + "时段" + attendanceTimeVo.getShiduan() + "!!设置成功");
            } else {
                Log_orderFail.info("设备" + attendanceTimeVo.getSn() + "时段" + attendanceTimeVo.getShiduan() + "!!设置失败");
                isSuccess = false;
            }
        }
        return isSuccess;
    }

    @ApiOperation("单个卡号的权限添加或修改")
    @RequestMapping(value = "setSignalCardInfo", method = RequestMethod.POST)
    public boolean setSignalCardInfo(@RequestBody SignalCardInfoVo signalCardInfoVo) {
        String functionId = smFeign.selectOutOrderId(signalCardInfoVo.getType(), signalCardInfoVo.getId());
        String cardNo = initCardNo(signalCardInfoVo.getCardNo());
        long messageId = WatchServer.SetSignalCardInfo(xaFeign, getContext(signalCardInfoVo.getSn()), getPacket(signalCardInfoVo.getSn()), signalCardInfoVo.getSn(), functionId, cardNo,
                signalCardInfoVo.getShiduan(), signalCardInfoVo.getStartTime(), signalCardInfoVo.getEndTime());
        SendMessageDto message = getResult(messageId);
        UserDto user = smFeign.selectUserByCardNum(cardNo);
        StudentCardDto studentCard = smFeign.selectStudentCard(cardNo);
        SchoolDto school = smFeign.selectSchoolBySchoolId(user.getSchoolId());
        UpdateCardDto updateCard = smFeign.selectUpdateCardByUpdateId(signalCardInfoVo.getUpdateId());
        if (message.getCorrect() == 1) {
            Log_orderSuccess.info("设备" + signalCardInfoVo.getSn() + "时段" + signalCardInfoVo.getShiduan() + "卡号" + cardNo + "!!设置成功");
            SendSuccessDto sendSuccess = new SendSuccessDto(user, school, studentCard, updateCard);
            sendSuccess.setDeviceId(signalCardInfoVo.getSn() + "");
            sendSuccess.setShiduan(signalCardInfoVo.getShiduan());
            sendSuccess.setCardNum(cardNo);
            sendSuccess.setUpdateId(signalCardInfoVo.getUpdateId());
            sendSuccess.setOpenFlag(1);
            sendSuccess.setStatus(1);
            xaFeign.insertSendSuccess(sendSuccess);
        } else {
            Log_orderFail.info("设备" + signalCardInfoVo.getSn() + "时段" + signalCardInfoVo.getShiduan() + "卡号" + cardNo + "!!设置失败");
            SendFailDto sendFail = new SendFailDto(user, school, studentCard, updateCard);
            sendFail.setDeviceId(signalCardInfoVo.getSn() + "");
            sendFail.setShiduan(signalCardInfoVo.getShiduan());
            sendFail.setCardNum(cardNo);
            sendFail.setUpdateId(signalCardInfoVo.getUpdateId());
            sendFail.setOpenFlag(1);
            sendFail.setStatus(1);
            sendFail.setFailType(2);
            sendFail.setFailContent("其他");
            xaFeign.insertSendFail(sendFail);
        }
        return message.getCorrect() == 1;
    }


    @ApiOperation("清除单个卡号权限")
    @RequestMapping(value = "clearSinglePower", method = RequestMethod.POST)
    public boolean clearSinglePower(@RequestBody CardInfo cardInfo) {
        String functionId = smFeign.selectOutOrderId(cardInfo.getType(), cardInfo.getId());
        String cardNo = initCardNo(cardInfo.getCardNo());
        long messageId = WatchServer.clearSinglePower(xaFeign, getContext(cardInfo.getSn()), getPacket(cardInfo.getSn()), cardInfo.getSn(), functionId, cardNo);
        SendMessageDto message = getResult(messageId);
        if (message.getCorrect() == 1) {
            Log_orderSuccess.info("卡号" + cardNo + "清除权限成功");
            SendSuccessDto sendSuccess = new SendSuccessDto();
            sendSuccess.setCardNum(cardNo);
            sendSuccess.setDeviceId(cardInfo.getSn() + "");
            xaFeign.updateSendSuccess(sendSuccess);
        } else {
            Log_orderFail.info("卡号" + cardNo + "清除权限失败");
        }
        return message.getCorrect() == 1;
    }

    @ApiOperation("清除全部权限")
    @RequestMapping(value = "clearAllPower", method = RequestMethod.POST)
    public boolean clearAllPower(@RequestBody CleanShiDuanVo cleanShiDuanVo) {
        String functionId = smFeign.selectOutOrderId(cleanShiDuanVo.getType(), cleanShiDuanVo.getId());
        long messageId = WatchServer.clearAllPower(xaFeign, getContext(cleanShiDuanVo.getSn()), getPacket(cleanShiDuanVo.getSn()), cleanShiDuanVo.getSn(), functionId);
        SendMessageDto message = getResult(messageId);
        if (message.getCorrect() == 1) {
            Log_orderSuccess.info("设备" + cleanShiDuanVo.getSn() + "清除权限成功");
            SendSuccessDto sendSuccess = new SendSuccessDto();
            sendSuccess.setDeviceId(cleanShiDuanVo.getSn() + "");
            xaFeign.updateSendSuccess(sendSuccess);
        } else {
            Log_orderFail.info("设备" + cleanShiDuanVo.getSn() + "清除权限失败");
        }
        return message.getCorrect() == 1;
    }


    @ApiOperation("清除时段")
    @RequestMapping(value = "clearShiDuan", method = RequestMethod.POST)
    public boolean clearShiDuan(@RequestBody CleanShiDuanVo cleanShiDuanVo) {
        String functionId = smFeign.selectOutOrderId(cleanShiDuanVo.getType(), cleanShiDuanVo.getId());
        long messageId = WatchServer.clearShiDuan(xaFeign, getContext(cleanShiDuanVo.getSn()), getPacket(cleanShiDuanVo.getSn()), cleanShiDuanVo.getSn(), functionId);
        SendMessageDto sendMessage = getResult(messageId);
        if (sendMessage.getCorrect() == 1) {
            Log_orderSuccess.info("设备" + cleanShiDuanVo.getSn() + "时段清除成功");
        } else {
            Log_orderFail.info("设备" + cleanShiDuanVo.getSn() + "时段清除失败");
        }
        return sendMessage.getCorrect() == 1;
    }

    @ApiOperation("查询单个卡号 权限")
    @RequestMapping(value = "searchPower", method = RequestMethod.POST)
    public boolean searchPower(@RequestBody CardInfo cardInfo) {
        String functionId = smFeign.selectOutOrderId(cardInfo.getType(), cardInfo.getId());
        String cardNo = initCardNo(cardInfo.getCardNo());
        long messageId = WatchServer.searchPower(xaFeign, getContext(cardInfo.getSn()), getPacket(cardInfo.getSn()), cardInfo.getSn(), functionId, cardNo);
        SendMessageDto sendMessage = getResult(messageId);
        if (sendMessage.getCorrect() == 1) {
            Log_orderSuccess.info("设备" + cardInfo.getSn() + "卡号" + cardNo + "查询权限成功");
        } else {
            Log_orderFail.info("设备" + cardInfo.getSn() + "卡号" + cardNo + "查询权限失败");
        }
        return sendMessage.getCorrect() == 1;
    }

    @RequestMapping(value = "watch", method = RequestMethod.GET)
    public int watch() {
        return 1;
    }

    private SendMessageDto getResult(long messageId) {
        try {
            Thread.sleep(300);
        } catch (Exception e) {

        }
        return xaFeign.selectById(messageId);
    }

    private String initCardNo(String cardNo) {
        while (cardNo.length() < 8) {
            cardNo = "0" + cardNo;
        }
        return cardNo;
    }
}