package com.hxzk.controller;
|
|
import com.github.pagehelper.PageInfo;
|
import com.hxzk.deo.FaKa;
|
import com.hxzk.pojo.*;
|
import com.hxzk.service.FaKaHuanLogService;
|
import com.hxzk.service.FaKaQuService;
|
import com.hxzk.service.FaKaService;
|
import com.hxzk.service.PersonService;
|
import com.hxzk.util.LogInFo;
|
import com.hxzk.util.Netty.NettyServerHandler;
|
import com.hxzk.util.result;
|
import com.hxzk.util.resultutil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.math.BigInteger;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.Executors;
|
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.TimeUnit;
|
|
@RestController
|
@RequestMapping("/")
|
public class FaKaController {
|
private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
|
|
private String doorsNo;
|
private String devriceid;
|
|
@Autowired
|
LogInFo log;
|
@Autowired
|
FaKaService faKaService;
|
@Autowired
|
PersonService personService;
|
@Autowired
|
FaKaQuService faKaQuService;
|
@Autowired
|
FaKaHuanLogService faKaHuanLogService;
|
@Autowired
|
NettyServerHandler nettyServerHandler;
|
|
@GetMapping("findFaKa")
|
result<List<TbFakaji>> findFaKa(Integer page, Integer limit){
|
PageInfo<TbFakaji> cz= faKaService.findAll(page, limit);
|
return resultutil.returnSuccess(cz.getTotal(), cz.getList());
|
}
|
|
|
@PostMapping("takeCard")
|
public Map<String,String> takeCard(@RequestBody FaKa faKa){
|
TbFakaji fakaji = faKaService.findFaka(faKa);
|
TbFakaji fakaji2 = faKaService.findFakaUserId(faKa);
|
Map<String,String> map = new HashMap<>();
|
if (fakaji2==null){
|
//如果根据柜门号和卡号查出来是空,则可以取卡
|
if (fakaji == null){
|
map.put("code","200");
|
map.put("status","2");
|
map.put("msg","柜子不存在");
|
log.warn("取卡:柜子不存在"+gettime1());
|
return map;
|
}else{
|
map.put("code","200");
|
map.put("cardID",fakaji.getTagid());
|
map.put("doorNo",Integer.toHexString(Integer.parseInt(fakaji.getKacaoid())));
|
if (fakaji.getGuizistate().equals("0")){
|
map.put("status","1");
|
map.put("msg","success");
|
//修改状态为待取出
|
TbFakaji fakaji1 = new TbFakaji();
|
fakaji1.setTagid(fakaji.getTagid());
|
fakaji1.setGuiziid(faKa.getDeviceId());
|
fakaji1.setKacaoid(fakaji.getKacaoid());
|
faKaService.updateStaticFaKa(fakaji1);
|
scheduler.schedule(() -> {
|
updataChaoShi(fakaji1);
|
}, 10, TimeUnit.SECONDS);
|
log.Info("请求取卡:"+gettime1());
|
log.Info("返回卡号"+fakaji.getTagid()+",柜门"+fakaji.getKacaoid());
|
}
|
if (fakaji.getGuizistate().equals("1")){
|
map.put("status","1");
|
map.put("msg","插卡错误");
|
log.warn("取卡:插卡错误"+gettime1());
|
}
|
if (fakaji.getGuizistate().equals("2")){
|
map.put("status","2");
|
map.put("msg","门控故障");
|
log.warn("取卡:门控故障"+gettime1());
|
}
|
if (fakaji.getGuizistate().equals("3")){
|
map.put("status","2");
|
map.put("msg","过流");
|
log.warn("取卡:过流"+gettime1());
|
}
|
if (fakaji.getGuizistate().equals("4")){
|
map.put("status","1");
|
map.put("msg","过压");
|
log.warn("取卡:过压"+gettime1());
|
}
|
if (fakaji.getGuizistate().equals("5")){
|
map.put("status","1");
|
map.put("msg","欠压");
|
log.warn("取卡:欠压"+gettime1());
|
}
|
if (fakaji.getGuizistate().equals("6")){
|
map.put("status","2");
|
map.put("msg","内部通信故障");
|
log.warn("取卡:内部通信故障"+gettime1());
|
}
|
return map;
|
}
|
}else{
|
map.put("code","200");
|
map.put("status","2");
|
map.put("msg","已取过卡");
|
log.warn("取卡:已取过卡"+gettime1());
|
return map;
|
}
|
}
|
|
@PostMapping("takeSuccess")
|
public Map<String,String> takeSuccess(@RequestBody FaKa faKa){
|
faKa.setDoorNo(String.valueOf(decodeHEX(faKa.getDoorNo())));
|
//如果根据柜门号和卡号查出来是空,则可以取卡
|
TbPerson personName = personService.findtagidPerson(String.valueOf(faKa.getCardId()));
|
if (personName == null){
|
log.warn("取卡:设备号不存在"+gettime1());
|
return KaFan("101","0","该设备号不存在");
|
}
|
|
TbFakaji tbFakaji = new TbFakaji();
|
tbFakaji.setGuiziid(faKa.getDeviceId());
|
tbFakaji.setKacaoid(faKa.getDoorNo());
|
tbFakaji.setTagid(faKa.getCardId());
|
tbFakaji.setTime(gettime());
|
tbFakaji.setState("1");
|
tbFakaji.setStatics("2");
|
tbFakaji.setUserid(faKa.getUserId()+"取卡");
|
tbFakaji.setTagname(personName.getPName());
|
TbPerson person = personService.findtagidPerson(String.valueOf(tbFakaji.getTagid()));
|
if (person.getBaoliu41().equals("0")){
|
Integer count = faKaService.updateFaKa(tbFakaji);
|
if (count>0){
|
//添加记录表
|
TbFakaqulog fakaqulog = new TbFakaqulog();
|
fakaqulog.setGuiziid(faKa.getDoorNo());
|
fakaqulog.setTagid(faKa.getDeviceId());
|
fakaqulog.setPersonname(personName.getPName());
|
fakaqulog.setTime(gettime());
|
faKaQuService.InserteFaka(fakaqulog);
|
TbPerson person1 = new TbPerson();
|
person1.setPTagid(tbFakaji.getTagid());
|
person1.setBaoliu41("1");
|
personService.UpPersonFaKaState(person1);
|
log.Info("取卡成功:"+gettime1());
|
log.Info("取卡信息:卡号"+faKa.getCardId()+",柜门:"+faKa.getDoorNo());
|
doorsNo = faKa.getDoorNo();
|
devriceid =faKa.getDeviceId();
|
return KaFan("200","1","success");
|
}else{
|
TbFakaqulog fakaqulog = new TbFakaqulog();
|
fakaqulog.setGuiziid(faKa.getDoorNo());
|
fakaqulog.setTagid(faKa.getDeviceId());
|
fakaqulog.setPersonname(personName.getPName());
|
fakaqulog.setTime(gettime());
|
faKaQuService.InserteFaka(fakaqulog);
|
log.warn("取卡失败"+gettime1());
|
return KaFan("200","2","success");
|
}
|
}else{
|
log.warn("取卡:取卡失败,还并没有还卡"+gettime1());
|
return KaFan("200","2","请还卡之后再次取卡");
|
}
|
|
}
|
|
|
@PostMapping("saveCard")
|
public Map<String,String> saveCard(@RequestBody FaKa faKa){
|
if (faKa.getDeviceId() == null || faKa.getDoorNo() == null){
|
return KaFan("200","2","success");
|
}
|
TbPerson personName = personService.findtagidPerson(String.valueOf(faKa.getCardId()));
|
if (personName == null){
|
log.warn("还卡:设备编号不存在,还卡失败");
|
return KaFan("200","1","设备编号不存在");
|
}
|
Integer nums = decodeHEX(faKa.getDoorNo());
|
|
|
TbFakaji fakaji = new TbFakaji();
|
fakaji.setGuiziid(faKa.getDeviceId());
|
fakaji.setKacaoid(String.valueOf(nums));
|
fakaji.setTagid(faKa.getCardId());
|
fakaji.setState("0");
|
fakaji.setTime(gettime());
|
fakaji.setUserid(faKa.getUserId()+"还卡");
|
fakaji.setTagname(personName.getPName());
|
|
|
|
TbFakahuanlog tbFakahuanlog = new TbFakahuanlog();
|
tbFakahuanlog.setGuiziid(faKa.getDeviceId());
|
tbFakahuanlog.setTagid(faKa.getCardId());
|
tbFakahuanlog.setTime(gettime());
|
faKaHuanLogService.InsertFaKaHuan(tbFakahuanlog);
|
|
|
|
//添加成功之后修改实时表
|
fakaji.setStatics("0");
|
faKaService.deleteFakaji(fakaji);
|
TbPerson person1 = new TbPerson();
|
person1.setPTagid(faKa.getCardId());
|
person1.setBaoliu41("0");
|
personService.UpPersonFaKaState(person1);
|
faKaService.updateFaKaQuKaState(devriceid,doorsNo);
|
log.Info(faKa.getCardId()+"已还卡,修改可取卡");
|
return KaFan("200","1","success");
|
}
|
|
@GetMapping("UpStateFaka")
|
public Integer UpStateFaka (TbFakaji fakaji){
|
return faKaService.updateStateFaKa(fakaji);
|
}
|
|
@GetMapping("UpPersonStateFaKa")
|
public Integer UpPersonStateFaKa(String tagid){
|
return personService.UpdatePersonBaoLiu41(tagid);
|
}
|
|
@PostMapping("cardStatus")
|
public Map<String,String> cardStatus(@RequestBody FaKa faKa){
|
System.out.println("上报卡状态");
|
// if (faKa.getCardId().equals("0000")){
|
// //修改为无卡
|
// faKa.setDoorNo(String.valueOf(decodeHEX(faKa.getDoorNo())));
|
// TbFakaji tbFakaji = new TbFakaji();
|
// tbFakaji.setGuiziid(faKa.getDeviceId());
|
// tbFakaji.setKacaoid(faKa.getDoorNo());
|
// tbFakaji.setStatics("2");
|
// tbFakaji.setState("1");
|
// tbFakaji.setGuizistate(faKa.getStatus());
|
// faKaService.updateFaKaCardStatus(tbFakaji);
|
// System.out.println(faKa.getDoorNo()+"修改无卡"+gettime1());
|
// return KaFan("200","1","success");
|
// }else{
|
// //修改为有卡
|
// faKa.setDoorNo(String.valueOf(decodeHEX(faKa.getDoorNo())));
|
// TbFakaji tbFakaji = new TbFakaji();
|
// tbFakaji.setGuiziid(faKa.getDeviceId());
|
// tbFakaji.setKacaoid(faKa.getDoorNo());
|
// tbFakaji.setGuizistate(faKa.getStatus());
|
// tbFakaji.setStatics("0");
|
// tbFakaji.setState("0");
|
// tbFakaji.setTagid(faKa.getCardId());
|
// faKaService.updateFaKaCardStatus(tbFakaji);
|
// System.out.println(faKa.getDoorNo()+"修改有卡"+gettime1());
|
return KaFan("200","1","success");
|
// }
|
|
}
|
|
@PostMapping("ShouDongXiaFa")
|
public void ShouDongXiaFa(){
|
nettyServerHandler.xiafa(personService);
|
}
|
|
@GetMapping("ShouDongShengJi")
|
public void ShouDongShengJi(){
|
nettyServerHandler.shengji();
|
System.out.println("升级");
|
}
|
|
@GetMapping("ShouDongKaiSuo")
|
public void ShouDongKaiSuo(String doorNo){
|
Integer door = Integer.valueOf(doorNo);
|
String hexDoor = Integer.toHexString(door);
|
|
// 对于前15个值,确保格式为两位数
|
if (door < 15) {
|
hexDoor = String.format("%02x", door); // 使用小写 'x'
|
} else {
|
// 确保十六进制
|
hexDoor = hexDoor.toLowerCase(); // 确保 hexDoor 是小写
|
}
|
nettyServerHandler.kaisuo(hexDoor);
|
System.out.println("开锁"+hexDoor);
|
}
|
|
|
public Integer updataChaoShi(TbFakaji fakaji){
|
Integer tps = faKaService.updateStaticFaKaChaoShi(fakaji);
|
System.out.println("超时"+tps+"条");
|
return tps;
|
}
|
|
public Map<String,String> KaFan(String code,String status,String msg){
|
Map map = new HashMap<>();
|
map.put("code",code);
|
map.put("status",status);
|
map.put("msg",msg);
|
return map;
|
}
|
|
|
//根据柜子编号查找所有柜门信息
|
@GetMapping("findFakaNum")
|
public List<TbFakaji> findFakaNum(String num){
|
return faKaService.findFakaNum(num);
|
}
|
|
public String gettime(){
|
Date now = new Date();
|
// 创建日期格式化对象,设置格式为 "yyyy-MM-dd HH:mm"
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// 格式化日期对象,输出字符串结果
|
String formattedDate = sdf.format(now);
|
return formattedDate;
|
}
|
public String gettime1(){
|
Date now = new Date();
|
// 创建日期格式化对象,设置格式为 "yyyy-MM-dd HH:mm"
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// 格式化日期对象,输出字符串结果
|
String formattedDate = sdf.format(now);
|
return formattedDate;
|
}
|
public static int decodeHEX(String hexs) {
|
BigInteger bigint = new BigInteger(hexs, 16);
|
int numb = bigint.intValue();
|
return numb;
|
|
}
|
}
|