Pārlūkot izejas kodu

ptw相关功能

Zimo 2 dienas atpakaļ
vecāks
revīzija
bf415d2765

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

@@ -0,0 +1,94 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw;
+
+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.ptw.vo.QhsePtwPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.vo.QhsePtwRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.vo.QhsePtwSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.ptw.QhsePtwDO;
+import cn.iocoder.yudao.module.pms.service.qhse.ptw.QhsePtwService;
+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_PTW作业许可")
+@RestController
+@RequestMapping("/rq/qhse-ptw")
+@Validated
+public class QhsePtwController {
+
+    @Resource
+    private QhsePtwService qhsePtwService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建QHSE_PTW作业许可")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-ptw:create')")
+    public CommonResult<Long> createQhsePtw(@Valid @RequestBody QhsePtwSaveReqVO createReqVO) {
+        return success(qhsePtwService.createQhsePtw(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新QHSE_PTW作业许可")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-ptw:update')")
+    public CommonResult<Boolean> updateQhsePtw(@Valid @RequestBody QhsePtwSaveReqVO updateReqVO) {
+        qhsePtwService.updateQhsePtw(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除QHSE_PTW作业许可")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:qhse-ptw:delete')")
+    public CommonResult<Boolean> deleteQhsePtw(@RequestParam("id") Long id) {
+        qhsePtwService.deleteQhsePtw(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得QHSE_PTW作业许可")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-ptw:query')")
+    public CommonResult<QhsePtwRespVO> getQhsePtw(@RequestParam("id") Long id) {
+        QhsePtwDO qhsePtw = qhsePtwService.getQhsePtw(id);
+        return success(BeanUtils.toBean(qhsePtw, QhsePtwRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得QHSE_PTW作业许可分页")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-ptw:query')")
+    public CommonResult<PageResult<QhsePtwRespVO>> getQhsePtwPage(@Valid QhsePtwPageReqVO pageReqVO) {
+        PageResult<QhsePtwDO> pageResult = qhsePtwService.getQhsePtwPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, QhsePtwRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出QHSE_PTW作业许可 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:qhse-ptw:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportQhsePtwExcel(@Valid QhsePtwPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<QhsePtwDO> list = qhsePtwService.getQhsePtwPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "QHSE_PTW作业许可.xls", "数据", QhsePtwRespVO.class,
+                        BeanUtils.toBean(list, QhsePtwRespVO.class));
+    }
+
+}

+ 68 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/ptw/vo/QhsePtwPageReqVO.java

@@ -0,0 +1,68 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.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_PTW作业许可分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class QhsePtwPageReqVO extends PageParam {
+
+    @Schema(description = "jsa编号")
+    private String ptwNo;
+
+    @Schema(description = "时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] ptwTime;
+
+    @Schema(description = "序号")
+    private String ptwXh;
+
+    @Schema(description = "作业票类型", example = "2")
+    private String ptwType;
+
+    @Schema(description = "作业分级(特级一级二级)")
+    private String ptwGrade;
+
+    @Schema(description = "作业地点")
+    private String workLocation;
+
+    @Schema(description = "作业内容")
+    private String workContent;
+
+    @Schema(description = "作业人员")
+    private String workPerson;
+
+    @Schema(description = "监护人")
+    private String guardian;
+
+    @Schema(description = "作业负责人")
+    private String workDuty;
+
+    @Schema(description = "jsa主键id", example = "22912")
+    private Long jsaId;
+
+    @Schema(description = "部门id", example = "821")
+    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;
+
+    @Schema(description = "附件")
+    private String file;
+
+}

+ 83 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/ptw/vo/QhsePtwRespVO.java

@@ -0,0 +1,83 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.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_PTW作业许可 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class QhsePtwRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19898")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "jsa编号")
+    @ExcelProperty("jsa编号")
+    private String ptwNo;
+
+    @Schema(description = "时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("时间")
+    private LocalDateTime ptwTime;
+
+    @Schema(description = "序号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("序号")
+    private String ptwXh;
+
+    @Schema(description = "作业票类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("作业票类型")
+    private String ptwType;
+
+    @Schema(description = "作业分级(特级一级二级)")
+    @ExcelProperty("作业分级(特级一级二级)")
+    private String ptwGrade;
+
+    @Schema(description = "作业地点")
+    @ExcelProperty("作业地点")
+    private String workLocation;
+
+    @Schema(description = "作业内容")
+    @ExcelProperty("作业内容")
+    private String workContent;
+
+    @Schema(description = "作业人员", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("作业人员")
+    private String workPerson;
+
+    @Schema(description = "监护人", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("监护人")
+    private String guardian;
+
+    @Schema(description = "作业负责人", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("作业负责人")
+    private String workDuty;
+
+    @Schema(description = "jsa主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22912")
+    @ExcelProperty("jsa主键id")
+    private Long jsaId;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "821")
+    @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;
+
+    @Schema(description = "附件")
+    @ExcelProperty("附件")
+    private String file;
+
+}

+ 71 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/qhse/ptw/vo/QhsePtwSaveReqVO.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - QHSE_PTW作业许可新增/修改 Request VO")
+@Data
+public class QhsePtwSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19898")
+    private Long id;
+
+    @Schema(description = "jsa编号")
+    private String ptwNo;
+
+    @Schema(description = "时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "时间不能为空")
+    private LocalDateTime ptwTime;
+
+    @Schema(description = "序号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "序号不能为空")
+    private String ptwXh;
+
+    @Schema(description = "作业票类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotEmpty(message = "作业票类型不能为空")
+    private String ptwType;
+
+    @Schema(description = "作业分级(特级一级二级)")
+    private String ptwGrade;
+
+    @Schema(description = "作业地点")
+    private String workLocation;
+
+    @Schema(description = "作业内容")
+    private String workContent;
+
+    @Schema(description = "作业人员", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "作业人员不能为空")
+    private String workPerson;
+
+    @Schema(description = "监护人", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "监护人不能为空")
+    private String guardian;
+
+    @Schema(description = "作业负责人", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "作业负责人不能为空")
+    private String workDuty;
+
+    @Schema(description = "jsa主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22912")
+    @NotNull(message = "jsa主键id不能为空")
+    private Long jsaId;
+
+    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "821")
+    @NotNull(message = "部门id不能为空")
+    private Long deptId;
+
+    @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @NotEmpty(message = "单位不能为空")
+    private String deptName;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "附件")
+    private String file;
+
+}

+ 92 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/qhse/ptw/QhsePtwDO.java

@@ -0,0 +1,92 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.qhse.ptw;
+
+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.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * QHSE_PTW作业许可 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_qhse_ptw")
+@KeySequence("rq_qhse_ptw_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class QhsePtwDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * jsa编号
+     */
+    private String ptwNo;
+    /**
+     * 时间
+     */
+    private LocalDateTime ptwTime;
+    /**
+     * 序号
+     */
+    private String ptwXh;
+    /**
+     * 作业票类型
+     */
+    private String ptwType;
+    /**
+     * 作业分级(特级一级二级)
+     */
+    private String ptwGrade;
+    /**
+     * 作业地点
+     */
+    private String workLocation;
+    /**
+     * 作业内容
+     */
+    private String workContent;
+    /**
+     * 作业人员
+     */
+    private String workPerson;
+    /**
+     * 监护人
+     */
+    private String guardian;
+    /**
+     * 作业负责人
+     */
+    private String workDuty;
+    /**
+     * jsa主键id
+     */
+    private Long jsaId;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 单位
+     */
+    private String deptName;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 附件
+     */
+    private String file;
+
+}

+ 39 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/qhse/ptw/QhsePtwMapper.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.qhse.ptw;
+
+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.ptw.vo.QhsePtwPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.ptw.QhsePtwDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * QHSE_PTW作业许可 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface QhsePtwMapper extends BaseMapperX<QhsePtwDO> {
+
+    default PageResult<QhsePtwDO> selectPage(QhsePtwPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<QhsePtwDO>()
+                .eqIfPresent(QhsePtwDO::getPtwNo, reqVO.getPtwNo())
+                .betweenIfPresent(QhsePtwDO::getPtwTime, reqVO.getPtwTime())
+                .eqIfPresent(QhsePtwDO::getPtwXh, reqVO.getPtwXh())
+                .eqIfPresent(QhsePtwDO::getPtwType, reqVO.getPtwType())
+                .eqIfPresent(QhsePtwDO::getPtwGrade, reqVO.getPtwGrade())
+                .eqIfPresent(QhsePtwDO::getWorkLocation, reqVO.getWorkLocation())
+                .eqIfPresent(QhsePtwDO::getWorkContent, reqVO.getWorkContent())
+                .eqIfPresent(QhsePtwDO::getWorkPerson, reqVO.getWorkPerson())
+                .eqIfPresent(QhsePtwDO::getGuardian, reqVO.getGuardian())
+                .eqIfPresent(QhsePtwDO::getWorkDuty, reqVO.getWorkDuty())
+                .eqIfPresent(QhsePtwDO::getJsaId, reqVO.getJsaId())
+                .eqIfPresent(QhsePtwDO::getDeptId, reqVO.getDeptId())
+                .likeIfPresent(QhsePtwDO::getDeptName, reqVO.getDeptName())
+                .eqIfPresent(QhsePtwDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(QhsePtwDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(QhsePtwDO::getFile, reqVO.getFile())
+                .orderByDesc(QhsePtwDO::getId));
+    }
+
+}

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/qhse/jsa/QhseJsaService.java

@@ -14,6 +14,8 @@ import javax.validation.Valid;
  */
 public interface QhseJsaService {
 
+    String getJSANo(Long loginUserDeptId);
+
     /**
      * 创建QHSE_JSA工作安全分析
      *

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/qhse/jsa/QhseJsaServiceImpl.java

@@ -67,7 +67,7 @@ public class QhseJsaServiceImpl implements QhseJsaService {
         return qhseJsa.getId();
     }
 
-    private String getJSANo(Long loginUserDeptId) {
+    public String getJSANo(Long loginUserDeptId) {
         String companyCode = deptUtil.getCompanyCode(loginUserDeptId);
         if ("jt".equals(companyCode)) {
             return "";

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

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.qhse.ptw;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.vo.QhsePtwPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.vo.QhsePtwSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.ptw.QhsePtwDO;
+
+import javax.validation.Valid;
+
+/**
+ * QHSE_PTW作业许可 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface QhsePtwService {
+
+    /**
+     * 创建QHSE_PTW作业许可
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createQhsePtw(@Valid QhsePtwSaveReqVO createReqVO);
+
+    /**
+     * 更新QHSE_PTW作业许可
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateQhsePtw(@Valid QhsePtwSaveReqVO updateReqVO);
+
+    /**
+     * 删除QHSE_PTW作业许可
+     *
+     * @param id 编号
+     */
+    void deleteQhsePtw(Long id);
+
+    /**
+     * 获得QHSE_PTW作业许可
+     *
+     * @param id 编号
+     * @return QHSE_PTW作业许可
+     */
+    QhsePtwDO getQhsePtw(Long id);
+
+    /**
+     * 获得QHSE_PTW作业许可分页
+     *
+     * @param pageReqVO 分页查询
+     * @return QHSE_PTW作业许可分页
+     */
+    PageResult<QhsePtwDO> getQhsePtwPage(QhsePtwPageReqVO pageReqVO);
+
+}

+ 105 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/qhse/ptw/QhsePtwServiceImpl.java

@@ -0,0 +1,105 @@
+package cn.iocoder.yudao.module.pms.service.qhse.ptw;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.vo.QhsePtwPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.qhse.ptw.vo.QhsePtwSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.stat.DeptUtil;
+import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.ptw.QhsePtwDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.qhse.ptw.QhsePtwMapper;
+import cn.iocoder.yudao.module.pms.service.qhse.ChineseLetterUtil;
+import cn.iocoder.yudao.module.pms.service.qhse.jsa.QhseJsaService;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import java.util.Objects;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * QHSE_PTW作业许可 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class QhsePtwServiceImpl implements QhsePtwService {
+
+    @Resource
+    private QhsePtwMapper qhsePtwMapper;
+    @Autowired
+    private DeptApi deptApi;
+    @Autowired
+    private DeptUtil deptUtil;
+    private QhseJsaService qhseJsaService;
+
+    @Override
+    public Long createQhsePtw(QhsePtwSaveReqVO createReqVO) {
+        // 插入
+        QhsePtwDO qhsePtw = BeanUtils.toBean(createReqVO, QhsePtwDO.class);
+        qhsePtw.setDeleted(false);
+
+        Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
+        if (Objects.nonNull(loginUserDeptId)) {
+            DeptRespDTO dept = deptApi.getDept(loginUserDeptId);
+            if (Objects.nonNull(dept)) {
+                qhsePtw.setDeptName(dept.getName());
+                //获取队伍代码大写
+                String convert = ChineseLetterUtil.convert(dept.getName());
+                //获取公司代码大写
+                String company = deptUtil.getCompanyCode(loginUserDeptId).toUpperCase();
+                //获取项目部代码大写
+                String jsaNo = qhseJsaService.getJSANo(loginUserDeptId);
+                if (StringUtils.isBlank(jsaNo)){throw new ServiceException(new ErrorCode(2,"获取项目部编号失败"));}
+                qhsePtw.setPtwNo(company+"-"+jsaNo+"-"+convert);
+            }
+        }
+
+        qhsePtwMapper.insert(qhsePtw);
+        // 返回
+        return qhsePtw.getId();
+    }
+
+    @Override
+    public void updateQhsePtw(QhsePtwSaveReqVO updateReqVO) {
+        // 校验存在
+        validateQhsePtwExists(updateReqVO.getId());
+        // 更新
+        QhsePtwDO updateObj = BeanUtils.toBean(updateReqVO, QhsePtwDO.class);
+        qhsePtwMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteQhsePtw(Long id) {
+        // 校验存在
+        validateQhsePtwExists(id);
+        // 删除
+        qhsePtwMapper.deleteById(id);
+    }
+
+    private void validateQhsePtwExists(Long id) {
+        if (qhsePtwMapper.selectById(id) == null) {
+            throw exception(new ErrorCode(1,"不存在"));
+        }
+    }
+
+    @Override
+    public QhsePtwDO getQhsePtw(Long id) {
+        return qhsePtwMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<QhsePtwDO> getQhsePtwPage(QhsePtwPageReqVO pageReqVO) {
+        return qhsePtwMapper.selectPage(pageReqVO);
+    }
+
+}