package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.*; import com.ruoyi.system.query.StoryListQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.ClientDashboardQuery; import com.ruoyi.system.vo.ClientDashboardVO; import com.ruoyi.system.vo.ScreenUserVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Optional; /** * 数据统计面板 前端控制器 * * @author xiaochen * @since 2025-12-23 */ @RestController @RequestMapping("/dashboard-statistics") @Api(tags = "首页") @RequiredArgsConstructor(onConstructor_ = @Lazy) public class DashboardStatisticsController { @Autowired private TokenService tokenService; @Autowired private ClientService clientService; @Autowired private ClientParamService clientParamService; @Autowired private ProjectService projectService; @Autowired private AccidentBriefService accidentBriefService; @Autowired private AccidentClassificationService accidentClassificationService; @ApiOperation("获取当前登录信息") @GetMapping("/getLoginInfo") public R getLoginInfo(Integer type, Integer id) { ScreenUserVo screenUserVo = new ScreenUserVo(); screenUserVo.setType(type); if(type!=null && id !=null){ if(type==1){ Client client = clientService.getById(id); if(client==null){ return R.fail("委托方不存在"); } screenUserVo.setClientId(id); ClientParam param = clientParamService.getOne(new LambdaQueryWrapper().eq(ClientParam::getClientId, client.getId())); if(param!=null){ screenUserVo.setLogo(param.getLogo()); screenUserVo.setName(param.getName()); screenUserVo.setPermissionClient(param.getPermissionClient()); screenUserVo.setPermissionProject(param.getPermissionProject()); screenUserVo.setCommentType(param.getCommentType()); screenUserVo.setSafetyId(param.getSafetyId()); String name = clientParamService.getTemplateName(param.getSafetyId()); screenUserVo.setSafetyName(name); screenUserVo.setDeviceTemplateId(param.getDeviceTemplateId()); screenUserVo.setDeviceTemplateName(clientParamService.getTemplateName(param.getDeviceTemplateId())); screenUserVo.setBigHiddenDanger(param.getBigHiddenDanger()); screenUserVo.setGeneralHiddenDanger(param.getGeneralHiddenDanger()); } }else if(type==2){ Project project = projectService.getById(id); if(project==null){ return R.fail("项目不存在"); } Client client = clientService.getById(project.getClientId()); screenUserVo.setClientId(client.getId()); ClientParam param = clientParamService.getOne(new LambdaQueryWrapper().eq(ClientParam::getClientId, client.getId())); if(param!=null){ screenUserVo.setLogo(param.getLogo()); screenUserVo.setName(param.getName()); screenUserVo.setCommentType(param.getCommentType()); screenUserVo.setSafetyId(param.getSafetyId()); String name = clientParamService.getTemplateName(param.getSafetyId()); screenUserVo.setSafetyName(name); screenUserVo.setDeviceTemplateId(param.getDeviceTemplateId()); String name1 = clientParamService.getTemplateName(param.getDeviceTemplateId()); screenUserVo.setDeviceTemplateName(name1); screenUserVo.setBigHiddenDanger(param.getBigHiddenDanger()); screenUserVo.setGeneralHiddenDanger(param.getGeneralHiddenDanger()); } screenUserVo.setProjectName(project.getName()); screenUserVo.setPermissionProject(project.getPermission()); } } return R.ok(screenUserVo); } @ApiOperation(value = "获取故事简讯列表",response = AccidentBrief.class) @PostMapping("/getStoryPage") public R> getStoryPage(@RequestBody StoryListQuery query) { Page page = new Page<>(query.getPageNum(), query.getPageSize()); List list = accidentClassificationService.list(new LambdaQueryWrapper().eq(AccidentClassification::getDeleted, false)); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AccidentBrief::getState,1); wrapper.eq(AccidentBrief::getDeleted,false); if(query.getCity()!=null && !query.getCity().isEmpty()){ wrapper.eq(AccidentBrief::getCity, query.getCity()); } if(query.getProvince()!=null && !query.getProvince().isEmpty()){ wrapper.eq(AccidentBrief::getProvince, query.getProvince()); } if(query.getArea()!=null && !query.getArea().isEmpty()){ wrapper.eq(AccidentBrief::getArea, query.getArea()); } if(query.getClassifyId()!=null){ wrapper.eq(AccidentBrief::getClassifyId, query.getClassifyId()); } if(query.getTime()!=null && !query.getTime().isEmpty()){ String sTime = query.getTime().split(" - ")[0]+" 00:00:00"; String eTime = query.getTime().split(" - ")[1]+" 23:59:59"; wrapper.between(AccidentBrief::getTime,sTime,eTime); } if(query.getContent()!=null && !query.getContent().isEmpty()){ wrapper.like(AccidentBrief::getContent, query.getContent()); } wrapper.orderByDesc(AccidentBrief::getTime); Page accidentBriefPage = accidentBriefService.page(page, wrapper); accidentBriefPage.getRecords().forEach(item->{ item.setClassifyName(list.stream().filter(classify->classify.getId().equals(item.getClassifyId())).findFirst().get().getName()); }); return R.ok(accidentBriefPage); } @ApiOperation(value = "获取故事简讯列表-不分页",response = AccidentBrief.class) @PostMapping("/getStoryList") public R> getStoryList(@RequestBody StoryListQuery query) { List list = accidentClassificationService.list(new LambdaQueryWrapper().eq(AccidentClassification::getDeleted, false)); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AccidentBrief::getState,1); if(query.getCity()!=null && !query.getCity().isEmpty()){ wrapper.eq(AccidentBrief::getCity, query.getCity()); } if(query.getClassifyId()!=null){ wrapper.eq(AccidentBrief::getClassifyId, query.getClassifyId()); } if(query.getTime()!=null && !query.getTime().isEmpty()){ String sTime = query.getTime().split(" - ")[0]+" 00:00:00"; String eTime = query.getTime().split(" - ")[1]+" 23:59:59"; wrapper.between(AccidentBrief::getTime,sTime,eTime); } if(query.getContent()!=null && !query.getContent().isEmpty()){ wrapper.like(AccidentBrief::getContent, query.getContent()); } wrapper.orderByDesc(AccidentBrief::getTime); List accidentBriefPage = accidentBriefService.list( wrapper); accidentBriefPage.forEach(item->{ item.setClassifyName(list.stream().filter(classify -> classify.getId().equals(item.getClassifyId())).findFirst().orElse(new AccidentClassification()).getName()); }); return R.ok(accidentBriefPage); } @ApiOperation(value = "获取故事简讯详情",response = AccidentBrief.class) @GetMapping("/getStoryDetail/{id}") public R getStoryDetail(@PathVariable Integer id) { AccidentBrief accidentBrief = accidentBriefService.getById(id); return R.ok(accidentBrief); } @ApiOperation(value = "获取故事简讯详情分类",response = AccidentClassification.class) @GetMapping("/getStoryClassify") public R> getStoryClassify() { List list = accidentClassificationService.list(new LambdaQueryWrapper().eq(AccidentClassification::getDeleted, false)); return R.ok(list); } /** * 获取委托方大屏首页统计数据 * * @param query 查询参数 * @return 统计数据 */ @PostMapping("/index") @ApiOperation(value = "获取委托方大屏首页统计数据",tags = {"委托方端"}) public R index(@RequestBody ClientDashboardQuery query) { ClientDashboardVO dashboard = clientService.getClientDashboard(query); return R.ok(dashboard); } }