Browse Source

ptw相关功能

Zimo 1 week ago
parent
commit
b823acc687
11 changed files with 462 additions and 2 deletions
  1. 94 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/QhseSafeDayController.java
  2. 34 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/vo/QhseSafeDayPageReqVO.java
  3. 39 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/vo/QhseSafeDayRespVO.java
  4. 31 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/vo/QhseSafeDaySaveReqVO.java
  5. 46 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/qhse/safe/QhseSafeDayDO.java
  6. 28 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/qhse/safe/QhseSafeDayMapper.java
  7. 31 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/qhse/CertJob.java
  8. 30 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/qhse/SafeDayJob.java
  9. 2 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/OaFlow.java
  10. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/qhse/safe/QhseSafeDayService.java
  11. 72 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/qhse/safe/QhseSafeDayServiceImpl.java

+ 94 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/QhseSafeDayController.java

@@ -0,0 +1,94 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.safe;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDayPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDayRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDaySaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.safe.QhseSafeDayDO;
+import cn.iocoder.yudao.module.pms.service.qhse.safe.QhseSafeDayService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = "管理后台 - QHSE_安全生产天数")
+@RestController
+@RequestMapping("/rq/qhse-safe-day")
+@Validated
+public class QhseSafeDayController {
+
+    @Resource
+    private QhseSafeDayService qhseSafeDayService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建QHSE_安全生产天数")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-safe-day:create')")
+    public CommonResult<Long> createQhseSafeDay(@Valid @RequestBody QhseSafeDaySaveReqVO createReqVO) {
+        return success(qhseSafeDayService.createQhseSafeDay(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新QHSE_安全生产天数")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-safe-day:update')")
+    public CommonResult<Boolean> updateQhseSafeDay(@Valid @RequestBody QhseSafeDaySaveReqVO updateReqVO) {
+        qhseSafeDayService.updateQhseSafeDay(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除QHSE_安全生产天数")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:qhse-safe-day:delete')")
+    public CommonResult<Boolean> deleteQhseSafeDay(@RequestParam("id") Long id) {
+        qhseSafeDayService.deleteQhseSafeDay(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得QHSE_安全生产天数")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-safe-day:query')")
+    public CommonResult<QhseSafeDayRespVO> getQhseSafeDay(@RequestParam("id") Long id) {
+        QhseSafeDayDO qhseSafeDay = qhseSafeDayService.getQhseSafeDay(id);
+        return success(BeanUtils.toBean(qhseSafeDay, QhseSafeDayRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得QHSE_安全生产天数分页")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-safe-day:query')")
+    public CommonResult<PageResult<QhseSafeDayRespVO>> getQhseSafeDayPage(@Valid QhseSafeDayPageReqVO pageReqVO) {
+        PageResult<QhseSafeDayDO> pageResult = qhseSafeDayService.getQhseSafeDayPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, QhseSafeDayRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出QHSE_安全生产天数 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-safe-day:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportQhseSafeDayExcel(@Valid QhseSafeDayPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<QhseSafeDayDO> list = qhseSafeDayService.getQhseSafeDayPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "QHSE_安全生产天数.xls", "数据", QhseSafeDayRespVO.class,
+                        BeanUtils.toBean(list, QhseSafeDayRespVO.class));
+    }
+
+}

+ 34 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/vo/QhseSafeDayPageReqVO.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - QHSE_安全生产天数分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class QhseSafeDayPageReqVO extends PageParam {
+
+    @Schema(description = "安全生产天数")
+    private Integer dayNumber;
+
+    @Schema(description = "部门id", example = "4")
+    private Long deptId;
+
+    @Schema(description = "单位", example = "王五")
+    private String deptName;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 39 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/vo/QhseSafeDayRespVO.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - QHSE_安全生产天数 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class QhseSafeDayRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24456")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "安全生产天数", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("安全生产天数")
+    private Integer dayNumber;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+    @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @ExcelProperty("单位")
+    private String deptName;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 31 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/safe/vo/QhseSafeDaySaveReqVO.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - QHSE_安全生产天数新增/修改 Request VO")
+@Data
+public class QhseSafeDaySaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24456")
+    private Long id;
+
+    @Schema(description = "安全生产天数", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "安全生产天数不能为空")
+    private Integer dayNumber;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4")
+    @NotNull(message = "部门id不能为空")
+    private Long deptId;
+
+    @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @NotEmpty(message = "单位不能为空")
+    private String deptName;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+}

+ 46 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/qhse/safe/QhseSafeDayDO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.qhse.safe;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * QHSE_安全生产天数 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_qhse_safe_day")
+@KeySequence("rq_qhse_safe_day_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class QhseSafeDayDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 安全生产天数
+     */
+    private Integer dayNumber;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 单位
+     */
+    private String deptName;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 28 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/qhse/safe/QhseSafeDayMapper.java

@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.qhse.safe;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDayPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.safe.QhseSafeDayDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * QHSE_安全生产天数 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface QhseSafeDayMapper extends BaseMapperX<QhseSafeDayDO> {
+
+    default PageResult<QhseSafeDayDO> selectPage(QhseSafeDayPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<QhseSafeDayDO>()
+                .eqIfPresent(QhseSafeDayDO::getDayNumber, reqVO.getDayNumber())
+                .eqIfPresent(QhseSafeDayDO::getDeptId, reqVO.getDeptId())
+                .likeIfPresent(QhseSafeDayDO::getDeptName, reqVO.getDeptName())
+                .eqIfPresent(QhseSafeDayDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(QhseSafeDayDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(QhseSafeDayDO::getId));
+    }
+
+}

+ 31 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/qhse/CertJob.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.job.qhse;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.cert.IotMeasureCertDO;
@@ -9,13 +10,20 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.measure.IotMeasureDetectD
 import cn.iocoder.yudao.module.pms.dal.mysql.qhse.cert.IotMeasureCertMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.qhse.measure.IotMeasureBookMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.qhse.measure.IotMeasureDetectMapper;
+import cn.iocoder.yudao.module.pms.message.PmsMessage;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 @Component
@@ -26,13 +34,25 @@ public class CertJob implements JobHandler {
     private IotMeasureBookMapper iotMeasureBookMapper;
     @Resource
     private IotMeasureDetectMapper iotMeasureDetectMapper;
+    @Autowired
+    private DeptApi deptApi;
+    @Autowired
+    private AdminUserApi adminUserApi;
+    @Autowired
+    private PmsMessage pmsMessage;
 
     @Override
     @TenantIgnore
+    @DataPermission(enable = false)
     public String execute(String param) throws Exception {
         List<IotMeasureCertDO> iotMeasureCertDOS = iotMeasureCertMapper.selectList();
+        List<IotMeasureCertDO> needMessage = new ArrayList<>();
         iotMeasureCertDOS.forEach(item -> {
             LocalDateTime certExpire = item.getCertExpire();
+            LocalDateTime expireMinus10Days = certExpire.minusDays(10);
+            if (expireMinus10Days.isBefore(LocalDateTime.now())) {
+                needMessage.add(item);
+            }
             if (certExpire.isBefore(LocalDateTime.now())) {
                 //证书已过期的话,更新expired为true
                 item.setExpired(true);
@@ -40,6 +60,17 @@ public class CertJob implements JobHandler {
                 item.setExpired(false);
             }
         });
+        //添加消息提醒逻辑,异步发送消息
+        CompletableFuture.runAsync(() -> {
+            needMessage.forEach(item -> {
+                Long deptId = item.getDeptId();
+                String userName = item.getUserName();
+                List<AdminUserRespDTO> userListByDeptId = adminUserApi.getUserListByDeptId(deptId);
+                userListByDeptId.stream().filter(e -> e.getNickname().equals(userName)).findFirst().ifPresent(adminUserRespDTO -> {
+//                   pmsMessage.sendMessage();
+                });
+            });
+        });
         iotMeasureCertMapper.updateBatch(iotMeasureCertDOS);
         //处理计量器具的检测是否过期
         List<IotMeasureDetectDO> collect = iotMeasureDetectMapper.selectList().stream().filter(e -> Objects.nonNull(e.getValidityPeriod()) && (e.getValidityPeriod().isBefore(LocalDateTime.now()))).collect(Collectors.toList());

+ 30 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/qhse/SafeDayJob.java

@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.pms.job.qhse;
+
+import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.safe.QhseSafeDayDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.qhse.safe.QhseSafeDayMapper;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class SafeDayJob implements JobHandler {
+    private final QhseSafeDayMapper qhseSafeDayMapper;
+
+    public SafeDayJob(QhseSafeDayMapper qhseSafeDayMapper) {
+        this.qhseSafeDayMapper = qhseSafeDayMapper;
+    }
+
+    @Override
+    @TenantIgnore
+    public String execute(String param) throws Exception {
+        List<QhseSafeDayDO> qhseSafeDayDOS = qhseSafeDayMapper.selectList();
+        //遍历更新
+        qhseSafeDayDOS.forEach(qhseSafeDayDO -> {
+            qhseSafeDayDO.setDayNumber(qhseSafeDayDO.getDayNumber() + 1);
+            qhseSafeDayMapper.insertOrUpdate(qhseSafeDayDO);
+        });
+        return "";
+    }
+}

+ 2 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/oa/OaFlow.java

@@ -98,9 +98,9 @@ public class OaFlow {
     }
 
     public String getToken() throws Exception{
-        if (StringUtils.isBlank(spk) || StringUtils.isBlank(secret)) {
+//        if (StringUtils.isBlank(spk) || StringUtils.isBlank(secret)) {
             register();
-        }
+//        }
         String secretEn = E9ApiTokenUtil.encryptString(spk, secret);
         HttpHeaders headers = new HttpHeaders();
         headers.add("appid", appid);

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/qhse/safe/QhseSafeDayService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.qhse.safe;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDayPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDaySaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.safe.QhseSafeDayDO;
+
+import javax.validation.Valid;
+
+/**
+ * QHSE_安全生产天数 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface QhseSafeDayService {
+
+    /**
+     * 创建QHSE_安全生产天数
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createQhseSafeDay(@Valid QhseSafeDaySaveReqVO createReqVO);
+
+    /**
+     * 更新QHSE_安全生产天数
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateQhseSafeDay(@Valid QhseSafeDaySaveReqVO updateReqVO);
+
+    /**
+     * 删除QHSE_安全生产天数
+     *
+     * @param id 编号
+     */
+    void deleteQhseSafeDay(Long id);
+
+    /**
+     * 获得QHSE_安全生产天数
+     *
+     * @param id 编号
+     * @return QHSE_安全生产天数
+     */
+    QhseSafeDayDO getQhseSafeDay(Long id);
+
+    /**
+     * 获得QHSE_安全生产天数分页
+     *
+     * @param pageReqVO 分页查询
+     * @return QHSE_安全生产天数分页
+     */
+    PageResult<QhseSafeDayDO> getQhseSafeDayPage(QhseSafeDayPageReqVO pageReqVO);
+
+}

+ 72 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/qhse/safe/QhseSafeDayServiceImpl.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.pms.service.qhse.safe;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDayPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.safe.vo.QhseSafeDaySaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.safe.QhseSafeDayDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.qhse.safe.QhseSafeDayMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * QHSE_安全生产天数 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class QhseSafeDayServiceImpl implements QhseSafeDayService {
+
+    @Resource
+    private QhseSafeDayMapper qhseSafeDayMapper;
+
+    @Override
+    public Long createQhseSafeDay(QhseSafeDaySaveReqVO createReqVO) {
+        // 插入
+        QhseSafeDayDO qhseSafeDay = BeanUtils.toBean(createReqVO, QhseSafeDayDO.class);
+        qhseSafeDay.setDeleted(false);
+        qhseSafeDayMapper.insert(qhseSafeDay);
+        // 返回
+        return qhseSafeDay.getId();
+    }
+
+    @Override
+    public void updateQhseSafeDay(QhseSafeDaySaveReqVO updateReqVO) {
+        // 校验存在
+        validateQhseSafeDayExists(updateReqVO.getId());
+        // 更新
+        QhseSafeDayDO updateObj = BeanUtils.toBean(updateReqVO, QhseSafeDayDO.class);
+        qhseSafeDayMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteQhseSafeDay(Long id) {
+        // 校验存在
+        validateQhseSafeDayExists(id);
+        // 删除
+        qhseSafeDayMapper.deleteById(id);
+    }
+
+    private void validateQhseSafeDayExists(Long id) {
+        if (qhseSafeDayMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(1,"不存在"));
+        }
+    }
+
+    @Override
+    public QhseSafeDayDO getQhseSafeDay(Long id) {
+        return qhseSafeDayMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<QhseSafeDayDO> getQhseSafeDayPage(QhseSafeDayPageReqVO pageReqVO) {
+        return qhseSafeDayMapper.selectPage(pageReqVO);
+    }
+
+}