|  |  | 
 |  |  | import com.ruoyi.app.application.domain.ArdAppApplication; | 
 |  |  | import com.ruoyi.app.application.service.IArdAppApplicationService; | 
 |  |  |  | 
 |  |  | import javax.annotation.PostConstruct; | 
 |  |  | import javax.annotation.Resource; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | 
 |  |  |     private ArdAppApplicationMapper ardAppApplicationMapper; | 
 |  |  |  | 
 |  |  |     private Map<String,Thread> threadMap = new HashMap(); | 
 |  |  |  | 
 |  |  |     @PostConstruct | 
 |  |  |     public void init(){ | 
 |  |  |         ArdAppApplication para = new ArdAppApplication(); | 
 |  |  |         para.setState("1");//查询同意的申请 | 
 |  |  |         List<ArdAppApplication> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationList(para); | 
 |  |  |         Date date = new Date(); | 
 |  |  |         Long now = date.getTime(); | 
 |  |  |         for(ArdAppApplication ardAppApplication : ardAppApplicationList){ | 
 |  |  |             Long begin = Long.parseLong(ardAppApplication.getBegin()); | 
 |  |  |             //判断是否超时 | 
 |  |  |             if(now - begin <= 24*60*60*1000){//未超时从新创建线程 | 
 |  |  |                 String key = ardAppApplication.getCommanderId() + "," + ardAppApplication.getSoilderId() + "," + ardAppApplication.getApplicationType(); | 
 |  |  |                 Thread thread = new Thread(key){//创建线程计时剩余时长 | 
 |  |  |                     @Override | 
 |  |  |                     public void run() { | 
 |  |  |                         try { | 
 |  |  |                             Thread.sleep(24*60*60*1000 - (now - begin));//剩余时长 | 
 |  |  |                         } catch (InterruptedException e) { | 
 |  |  |                             e.printStackTrace(); | 
 |  |  |                             return; | 
 |  |  |                         } | 
 |  |  |                         Thread currentThread = Thread.currentThread(); | 
 |  |  |                         String state = "000";//state为000,即超时 | 
 |  |  |                         String commanderId = currentThread.getName().split(",")[0]; | 
 |  |  |                         String soilderId = currentThread.getName().split(",")[1]; | 
 |  |  |                         String applicationType = currentThread.getName().split(",")[2]; | 
 |  |  |                         int result = ardAppApplicationMapper.updateArdAppApplicationBeginByCommanderIdAndSoilderIdAndType(commanderId,soilderId,applicationType,"",state); | 
 |  |  |                         threadMap.remove(currentThread.getName()); | 
 |  |  |                     } | 
 |  |  |                 }; | 
 |  |  |                 thread.start(); | 
 |  |  |                 this.threadMap.put(key,thread); | 
 |  |  |             }else{//超时更改状态 | 
 |  |  |                 String state = "000";//state为000,即超时 | 
 |  |  |                 String commanderId = ardAppApplication.getCommanderId(); | 
 |  |  |                 String soilderId = ardAppApplication.getSoilderId(); | 
 |  |  |                 String applicationType = ardAppApplication.getApplicationType(); | 
 |  |  |                 int result = ardAppApplicationMapper.updateArdAppApplicationBeginByCommanderIdAndSoilderIdAndType(commanderId,soilderId,applicationType,"",state); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 查询单兵端申请查看指挥端位置或三一车辆位置 | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public Map<String, List<Map<String, Object>>> getCheckPosition(String usersId) { | 
 |  |  |         Map<String, List<Map<String, Object>>> result = new HashMap(); | 
 |  |  |         //查看指挥端位置申请 | 
 |  |  |         List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationByCommanderId(usersId); | 
 |  |  |         //查看指挥端位置申请 | 
 |  |  |         List<Map<String, Object>> resultCommanderPosition = new ArrayList(); | 
 |  |  |         for(Map<String, Object> map : ardAppApplicationList){ | 
 |  |  |             if(((String)map.get("applicationType")).equals("Commander")){ | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return 0; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Map<String, List<Map<String, Object>>> getCheckPositionTrue(String commanderId) { | 
 |  |  |         Map<String, List<Map<String, Object>>> result = new HashMap(); | 
 |  |  |         List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationByCommanderIdTrue(commanderId); | 
 |  |  |         Date date = new Date(); | 
 |  |  |         //查看指挥端位置申请 | 
 |  |  |         List<Map<String, Object>> resultCommanderPosition = new ArrayList(); | 
 |  |  |         for(Map<String, Object> map : ardAppApplicationList){ | 
 |  |  |             Long interval = date.getTime() - Long.parseLong((String)map.get("begin")); | 
 |  |  |             interval = 24 * 60 * 60 * 1000 - interval; | 
 |  |  |             Long hour = interval / (60 * 60 * 1000); | 
 |  |  |             Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); | 
 |  |  |             map.put("time",hour + "时" + min + "分"); | 
 |  |  |             if(((String)map.get("applicationType")).equals("Commander")){ | 
 |  |  |                 resultCommanderPosition.add(map); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         //查看车辆位置申请 | 
 |  |  |         List<Map<String, Object>> resultSYCarsPosition = new ArrayList(); | 
 |  |  |         for(Map<String, Object> map : ardAppApplicationList){ | 
 |  |  |             Long interval = date.getTime() - Long.parseLong((String)map.get("begin")); | 
 |  |  |             interval = 24 * 60 * 60 * 1000 - interval; | 
 |  |  |             Long hour = interval / (60 * 60 * 1000); | 
 |  |  |             Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000); | 
 |  |  |             map.put("time",hour + "时" + min + "分"); | 
 |  |  |             if(((String)map.get("applicationType")).equals("SYCar")){ | 
 |  |  |                 resultSYCarsPosition.add(map); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         result.put("commander",resultCommanderPosition); | 
 |  |  |         result.put("SYCars",resultSYCarsPosition); | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  | } |