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<ScreenUserVo> 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<ClientParam>().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<ClientParam>().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<Page<AccidentBrief>> getStoryPage(@RequestBody StoryListQuery query) {
|
Page<AccidentBrief> page = new Page<>(query.getPageNum(), query.getPageSize());
|
List<AccidentClassification> list = accidentClassificationService.list(new LambdaQueryWrapper<AccidentClassification>().eq(AccidentClassification::getDeleted, false));
|
LambdaQueryWrapper<AccidentBrief> 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<AccidentBrief> 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<List<AccidentBrief>> getStoryList(@RequestBody StoryListQuery query) {
|
List<AccidentClassification> list = accidentClassificationService.list(new LambdaQueryWrapper<AccidentClassification>().eq(AccidentClassification::getDeleted, false));
|
LambdaQueryWrapper<AccidentBrief> 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<AccidentBrief> 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<AccidentBrief> getStoryDetail(@PathVariable Integer id) {
|
AccidentBrief accidentBrief = accidentBriefService.getById(id);
|
return R.ok(accidentBrief);
|
}
|
|
@ApiOperation(value = "获取故事简讯详情分类",response = AccidentClassification.class)
|
@GetMapping("/getStoryClassify")
|
public R<List<AccidentClassification>> getStoryClassify() {
|
List<AccidentClassification> list = accidentClassificationService.list(new LambdaQueryWrapper<AccidentClassification>().eq(AccidentClassification::getDeleted, false));
|
return R.ok(list);
|
}
|
|
/**
|
* 获取委托方大屏首页统计数据
|
*
|
* @param query 查询参数
|
* @return 统计数据
|
*/
|
@PostMapping("/index")
|
@ApiOperation(value = "获取委托方大屏首页统计数据",tags = {"委托方端"})
|
public R<ClientDashboardVO> index(@RequestBody ClientDashboardQuery query) {
|
ClientDashboardVO dashboard = clientService.getClientDashboard(query);
|
return R.ok(dashboard);
|
}
|
|
|
|
|
|
|
|
}
|