diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/DpzaglController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/DpzaglController.java new file mode 100644 index 00000000..82f4c579 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/DpzaglController.java @@ -0,0 +1,66 @@ +package org.dromara.bigscreen.controller; + + +import lombok.RequiredArgsConstructor; +import org.dromara.bigscreen.domain.bo.DpznglBo; +import org.dromara.bigscreen.domain.vo.DpznglAqyVo; +import org.dromara.bigscreen.domain.vo.DpznglVo; +import org.dromara.bigscreen.service.DpzaglService; +import org.dromara.common.core.domain.R; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 大屏-质安管理 + * + * @author Lion Li + * @date 2025-11-05 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/dpzagl") +public class DpzaglController { + + private final DpzaglService dpzaglService; + + + + /** + * 查询大屏-质安管理-站班会,巡检工单,整改情况 + */ + @GetMapping("/list") + public R list(DpznglBo bo) { + return R.ok(dpzaglService.queryList(bo)); + } + + /** + * 查询大屏-质安管理-站班会 + */ + @GetMapping("/listByzbh") + public R listByzbh(DpznglBo bo) { + return R.ok(dpzaglService.listByzbh(bo)); + } + + + /** + * 查询大屏-质安管理-安全员分布情况 + */ + @GetMapping("/listByAqy") + public R> listByAqy(DpznglBo bo) { + return R.ok(dpzaglService.listByAqy(bo)); + } + + + + + + + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/bo/DpznglBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/bo/DpznglBo.java new file mode 100644 index 00000000..c7aadd36 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/bo/DpznglBo.java @@ -0,0 +1,28 @@ +package org.dromara.bigscreen.domain.bo; + + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class DpznglBo implements Serializable { + + /** + * 分页大小 + */ + private Integer pageSize = 10; + + /** + * 当前页数 + */ + private Integer pageNum = 1; + + + /** + * 项目id + */ + private Long projectId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/vo/DpznglAqyVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/vo/DpznglAqyVo.java new file mode 100644 index 00000000..308b1ed4 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/vo/DpznglAqyVo.java @@ -0,0 +1,31 @@ +package org.dromara.bigscreen.domain.vo; + + +import com.google.type.Decimal; +import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class DpznglAqyVo implements Serializable { + + private Long userId; + + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "userId") + private String userName; + + /** + * 经度 + */ + private BigDecimal locLatitude; + + /** + * 纬度 + */ + private BigDecimal locLongitude; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/vo/DpznglVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/vo/DpznglVo.java new file mode 100644 index 00000000..c84c1a02 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/vo/DpznglVo.java @@ -0,0 +1,103 @@ +package org.dromara.bigscreen.domain.vo; + + +import lombok.Data; +import org.dromara.quality.domain.vo.qualityinspection.QltQualityInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.HseSafetyInspectionVo; +import org.dromara.safety.domain.vo.teammeeting.HseTeamMeetingVo; + +import java.io.Serializable; +import java.util.List; + +@Data +public class DpznglVo implements Serializable { + + /** + * 站班会 + */ + private List zbhList; + + +// 质量管理 + + /** + * 质量总数 + */ + private Long zlZS; + /** + * 质量数据 + */ + private List zlList; + + /** + * 质量 专项检查 + */ + private Long zxjcZl; + + /** + * 质量 定期检查 + */ + private Long dqjcZl; + + /** + * 质量 日常巡检 + */ + private Long rcxjZl; + + /** + * 质量 整改数量 + */ + private Long zlZgsl; + + /** + * 质量数据-整改 + */ + private List zlZgList; + + + + // 安全管理 + + /** + * 安全总数 + */ + private Long aqZS; + /** + * 安全数据 + */ + private List aqList; + + /** + * 安全 专项检查 + */ + private Long zxjcAq; + + /** + * 安全定期检查 + */ + private Long dqjcAq; + + /** + * 安全 日常巡检 + */ + private Long rcxjAq; + + /** + * 安全 整改数量 + */ + private Long aqZgsl; + + /** + * 安全数据-整改 + */ + private List aqZgList; + + + + + + + + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/enums/DpEnum.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/enums/DpEnum.java index 2aceaf5a..090c1c82 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/enums/DpEnum.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/enums/DpEnum.java @@ -3,8 +3,10 @@ package org.dromara.bigscreen.enums; public enum DpEnum { ZLGLLX_ZXGL("专项检查", "1"), - ZLGLLX_DQJC("专项检查", "2"), - ZLGLLX_RCXJ("专项检查", "3"); + ZLGLLX_DQJC("定期检查", "2"), + ZLGLLX_RCXJ("日常巡检", "3"), + ZLGDZT_ZG("工单状态-整改", "2"), + JSLX_AQY("角色类型-安全员", "SAFETY_OFFICER"); private final String TypeName; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/DpzaglService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/DpzaglService.java new file mode 100644 index 00000000..58a922aa --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/DpzaglService.java @@ -0,0 +1,28 @@ +package org.dromara.bigscreen.service; + + +import org.dromara.bigscreen.domain.bo.DpznglBo; +import org.dromara.bigscreen.domain.vo.DpznglAqyVo; +import org.dromara.bigscreen.domain.vo.DpznglVo; + +import java.util.List; + +/** + * 大屏-质安管理 + * + * @author Lion Li + * @date 2025-11-05 + */ +public interface DpzaglService { + /** + * 查询大屏-质安管理-站班会,巡检工单,整改情况 + */ + DpznglVo queryList(DpznglBo bo); + + /** + * 查询大屏-质安管理-安全员分布情况 + */ + List listByAqy(DpznglBo bo); + + DpznglVo listByzbh(DpznglBo bo); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/DpzaglServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/DpzaglServiceImpl.java new file mode 100644 index 00000000..30edcc08 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/DpzaglServiceImpl.java @@ -0,0 +1,198 @@ +package org.dromara.bigscreen.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.bigscreen.domain.bo.DpznglBo; +import org.dromara.bigscreen.domain.vo.DpznglAqyVo; +import org.dromara.bigscreen.domain.vo.DpznglVo; +import org.dromara.bigscreen.enums.DpEnum; +import org.dromara.bigscreen.service.DpzaglService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.gps.domain.GpsEquipmentSon; +import org.dromara.gps.mapper.GpsEquipmentSonMapper; +import org.dromara.gps.service.IGpsEquipmentSonService; +import org.dromara.project.domain.BusUserProjectRelevancy; +import org.dromara.project.mapper.BusUserProjectRelevancyMapper; +import org.dromara.quality.domain.QltQualityInspection; +import org.dromara.quality.domain.dto.qualityinspection.QltQualityInspectionQueryReq; +import org.dromara.quality.domain.vo.qualityinspection.QltQualityInspectionVo; +import org.dromara.quality.service.IQltQualityInspectionService; +import org.dromara.safety.domain.HseSafetyInspection; +import org.dromara.safety.domain.dto.safetyinspection.HseSafetyInspectionQueryReq; +import org.dromara.safety.domain.dto.teammeeting.HseTeamMeetingQueryReq; +import org.dromara.safety.domain.vo.safetyinspection.HseSafetyInspectionVo; +import org.dromara.safety.domain.vo.teammeeting.HseTeamMeetingVo; +import org.dromara.safety.service.IHseSafetyInspectionService; +import org.dromara.safety.service.IHseTeamMeetingService; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.SysUserRole; +import org.dromara.system.mapper.SysRoleMapper; +import org.dromara.system.mapper.SysUserRoleMapper; +import org.dromara.system.service.ISysRoleService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * 大屏-质安管理 + * + * @author Lion Li + * @date 2025-11-05 + */ +@RequiredArgsConstructor +@Service +@Slf4j +public class DpzaglServiceImpl implements DpzaglService { + + //站班会 + private final IHseTeamMeetingService teamMeetingService; + //质量-检查工单 + private final IQltQualityInspectionService qualityInspectionService; + +// 安全工单 + private final IHseSafetyInspectionService safetyInspectionService; + + + private final SysRoleMapper sysRoleMapper; + + + private final SysUserRoleMapper sysUserRoleMapper; + + + private final GpsEquipmentSonMapper gpsEquipmentSonMapper; + + + private final BusUserProjectRelevancyMapper busUserProjectRelevancyMapper; + + + @Override + public DpznglVo queryList(DpznglBo bo) { + DpznglVo dpznglVo = new DpznglVo(); + PageQuery pageQuery = new PageQuery(bo.getPageSize(),bo.getPageNum()); +// 质量 + saveZl(pageQuery,dpznglVo); +// 安全 + saveAq(pageQuery,dpznglVo); + + + return dpznglVo; + } + + @Override + public List listByAqy(DpznglBo bo) { + List dpznglAqyVos = new ArrayList<>(); + if (bo == null || bo.getProjectId() == null) throw new RuntimeException("项目不能为空"); + +//// 查询该项目下的人员id +// List busUserProjectRelevancies = busUserProjectRelevancyMapper.selectList(new LambdaQueryWrapper().eq(BusUserProjectRelevancy::getProjectId, bo.getProjectId())); +// if (busUserProjectRelevancies == null || busUserProjectRelevancies.size() == 0){ +// return dpznglAqyVos; +// } + +// 查询拥有安全员的角色 + List sysRoles = sysRoleMapper.selectList(new LambdaQueryWrapper().eq(SysRole::getRoleIdentity, DpEnum.JSLX_AQY.getTypeValue())); + if (sysRoles == null || sysRoles.size() == 0){ + return dpznglAqyVos; + } + +// 根据角色查询人员 + List roles = sysRoles.stream().map(SysRole::getRoleId).collect(Collectors.toList()); + List sysUserRoles = sysUserRoleMapper.selectList(new LambdaQueryWrapper().in(SysUserRole::getRoleId, roles).groupBy(SysUserRole::getUserId)); + if (sysUserRoles == null && sysUserRoles.size() == 0){ + return dpznglAqyVos; + } + +// 查询人员的最新经纬度 + List collect = sysUserRoles.stream().map(SysUserRole::getUserId).collect(Collectors.toList()); + if (collect == null || collect.size() == 0){ + return dpznglAqyVos; + } + List temp = gpsEquipmentSonMapper.listByAqy(collect,bo.getProjectId()); + if (temp != null && temp.size() > 0){ +// 回填数据 + dpznglAqyVos = temp.stream().map(gpsEquipmentSon -> { + DpznglAqyVo dpznglAqyVo = new DpznglAqyVo(); + dpznglAqyVo.setUserId(gpsEquipmentSon.getUserId()); + dpznglAqyVo.setLocLatitude(gpsEquipmentSon.getLocLatitude()); + dpznglAqyVo.setLocLongitude(gpsEquipmentSon.getLocLongitude()); + return dpznglAqyVo; + }).collect(Collectors.toList()); +// 判断是否离岗 + } + + return dpznglAqyVos; + } + + @Override + public DpznglVo listByzbh(DpznglBo bo) { + DpznglVo dpznglVo = new DpznglVo(); + + // 站班会 + HseTeamMeetingQueryReq hseTeamMeetingQueryReq = new HseTeamMeetingQueryReq(); + List hseTeamMeetingVos = teamMeetingService.queryList(hseTeamMeetingQueryReq); + dpznglVo.setZbhList(hseTeamMeetingVos); + return dpznglVo; + } + + + private void saveAq(PageQuery pageQuery, DpznglVo dpznglVo) { + + // 安全 巡检工单,整改情况 + HseSafetyInspectionQueryReq req = new HseSafetyInspectionQueryReq(); +// 质量展示数据 + TableDataInfo anList = safetyInspectionService.queryPageList(req, pageQuery); +// 质量展示数据-整改 + req.setStatus(DpEnum.ZLGDZT_ZG.getTypeValue()); + TableDataInfo aqZgList = safetyInspectionService.queryPageList(req, pageQuery); +// 质量总数(用于判断巡检类型) + List list = safetyInspectionService.list(); + + List rows = anList.getRows(); + + if (rows != null && rows.size() > 0){ + dpznglVo.setAqZS(anList.getTotal()); + dpznglVo.setAqList(rows); + dpznglVo.setZxjcAq(list.stream().filter(zl -> DpEnum.ZLGLLX_ZXGL.getTypeValue().equals(zl.getCheckType())).count()); + dpznglVo.setDqjcAq(list.stream().filter(zl -> DpEnum.ZLGLLX_DQJC.getTypeValue().equals(zl.getCheckType())).count()); + dpznglVo.setRcxjAq(list.stream().filter(zl -> DpEnum.ZLGLLX_RCXJ.getTypeValue().equals(zl.getCheckType())).count()); + dpznglVo.setAqZgsl(list.stream().filter(zl -> DpEnum.ZLGDZT_ZG.getTypeValue().equals(zl.getStatus())).count()); + } + if (aqZgList.getRows() != null && aqZgList.getRows().size() > 0){ + dpznglVo.setAqZgList(aqZgList.getRows()); + } + + + } + + private void saveZl(PageQuery pageQuery,DpznglVo dpznglVo) { + +// 质量 巡检工单,整改情况 + QltQualityInspectionQueryReq req = new QltQualityInspectionQueryReq(); +// 质量展示数据 + TableDataInfo zlLists = qualityInspectionService.queryPageList(req, pageQuery); +// 质量展示数据-整改 + req.setInspectionStatus(DpEnum.ZLGDZT_ZG.getTypeValue()); + TableDataInfo zlZgLists = qualityInspectionService.queryPageList(req, pageQuery); +// 质量总数(用于判断巡检类型) + List zsZl = qualityInspectionService.list(); + + + List rows = zlLists.getRows(); + if (rows != null && rows.size() > 0){ + dpznglVo.setZlZS(zlLists.getTotal()); + dpznglVo.setZlList(rows); + dpznglVo.setZxjcZl(zsZl.stream().filter(zl -> DpEnum.ZLGLLX_ZXGL.getTypeValue().equals(zl.getInspectionType())).count()); + dpznglVo.setDqjcZl(zsZl.stream().filter(zl -> DpEnum.ZLGLLX_DQJC.getTypeValue().equals(zl.getInspectionType())).count()); + dpznglVo.setRcxjZl(zsZl.stream().filter(zl -> DpEnum.ZLGLLX_RCXJ.getTypeValue().equals(zl.getInspectionType())).count()); + dpznglVo.setZlZgsl(zsZl.stream().filter(zl -> DpEnum.ZLGDZT_ZG.getTypeValue().equals(zl.getInspectionStatus())).count()); + } + if (zlZgLists.getRows() != null && zlZgLists.getRows().size() > 0){ + dpznglVo.setZlZgList(zlZgLists.getRows()); + } + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentSonMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentSonMapper.java index 8d46c768..aed02b38 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentSonMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentSonMapper.java @@ -154,4 +154,17 @@ public interface GpsEquipmentSonMapper extends BaseMapperPlus getUeUserListByProjectId(@Param("startTime") LocalDateTime startOfDay, @Param("endTime") LocalDateTime now); + + + + @Select("") + List listByAqy(@Param("collect") List collect, @Param("projectId") Long projectId); }