diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java index b6857a01..271fe36d 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java @@ -15,11 +15,9 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; -import org.dromara.facility.domain.req.matrix.MatrixCreateByGeoJsonReq; -import org.dromara.facility.domain.req.matrix.MatrixCreateReq; -import org.dromara.facility.domain.req.matrix.MatrixQueryReq; -import org.dromara.facility.domain.req.matrix.MatrixUpdateReq; -import org.dromara.facility.domain.vo.FacMatrixVo; +import org.dromara.facility.domain.req.matrix.*; +import org.dromara.facility.domain.vo.matrix.FacMatrixVo; +import org.dromara.facility.domain.vo.matrix.MatrixDetailGisVo; import org.dromara.facility.service.IFacMatrixService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -72,6 +70,15 @@ public class FacMatrixController extends BaseController { return R.ok(facMatrixService.queryById(id)); } + /** + * 获取大屏方阵详情 + */ + @SaCheckPermission("facility:matrix:query") + @GetMapping("/gis") + public R getMatrixDetailGis(MatrixDetailGisReq req) { + return R.ok(facMatrixService.getMatrixDetailGis(req)); + } + /** * 通过GeoJson新增设施-方阵 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/enums/FinishStatusEnum.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/enums/FinishStatusEnum.java new file mode 100644 index 00000000..b8be729d --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/enums/FinishStatusEnum.java @@ -0,0 +1,24 @@ +package org.dromara.facility.domain.enums; + +import lombok.Getter; + +/** + * @author lcj + * @date 2025/4/28 16:34 + */ +@Getter +public enum FinishStatusEnum { + + UNFINISH("未完成", "0"), + FINISH("已完成", "1"); + + private final String text; + + private final String value; + + FinishStatusEnum(String text, String value) { + this.text = text; + this.value = value; + } + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/matrix/MatrixDetailGisReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/matrix/MatrixDetailGisReq.java new file mode 100644 index 00000000..0b26d145 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/matrix/MatrixDetailGisReq.java @@ -0,0 +1,28 @@ +package org.dromara.facility.domain.req.matrix; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 16:27 + */ +@Data +public class MatrixDetailGisReq implements Serializable { + + @Serial + private static final long serialVersionUID = 6514291289474982208L; + + /** + * 项目id + */ + private Long projectId; + + /** + * 方阵id + */ + private Long matrixId; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/FacMatrixVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/matrix/FacMatrixVo.java similarity index 96% rename from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/FacMatrixVo.java rename to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/matrix/FacMatrixVo.java index 660e7517..27389acc 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/FacMatrixVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/matrix/FacMatrixVo.java @@ -1,4 +1,4 @@ -package org.dromara.facility.domain.vo; +package org.dromara.facility.domain.vo.matrix; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/matrix/MatrixDetailGisVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/matrix/MatrixDetailGisVo.java new file mode 100644 index 00000000..ca470984 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/vo/matrix/MatrixDetailGisVo.java @@ -0,0 +1,78 @@ +package org.dromara.facility.domain.vo.matrix; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 16:19 + */ +@Data +public class MatrixDetailGisVo implements Serializable { + + @Serial + private static final long serialVersionUID = 138750225601876373L; + + /** + * 总箱变数量 + */ + private Long boxTransformerCount; + + /** + * 已完成箱变数量 + */ + private Long boxTransformerFinishCount; + + /** + * 总逆变器数量 + */ + private Long inverterCount; + + /** + * 已完成逆变器数量 + */ + private Long inverterFinishCount; + + /** + * 总光伏板数量 + */ + private Long photovoltaicPanelCount; + + /** + * 已完成光伏板数量 + */ + private Long photovoltaicPanelFinishCount; + + /** + * 光伏板总点位数量 + */ + private Long pointCount; + + /** + * 已完成光伏板点位数量 + */ + private Long pointFinishCount; + + /** + * 光伏板总立柱数量 + */ + private Long columnCount; + + /** + * 已完成光伏板立柱数量 + */ + private Long columnFinishCount; + + /** + * 光伏板总支架数量 + */ + private Long supportCount; + + /** + * 已完成光伏板支架数量 + */ + private Long supportFinishCount; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/mapper/FacMatrixMapper.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/mapper/FacMatrixMapper.java index 8b86459a..5075e334 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/mapper/FacMatrixMapper.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/mapper/FacMatrixMapper.java @@ -1,7 +1,7 @@ package org.dromara.facility.mapper; import org.dromara.facility.domain.FacMatrix; -import org.dromara.facility.domain.vo.FacMatrixVo; +import org.dromara.facility.domain.vo.matrix.FacMatrixVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacMatrixService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacMatrixService.java index 0fa9e887..eac43339 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacMatrixService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacMatrixService.java @@ -6,11 +6,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.facility.domain.FacMatrix; -import org.dromara.facility.domain.req.matrix.MatrixCreateByGeoJsonReq; -import org.dromara.facility.domain.req.matrix.MatrixCreateReq; -import org.dromara.facility.domain.req.matrix.MatrixQueryReq; -import org.dromara.facility.domain.req.matrix.MatrixUpdateReq; -import org.dromara.facility.domain.vo.FacMatrixVo; +import org.dromara.facility.domain.req.matrix.*; +import org.dromara.facility.domain.vo.matrix.FacMatrixVo; +import org.dromara.facility.domain.vo.matrix.MatrixDetailGisVo; import java.util.Collection; import java.util.List; @@ -48,6 +46,14 @@ public interface IFacMatrixService extends IService { */ List queryList(MatrixQueryReq req); + /** + * 获取大屏方阵详情信息 + * + * @param req 获取大屏方阵详情信息参数 + * @return 大屏方阵详情信息 + */ + MatrixDetailGisVo getMatrixDetailGis(MatrixDetailGisReq req); + /** * 新增设施-方阵 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacMatrixServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacMatrixServiceImpl.java index 05acd5df..1712c344 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacMatrixServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacMatrixServiceImpl.java @@ -13,18 +13,14 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.facility.domain.FacBoxTransformer; -import org.dromara.facility.domain.FacInverter; -import org.dromara.facility.domain.FacMatrix; -import org.dromara.facility.domain.FacPhotovoltaicPanel; +import org.dromara.facility.domain.*; +import org.dromara.facility.domain.enums.FinishStatusEnum; import org.dromara.facility.domain.req.geojson.Feature; import org.dromara.facility.domain.req.geojson.FeatureByPoint; import org.dromara.facility.domain.req.geojson.Geometry; -import org.dromara.facility.domain.req.matrix.MatrixCreateByGeoJsonReq; -import org.dromara.facility.domain.req.matrix.MatrixCreateReq; -import org.dromara.facility.domain.req.matrix.MatrixQueryReq; -import org.dromara.facility.domain.req.matrix.MatrixUpdateReq; -import org.dromara.facility.domain.vo.FacMatrixVo; +import org.dromara.facility.domain.req.matrix.*; +import org.dromara.facility.domain.vo.matrix.FacMatrixVo; +import org.dromara.facility.domain.vo.matrix.MatrixDetailGisVo; import org.dromara.facility.mapper.FacMatrixMapper; import org.dromara.facility.service.*; import org.dromara.project.service.IBusProjectService; @@ -58,6 +54,18 @@ public class FacMatrixServiceImpl extends ServiceImpl boxTransformerList = boxTransformerService.lambdaQuery() + .select(FacBoxTransformer::getId, FacBoxTransformer::getStatus) + .eq(FacBoxTransformer::getProjectId, projectId) + .eq(ObjectUtils.isNotEmpty(matrixId), FacBoxTransformer::getMatrixId, matrixId) + .list(); + if (CollUtil.isNotEmpty(boxTransformerList)) { + matrixDetailGisVo.setBoxTransformerCount((long) boxTransformerList.size()); + matrixDetailGisVo.setBoxTransformerFinishCount(boxTransformerList.stream() + .filter(boxTransformer -> + FinishStatusEnum.FINISH.getValue().equals(boxTransformer.getStatus())).count()); + } + // 获取逆变器数量 + List inverterList = inverterService.lambdaQuery() + .select(FacInverter::getId, FacInverter::getStatus) + .eq(FacInverter::getProjectId, projectId) + .eq(ObjectUtils.isNotEmpty(matrixId), FacInverter::getMatrixId, matrixId) + .list(); + if (CollUtil.isNotEmpty(inverterList)) { + matrixDetailGisVo.setInverterCount((long) inverterList.size()); + matrixDetailGisVo.setInverterFinishCount(inverterList.stream() + .filter(inverter -> + FinishStatusEnum.FINISH.getValue().equals(inverter.getStatus())).count()); + } + // 获取光伏板数量 + List photovoltaicPanelList = photovoltaicPanelService.lambdaQuery() + .select(FacPhotovoltaicPanel::getId, FacPhotovoltaicPanel::getStatus) + .eq(FacPhotovoltaicPanel::getProjectId, projectId) + .eq(ObjectUtils.isNotEmpty(matrixId), FacPhotovoltaicPanel::getMatrixId, matrixId) + .list(); + if (CollUtil.isNotEmpty(photovoltaicPanelList)) { + matrixDetailGisVo.setPhotovoltaicPanelCount((long) photovoltaicPanelList.size()); + matrixDetailGisVo.setPhotovoltaicPanelFinishCount(photovoltaicPanelList.stream() + .filter(photovoltaicPanel -> + FinishStatusEnum.FINISH.getValue().equals(photovoltaicPanel.getStatus())).count()); + } + // 获取光伏板点数量 + List photovoltaicPanelPointList = photovoltaicPanelPointService.lambdaQuery() + .select(FacPhotovoltaicPanelPoint::getId, FacPhotovoltaicPanelPoint::getStatus) + .eq(FacPhotovoltaicPanelPoint::getProjectId, projectId) + .eq(ObjectUtils.isNotEmpty(matrixId), FacPhotovoltaicPanelPoint::getMatrixId, matrixId) + .list(); + if (CollUtil.isNotEmpty(photovoltaicPanelPointList)) { + matrixDetailGisVo.setPointCount((long) photovoltaicPanelPointList.size()); + matrixDetailGisVo.setPointFinishCount(photovoltaicPanelPointList.stream() + .filter(photovoltaicPanelPoint -> + FinishStatusEnum.FINISH.getValue().equals(photovoltaicPanelPoint.getStatus())).count()); + } + // 获取支架数量 + List photovoltaicPanelSupportList = photovoltaicPanelSupportService.lambdaQuery() + .select(FacPhotovoltaicPanelSupport::getId, FacPhotovoltaicPanelSupport::getStatus) + .eq(FacPhotovoltaicPanelSupport::getProjectId, projectId) + .eq(ObjectUtils.isNotEmpty(matrixId), FacPhotovoltaicPanelSupport::getMatrixId, matrixId) + .list(); + if (CollUtil.isNotEmpty(photovoltaicPanelSupportList)) { + matrixDetailGisVo.setSupportCount((long) photovoltaicPanelSupportList.size()); + matrixDetailGisVo.setSupportFinishCount(photovoltaicPanelSupportList.stream() + .filter(photovoltaicPanelSupport -> + FinishStatusEnum.FINISH.getValue().equals(photovoltaicPanelSupport.getStatus())).count()); + } + // 获取立柱数量 + List photovoltaicPanelColumnList = photovoltaicPanelColumnService.lambdaQuery() + .select(FacPhotovoltaicPanelColumn::getId, FacPhotovoltaicPanelColumn::getStatus) + .eq(FacPhotovoltaicPanelColumn::getProjectId, projectId) + .eq(ObjectUtils.isNotEmpty(matrixId), FacPhotovoltaicPanelColumn::getMatrixId, matrixId) + .list(); + if (CollUtil.isNotEmpty(photovoltaicPanelColumnList)) { + matrixDetailGisVo.setColumnCount((long) photovoltaicPanelColumnList.size()); + matrixDetailGisVo.setColumnFinishCount(photovoltaicPanelColumnList.stream() + .filter(photovoltaicPanelColumn -> + FinishStatusEnum.FINISH.getValue().equals(photovoltaicPanelColumn.getStatus())).count()); + } + return matrixDetailGisVo; + } + /** * 新增设施-方阵 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/controller/BusMachineryController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/controller/BusMachineryController.java index 5ea13138..aaa47441 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/controller/BusMachineryController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/controller/BusMachineryController.java @@ -16,9 +16,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.machinery.domain.req.machinery.MachineryCreateReq; +import org.dromara.machinery.domain.req.machinery.MachineryGisReq; import org.dromara.machinery.domain.req.machinery.MachineryQueryReq; import org.dromara.machinery.domain.req.machinery.MachineryUpdateReq; import org.dromara.machinery.domain.vo.BusMachineryVo; +import org.dromara.machinery.domain.vo.MachineryGisVo; import org.dromara.machinery.service.IBusMachineryService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -59,6 +61,15 @@ public class BusMachineryController extends BaseController { ExcelUtil.exportExcel(list, "机械", BusMachineryVo.class, response); } + /** + * 查询大屏机械列表 + */ + @SaCheckPermission("machinery:machinery:list") + @GetMapping("/list/gis") + public R> queryGisList(MachineryGisReq req) { + return R.ok(busMachineryService.queryGisList(req)); + } + /** * 获取机械详细信息 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/req/machinery/MachineryGisReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/req/machinery/MachineryGisReq.java new file mode 100644 index 00000000..cc5533d8 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/req/machinery/MachineryGisReq.java @@ -0,0 +1,25 @@ +package org.dromara.machinery.domain.req.machinery; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 10:26 + */ +@Data +public class MachineryGisReq implements Serializable { + + @Serial + private static final long serialVersionUID = -5157791260034938544L; + + /** + * 项目主键 + */ + @NotNull(message = "项目主键不能为空") + private Long projectId; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/vo/MachineryGisVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/vo/MachineryGisVo.java new file mode 100644 index 00000000..339d4a4e --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/vo/MachineryGisVo.java @@ -0,0 +1,28 @@ +package org.dromara.machinery.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 10:27 + */ +@Data +public class MachineryGisVo implements Serializable { + + @Serial + private static final long serialVersionUID = -724470814094084721L; + + /** + * 机械名称 + */ + private String machineryName; + + /** + * 机械数量 + */ + private Long machineryCount; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/IBusMachineryService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/IBusMachineryService.java index 714cde89..bbf7623c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/IBusMachineryService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/IBusMachineryService.java @@ -7,9 +7,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.machinery.domain.BusMachinery; import org.dromara.machinery.domain.req.machinery.MachineryCreateReq; +import org.dromara.machinery.domain.req.machinery.MachineryGisReq; import org.dromara.machinery.domain.req.machinery.MachineryQueryReq; import org.dromara.machinery.domain.req.machinery.MachineryUpdateReq; import org.dromara.machinery.domain.vo.BusMachineryVo; +import org.dromara.machinery.domain.vo.MachineryGisVo; import java.util.Collection; import java.util.List; @@ -47,6 +49,14 @@ public interface IBusMachineryService extends IService { */ List queryList(MachineryQueryReq req); + /** + * 查询机械大屏数据列表 + * + * @param req 筛选条件 + * @return 大屏数据列表 + */ + List queryGisList(MachineryGisReq req); + /** * 新增机械 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java index 44bd5f00..96dab2e2 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java @@ -18,12 +18,15 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.machinery.domain.BusMachinery; import org.dromara.machinery.domain.BusMachineryDetail; import org.dromara.machinery.domain.req.machinery.MachineryCreateReq; +import org.dromara.machinery.domain.req.machinery.MachineryGisReq; import org.dromara.machinery.domain.req.machinery.MachineryQueryReq; import org.dromara.machinery.domain.req.machinery.MachineryUpdateReq; import org.dromara.machinery.domain.vo.BusMachineryVo; +import org.dromara.machinery.domain.vo.MachineryGisVo; import org.dromara.machinery.mapper.BusMachineryMapper; import org.dromara.machinery.service.IBusMachineryDetailService; import org.dromara.machinery.service.IBusMachineryService; +import org.dromara.project.domain.BusProject; import org.dromara.project.service.IBusProjectService; import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Lazy; @@ -92,6 +95,29 @@ public class BusMachineryServiceImpl extends ServiceImpl queryGisList(MachineryGisReq req) { + Long projectId = req.getProjectId(); + BusProject project = projectService.getById(projectId); + if (project == null) { + throw new ServiceException("项目信息不存在", HttpStatus.NOT_FOUND); + } + List list = this.lambdaQuery() + .eq(BusMachinery::getProjectId, projectId).list(); + return list.stream().map(machinery -> { + MachineryGisVo machineryGisVo = new MachineryGisVo(); + machineryGisVo.setMachineryName(machinery.getMachineryName()); + machineryGisVo.setMachineryCount(machinery.getNumber()); + return machineryGisVo; + }).toList(); + } + /** * 新增机械 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/controller/BusMaterialsController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/controller/BusMaterialsController.java index b7f1118f..88c2d845 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/controller/BusMaterialsController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/controller/BusMaterialsController.java @@ -16,9 +16,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.materials.domain.req.materials.MaterialsCreateReq; +import org.dromara.materials.domain.req.materials.MaterialsGisReq; import org.dromara.materials.domain.req.materials.MaterialsQueryReq; import org.dromara.materials.domain.req.materials.MaterialsUpdateReq; import org.dromara.materials.domain.vo.BusMaterialsVo; +import org.dromara.materials.domain.vo.MaterialsGisVo; import org.dromara.materials.service.IBusMaterialsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -59,6 +61,15 @@ public class BusMaterialsController extends BaseController { ExcelUtil.exportExcel(list, "材料名称", BusMaterialsVo.class, response); } + /** + * 查询大屏材料信息 + */ + @SaCheckPermission("materials:materials:list") + @GetMapping("/list/gis") + public R> queryGisList(MaterialsGisReq req) { + return R.ok(busMaterialsService.queryGisList(req)); + } + /** * 获取材料详细信息 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/enums/MaterialsInventoryOutputEnum.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/enums/MaterialsInventoryOutPutEnum.java similarity index 57% rename from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/enums/MaterialsInventoryOutputEnum.java rename to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/enums/MaterialsInventoryOutPutEnum.java index ef78f938..45897fbf 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/domain/enums/MaterialsInventoryOutputEnum.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/enums/MaterialsInventoryOutPutEnum.java @@ -1,13 +1,13 @@ -package org.dromara.machinery.domain.enums; +package org.dromara.materials.domain.enums; import lombok.Getter; /** * @author lcj - * @date 2025/4/11 13:53 + * @date 2025/4/28 11:00 */ @Getter -public enum MaterialsInventoryOutputEnum { +public enum MaterialsInventoryOutPutEnum { PUT("入库", "0"), OUT("出库", "1"); @@ -16,7 +16,7 @@ public enum MaterialsInventoryOutputEnum { private final String value; - MaterialsInventoryOutputEnum(String text, String value) { + MaterialsInventoryOutPutEnum(String text, String value) { this.text = text; this.value = value; } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/req/materials/MaterialsGisReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/req/materials/MaterialsGisReq.java new file mode 100644 index 00000000..37825394 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/req/materials/MaterialsGisReq.java @@ -0,0 +1,25 @@ +package org.dromara.materials.domain.req.materials; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 10:38 + */ +@Data +public class MaterialsGisReq implements Serializable { + + @Serial + private static final long serialVersionUID = -7069030786285421399L; + + /** + * 项目主键 + */ + @NotNull(message = "项目主键不能为空") + private Long projectId; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/vo/MaterialsGisVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/vo/MaterialsGisVo.java new file mode 100644 index 00000000..8de7d779 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/vo/MaterialsGisVo.java @@ -0,0 +1,43 @@ +package org.dromara.materials.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 10:39 + */ +@Data +public class MaterialsGisVo implements Serializable { + + @Serial + private static final long serialVersionUID = 871786102998065916L; + + /** + * 材料名称 + */ + private String materialsName; + + /** + * 计量单位 + */ + private String weightId; + + /** + * 预计材料数量 + */ + private String quantityCount; + + /** + * 入库数量 + */ + private Long putCount; + + /** + * 出库数量 + */ + private Long outCount; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IBusMaterialsService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IBusMaterialsService.java index 8674d632..86badc8c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IBusMaterialsService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IBusMaterialsService.java @@ -7,9 +7,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.materials.domain.BusMaterials; import org.dromara.materials.domain.req.materials.MaterialsCreateReq; +import org.dromara.materials.domain.req.materials.MaterialsGisReq; import org.dromara.materials.domain.req.materials.MaterialsQueryReq; import org.dromara.materials.domain.req.materials.MaterialsUpdateReq; import org.dromara.materials.domain.vo.BusMaterialsVo; +import org.dromara.materials.domain.vo.MaterialsGisVo; import java.util.Collection; import java.util.List; @@ -47,6 +49,14 @@ public interface IBusMaterialsService extends IService { */ List queryList(MaterialsQueryReq req); + /** + * 查询材料大屏信息列表 + * + * @param req 查询条件 + * @return 材料大屏信息列表 + */ + List queryGisList(MaterialsGisReq req); + /** * 新增材料名称 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java index f6b4fce0..45e9bf89 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java @@ -13,9 +13,9 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.machinery.domain.enums.MaterialsInventoryOutputEnum; import org.dromara.materials.domain.BusMaterials; import org.dromara.materials.domain.BusMaterialsInventory; +import org.dromara.materials.domain.enums.MaterialsInventoryOutPutEnum; import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryCreateReq; import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryQueryReq; import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryUpdateReq; @@ -108,7 +108,7 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl queryGisList(MaterialsGisReq req) { + Long projectId = req.getProjectId(); + BusProject project = projectService.getById(projectId); + if (project == null) { + throw new ServiceException("项目信息不存在", HttpStatus.NOT_FOUND); + } + List materialsList = this.lambdaQuery() + .eq(BusMaterials::getProjectId, projectId).list(); + if (CollUtil.isEmpty(materialsList)) { + return List.of(); + } + List materialsInventoryList = materialsInventoryService.lambdaQuery() + .eq(BusMaterialsInventory::getProjectId, projectId).list(); + Map> inventoryMap = materialsInventoryList.stream() + .collect(Collectors.groupingBy(BusMaterialsInventory::getMaterialsId)); + return materialsList.stream().map(materials -> { + MaterialsGisVo materialsGisVo = new MaterialsGisVo(); + BeanUtils.copyProperties(materials, materialsGisVo); + Long id = materials.getId(); + long putCount = 0L; + long outCount = 0L; + if (CollUtil.isNotEmpty(inventoryMap) && inventoryMap.containsKey(id)) { + List inventoryList = inventoryMap.get(id); + for (BusMaterialsInventory record : inventoryList) { + if (MaterialsInventoryOutPutEnum.PUT.getValue().equals(record.getOutPut())) { + putCount += record.getNumber() != null ? record.getNumber() : 0; + } else if (MaterialsInventoryOutPutEnum.OUT.getValue().equals(record.getOutPut())) { + outCount += record.getNumber() != null ? record.getNumber() : 0; + } + } + } + materialsGisVo.setPutCount(putCount); + materialsGisVo.setOutCount(outCount); + return materialsGisVo; + }).toList(); + } + /** * 新增材料名称 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java index 2e5dbc0d..b09818d9 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java @@ -19,6 +19,7 @@ import org.dromara.project.domain.exportvo.BusConstructionUserExportVo; import org.dromara.project.domain.req.constructionuser.*; import org.dromara.project.domain.resp.constructionuser.ConstructionUserAttendanceMonthResp; import org.dromara.project.domain.resp.constructionuser.ConstructionUserAttendanceTotalResp; +import org.dromara.project.domain.resp.constructionuser.ConstructionUserGisResp; import org.dromara.project.domain.vo.BusConstructionUserVo; import org.dromara.project.service.IBusConstructionUserService; import org.springframework.validation.annotation.Validated; @@ -91,6 +92,15 @@ public class BusConstructionUserController extends BaseController { return R.ok(busConstructionUserService.queryById(id)); } + /** + * 查询施工人员大屏数据 + */ + @SaCheckPermission("project:constructionUser:query") + @GetMapping("/gis") + public R getGisData(ConstructionUserGisReq req) { + return R.ok(busConstructionUserService.getGisData(req)); + } + /** * 新增施工人员 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectNewsController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectNewsController.java new file mode 100644 index 00000000..3743a6c8 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectNewsController.java @@ -0,0 +1,118 @@ +package org.dromara.project.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.project.domain.req.projectnews.ProjectNewsCreateReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsGisReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsQueryReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsUpdateReq; +import org.dromara.project.domain.resp.projectnews.ProjectNewsGisResp; +import org.dromara.project.domain.vo.BusProjectNewsVo; +import org.dromara.project.service.IBusProjectNewsService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 项目新闻 + * + * @author lcj + * @date 2025-04-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/project/projectNews") +public class BusProjectNewsController extends BaseController { + + private final IBusProjectNewsService busProjectNewsService; + + /** + * 查询项目新闻列表 + */ + @SaCheckPermission("project:projectNews:list") + @GetMapping("/list") + public TableDataInfo list(ProjectNewsQueryReq req, PageQuery pageQuery) { + return busProjectNewsService.queryPageList(req, pageQuery); + } + + /** + * 导出项目新闻列表 + */ + @SaCheckPermission("project:projectNews:export") + @Log(title = "项目新闻", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ProjectNewsQueryReq req, HttpServletResponse response) { + List list = busProjectNewsService.queryList(req); + ExcelUtil.exportExcel(list, "项目新闻", BusProjectNewsVo.class, response); + } + + /** + * 查询大屏项目新闻列表 + */ + @GetMapping("/list/gis") + public R> listGis(ProjectNewsGisReq req) { + return R.ok(busProjectNewsService.queryGisList(req)); + } + + /** + * 获取项目新闻详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("project:projectNews:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(busProjectNewsService.queryById(id)); + } + + /** + * 新增项目新闻 + */ + @SaCheckPermission("project:projectNews:add") + @Log(title = "项目新闻", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ProjectNewsCreateReq req) { + return R.ok(busProjectNewsService.insertByBo(req)); + } + + /** + * 修改项目新闻 + */ + @SaCheckPermission("project:projectNews:edit") + @Log(title = "项目新闻", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ProjectNewsUpdateReq req) { + return toAjax(busProjectNewsService.updateByBo(req)); + } + + /** + * 删除项目新闻 + * + * @param ids 主键串 + */ + @SaCheckPermission("project:projectNews:remove") + @Log(title = "项目新闻", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(busProjectNewsService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusProjectNews.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusProjectNews.java new file mode 100644 index 00000000..1814e62d --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusProjectNews.java @@ -0,0 +1,64 @@ +package org.dromara.project.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * 项目新闻对象 bus_project_news + * + * @author lcj + * @date 2025-04-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bus_project_news") +public class BusProjectNews extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 项目id + */ + private Long projectId; + + /** + * 标题 + */ + private String title; + + /** + * 内容 + */ + private String content; + + /** + * 附件 + */ + private String file; + + /** + * 删除时间 + */ + private Date deletedAt; + + /** + * 是否删除(0正常 1删除) + */ + @TableLogic + private Long isDelete; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserGisReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserGisReq.java new file mode 100644 index 00000000..60788406 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserGisReq.java @@ -0,0 +1,25 @@ +package org.dromara.project.domain.req.constructionuser; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 9:40 + */ +@Data +public class ConstructionUserGisReq implements Serializable { + + @Serial + private static final long serialVersionUID = 2487357135566518535L; + + /** + * 项目id + */ + @NotNull(message = "项目主键不能为空") + private Long projectId; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsCreateReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsCreateReq.java new file mode 100644 index 00000000..caeca900 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsCreateReq.java @@ -0,0 +1,38 @@ +package org.dromara.project.domain.req.projectnews; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 11:52 + */ +@Data +public class ProjectNewsCreateReq implements Serializable { + + @Serial + private static final long serialVersionUID = 7116830397516873096L; + + /** + * 项目id + */ + private Long projectId; + + /** + * 标题 + */ + private String title; + + /** + * 内容 + */ + private String content; + + /** + * 附件 + */ + private String file; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsGisReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsGisReq.java new file mode 100644 index 00000000..1f95329a --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsGisReq.java @@ -0,0 +1,25 @@ +package org.dromara.project.domain.req.projectnews; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 14:07 + */ +@Data +public class ProjectNewsGisReq implements Serializable { + + @Serial + private static final long serialVersionUID = -291705026028532102L; + + /** + * 项目id + */ + @NotNull(message = "项目id不能为空") + private Long projectId; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsQueryReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsQueryReq.java new file mode 100644 index 00000000..fe061531 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsQueryReq.java @@ -0,0 +1,23 @@ +package org.dromara.project.domain.req.projectnews; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 11:52 + */ +@Data +public class ProjectNewsQueryReq implements Serializable { + + @Serial + private static final long serialVersionUID = 1453496535743326174L; + + /** + * 项目id + */ + private Long projectId; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsUpdateReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsUpdateReq.java new file mode 100644 index 00000000..8474c01b --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectnews/ProjectNewsUpdateReq.java @@ -0,0 +1,38 @@ +package org.dromara.project.domain.req.projectnews; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 11:53 + */ +@Data +public class ProjectNewsUpdateReq implements Serializable { + + @Serial + private static final long serialVersionUID = -5988430319051945969L; + + /** + * 主键id + */ + private Long id; + + /** + * 标题 + */ + private String title; + + /** + * 内容 + */ + private String content; + + /** + * 附件 + */ + private String file; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/constructionuser/ConstructionUserGisResp.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/constructionuser/ConstructionUserGisResp.java new file mode 100644 index 00000000..9fc70989 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/constructionuser/ConstructionUserGisResp.java @@ -0,0 +1,33 @@ +package org.dromara.project.domain.resp.constructionuser; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 9:33 + */ +@Data +public class ConstructionUserGisResp implements Serializable { + + @Serial + private static final long serialVersionUID = -3496633845665259321L; + + /** + * 施工人员数量 + */ + private Long peopleCount; + + /** + * 出勤人员数量 + */ + private Long attendanceCount; + + /** + * 出勤率 + */ + private String attendanceRate; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/projectnews/ProjectNewsGisResp.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/projectnews/ProjectNewsGisResp.java new file mode 100644 index 00000000..42399cbf --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/projectnews/ProjectNewsGisResp.java @@ -0,0 +1,28 @@ +package org.dromara.project.domain.resp.projectnews; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 14:11 + */ +@Data +public class ProjectNewsGisResp implements Serializable { + + @Serial + private static final long serialVersionUID = -751096185387401970L; + + /** + * 主键 + */ + private Long id; + + /** + * 标题 + */ + private String title; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusProjectNewsVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusProjectNewsVo.java new file mode 100644 index 00000000..0ea6a8aa --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusProjectNewsVo.java @@ -0,0 +1,50 @@ +package org.dromara.project.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.project.domain.BusProjectNews; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 项目新闻视图对象 bus_project_news + * + * @author lcj + * @date 2025-04-28 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusProjectNews.class) +public class BusProjectNewsVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long id; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 内容 + */ + @ExcelProperty(value = "内容") + private String content; + + /** + * 附件 + */ + @ExcelProperty(value = "附件") + private String file; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/mapper/BusProjectNewsMapper.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/mapper/BusProjectNewsMapper.java new file mode 100644 index 00000000..acf0a00f --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/mapper/BusProjectNewsMapper.java @@ -0,0 +1,15 @@ +package org.dromara.project.mapper; + +import org.dromara.project.domain.BusProjectNews; +import org.dromara.project.domain.vo.BusProjectNewsVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目新闻Mapper接口 + * + * @author lcj + * @date 2025-04-28 + */ +public interface BusProjectNewsMapper extends BaseMapperPlus { + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java index d3bb72f5..452e663c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java @@ -64,6 +64,14 @@ public interface IBusAttendanceService extends IService { */ List queryList(AttendanceQueryReq req); + /** + * 根据项目id查询出勤人列表 + * + * @param projectId 项目id + * @return 出勤人列表 + */ + List listAttendancePeopleByProjectId(Long projectId); + /** * 获取考勤视图对象 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java index cbb2f34a..4e2ead83 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java @@ -10,6 +10,7 @@ import org.dromara.project.domain.exportvo.BusConstructionUserExportVo; import org.dromara.project.domain.req.constructionuser.*; import org.dromara.project.domain.resp.constructionuser.ConstructionUserAttendanceMonthResp; import org.dromara.project.domain.resp.constructionuser.ConstructionUserAttendanceTotalResp; +import org.dromara.project.domain.resp.constructionuser.ConstructionUserGisResp; import org.dromara.project.domain.vo.BusConstructionUserVo; import java.util.Collection; @@ -65,6 +66,14 @@ public interface IBusConstructionUserService extends IService queryList(ConstructionUserQueryReq req); + /** + * 获取施工人员大屏数据 + * + * @param req 查询条件 + * @return 施工人员大屏数据 + */ + ConstructionUserGisResp getGisData(ConstructionUserGisReq req); + /** * 新增施工人员 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectNewsService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectNewsService.java new file mode 100644 index 00000000..7cc3168e --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectNewsService.java @@ -0,0 +1,109 @@ +package org.dromara.project.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.project.domain.BusProjectNews; +import org.dromara.project.domain.req.projectnews.ProjectNewsCreateReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsGisReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsQueryReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsUpdateReq; +import org.dromara.project.domain.resp.projectnews.ProjectNewsGisResp; +import org.dromara.project.domain.vo.BusProjectNewsVo; + +import java.util.Collection; +import java.util.List; + +/** + * 项目新闻Service接口 + * + * @author lcj + * @date 2025-04-28 + */ +public interface IBusProjectNewsService extends IService { + + /** + * 查询项目新闻 + * + * @param id 主键 + * @return 项目新闻 + */ + BusProjectNewsVo queryById(Long id); + + /** + * 分页查询项目新闻列表 + * + * @param req 查询条件 + * @param pageQuery 分页参数 + * @return 项目新闻分页列表 + */ + TableDataInfo queryPageList(ProjectNewsQueryReq req, PageQuery pageQuery); + + /** + * 查询符合条件的项目新闻列表 + * + * @param req 查询条件 + * @return 项目新闻列表 + */ + List queryList(ProjectNewsQueryReq req); + + /** + * 查询大屏项目新闻列表 + * + * @param req 列表查询条件 + * @return 大屏项目新闻列表 + */ + List queryGisList(ProjectNewsGisReq req); + + /** + * 新增项目新闻 + * + * @param req 项目新闻 + * @return 新增项目新闻id + */ + Long insertByBo(ProjectNewsCreateReq req); + + /** + * 修改项目新闻 + * + * @param req 项目新闻 + * @return 是否修改成功 + */ + Boolean updateByBo(ProjectNewsUpdateReq req); + + /** + * 校验并批量删除项目新闻信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 获取项目新闻存储视图对象 + * + * @param projectNews 项目新闻存储对象 + * @return 项目新闻存储视图对象 + */ + BusProjectNewsVo getVo(BusProjectNews projectNews); + + /** + * 获取项目新闻存储查询条件封装 + * + * @param req 查询条件 + * @return 查询条件封装 + */ + LambdaQueryWrapper buildQueryWrapper(ProjectNewsQueryReq req); + + /** + * 获取项目新闻存储分页对象视图 + * + * @param projectNewsPage 项目新闻存储分页对象 + * @return 项目新闻存储分页对象视图 + */ + Page getVoPage(Page projectNewsPage); + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java index 2f574222..c0f1efce 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.dromara.common.core.constant.DateConstant; import org.dromara.common.core.constant.HttpStatus; +import org.dromara.common.core.enums.FormatsType; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.ObjectUtils; @@ -60,6 +61,10 @@ public class BusAttendanceServiceImpl extends ServiceImpl ATTENDANCE_STATUS = new HashSet<>(Arrays.asList(AttendanceClockStatusEnum.NORMAL.getValue(), + AttendanceClockStatusEnum.LATE.getValue(), AttendanceClockStatusEnum.LEAVEEARLY.getValue())); + /** * 查询考勤 * @@ -289,6 +294,41 @@ public class BusAttendanceServiceImpl extends ServiceImpl listAttendancePeopleByProjectId(Long projectId) { + // 今天所有用户的打卡记录 + List attendanceList = this.lambdaQuery() + .eq(BusAttendance::getProjectId, projectId) + .eq(BusAttendance::getClockDate, DateUtils.dateTimeNow(FormatsType.YYYY_MM_DD)) + .list(); + if (CollUtil.isEmpty(attendanceList)) { + return List.of(); + } + Map> attendanceMap = attendanceList.stream() + .collect(Collectors.groupingBy(BusAttendance::getUserId)); + List attendedUserIds = new ArrayList<>(); + for (Map.Entry> entry : attendanceMap.entrySet()) { + Long userId = entry.getKey(); + List records = entry.getValue(); + // 要求必须有2条打卡记录 + if (records.size() != 2) { + continue; + } + boolean allValid = records.stream() + .allMatch(record -> ATTENDANCE_STATUS.contains(record.getClockStatus())); + if (allValid) { + attendedUserIds.add(userId); + } + } + return attendedUserIds; + } + /** * 获取考勤视图对象 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java index 902f86d7..5d135bc4 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java @@ -29,6 +29,7 @@ import org.dromara.project.domain.req.constructionuser.*; import org.dromara.project.domain.resp.constructionuser.ConstructionUserAttendanceByDay; import org.dromara.project.domain.resp.constructionuser.ConstructionUserAttendanceMonthResp; import org.dromara.project.domain.resp.constructionuser.ConstructionUserAttendanceTotalResp; +import org.dromara.project.domain.resp.constructionuser.ConstructionUserGisResp; import org.dromara.project.domain.vo.BusConstructionUserVo; import org.dromara.project.domain.vo.BusContractorVo; import org.dromara.project.mapper.BusConstructionUserMapper; @@ -255,6 +256,34 @@ public class BusConstructionUserServiceImpl extends ServiceImpl attendancePeopleList = attendanceService.listAttendancePeopleByProjectId(projectId); + resp.setAttendanceCount((long) attendancePeopleList.size()); + // 计算考勤率 + resp.setAttendanceRate(count == 0 ? "0" : String.format("%.2f", attendancePeopleList.size() * 100.0 / count)); + return resp; + } + /** * 新增施工人员 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectNewsServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectNewsServiceImpl.java new file mode 100644 index 00000000..2bea1ec9 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectNewsServiceImpl.java @@ -0,0 +1,242 @@ +package org.dromara.project.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import org.dromara.common.core.constant.HttpStatus; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.project.domain.BusProjectNews; +import org.dromara.project.domain.req.projectnews.ProjectNewsCreateReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsGisReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsQueryReq; +import org.dromara.project.domain.req.projectnews.ProjectNewsUpdateReq; +import org.dromara.project.domain.resp.projectnews.ProjectNewsGisResp; +import org.dromara.project.domain.vo.BusProjectNewsVo; +import org.dromara.project.mapper.BusProjectNewsMapper; +import org.dromara.project.service.IBusProjectNewsService; +import org.dromara.project.service.IBusProjectService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collection; +import java.util.List; + +/** + * 项目新闻Service业务层处理 + * + * @author lcj + * @date 2025-04-28 + */ +@Service +public class BusProjectNewsServiceImpl extends ServiceImpl + implements IBusProjectNewsService { + + @Resource + private IBusProjectService projectService; + + /** + * 查询项目新闻 + * + * @param id 主键 + * @return 项目新闻 + */ + @Override + public BusProjectNewsVo queryById(Long id) { + BusProjectNews projectNews = this.getById(id); + if (projectNews == null) { + throw new ServiceException("对应项目新闻存储信息不存在", HttpStatus.NOT_FOUND); + } + return this.getVo(projectNews); + } + + /** + * 分页查询项目新闻列表 + * + * @param req 查询条件 + * @param pageQuery 分页参数 + * @return 项目新闻分页列表 + */ + @Override + public TableDataInfo queryPageList(ProjectNewsQueryReq req, PageQuery pageQuery) { + Page projectNewsPage = this.page(pageQuery.build(), this.buildQueryWrapper(req)); + return TableDataInfo.build(this.getVoPage(projectNewsPage)); + } + + /** + * 查询符合条件的项目新闻列表 + * + * @param req 查询条件 + * @return 项目新闻列表 + */ + @Override + public List queryList(ProjectNewsQueryReq req) { + LambdaQueryWrapper lqw = this.buildQueryWrapper(req); + return this.list(lqw).stream().map(this::getVo).toList(); + } + + /** + * 查询大屏项目新闻列表 + * + * @param req 列表查询条件 + * @return 大屏项目新闻列表 + */ + @Override + public List queryGisList(ProjectNewsGisReq req) { + Long projectId = req.getProjectId(); + if (projectId == null || projectService.getById(projectId) == null) { + throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND); + } + List projectNewsList = this.lambdaQuery() + .select(BusProjectNews::getId, BusProjectNews::getTitle) + .eq(BusProjectNews::getProjectId, projectId) + .list(); + return projectNewsList.stream().map(projectNews -> { + ProjectNewsGisResp projectNewsGisResp = new ProjectNewsGisResp(); + BeanUtils.copyProperties(projectNews, projectNewsGisResp); + return projectNewsGisResp; + }).toList(); + } + + /** + * 新增项目新闻 + * + * @param req 项目新闻 + * @return 新增项目新闻id + */ + @Override + public Long insertByBo(ProjectNewsCreateReq req) { + // 将实体类和 DTO 进行转换 + BusProjectNews projectNews = new BusProjectNews(); + BeanUtils.copyProperties(req, projectNews); + // 数据校验 + validEntityBeforeSave(projectNews, true); + // 操作数据库 + boolean save = this.save(projectNews); + if (!save) { + throw new ServiceException("新增项目新闻存储失败,数据库异常", HttpStatus.ERROR); + } + return projectNews.getId(); + } + + /** + * 修改项目新闻 + * + * @param req 项目新闻 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ProjectNewsUpdateReq req) { + // 将实体类和 DTO 进行转换 + BusProjectNews projectNews = new BusProjectNews(); + BeanUtils.copyProperties(req, projectNews); + // 数据校验 + validEntityBeforeSave(projectNews, false); + // 判断是否存在 + BusProjectNews oldProjectNews = this.getById(projectNews.getId()); + if (oldProjectNews == null) { + throw new ServiceException("修改项目新闻存储失败,数据不存在", HttpStatus.NOT_FOUND); + } + // 操作数据库 + boolean update = this.updateById(projectNews); + if (!update) { + throw new ServiceException("修改项目新闻存储失败,数据库异常", HttpStatus.ERROR); + } + return true; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BusProjectNews entity, Boolean create) { + // TODO 做一些数据校验,如唯一约束 + Long projectId = entity.getProjectId(); + if (create) { + if (projectId == null) { + throw new ServiceException("项目id不能为空", HttpStatus.BAD_REQUEST); + } + } + if (projectId != null && projectService.getById(projectId) == null) { + throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND); + } + } + + /** + * 校验并批量删除项目新闻信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List projectNewsList = this.listByIds(ids); + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + List projectId = projectNewsList.stream().map(BusProjectNews::getProjectId).toList(); + projectService.validAuth(projectId, userId); + } + return this.removeBatchByIds(ids); + } + + /** + * 获取项目新闻存储视图对象 + * + * @param projectNews 项目新闻存储对象 + * @return 项目新闻存储视图对象 + */ + @Override + public BusProjectNewsVo getVo(BusProjectNews projectNews) { + // 对象转封装类 + BusProjectNewsVo projectNewsVo = new BusProjectNewsVo(); + if (projectNews == null) { + return projectNewsVo; + } + BeanUtils.copyProperties(projectNews, projectNewsVo); + return projectNewsVo; + } + + /** + * 获取项目新闻存储查询条件封装 + * + * @param req 查询条件 + * @return 查询条件封装 + */ + @Override + public LambdaQueryWrapper buildQueryWrapper(ProjectNewsQueryReq req) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + Long projectId = req.getProjectId(); + lqw.eq(ObjectUtils.isNotEmpty(projectId), BusProjectNews::getProjectId, projectId); + return lqw; + } + + /** + * 获取项目新闻存储分页对象视图 + * + * @param projectNewsPage 项目新闻存储分页对象 + * @return 项目新闻存储分页对象视图 + */ + @Override + public Page getVoPage(Page projectNewsPage) { + List projectNewsList = projectNewsPage.getRecords(); + Page projectNewsVoPage = new Page<>( + projectNewsPage.getCurrent(), + projectNewsPage.getSize(), + projectNewsPage.getTotal()); + if (CollUtil.isEmpty(projectNewsList)) { + return projectNewsVoPage; + } + List projectNewsVoList = projectNewsList.stream().map(this::getVo).toList(); + projectNewsVoPage.setRecords(projectNewsVoList); + return projectNewsVoPage; + } + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/controller/BusQualityInspectionController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/controller/BusQualityInspectionController.java index b7335822..0097793c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/controller/BusQualityInspectionController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/controller/BusQualityInspectionController.java @@ -16,9 +16,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionCreateReq; +import org.dromara.quality.domain.req.qualityinspection.QualityInspectionGisReq; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionQueryReq; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionUpdateReq; import org.dromara.quality.domain.vo.BusQualityInspectionVo; +import org.dromara.quality.domain.vo.QualityInspectionListGisVo; import org.dromara.quality.service.IBusQualityInspectionService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -59,6 +61,14 @@ public class BusQualityInspectionController extends BaseController { ExcelUtil.exportExcel(list, "质量-检查工单", BusQualityInspectionVo.class, response); } + /** + * 查询大屏质量信息 + */ + @GetMapping("/gis") + public R queryGisList(QualityInspectionGisReq req) { + return R.ok(busQualityInspectionService.queryGisList(req)); + } + /** * 根据主键导出质量-检查工单 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/enums/QualityInspectionStatusEnum.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/enums/QualityInspectionStatusEnum.java index 7058762b..9fbb8953 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/enums/QualityInspectionStatusEnum.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/enums/QualityInspectionStatusEnum.java @@ -11,8 +11,7 @@ public enum QualityInspectionStatusEnum { INFORM("通知", "1"), RECTIFICATION("整改", "2"), - VERIFICATION("验证", "3"), - PASS("通过", "4"); + VERIFICATION("验证", "3"); private final String text; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/enums/QualityInspectionVerificationTypeEnum.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/enums/QualityInspectionVerificationTypeEnum.java new file mode 100644 index 00000000..637e483b --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/enums/QualityInspectionVerificationTypeEnum.java @@ -0,0 +1,24 @@ +package org.dromara.quality.domain.enums; + +import lombok.Getter; + +/** + * @author lcj + * @date 2025/4/28 14:59 + */ +@Getter +public enum QualityInspectionVerificationTypeEnum { + + PASS("通过", "1"), + UNPASS("未通过", "2"); + + private final String text; + + private final String value; + + QualityInspectionVerificationTypeEnum(String text, String value) { + this.text = text; + this.value = value; + } + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/req/qualityinspection/QualityInspectionGisReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/req/qualityinspection/QualityInspectionGisReq.java new file mode 100644 index 00000000..b61e4a5f --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/req/qualityinspection/QualityInspectionGisReq.java @@ -0,0 +1,30 @@ +package org.dromara.quality.domain.req.qualityinspection; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 14:40 + */ +@Data +public class QualityInspectionGisReq implements Serializable { + + @Serial + private static final long serialVersionUID = 1643422493177660330L; + + /** + * 项目id + */ + @NotNull(message = "项目id不能为空") + private Long projectId; + + /** + * 分页大小 + */ + private Integer pageSize = 20; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/vo/QualityInspectionGis.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/vo/QualityInspectionGis.java new file mode 100644 index 00000000..5f863bd0 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/vo/QualityInspectionGis.java @@ -0,0 +1,38 @@ +package org.dromara.quality.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author lcj + * @date 2025/4/28 14:36 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class QualityInspectionGis { + + /** + * 主键 + */ + private Long id; + + /** + * 巡检类型 + */ + private String inspectionType; + + /** + * 巡检标题 + */ + private String inspectionHeadline; + + /** + * 创建时间 + */ + private Date createTime; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/vo/QualityInspectionListGisVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/vo/QualityInspectionListGisVo.java new file mode 100644 index 00000000..7d7db82c --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/domain/vo/QualityInspectionListGisVo.java @@ -0,0 +1,34 @@ +package org.dromara.quality.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * @author lcj + * @date 2025/4/28 14:22 + */ +@Data +public class QualityInspectionListGisVo implements Serializable { + + @Serial + private static final long serialVersionUID = -1100954070125585535L; + + /** + * 巡检列表 + */ + private List list; + + /** + * 巡检总数 + */ + private Long count; + + /** + * 巡检情况 + */ + private String correctSituation; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/IBusQualityInspectionService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/IBusQualityInspectionService.java index 3a519ed5..502ea4b0 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/IBusQualityInspectionService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/IBusQualityInspectionService.java @@ -8,9 +8,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.quality.domain.BusQualityInspection; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionCreateReq; +import org.dromara.quality.domain.req.qualityinspection.QualityInspectionGisReq; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionQueryReq; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionUpdateReq; import org.dromara.quality.domain.vo.BusQualityInspectionVo; +import org.dromara.quality.domain.vo.QualityInspectionListGisVo; import java.util.Collection; import java.util.List; @@ -48,6 +50,14 @@ public interface IBusQualityInspectionService extends IService queryList(QualityInspectionQueryReq req); + /** + * 查询大屏质量-检查工单列表 + * + * @param req 查询条件 + * @return 质量-检查工单列表 + */ + QualityInspectionListGisVo queryGisList(QualityInspectionGisReq req); + /** * 新增质量-检查工单 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/BusQualityInspectionServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/BusQualityInspectionServiceImpl.java index 8833bae2..35a17d60 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/BusQualityInspectionServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/BusQualityInspectionServiceImpl.java @@ -20,6 +20,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.exception.OssException; import org.dromara.common.oss.factory.OssFactory; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.project.domain.BusConstructionUser; import org.dromara.project.domain.BusProject; import org.dromara.project.service.IBusConstructionUserService; @@ -27,10 +28,14 @@ import org.dromara.project.service.IBusProjectService; import org.dromara.quality.constant.QualityConstant; import org.dromara.quality.domain.BusQualityInspection; import org.dromara.quality.domain.enums.QualityInspectionStatusEnum; +import org.dromara.quality.domain.enums.QualityInspectionVerificationTypeEnum; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionCreateReq; +import org.dromara.quality.domain.req.qualityinspection.QualityInspectionGisReq; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionQueryReq; import org.dromara.quality.domain.req.qualityinspection.QualityInspectionUpdateReq; import org.dromara.quality.domain.vo.BusQualityInspectionVo; +import org.dromara.quality.domain.vo.QualityInspectionGis; +import org.dromara.quality.domain.vo.QualityInspectionListGisVo; import org.dromara.quality.mapper.BusQualityInspectionMapper; import org.dromara.quality.service.IBusQualityInspectionService; import org.dromara.system.domain.vo.SysOssVo; @@ -120,6 +125,49 @@ public class BusQualityInspectionServiceImpl extends ServiceImpl qualityInspectionList = this.lambdaQuery() + .eq(BusQualityInspection::getProjectId, projectId) + .list(); + if (CollUtil.isEmpty(qualityInspectionList)) { + return gisVo; + } + // 获取最新的检查工单 + List topList = qualityInspectionList.stream() + .sorted(Comparator.comparing(BusQualityInspection::getCreateTime).reversed()) + .limit(req.getPageSize()) + .toList(); + List gisList = topList.stream().map(qualityInspection -> { + QualityInspectionGis gis = new QualityInspectionGis(); + BeanUtils.copyProperties(qualityInspection, gis); + return gis; + }).toList(); + // 获取整改情况 + long passCount = 0L; + for (BusQualityInspection qualityInspection : qualityInspectionList) { + if (QualityInspectionStatusEnum.VERIFICATION.getValue().equals(qualityInspection.getInspectionStatus()) + && QualityInspectionVerificationTypeEnum.PASS.getValue().equals(qualityInspection.getVerificationType())) { + passCount++; + } + } + gisVo.setList(gisList); + gisVo.setCount((long) qualityInspectionList.size()); + gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / qualityInspectionList.size())); + return gisVo; + } + /** * 新增质量-检查工单 * @@ -192,8 +240,12 @@ public class BusQualityInspectionServiceImpl extends ServiceImpl ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List qualityInspectionList = this.listByIds(ids); if (isValid) { // TODO 做一些业务上的校验,判断是否需要校验 + List projectId = qualityInspectionList.stream().map(BusQualityInspection::getProjectId).toList(); + projectService.validAuth(projectId, userId); } return this.removeBatchByIds(ids); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusDocumentSafetyMeetingController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusDocumentSafetyMeetingController.java index c468e6d6..cc358668 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusDocumentSafetyMeetingController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusDocumentSafetyMeetingController.java @@ -1,9 +1,9 @@ package org.dromara.safety.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.annotation.Resource; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; -import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; @@ -14,8 +14,8 @@ import org.dromara.common.web.core.BaseController; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingCreateFileReq; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingCreateFolderReq; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingQueryReq; -import org.dromara.safety.domain.resp.documentsafetymeeting.DocumentSafetyMeetingRecycleBinResp; -import org.dromara.safety.domain.vo.BusDocumentSafetyMeetingVo; +import org.dromara.safety.domain.vo.documentsafetymeeting.BusDocumentSafetyMeetingVo; +import org.dromara.safety.domain.vo.documentsafetymeeting.DocumentSafetyMeetingRecycleBinVo; import org.dromara.safety.service.IBusDocumentSafetyMeetingService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -30,12 +30,12 @@ import java.util.List; * @date 2025-04-14 */ @Validated -@RequiredArgsConstructor @RestController @RequestMapping("/safety/documentSafetyMeeting") public class BusDocumentSafetyMeetingController extends BaseController { - private final IBusDocumentSafetyMeetingService busDocumentSafetyMeetingService; + @Resource + private IBusDocumentSafetyMeetingService busDocumentSafetyMeetingService; /** * 查询安全会议纪要列表 @@ -51,7 +51,7 @@ public class BusDocumentSafetyMeetingController extends BaseController { */ @SaCheckPermission("safety:documentSafetyMeeting:list") @GetMapping("/recycleBin/list") - public TableDataInfo list(DocumentSafetyMeetingQueryReq req, PageQuery pageQuery) { + public TableDataInfo list(DocumentSafetyMeetingQueryReq req, PageQuery pageQuery) { return busDocumentSafetyMeetingService.queryRecycleBinPageList(req, pageQuery); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusSafetyInspectionController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusSafetyInspectionController.java index a3d866bd..5d8bbeb0 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusSafetyInspectionController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusSafetyInspectionController.java @@ -16,9 +16,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionCreateReq; +import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionGisReq; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionQueryReq; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionUpdateReq; -import org.dromara.safety.domain.vo.BusSafetyInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.BusSafetyInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.SafetyInspectionListGisVo; import org.dromara.safety.service.IBusSafetyInspectionService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -70,6 +72,14 @@ public class BusSafetyInspectionController extends BaseController { busSafetyInspectionService.exportWordById(id, response); } + /** + * 查询大屏安全信息 + */ + @GetMapping("/gis") + public R queryGisList(SafetyInspectionGisReq req) { + return R.ok(busSafetyInspectionService.queryGisList(req)); + } + /** * 获取安全巡检工单详细信息 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusTeamMeetingController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusTeamMeetingController.java index aacdb1e2..32c3778f 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusTeamMeetingController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/controller/BusTeamMeetingController.java @@ -18,7 +18,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.safety.domain.req.teammeeting.TeamMeetingCreateReq; import org.dromara.safety.domain.req.teammeeting.TeamMeetingQueryReq; import org.dromara.safety.domain.req.teammeeting.TeamMeetingUpdateReq; -import org.dromara.safety.domain.vo.BusTeamMeetingVo; +import org.dromara.safety.domain.vo.teammeeting.BusTeamMeetingVo; import org.dromara.safety.service.IBusTeamMeetingService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/enums/SafetyInspectionReviewTypeEnum.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/enums/SafetyInspectionReviewTypeEnum.java new file mode 100644 index 00000000..7131052a --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/enums/SafetyInspectionReviewTypeEnum.java @@ -0,0 +1,24 @@ +package org.dromara.safety.domain.enums; + +import lombok.Getter; + +/** + * @author lcj + * @date 2025/4/28 15:49 + */ +@Getter +public enum SafetyInspectionReviewTypeEnum { + + PASS("通过", "1"), + UNPASS("未通过", "2"); + + private final String text; + + private final String value; + + SafetyInspectionReviewTypeEnum(String text, String value) { + this.text = text; + this.value = value; + } + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/enums/SafetyInspectionStatusEnum.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/enums/SafetyInspectionStatusEnum.java new file mode 100644 index 00000000..cd409086 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/enums/SafetyInspectionStatusEnum.java @@ -0,0 +1,25 @@ +package org.dromara.safety.domain.enums; + +import lombok.Getter; + +/** + * @author lcj + * @date 2025/4/28 15:47 + */ +@Getter +public enum SafetyInspectionStatusEnum { + + INFORM("通知", "1"), + RECTIFICATION("整改", "2"), + REVIEW("复查", "3"); + + private final String text; + + private final String value; + + SafetyInspectionStatusEnum(String text, String value) { + this.text = text; + this.value = value; + } + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/safetyinspection/SafetyInspectionGisReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/safetyinspection/SafetyInspectionGisReq.java new file mode 100644 index 00000000..078aefed --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/safetyinspection/SafetyInspectionGisReq.java @@ -0,0 +1,30 @@ +package org.dromara.safety.domain.req.safetyinspection; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/4/28 15:31 + */ +@Data +public class SafetyInspectionGisReq implements Serializable { + + @Serial + private static final long serialVersionUID = 873967698184867248L; + + /** + * 项目id + */ + @NotNull(message = "项目id不能为空") + private Long projectId; + + /** + * 分页大小 + */ + private Integer pageSize = 20; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusDocumentSafetyMeetingVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/documentsafetymeeting/BusDocumentSafetyMeetingVo.java similarity index 95% rename from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusDocumentSafetyMeetingVo.java rename to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/documentsafetymeeting/BusDocumentSafetyMeetingVo.java index 2d9d8ee3..d74eaba0 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusDocumentSafetyMeetingVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/documentsafetymeeting/BusDocumentSafetyMeetingVo.java @@ -1,4 +1,4 @@ -package org.dromara.safety.domain.vo; +package org.dromara.safety.domain.vo.documentsafetymeeting; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/resp/documentsafetymeeting/DocumentSafetyMeetingRecycleBinResp.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/documentsafetymeeting/DocumentSafetyMeetingRecycleBinVo.java similarity index 87% rename from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/resp/documentsafetymeeting/DocumentSafetyMeetingRecycleBinResp.java rename to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/documentsafetymeeting/DocumentSafetyMeetingRecycleBinVo.java index e7f10c88..14feb3df 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/resp/documentsafetymeeting/DocumentSafetyMeetingRecycleBinResp.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/documentsafetymeeting/DocumentSafetyMeetingRecycleBinVo.java @@ -1,4 +1,4 @@ -package org.dromara.safety.domain.resp.documentsafetymeeting; +package org.dromara.safety.domain.vo.documentsafetymeeting; import lombok.Data; @@ -11,7 +11,7 @@ import java.util.Date; * @date 2025/4/14 17:44 */ @Data -public class DocumentSafetyMeetingRecycleBinResp implements Serializable { +public class DocumentSafetyMeetingRecycleBinVo implements Serializable { @Serial private static final long serialVersionUID = 1302984678621164410L; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusSafetyInspectionVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/BusSafetyInspectionVo.java similarity index 98% rename from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusSafetyInspectionVo.java rename to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/BusSafetyInspectionVo.java index f6123378..59a97802 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusSafetyInspectionVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/BusSafetyInspectionVo.java @@ -1,4 +1,4 @@ -package org.dromara.safety.domain.vo; +package org.dromara.safety.domain.vo.safetyinspection; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/SafetyInspectionListGisVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/SafetyInspectionListGisVo.java new file mode 100644 index 00000000..27c4122e --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/SafetyInspectionListGisVo.java @@ -0,0 +1,40 @@ +package org.dromara.safety.domain.vo.safetyinspection; + +import lombok.Data; +import org.dromara.safety.domain.vo.teammeeting.TeamMeetingGis; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * @author lcj + * @date 2025/4/28 15:26 + */ +@Data +public class SafetyInspectionListGisVo implements Serializable { + + @Serial + private static final long serialVersionUID = -8788573264526273230L; + + /** + * 站班会列表 + */ + private List teamMeetingList; + + /** + * 站班会总数 + */ + private Long teamMeetingCount; + + /** + * 安全巡检总数 + */ + private Long safetyInspectionCount; + + /** + * 整改情况 + */ + private String correctSituation; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusTeamMeetingVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/teammeeting/BusTeamMeetingVo.java similarity index 97% rename from RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusTeamMeetingVo.java rename to RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/teammeeting/BusTeamMeetingVo.java index eda6bde9..ad8df1b3 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusTeamMeetingVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/teammeeting/BusTeamMeetingVo.java @@ -1,4 +1,4 @@ -package org.dromara.safety.domain.vo; +package org.dromara.safety.domain.vo.teammeeting; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/teammeeting/TeamMeetingGis.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/teammeeting/TeamMeetingGis.java new file mode 100644 index 00000000..a0990c37 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/teammeeting/TeamMeetingGis.java @@ -0,0 +1,38 @@ +package org.dromara.safety.domain.vo.teammeeting; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author lcj + * @date 2025/4/28 15:27 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class TeamMeetingGis { + + /** + * 主键id + */ + private Long id; + + /** + * 班组名称 + */ + private String teamName; + + /** + * 名称 + */ + private String name; + + /** + * 开会时间 + */ + private Date meetingDate; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusDocumentSafetyMeetingMapper.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusDocumentSafetyMeetingMapper.java index 7353a4ea..a81f7bd5 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusDocumentSafetyMeetingMapper.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusDocumentSafetyMeetingMapper.java @@ -1,7 +1,7 @@ package org.dromara.safety.mapper; import org.dromara.safety.domain.BusDocumentSafetyMeeting; -import org.dromara.safety.domain.vo.BusDocumentSafetyMeetingVo; +import org.dromara.safety.domain.vo.documentsafetymeeting.BusDocumentSafetyMeetingVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusSafetyInspectionMapper.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusSafetyInspectionMapper.java index a2a013ac..9d237633 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusSafetyInspectionMapper.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusSafetyInspectionMapper.java @@ -1,7 +1,7 @@ package org.dromara.safety.mapper; import org.dromara.safety.domain.BusSafetyInspection; -import org.dromara.safety.domain.vo.BusSafetyInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.BusSafetyInspectionVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusTeamMeetingMapper.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusTeamMeetingMapper.java index cfc75020..750e7abb 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusTeamMeetingMapper.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/mapper/BusTeamMeetingMapper.java @@ -1,7 +1,7 @@ package org.dromara.safety.mapper; import org.dromara.safety.domain.BusTeamMeeting; -import org.dromara.safety.domain.vo.BusTeamMeetingVo; +import org.dromara.safety.domain.vo.teammeeting.BusTeamMeetingVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusDocumentSafetyMeetingService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusDocumentSafetyMeetingService.java index 491eceef..66b829ea 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusDocumentSafetyMeetingService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusDocumentSafetyMeetingService.java @@ -9,8 +9,8 @@ import org.dromara.safety.domain.BusDocumentSafetyMeeting; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingCreateFileReq; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingCreateFolderReq; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingQueryReq; -import org.dromara.safety.domain.resp.documentsafetymeeting.DocumentSafetyMeetingRecycleBinResp; -import org.dromara.safety.domain.vo.BusDocumentSafetyMeetingVo; +import org.dromara.safety.domain.vo.documentsafetymeeting.DocumentSafetyMeetingRecycleBinVo; +import org.dromara.safety.domain.vo.documentsafetymeeting.BusDocumentSafetyMeetingVo; import org.springframework.web.multipart.MultipartFile; import java.util.Collection; @@ -47,7 +47,7 @@ public interface IBusDocumentSafetyMeetingService extends IService queryRecycleBinPageList(DocumentSafetyMeetingQueryReq req, PageQuery pageQuery); + TableDataInfo queryRecycleBinPageList(DocumentSafetyMeetingQueryReq req, PageQuery pageQuery); /** * 新增安全会议纪要文件夹 diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusSafetyInspectionService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusSafetyInspectionService.java index 4f6107f6..e309c97b 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusSafetyInspectionService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusSafetyInspectionService.java @@ -8,9 +8,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.safety.domain.BusSafetyInspection; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionCreateReq; +import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionGisReq; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionQueryReq; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionUpdateReq; -import org.dromara.safety.domain.vo.BusSafetyInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.BusSafetyInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.SafetyInspectionListGisVo; import java.util.Collection; import java.util.List; @@ -48,6 +50,14 @@ public interface IBusSafetyInspectionService extends IService queryList(SafetyInspectionQueryReq req); + /** + * 查询大屏安全信息 + * + * @param req 查询条件 + * @return 安全信息 + */ + SafetyInspectionListGisVo queryGisList(SafetyInspectionGisReq req); + /** * 新增安全巡检工单 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusTeamMeetingService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusTeamMeetingService.java index 9b7a6d68..35ac84ff 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusTeamMeetingService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/IBusTeamMeetingService.java @@ -9,7 +9,7 @@ import org.dromara.safety.domain.BusTeamMeeting; import org.dromara.safety.domain.req.teammeeting.TeamMeetingCreateReq; import org.dromara.safety.domain.req.teammeeting.TeamMeetingQueryReq; import org.dromara.safety.domain.req.teammeeting.TeamMeetingUpdateReq; -import org.dromara.safety.domain.vo.BusTeamMeetingVo; +import org.dromara.safety.domain.vo.teammeeting.BusTeamMeetingVo; import java.util.Collection; import java.util.List; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusDocumentSafetyMeetingServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusDocumentSafetyMeetingServiceImpl.java index 9220627b..1d4110ae 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusDocumentSafetyMeetingServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusDocumentSafetyMeetingServiceImpl.java @@ -24,8 +24,8 @@ import org.dromara.safety.domain.enums.DocumentTypeEnum; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingCreateFileReq; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingCreateFolderReq; import org.dromara.safety.domain.req.documentsafetymeeting.DocumentSafetyMeetingQueryReq; -import org.dromara.safety.domain.resp.documentsafetymeeting.DocumentSafetyMeetingRecycleBinResp; -import org.dromara.safety.domain.vo.BusDocumentSafetyMeetingVo; +import org.dromara.safety.domain.vo.documentsafetymeeting.DocumentSafetyMeetingRecycleBinVo; +import org.dromara.safety.domain.vo.documentsafetymeeting.BusDocumentSafetyMeetingVo; import org.dromara.safety.mapper.BusDocumentSafetyMeetingMapper; import org.dromara.safety.service.IBusDocumentSafetyMeetingService; import org.dromara.system.domain.vo.SysOssUploadVo; @@ -97,13 +97,13 @@ public class BusDocumentSafetyMeetingServiceImpl extends ServiceImpl queryRecycleBinPageList(DocumentSafetyMeetingQueryReq req, PageQuery pageQuery) { + public TableDataInfo queryRecycleBinPageList(DocumentSafetyMeetingQueryReq req, PageQuery pageQuery) { LambdaQueryWrapper lqw = this.buildQueryWrapper(req); lqw.eq(BusDocumentSafetyMeeting::getFileStatus, DocumentStatusEnum.DELETE.getValue()); Page result = this.page(pageQuery.build(), lqw); List documentSafetyMeetingList = result.getRecords(); // 添加分页信息 - Page documentSafetyMeetingVoPage = new Page<>( + Page documentSafetyMeetingVoPage = new Page<>( result.getCurrent(), result.getSize(), result.getTotal()); @@ -111,8 +111,8 @@ public class BusDocumentSafetyMeetingServiceImpl extends ServiceImpl 封装对象列表 - List list = documentSafetyMeetingList.stream().map(documentSafetyMeeting -> { - DocumentSafetyMeetingRecycleBinResp resp = new DocumentSafetyMeetingRecycleBinResp(); + List list = documentSafetyMeetingList.stream().map(documentSafetyMeeting -> { + DocumentSafetyMeetingRecycleBinVo resp = new DocumentSafetyMeetingRecycleBinVo(); BeanUtils.copyProperties(documentSafetyMeeting, resp); return resp; }).toList(); diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusSafetyInspectionServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusSafetyInspectionServiceImpl.java index 0372e45b..94c5784b 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusSafetyInspectionServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusSafetyInspectionServiceImpl.java @@ -28,12 +28,19 @@ import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusProjectTeamService; import org.dromara.safety.constant.SafetyConstant; import org.dromara.safety.domain.BusSafetyInspection; +import org.dromara.safety.domain.BusTeamMeeting; +import org.dromara.safety.domain.enums.SafetyInspectionReviewTypeEnum; +import org.dromara.safety.domain.enums.SafetyInspectionStatusEnum; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionCreateReq; +import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionGisReq; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionQueryReq; import org.dromara.safety.domain.req.safetyinspection.SafetyInspectionUpdateReq; -import org.dromara.safety.domain.vo.BusSafetyInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.BusSafetyInspectionVo; +import org.dromara.safety.domain.vo.safetyinspection.SafetyInspectionListGisVo; +import org.dromara.safety.domain.vo.teammeeting.TeamMeetingGis; import org.dromara.safety.mapper.BusSafetyInspectionMapper; import org.dromara.safety.service.IBusSafetyInspectionService; +import org.dromara.safety.service.IBusTeamMeetingService; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysDictDataService; @@ -41,7 +48,6 @@ import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysUserService; import org.dromara.utils.DocumentUtils; import org.springframework.beans.BeanUtils; -import org.springframework.core.io.ResourceLoader; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -85,7 +91,7 @@ public class BusSafetyInspectionServiceImpl extends ServiceImpl teamMeetings = teamMeetingService.lambdaQuery() + .eq(BusTeamMeeting::getProjectId, projectId) + .list(); + // 获取最新的班组列表 + List topList = teamMeetings.stream() + .sorted(Comparator.comparing(BusTeamMeeting::getCreateTime).reversed()) + .limit(req.getPageSize()) + .toList(); + List gisList = topList.stream().map(qualityInspection -> { + TeamMeetingGis gis = new TeamMeetingGis(); + BeanUtils.copyProperties(qualityInspection, gis); + return gis; + }).toList(); + // 获取整改情况 + List safetyInspectionList = this.lambdaQuery() + .eq(BusSafetyInspection::getProjectId, projectId).list(); + long passCount = 0L; + for (BusSafetyInspection safetyInspection : safetyInspectionList) { + if (SafetyInspectionStatusEnum.REVIEW.getValue().equals(safetyInspection.getStatus()) + && SafetyInspectionReviewTypeEnum.PASS.getValue().equals(safetyInspection.getReviewType())) { + passCount++; + } + } + gisVo.setTeamMeetingList(gisList); + gisVo.setTeamMeetingCount((long) teamMeetings.size()); + gisVo.setSafetyInspectionCount((long) safetyInspectionList.size()); + gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / safetyInspectionList.size())); + return gisVo; + } + /** * 新增安全巡检工单 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusTeamMeetingServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusTeamMeetingServiceImpl.java index 3c71560b..d9125281 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusTeamMeetingServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusTeamMeetingServiceImpl.java @@ -26,7 +26,7 @@ import org.dromara.safety.domain.BusTeamMeeting; import org.dromara.safety.domain.req.teammeeting.TeamMeetingCreateReq; import org.dromara.safety.domain.req.teammeeting.TeamMeetingQueryReq; import org.dromara.safety.domain.req.teammeeting.TeamMeetingUpdateReq; -import org.dromara.safety.domain.vo.BusTeamMeetingVo; +import org.dromara.safety.domain.vo.teammeeting.BusTeamMeetingVo; import org.dromara.safety.mapper.BusTeamMeetingMapper; import org.dromara.safety.service.IBusTeamMeetingService; import org.dromara.system.domain.vo.SysOssVo; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/resources/mapper/project/BusProjectNewsMapper.xml b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/resources/mapper/project/BusProjectNewsMapper.xml new file mode 100644 index 00000000..a374e261 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/resources/mapper/project/BusProjectNewsMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql b/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql index 12a53699..e8adfcac 100644 --- a/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql +++ b/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql @@ -939,3 +939,21 @@ CREATE TABLE `bus_project_file` PRIMARY KEY (`id`) USING BTREE, INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目id' ) comment = '项目文件存储' collate = utf8mb4_unicode_ci; + +DROP TABLE IF EXISTS `bus_project_news`; +CREATE TABLE `bus_project_news` +( + `id` bigint not null auto_increment comment '主键id', + `project_id` bigint not null comment '项目id', + `title` varchar(64) null comment '标题', + `content` longtext null comment '内容', + `file` varchar(512) null comment '附件', + `create_by` varchar(64) null comment '创建者', + `update_by` varchar(64) null comment '更新者', + `create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间', + `update_time` datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间', + `deleted_at` datetime null comment '删除时间', + `is_delete` tinyint(4) default 0 not null comment '是否删除(0正常 1删除)', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目id' +) comment = '项目新闻' COLLATE = utf8mb4_unicode_ci;