| package com.ruoyi.app.position.controller; | 
|   | 
| import javax.annotation.Resource; | 
| import javax.servlet.http.HttpServletResponse; | 
|   | 
| import com.ruoyi.app.position.domain.ArdAppPosition; | 
| import com.ruoyi.app.position.service.IArdAppPositionService; | 
| import com.ruoyi.common.constant.CacheConstants; | 
| import com.ruoyi.common.core.domain.entity.SysUser; | 
| import com.ruoyi.common.core.domain.model.LoginUser; | 
| import com.ruoyi.common.core.redis.RedisCache; | 
| import com.ruoyi.common.utils.SecurityUtils; | 
| import com.ruoyi.common.utils.StringUtils; | 
| import com.ruoyi.common.utils.poi.ExcelUtil; | 
| import com.ruoyi.device.hiksdk.util.minio.MinioUtils; | 
| import com.ruoyi.rongcloud.service.RongCloudService; | 
| import com.ruoyi.system.domain.SysUserOnline; | 
| import com.ruoyi.system.service.ISysRoleService; | 
| import com.ruoyi.system.service.ISysUserOnlineService; | 
| import com.ruoyi.system.service.ISysUserService; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiOperation; | 
| import org.springframework.security.access.prepost.PreAuthorize; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.security.core.context.SecurityContextHolder; | 
| import org.springframework.web.bind.annotation.GetMapping; | 
| import org.springframework.web.bind.annotation.PostMapping; | 
| import org.springframework.web.bind.annotation.PutMapping; | 
| import org.springframework.web.bind.annotation.DeleteMapping; | 
| import org.springframework.web.bind.annotation.PathVariable; | 
| import org.springframework.web.bind.annotation.RequestBody; | 
| import org.springframework.web.bind.annotation.RequestMapping; | 
| import org.springframework.web.bind.annotation.RestController; | 
| import com.ruoyi.common.annotation.Log; | 
| import com.ruoyi.common.core.controller.BaseController; | 
| import com.ruoyi.common.core.domain.AjaxResult; | 
| import com.ruoyi.common.enums.BusinessType; | 
| import com.ruoyi.common.core.page.TableDataInfo; | 
| import org.springframework.web.multipart.MultipartFile; | 
|   | 
| import java.util.*; | 
|   | 
| /** | 
|  * app位置Controller | 
|  *  | 
|  * @author ard | 
|  * @date 2023-07-18 | 
|  */ | 
| @Api(tags = "app位置") | 
| @RestController | 
| @RequestMapping("/app/position") | 
| public class ArdAppPositionController extends BaseController | 
| { | 
|     @Autowired | 
|     private IArdAppPositionService ardAppPositionService; | 
|     @Autowired | 
|     private ISysUserService sysUserService; | 
|     @Autowired | 
|     private RongCloudService rongCloudService; | 
|   | 
|     /** | 
|      * 查询app位置列表 | 
|      */ | 
|     @ApiOperation("查询app位置列表") | 
| //    @PreAuthorize("@ss.hasPermi('app:position:list')") | 
|     @GetMapping("/list") | 
|     public TableDataInfo list(ArdAppPosition ardAppPosition) | 
|     { | 
|         startPage(); | 
|         List<ArdAppPosition> list = ardAppPositionService.selectArdAppPositionList(ardAppPosition); | 
|         return getDataTable(list); | 
|     } | 
|   | 
|     /** | 
|      * 导出app位置列表 | 
|      */ | 
|     @PreAuthorize("@ss.hasPermi('app:position:export')") | 
|     @Log(title = "app位置", businessType = BusinessType.EXPORT) | 
|     @PostMapping("/export") | 
|     public void export(HttpServletResponse response, ArdAppPosition ardAppPosition) | 
|     { | 
|         List<ArdAppPosition> list = ardAppPositionService.selectArdAppPositionList(ardAppPosition); | 
|         ExcelUtil<ArdAppPosition> util = new ExcelUtil<ArdAppPosition>(ArdAppPosition.class); | 
|         util.exportExcel(response, list, "app位置数据"); | 
|     } | 
|   | 
|     /** | 
|      * 获取app位置详细信息 | 
|      */ | 
|     @PreAuthorize("@ss.hasPermi('app:position:query')") | 
|     @GetMapping(value = "/{id}") | 
|     public AjaxResult getInfo(@PathVariable("id") String id) | 
|     { | 
|         return success(ardAppPositionService.selectArdAppPositionById(id)); | 
|     } | 
|   | 
|     /** | 
|      * 新增app位置 | 
|      */ | 
|     @ApiOperation("新增app位置") | 
| //    @PreAuthorize("@ss.hasPermi('app:position:add')") | 
|     @Log(title = "app位置", businessType = BusinessType.INSERT) | 
|     @PostMapping | 
|     public AjaxResult add(@RequestBody ArdAppPosition ardAppPosition) | 
|     { | 
|         return toAjax(ardAppPositionService.insertArdAppPosition(ardAppPosition)); | 
|     } | 
|   | 
|     /** | 
|      * 修改app位置 | 
|      */ | 
|     @PreAuthorize("@ss.hasPermi('app:position:edit')") | 
|     @Log(title = "app位置", businessType = BusinessType.UPDATE) | 
|     @PutMapping | 
|     public AjaxResult edit(@RequestBody ArdAppPosition ardAppPosition) | 
|     { | 
|         return toAjax(ardAppPositionService.updateArdAppPosition(ardAppPosition)); | 
|     } | 
|   | 
|     /** | 
|      * 删除app位置 | 
|      */ | 
|     @PreAuthorize("@ss.hasPermi('app:position:remove')") | 
|     @Log(title = "app位置", businessType = BusinessType.DELETE) | 
|     @DeleteMapping("/{ids}") | 
|     public AjaxResult remove(@PathVariable String[] ids) | 
|     { | 
|         return toAjax(ardAppPositionService.deleteArdAppPositionByIds(ids)); | 
|     } | 
|     /** | 
|      * 获取所有用户 | 
|      */ | 
|     @ApiOperation("获取所有用户") | 
|     @GetMapping("/getUserlist") | 
|     public AjaxResult getUserlist(Long deptId) | 
|     { | 
|         SysUser user=new SysUser(); | 
|         user.setDeptId(deptId); | 
|         List<SysUser> list = sysUserService.selectUserList(user); | 
|         return AjaxResult.success(list); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 获取所有app用户 | 
|      */ | 
|     @ApiOperation("获取所有app用户pc") | 
|     @GetMapping("/getAppUserForPclist") | 
|     public AjaxResult getAppUserForPclist(Long deptId) | 
|     { | 
|         SysUser user=new SysUser(); | 
|         user.setDeptId(deptId); | 
|         List<SysUser> list = sysUserService.selectAllAppUserList(user); | 
|         List<SysUser> onLineList=new ArrayList<>(); | 
|         List<SysUser> offLineList=new ArrayList<>(); | 
|         for(SysUser sysUser:list) | 
|         { | 
|             ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId()); | 
|             if(ardAppPosition!=null) { | 
|                 Map<String, Object> params =new HashMap<>(); | 
|                 params.put("longitude", ardAppPosition.getLongitude()); | 
|                 params.put("latitude", ardAppPosition.getLatitude()); | 
|                 params.put("altitude", ardAppPosition.getAltitude()); | 
|                 params.put("bearing", ardAppPosition.getBearing()); | 
|                 sysUser.setParams(params); | 
|             } | 
|             if(StringUtils.isNotNull(sysUser.getAppOnlineState())) | 
|             { | 
|                 if(sysUser.getAppOnlineState().equals("1")) | 
|                 { | 
|                     onLineList.add(sysUser); | 
|                 } | 
|                 else | 
|                 { | 
|                     offLineList.add(sysUser); | 
|                 } | 
|             } | 
|             else | 
|             { | 
|                 offLineList.add(sysUser); | 
|             } | 
|   | 
|         } | 
|         Map<String,Object> onlineMap=new HashMap<>(); | 
|         onlineMap.put("children",onLineList); | 
|         onlineMap.put("name","在线用户("+onLineList.size()+")"); | 
|         onlineMap.put("disabled",true); | 
|         onlineMap.put("id","onLine"); | 
|         Map<String,Object> offlineMap=new HashMap<>(); | 
|         offlineMap.put("children",offLineList); | 
|         offlineMap.put("name","离线用户("+offLineList.size()+")"); | 
|         offlineMap.put("disabled",true); | 
|         offlineMap.put("id","offLine"); | 
|         List< Map<String,Object> > lists = new ArrayList<>(); | 
|         lists.add(onlineMap); | 
|         lists.add(offlineMap); | 
|         return AjaxResult.success(lists); | 
|     } | 
|     /** | 
|      * 获取用户详情 | 
|      */ | 
|     @ApiOperation("获取用户详情") | 
|     @GetMapping("/getUserInfo") | 
|     public AjaxResult getUserInfo(String userId) | 
|     { | 
|         SysUser sysUser = sysUserService.selectUserById(userId); | 
|         return AjaxResult.success(sysUser); | 
|     } | 
|     @PostMapping("/uploadFile") | 
|     @ApiOperation("上传文件") | 
|     public AjaxResult uploadFile(MultipartFile file,String type) | 
|     { | 
|         String url = MinioUtils.putObjectAndGetUrl("app",type, file); | 
|         return AjaxResult.success(url); | 
|     } | 
| } |