| | |
| | | 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 |
| | |
| | | FaKaQuService faKaQuService; |
| | | @Autowired |
| | | FaKaHuanLogService faKaHuanLogService; |
| | | @Autowired |
| | | NettyServerHandler nettyServerHandler; |
| | | |
| | | @GetMapping("findFaKa") |
| | | result<List<TbFakaji>> findFaKa(Integer page, Integer limit){ |
| | |
| | | @PostMapping("takeCard") |
| | | public Map<String,String> takeCard(@RequestBody FaKa faKa){ |
| | | TbFakaji fakaji = faKaService.findFaka(faKa); |
| | | //如果根据柜门号和卡号查出来是空,则可以取卡 |
| | | if (fakaji == null){ |
| | | return KaFan("200","2","success"); |
| | | }else{ |
| | | if (fakaji.getState().equals("1")){ |
| | | return KaFan("200","2","success"); |
| | | 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{ |
| | | TbPerson personName = personService.findtagidPerson(Integer.valueOf(faKa.getCardId())); |
| | | if (personName == null){ |
| | | return KaFan("101","0","该设备号不存在"); |
| | | 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()); |
| | | } |
| | | return KaFan("200","1","success"); |
| | | 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){ |
| | | TbFakaji fakaji = faKaService.findFaka(faKa); |
| | | faKa.setDoorNo(String.valueOf(decodeHEX(faKa.getDoorNo()))); |
| | | //如果根据柜门号和卡号查出来是空,则可以取卡 |
| | | if (fakaji == null){ |
| | | return KaFan("200","2","success"); |
| | | }else{ |
| | | if (fakaji.getState().equals("1")){ |
| | | return KaFan("200","2","success"); |
| | | }else{ |
| | | //可以发卡并切保存记录和保存到实时表中 |
| | | //根据卡编号查询人员名称 |
| | | TbPerson personName = personService.findtagidPerson(Integer.valueOf(faKa.getCardId())); |
| | | if (personName == null){ |
| | | return KaFan("101","0","该设备号不存在"); |
| | | } |
| | | 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.setTagname(personName.getPName()); |
| | | Integer count = faKaService.updateFaKa(tbFakaji); |
| | | 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.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"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @PostMapping("takeSuccessTest") |
| | | public Map<String,String> takeSuccessTest(FaKa faKa){ |
| | | TbFakaji fakaji = faKaService.findFaka(faKa); |
| | | //如果根据柜门号和卡号查出来是空,则可以取卡 |
| | | if (fakaji == null){ |
| | | return KaFan("200","2","success"); |
| | | }else{ |
| | | if (fakaji.getState().equals("1")){ |
| | | return KaFan("200","2","success"); |
| | | }else{ |
| | | //可以发卡并切保存记录和保存到实时表中 |
| | | //根据卡编号查询人员名称 |
| | | TbPerson personName = personService.findtagidPerson(Integer.valueOf(faKa.getCardId())); |
| | | if (personName == null){ |
| | | 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.setTagname(personName.getPName()); |
| | | Integer count = faKaService.updateFaKa(tbFakaji); |
| | | //添加记录表 |
| | | TbFakaqulog fakaqulog = new TbFakaqulog(); |
| | | fakaqulog.setGuiziid(faKa.getDoorNo()); |
| | | fakaqulog.setTagid(faKa.getDeviceId()); |
| | | fakaqulog.setPersonname(personName.getPName()); |
| | | fakaqulog.setTime(gettime()); |
| | | faKaQuService.InserteFaka(fakaqulog); |
| | | return KaFan("200","1","success"); |
| | | 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(faKa.getDoorNo()); |
| | | 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"); |
| | | } |
| | | |
| | |
| | | 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("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"); |
| | | 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; |
| | | |
| | | } |
| | | } |