src/main/java/com/whyc/controller/LockCtlLogController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/controller/LockRtController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/dto/LockCmd.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/LockCtlLogMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/LockRtMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/db_lock_ram/LockCtlLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/db_lock_ram/LockRt.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/LockCtlLogService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/LockRtService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/LockCtlLogController.java
New file @@ -0,0 +1,15 @@ package com.whyc.controller; import com.whyc.service.LockCtlLogService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Api(tags = "开锁日志") @RequestMapping("lockLog") public class LockCtlLogController { @Autowired private LockCtlLogService service; } src/main/java/com/whyc/controller/LockRtController.java
New file @@ -0,0 +1,62 @@ package com.whyc.controller; import com.whyc.dto.Response; import com.whyc.service.LockInfService; import com.whyc.service.LockRtService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @Api(tags = "锁具控制") @RequestMapping("lockRt") public class LockRtController { @Autowired private LockRtService service; @ApiOperation(value = "查询锁的实时数据") @GetMapping("getLockRt") public Response getLockRt(@RequestParam Integer lockId){ return service.getLockRt(lockId); } @ApiOperation(value = "清空所有授权ID卡") @GetMapping("cancleIdCard") public Response cancleIdCard(@RequestParam Integer lockId){ return service.cancleIdCard(lockId); } @ApiOperation(value = "远程开锁") @GetMapping("lockOpen") public Response lockOpen(@RequestParam Integer lockId){ return service.lockOpen(lockId); } @ApiOperation(value = "远程重启") @GetMapping("lockReStart") public Response lockReStart(@RequestParam Integer lockId){ return service.lockReStart(lockId); } @ApiOperation(value = "设置锁具地址:lock_addr_set[锁具地址(1-255)]") @GetMapping("controllLockAddrSet") public Response controllLockAddrSet(@RequestParam Integer lockId,@RequestParam Integer lockAddrSet){ return service.controllLockAddrSet(lockId,lockAddrSet); } @ApiOperation(value = "添加授权卡ID:id_card_set[ID卡号码]") @GetMapping("addIdCardSet") public Response addIdCardSet(@RequestParam Integer lockId,@RequestParam Integer idCardSet){ return service.addIdCardSet(lockId,idCardSet); } @ApiOperation(value = "移除授权卡ID:id_card_set[ID卡号码]") @GetMapping("delIdCardSet") public Response delIdCardSet(@RequestParam Integer lockId,@RequestParam Integer idCardSet){ return service.delIdCardSet(lockId,idCardSet); } } src/main/java/com/whyc/dto/LockCmd.java
New file @@ -0,0 +1,16 @@ package com.whyc.dto; public class LockCmd { public static final int CMD_ClearIdCard = 0x10; //清空所有授权卡 public static final int CMD_ClearIdCard_Ack = 0x11; //清空所有授权卡成功 public static final int CMD_REMOTE_OPEN_Lock = 0x12; //远程开锁 public static final int CMD_REMOTE_OPEN_Lock_Ack = 0x13; //远程开锁成功 public static final int CMD_REMOTE_ReStart = 0x14; //远程重启 public static final int CMD_REMOTE_ReStart_Ack = 0x15; //远程重启成功 public static final int CMD_SetLockAddr = 0x16; //设置锁具地址 public static final int CMD_SetLockAddr_Ack = 0x17; //设置锁具地址成功 public static final int CMD_AddIdCard = 0x18; //添加授权卡ID public static final int CMD_AddIdCard_Ack= 0x19; //添加授权卡ID成功 public static final int CMD_RemoveIdCard = 0x20; //移除授权卡ID public static final int CMD_RemoveIdCard_Ack= 0x21; //移除授权卡ID成功 } src/main/java/com/whyc/mapper/LockCtlLogMapper.java
New file @@ -0,0 +1,6 @@ package com.whyc.mapper; import com.whyc.pojo.db_lock_ram.LockCtlLog; public interface LockCtlLogMapper extends CustomMapper<LockCtlLog>{ } src/main/java/com/whyc/mapper/LockRtMapper.java
New file @@ -0,0 +1,6 @@ package com.whyc.mapper; import com.whyc.pojo.db_lock_ram.LockRt; public interface LockRtMapper extends CustomMapper<LockRt>{ } src/main/java/com/whyc/pojo/db_lock_ram/LockCtlLog.java
New file @@ -0,0 +1,56 @@ package com.whyc.pojo.db_lock_ram; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> * 电子锁远程操作日志 * </p> * * @author lxw * @since 2024-12-16 */ @Data @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName(schema = "db_lock_ram",value ="tb_lock_ctl_log") @ApiModel(value="LockCtlLog对象", description="电子锁远程操作日志") public class LockCtlLog implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "自增主键") @TableId(value = "num", type = IdType.AUTO) private Long num; @ApiModelProperty(value = "电子锁ID") private Integer lockId; @ApiModelProperty(value = "操作类型[1-清空所有授权ID卡 2-远程开锁 3-远程重启 4-设置锁具地址 5-添加授权ID 6-移除授权ID]") private Integer ctlType; @ApiModelProperty(value = "操作结果[0-失败 1-成功]") private Integer ctlResult; @ApiModelProperty(value = "操作时间") private Date ctlTime; @ApiModelProperty(value = "添加或者移除的授权ID卡号") private Integer ctlIdCard; } src/main/java/com/whyc/pojo/db_lock_ram/LockRt.java
New file @@ -0,0 +1,92 @@ package com.whyc.pojo.db_lock_ram; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> * 电子锁实时状态表 * </p> * * @author lxw * @since 2024-12-16 */ @Data @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName(schema = "db_lock_ram",value ="tb_lock_rt") @ApiModel(value="LockRt对象", description="电子锁实时状态表") public class LockRt implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "自增主键") @TableId(value = "num", type = IdType.AUTO) private Long num; @ApiModelProperty(value = "锁具ID") private Integer lockId; @ApiModelProperty(value = "更新时间") private Date recordTime; @ApiModelProperty(value = "gprs模块SN码") private String gprsSn; @ApiModelProperty(value = "设备IP地址") private String clientIp; @ApiModelProperty(value = "当前锁已授权卡数量") private Integer alreadyIdCount; @ApiModelProperty(value = "授权卡数量存储上限") private Integer maxIdCount; @ApiModelProperty(value = "电子锁状态[0-关 1-开]") private Integer lockState; @ApiModelProperty(value = "软件版本号") private String lockVersion; @ApiModelProperty(value = "上一次开锁方式[0-485开锁 1-刷卡开锁 2-蓝牙开锁 3-DI开锁]") private Integer unlockType; @ApiModelProperty(value = "上一次刷开开锁卡号[仅刷开开锁时有效]") private Long unlockId; @ApiModelProperty(value = "设备地址") private Integer lockAddr; @ApiModelProperty(value = "通信计数") private Integer commCount; @ApiModelProperty(value = "总错误计数") private Integer errTolCount; @ApiModelProperty(value = "连续错误计数") private Integer errCount; @ApiModelProperty(value = "控制命令") private Integer opCmd; @ApiModelProperty(value = "授权ID卡号") private Integer idCardSet; @ApiModelProperty(value = "设置设备地址[慎用]") private Integer lockAddrSet; } src/main/java/com/whyc/service/LockCtlLogService.java
New file @@ -0,0 +1,11 @@ package com.whyc.service; import com.whyc.mapper.LockCtlLogMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class LockCtlLogService { @Autowired(required = false) private LockCtlLogMapper mapper; } src/main/java/com/whyc/service/LockRtService.java
New file @@ -0,0 +1,177 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.pagehelper.PageHelper; import com.whyc.dto.LockCmd; import com.whyc.dto.Response; import com.whyc.mapper.LockRtMapper; import com.whyc.pojo.db_lock_ram.LockRt; import com.whyc.util.ActionUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class LockRtService { @Autowired(required = false) private LockRtMapper mapper; //机房命令操作设备时的cmd和ack校验 public boolean sendCmdToLock(int cmd, int lockId) { int m_cmd = cmd; int m_cmd_ack = cmd; switch (m_cmd) { case LockCmd.CMD_ClearIdCard: m_cmd_ack = LockCmd. CMD_ClearIdCard_Ack; break; case LockCmd.CMD_REMOTE_OPEN_Lock: m_cmd_ack = LockCmd.CMD_REMOTE_OPEN_Lock_Ack; break; case LockCmd.CMD_REMOTE_ReStart: m_cmd_ack = LockCmd. CMD_REMOTE_ReStart_Ack; break; case LockCmd.CMD_SetLockAddr: m_cmd_ack = LockCmd.CMD_SetLockAddr_Ack; break; case LockCmd.CMD_AddIdCard: m_cmd_ack = LockCmd.CMD_AddIdCard_Ack; break; case LockCmd.CMD_RemoveIdCard: m_cmd_ack = LockCmd.CMD_RemoveIdCard_Ack; break; default: return false; } UpdateWrapper updateWrapper=new UpdateWrapper(); updateWrapper.set("op_cmd",m_cmd); updateWrapper.eq("power_id",lockId); int flag=mapper.update((LockRt) ActionUtil.objeNull,updateWrapper); boolean res_exe = false; if(flag>0) { PageHelper.startPage(1,1); QueryWrapper queryWrapper=new QueryWrapper(); queryWrapper.eq("lokc_id",lockId); for(int n=0; n<40; n++) { LockRt rt=mapper.selectOne(queryWrapper); if(rt!=null){ if(rt.getOpCmd()!=cmd){ if(rt.getOpCmd()==m_cmd_ack){ res_exe = true; break; }else{ res_exe = false; break; } } try { Thread.sleep(250); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else { break; } } } return res_exe; } //查询锁的实时数据 public Response getLockRt(Integer lockId) { QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("lokc_id",lockId); wrapper.last("limti 1"); LockRt rt=mapper.selectOne(wrapper); return new Response().setII(1,rt!=null,rt,"查询锁的实时数据"); } //清空所有授权ID卡 public Response cancleIdCard(Integer lockId) { boolean bl=sendCmdToLock(LockCmd.CMD_ClearIdCard,lockId); return new Response().set(1,bl, bl == true ? "清空所有授权ID卡成功!" : "清空所有授权ID卡失败,请检查网络!"); } //远程开锁 public Response lockOpen(Integer lockId) { boolean bl=sendCmdToLock(LockCmd.CMD_REMOTE_OPEN_Lock,lockId); return new Response().set(1,bl, bl == true ? "远程开锁成功!" : "远程开锁失败,请检查网络!"); } //远程重启 public Response lockReStart(Integer lockId) { boolean bl=sendCmdToLock(LockCmd.CMD_REMOTE_ReStart,lockId); return new Response().set(1,bl, bl == true ? "远程重启成功!" : "远程重启失败,请检查网络!"); } //设置锁具地址:lock_addr_set[锁具地址(1-255) public Response controllLockAddrSet(Integer lockId, Integer lockAddrSet) { boolean bl = false; String msg = ""; UpdateWrapper updateWrapper=new UpdateWrapper(); updateWrapper.set("lock_addr_set",lockAddrSet); updateWrapper.eq("lokc_id",lockId); int flag=mapper.update((LockRt) ActionUtil.objeNull,updateWrapper); if (flag>0) { bl=sendCmdToLock(LockCmd.CMD_SetLockAddr,lockId); if (bl) { flag = 1; msg = "设置锁具地址成功!"; } else { flag = 0; msg = "设设置锁具地址失败,请检查网络!"; } } else { flag = 0; msg = "设置锁具地址失败!"; } return new Response().set(1,flag>0?true:false,msg); } //添加授权卡ID:id_card_set[ID卡号码] public Response addIdCardSet(Integer lockId, Integer idCardSet) { boolean bl = false; String msg = ""; UpdateWrapper updateWrapper=new UpdateWrapper(); updateWrapper.set("id_card_set",idCardSet); updateWrapper.eq("lokc_id",lockId); int flag=mapper.update((LockRt) ActionUtil.objeNull,updateWrapper); if (flag>0) { bl=sendCmdToLock(LockCmd.CMD_AddIdCard,lockId); if (bl) { flag = 1; msg = "添加授权卡ID成功!"; } else { flag = 0; msg = "添加授权卡ID失败,请检查网络!"; } } else { flag = 0; msg = "添加授权卡ID失败!"; } return new Response().set(1,flag>0?true:false,msg); } //移除授权卡ID:id_card_set[ID卡号码] public Response delIdCardSet(Integer lockId, Integer idCardSet) { boolean bl = false; String msg = ""; UpdateWrapper updateWrapper=new UpdateWrapper(); updateWrapper.set("id_card_set",idCardSet); updateWrapper.eq("lokc_id",lockId); int flag=mapper.update((LockRt) ActionUtil.objeNull,updateWrapper); if (flag>0) { bl=sendCmdToLock(LockCmd.CMD_RemoveIdCard,lockId); if (bl) { flag = 1; msg = "移除授权卡ID成功!"; } else { flag = 0; msg = "移除授权卡ID失败,请检查网络!"; } } else { flag = 0; msg = "移除授权卡ID失败!"; } return new Response().set(1,flag>0?true:false,msg); } }