| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.system.dto.EditHiddenDangerResponsiblePersonDto; |
| | | import com.ruoyi.system.enums.DeviceType; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.model.Record; |
| | | import com.ruoyi.system.query.DeviceDetailCheckListQuery; |
| | | import com.ruoyi.system.query.DeviceListQuery; |
| | | import com.ruoyi.system.query.HiddenDangerListQuery; |
| | | import com.ruoyi.system.query.*; |
| | | import com.ruoyi.system.service.*; |
| | | import com.ruoyi.system.vo.*; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.var; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.parsing.Problem; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.Valid; |
| | | import java.util.List; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static java.util.stream.Collectors.groupingBy; |
| | | |
| | | @RestController |
| | | @RequestMapping("/project") |
| | |
| | | @Autowired |
| | | private RecordService recordService; |
| | | |
| | | @Autowired |
| | | private CheckService checkService; |
| | | |
| | | @Autowired |
| | | private OnDutyService onDutyService; |
| | | |
| | | @Autowired |
| | | private PositionService positionService; |
| | | |
| | | @Autowired |
| | | private PlanService planService; |
| | | |
| | | @Autowired |
| | | private ScreenAccountService screenAccountService; |
| | | |
| | | |
| | | @ApiOperation(value = "获取项目/委托方列表",response = LoginNameVo.class) |
| | | @GetMapping("/getLoginNameVoList") |
| | | public R<List<LoginNameVo>> getProjectList(@RequestParam Integer userId) { |
| | | ScreenAccount screenAccount = screenAccountService.getById(userId); |
| | | String clientProjectIds = screenAccount.getClientProjectIds(); |
| | | if(screenAccount.getType()==1){ |
| | | // 委托方 |
| | | List<LoginNameVo> list = screenAccountService.getLoginClient(clientProjectIds); |
| | | return R.ok(list); |
| | | }else { |
| | | // 项目 |
| | | List<LoginNameVo> list = screenAccountService.getLoginProject(clientProjectIds); |
| | | return R.ok(list); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | @ApiOperation(value = "获取项目详情",response = Project.class) |
| | |
| | | List<String> properties = deviceUsageService.getDeviceUsageList(id); |
| | | projectVo.setProperties( properties); |
| | | |
| | | ProjectInfo projectInfo = projectInfoService.getOne(new LambdaUpdateWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId, id)); |
| | | ProjectInfo projectInfo = projectInfoService.getOne(new LambdaUpdateWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId, id).eq(ProjectInfo::getDeleted,false).orderByDesc(ProjectInfo::getCreateTime).last("limit 1")); |
| | | if(projectInfo!=null){ |
| | | projectVo.setProgress(projectInfo.getProgress()); |
| | | } |
| | |
| | | if(task!=null){ |
| | | projectVo.setCheckTime(task.getUpdateTime()); |
| | | } |
| | | List<DeviceCountVo> list = deviceUsageService.getProjectDeviceCount(id); |
| | | projectVo.setDeviceCountVos(list); |
| | | return R.ok(projectVo); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取项目隐患数量",response = Project.class) |
| | | @ApiOperation(value = "获取项目隐患数量",response = HiddenDangerVo.class) |
| | | @GetMapping("/getProjectHiddenDangerCount/{id}") |
| | | public R<HiddenDangerVo> getProjectHiddenDangerCount(@PathVariable Integer id) { |
| | | HiddenDangerVo hiddenDangerVo = new HiddenDangerVo(); |
| | |
| | | hiddenDangerVo.setUnRectified(records.size()-rectified); |
| | | } |
| | | return R.ok(hiddenDangerVo); |
| | | } |
| | | |
| | | @ApiOperation(value = "获取设备数量",response = DeviceCountVo.class) |
| | | @GetMapping("/getProjectDeviceCount/{id}") |
| | | public R<List<DeviceCountVo>> getProjectDeviceCount(@PathVariable Integer id) { |
| | | List<DeviceCountVo> list = deviceUsageService.getProjectDeviceCount(id); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取设备详情检查列表") |
| | | @ApiOperation(value = "获取检查计划列表",response = DeviceDetailCheckListVo.class) |
| | | @PostMapping("/getDeviceDetailCheckList") |
| | | public R<Page<DeviceDetailCheckListVo>> getDeviceDetailCheckList(@RequestBody DeviceDetailCheckListQuery query) { |
| | | Page<DeviceDetailCheckListVo> page = new Page<>(query.getPageNum(), query.getPageSize()); |
| | |
| | | page.setRecords(list); |
| | | return R.ok(page); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取检查资料列表") |
| | | @GetMapping("/getDeviceDetailCheckPlanList") |
| | | public R<List<Check>> getDeviceDetailCheckPlanList(@RequestParam Integer planId) { |
| | | List<Check> list = checkService.list(new LambdaQueryWrapper<Check>().eq(Check::getPlanId,planId).orderByDesc(Check::getTime)); |
| | | if(!list.isEmpty()){ |
| | | List<Integer> planIds = list.stream().map(Check::getPlanId).toList(); |
| | | List<Plan> plans = planService.listByIds(planIds); |
| | | |
| | | List<Integer> projectIds = list.stream().map(Check::getProjectId).toList(); |
| | | List<Project> projects = projectService.listByIds(projectIds); |
| | | list.forEach(check -> { |
| | | check.setPlanName(Objects.requireNonNull(plans.stream().filter(plan -> plan.getId().equals(check.getPlanId())).findFirst().orElse(null)).getName()); |
| | | check.setProjectName(Objects.requireNonNull(projects.stream().filter(project -> project.getId().equals(check.getProjectId())).findFirst().orElse(null)).getName()); |
| | | }); |
| | | } |
| | | return R.ok(list); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取检查资料详情") |
| | | @GetMapping("/getDeviceDetailCheckPlanDetail") |
| | | public R<Check> getDeviceDetailCheckPlanDetail(@RequestParam Integer id) { |
| | | Check check = checkService.getDeviceDetailCheckPlanDetail(id); |
| | | return R.ok(check); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取大屏人员在岗信息") |
| | | @GetMapping("/getProjectPersonInfo") |
| | | public R<List<ProjectPersonInfoVo>> getProjectPersonInfo(@RequestParam Integer projectId) { |
| | | List<OnDuty> list = onDutyService.list(new LambdaQueryWrapper<OnDuty>().eq(OnDuty::getProjectId,projectId)); |
| | | Map<Integer, List<OnDuty>> map = list.stream().collect(groupingBy(OnDuty::getPositionId)); |
| | | List<ProjectPersonInfoVo> resultList = new ArrayList<>(); |
| | | // map循环 |
| | | for (Map.Entry<Integer, List<OnDuty>> entry : map.entrySet()){ |
| | | Integer key = entry.getKey(); |
| | | Position position = positionService.getById(key); |
| | | ProjectPersonInfoVo projectPersonInfoVo = new ProjectPersonInfoVo(); |
| | | projectPersonInfoVo.setPostName(position.getName()); |
| | | List<OnDuty> onDuties = entry.getValue(); |
| | | long count = onDuties.stream().filter(e -> e.getState() == 1).count(); |
| | | int size = onDuties.size(); |
| | | BigDecimal rate = BigDecimal.valueOf(count).divide(BigDecimal.valueOf(size), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP); |
| | | projectPersonInfoVo.setRate(rate.toString()); |
| | | resultList.add(projectPersonInfoVo); |
| | | } |
| | | |
| | | return R.ok(resultList); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取岗位下拉框信息",response = Position.class) |
| | | @GetMapping("/getPositionList") |
| | | public R<List<Position>> getPositionList() { |
| | | List<Position> list = positionService.list(new LambdaQueryWrapper<Position>().eq(Position::getDeleted, false)); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取计划下拉框信息",response = Plan.class) |
| | | @GetMapping("/getPlanList") |
| | | public R<List<Plan>> getPlanList() { |
| | | List<Plan> list = planService.list(new LambdaQueryWrapper<Plan>().eq(Plan::getDeleted, false)); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取人员在岗列表",response = ProjectPersonOnDutyListVo.class) |
| | | @PostMapping("/getProjectOnDutyList") |
| | | public R<Page<ProjectPersonOnDutyListVo>> getProjectOnDutyList(@RequestBody @Valid ProjectPersonListQuery query) { |
| | | Page<ProjectPersonOnDutyListVo> page = new Page<>(query.getPageNum(), query.getPageSize()); |
| | | List<ProjectPersonOnDutyListVo> list = onDutyService.getProjectOnDutyList(page,query); |
| | | page.setRecords(list); |
| | | return R.ok(page); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取人员在岗详情") |
| | | @GetMapping("/getProjectOnDutyDetail/{id}") |
| | | public R<?> getProjectOnDutyDetail(@PathVariable Integer id) { |
| | | ProjectPersonOnDutyListVo vo = onDutyService.getProjectOnDutyDetail(id); |
| | | return R.ok(vo); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "获取项目大屏最新重大风险源",response = ProjectInfo.class) |
| | | @GetMapping("/getProjectDangerousSource") |
| | | public R<ProjectInfo> getProjectDangerousSource(@RequestParam Integer projectId) { |
| | | ProjectInfo projectInfo = projectInfoService.getOne(new LambdaQueryWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId,projectId).eq(ProjectInfo::getDeleted, false).orderByDesc(ProjectInfo::getCreateTime).last("limit 1")); |
| | | return R.ok(projectInfo); |
| | | } |
| | | |
| | | |
| | | |
| | | @ApiOperation(value = "获取项目重大风险源列表") |
| | | @PostMapping("/getProjectDangerousSourceList") |
| | | public R<Page<ProjectInfo>> getProjectDangerousSourceList(@RequestBody @Valid ProjectDangerousSourceListQuery query) { |
| | | Page<ProjectInfo> page = new Page<>(query.getPageNum(), query.getPageSize()); |
| | | LambdaQueryWrapper<ProjectInfo> wrapper = new LambdaQueryWrapper<ProjectInfo>().eq(ProjectInfo::getProjectId, query.getProjectId()).eq(ProjectInfo::getDeleted, false); |
| | | if(query.getStartTime()!=null && !query.getStartTime().isEmpty()){ |
| | | wrapper.ge(ProjectInfo::getCreateTime, query.getStartTime()); |
| | | } |
| | | if(query.getEndTime()!=null && !query.getEndTime().isEmpty()){ |
| | | wrapper.le(ProjectInfo::getCreateTime, query.getEndTime()); |
| | | } |
| | | if(query.getContent()!=null && !query.getContent().isEmpty()){ |
| | | wrapper.like(ProjectInfo::getDetail, query.getContent()); |
| | | } |
| | | Page<ProjectInfo> list = projectInfoService.page(page,wrapper); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | @ApiOperation(value = "获取项目重大风险源详情") |
| | | @GetMapping("/getProjectDangerousSourceDetail/{id}") |
| | | public R<?> getProjectDangerousSourceDetail(@PathVariable Integer id) { |
| | | ProjectInfo projectInfo = projectInfoService.getById(id); |
| | | return R.ok(projectInfo); |
| | | } |
| | | |
| | | @ApiOperation(value = "设备类型") |
| | | @GetMapping("/deviceTypes") |
| | | public R<?> deviceTypeOptions(@RequestParam(value = "title", required = false) String title) { |
| | | return R.ok(SelectOptionVo.buildOptions(title, DeviceType.values())); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "各分项隐患趋势") |
| | | @GetMapping("/getProjectHiddenDangerTrend") |
| | | public R<List<ProjectHiddenDangerTrendVo>> getProjectHiddenDangerTrend(@RequestParam Integer projectId,@RequestParam(value = "desc", required = true) Boolean desc,@RequestParam(value = "type", required = true)Integer type) { |
| | | List<ProjectHiddenDangerTrendVo> list = projectInfoService.getProjectHiddenDangerTrend(projectId); |
| | | if(type==1){ |
| | | if(desc){ |
| | | list = list.stream().sorted(Comparator.comparingInt(ProjectHiddenDangerTrendVo::getThisMonth).reversed()).toList(); |
| | | }else { |
| | | list = list.stream().sorted(Comparator.comparingInt(ProjectHiddenDangerTrendVo::getThisMonth)).toList(); |
| | | } |
| | | }else { |
| | | if(desc){ |
| | | list = list.stream().sorted(Comparator.comparingDouble(ProjectHiddenDangerTrendVo::getRate).reversed()).toList(); |
| | | }else { |
| | | list = list.stream().sorted(Comparator.comparingDouble(ProjectHiddenDangerTrendVo::getRate)).toList(); |
| | | } |
| | | } |
| | | |
| | | return R.ok(list); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "各分项隐患趋势列表") |
| | | @PostMapping("/getProjectHiddenDangerTrendList") |
| | | public R<List<ProjectHiddenDangerList>> getProjectHiddenDangerTrendList(@RequestBody @Valid ProjectHiddenDangerTrendListQuery query) { |
| | | List<ProjectHiddenDangerList> list = projectInfoService.getProjectHiddenDangerTrendList(query); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "大屏风险趋势") |
| | | @PostMapping("/getProjectDangerousTrend") |
| | | public R<List<ProjectDangerousTrendVo>> getProjectDangerousTrend(@RequestBody @Valid ProjectDangerousTrendQuery query) { |
| | | List<ProjectDangerousTrendVo> list = projectInfoService.getProjectDangerousTrend(query); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | @ApiOperation(value = "获取项目列表") |
| | | @GetMapping("/list") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "clientId", value = "委托方ID", dataType = "int", paramType = "query"), |
| | | @ApiImplicitParam(name = "projectName", value = "项目名称", dataType = "string", paramType = "query") |
| | | }) |
| | | public R<List<Project>> getList(Integer clientId, String projectName) { |
| | | LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<Project>().eq(Project::getDeleted, false); |
| | | if(clientId!=null){ |
| | | wrapper.eq(Project::getClientId, clientId); |
| | | } |
| | | if(projectName!=null && !projectName.isEmpty()){ |
| | | wrapper.like(Project::getName, projectName); |
| | | } |
| | | List<Project> list = projectService.list(wrapper); |
| | | return R.ok(list); |
| | | |
| | | } |
| | | } |