From c71b5ca012098d9d84c9d1bd2ee6e8ed03002070 Mon Sep 17 00:00:00 2001 From: yy2205 <2238220225@qq.com> Date: Thu, 24 Apr 2025 15:37:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E6=9E=84=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/tb/enums/ErrorCodeConstants.java | 10 ++ .../inspectorg/InspectOrgController.java | 105 ++++++++++++++ .../inspectorg/vo/InspectOrgPageReqVO.java | 46 +++++++ .../admin/inspectorg/vo/InspectOrgRespVO.java | 52 +++++++ .../inspectorg/vo/InspectOrgSaveReqVO.java | 60 ++++++++ .../dataobject/inspectorg/InspectOrgDO.java | 123 +++++++++++++++++ .../mysql/inspectorg/InspectOrgMapper.java | 54 ++++++++ .../service/inspectorg/InspectOrgService.java | 55 ++++++++ .../inspectorg/InspectOrgServiceImpl.java | 130 ++++++++++++++++++ .../mapper/inspectorg/InspectOrgMapper.xml | 36 +++++ 10 files changed, 671 insertions(+) create mode 100644 yudao-module-inspect/yudao-module-inspect-api/src/main/java/cn/iocoder/yudao/module/tb/enums/ErrorCodeConstants.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/InspectOrgController.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgPageReqVO.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgRespVO.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgSaveReqVO.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/dataobject/inspectorg/InspectOrgDO.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/mysql/inspectorg/InspectOrgMapper.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgService.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgServiceImpl.java create mode 100644 yudao-module-inspect/yudao-module-inspect-biz/src/main/resources/mapper/inspectorg/InspectOrgMapper.xml diff --git a/yudao-module-inspect/yudao-module-inspect-api/src/main/java/cn/iocoder/yudao/module/tb/enums/ErrorCodeConstants.java b/yudao-module-inspect/yudao-module-inspect-api/src/main/java/cn/iocoder/yudao/module/tb/enums/ErrorCodeConstants.java new file mode 100644 index 0000000..c3a56ea --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-api/src/main/java/cn/iocoder/yudao/module/tb/enums/ErrorCodeConstants.java @@ -0,0 +1,10 @@ +package cn.iocoder.yudao.module.tb.enums; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +public interface ErrorCodeConstants { + ErrorCode INSPECT_ORG_NOT_EXISTS = new ErrorCode(10000, "机构不存在"); + ErrorCode HIGH_INSPECT_ORG_NOT_EXISTS = new ErrorCode(10010, "上级机构不存在"); + ErrorCode ORGSN_EXISTS = new ErrorCode(10020, "机构编号重复"); + ErrorCode ORGNAME_EXISTS = new ErrorCode(10021, "机构名称重复"); + ErrorCode HIGH_NOT_ALLOW_SELF = new ErrorCode(10030, "上级机构不能选择自己或子级机构"); +} diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/InspectOrgController.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/InspectOrgController.java new file mode 100644 index 0000000..461cdb3 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/InspectOrgController.java @@ -0,0 +1,105 @@ +package cn.iocoder.yudao.module.inspect.controller.admin.inspectorg; + +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgPageReqVO; +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgRespVO; +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgSaveReqVO; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.inspect.dal.dataobject.inspectorg.InspectOrgDO; +import cn.iocoder.yudao.module.inspect.service.inspectorg.InspectOrgService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 机构") +@RestController +@RequestMapping("/tb/inspect-org") +@Validated +public class InspectOrgController { + + @Resource + private InspectOrgService inspectOrgService; + + @PostMapping("/create") + @Operation(summary = "创建机构") + @PreAuthorize("@ss.hasPermission('tb:inspect-org:create')") + public CommonResult createInspectOrg(@Valid @RequestBody InspectOrgSaveReqVO createReqVO) { + return success(inspectOrgService.createInspectOrg(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新机构") + @PreAuthorize("@ss.hasPermission('tb:inspect-org:update')") + public CommonResult updateInspectOrg(@Valid @RequestBody InspectOrgSaveReqVO updateReqVO) { + inspectOrgService.updateInspectOrg(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除机构") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('tb:inspect-org:delete')") + public CommonResult deleteInspectOrg(@RequestParam("id") Long id) { + inspectOrgService.deleteInspectOrg(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得机构") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('tb:inspect-org:query')") + public CommonResult getInspectOrg(@RequestParam("id") Long id) { + InspectOrgDO inspectOrg = inspectOrgService.getInspectOrg(id); + return success(BeanUtils.toBean(inspectOrg, InspectOrgRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得机构分页") + @PreAuthorize("@ss.hasPermission('tb:inspect-org:query')") + public CommonResult> getInspectOrgPage(@Valid InspectOrgPageReqVO pageReqVO) { + PageResult pageResult = inspectOrgService.getInspectOrgPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, InspectOrgRespVO.class)); + } + @GetMapping("/all") + @Operation(summary = "获得所有机构信息") + @PreAuthorize("@ss.hasPermission('tb:inspect-org:query')") + public CommonResult> getInspectOrgList(@Valid InspectOrgPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + PageResult pageResult = inspectOrgService.getInspectOrgPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, InspectOrgRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出机构 Excel") + @PreAuthorize("@ss.hasPermission('tb:inspect-org:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportInspectOrgExcel(@Valid InspectOrgPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = inspectOrgService.getInspectOrgPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "机构.xls", "数据", InspectOrgRespVO.class, + BeanUtils.toBean(list, InspectOrgRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgPageReqVO.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgPageReqVO.java new file mode 100644 index 0000000..f111e80 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgPageReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - tb_org分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class InspectOrgPageReqVO extends PageParam { + + @Schema(description = "机构名称", example = "赵六") + private String orgName; + + @Schema(description = "机构地址") + private String address; + + @Schema(description = "联系电话") + private String contactTel; + + @Schema(description = "联系人姓名") + private String contactPerson; + + @Schema(description = "报告上显示的名称:一般跟机构名称一致", example = "芋艿") + private String reportName; + + @Schema(description = "上级判读医院机构ID", example = "28259") + private Long highLevelOrgID; + + @Schema(description = "上级机构的机构名称", example = "李四") + private String highLevelOrgName; + + @Schema(description = "机构编号:通常为一个4位数的短号 用于与其他系统的对接之用") + private String orgSN; + + @Schema(description = "机构logo的URL", example = "https://www.iocoder.cn") + private String orgLogoUrl; + + @Schema(description = "是否删除:1为删除 ") + private String isdelete; + + @Schema(description = "在his系统中的 hiscode 机构码") + private String inHisCode; + +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgRespVO.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgRespVO.java new file mode 100644 index 0000000..88909c7 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgRespVO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - tb_org Response VO") +@Data +@ExcelIgnoreUnannotated +public class InspectOrgRespVO { + + @Schema(description = "机构ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19567") + @ExcelProperty("机构ID") + private Long orgid; + + @Schema(description = "机构名称", example = "赵六") + @ExcelProperty("机构名称") + private String orgName; + + @Schema(description = "机构地址") + @ExcelProperty("机构地址") + private String address; + + @Schema(description = "联系电话") + @ExcelProperty("联系电话") + private String contactTel; + + @Schema(description = "联系人姓名") + @ExcelProperty("联系人姓名") + private String contactPerson; + + @Schema(description = "上级判读医院机构ID", example = "28259") + @ExcelProperty("上级判读医院机构ID") + private Long highLevelOrgID; + + @Schema(description = "上级机构的机构名称", example = "李四") + @ExcelProperty("上级机构的机构名称") + private String highLevelOrgName; + + @Schema(description = "机构logo的URL", example = "https://www.iocoder.cn") + @ExcelProperty("机构logo的URL") + private String orgLogoUrl; + + @Schema(description = "机构编号", example = "https://www.iocoder.cn") + @ExcelProperty("机构编号") + private String orgSN; + + @Schema(description = "在his系统中的 hiscode 机构码") + @ExcelProperty("在his系统中的 hiscode 机构码") + private String inHisCode; + +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgSaveReqVO.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgSaveReqVO.java new file mode 100644 index 0000000..eaef780 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/controller/admin/inspectorg/vo/InspectOrgSaveReqVO.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import org.apache.ibatis.annotations.Update; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - tb_org新增/修改 Request VO") +@Data +public class InspectOrgSaveReqVO { + + @Schema(description = "机构ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19567") + private Long orgid; + + @Schema(description = "机构名称", example = "赵六") + @NotBlank(message = "机构名称不能为空") + private String orgName; + + @Schema(description = "机构地址") +// @NotBlank(message = "机构地址不能为空") + private String address; + + @Schema(description = "联系电话") + @NotBlank(message = "联系电话不能为空") + @Pattern(regexp = "^(1(3[0-9]|4[014-9]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\\d{8})$",message = "联系电话格式错误") + private String contactTel; + + @Schema(description = "联系人姓名") + @NotBlank(message = "联系人姓名不能为空") + private String contactPerson; + + @Schema(description = "报告上显示的名称:一般跟机构名称一致", example = "芋艿") + private String reportName; + + @Schema(description = "上级判读医院机构ID", example = "28259") + private Long highLevelOrgID; + + @Schema(description = "上级机构的机构名称", example = "李四") + private String highLevelOrgName; + + @Schema(description = "机构编号:通常为一个4位数的短号 用于与其他系统的对接之用") + @NotBlank(message = "机构编号不能为空") + private String orgSN; + + @Schema(description = "创建时间:年月日时分秒") + private LocalDateTime createDate; + + @Schema(description = "机构logo的URL", example = "https://www.iocoder.cn") + private String orgLogoUrl; + + @Schema(description = "在his系统中的 hiscode 机构码") + private String inHisCode; + +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/dataobject/inspectorg/InspectOrgDO.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/dataobject/inspectorg/InspectOrgDO.java new file mode 100644 index 0000000..a7b6d00 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/dataobject/inspectorg/InspectOrgDO.java @@ -0,0 +1,123 @@ +package cn.iocoder.yudao.module.inspect.dal.dataobject.inspectorg; + +import lombok.*; + +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import lombok.experimental.Accessors; + +/** + * tb_org DO + * + * @author 芋道源码 + */ +@TableName("tb_org") +@KeySequence("tb_org_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class InspectOrgDO { + + /** + * 机构ID + */ + @TableId + private Long orgid; + /** + * 机构名称 + */ + @TableField("orgName") + private String orgName; + /** + * 机构地址 + */ + @TableField("address") + private String address; + /** + * 联系电话 + */ + @TableField("contactTel") + private String contactTel; + /** + * 联系人姓名 + */ + @TableField("contactPerson") + private String contactPerson; + /** + * 报告上显示的名称:一般跟机构名称一致 + */ + @TableField("reportName") + private String reportName; + /** + * 上级判读医院机构ID + */ + @TableField(value = "highLevelOrgID",updateStrategy = FieldStrategy.ALWAYS) + private Long highLevelOrgID; + /** + * 上级机构的机构名称 + */ + @TableField(value = "highLevelOrgName",updateStrategy = FieldStrategy.ALWAYS) + private String highLevelOrgName; + /** + * 能收到微信消息提醒的微信列表,格式为:wxopenid1,wxopenid2,wxopenid3 + */ + @TableField("wx_openidlist") + private String wx_openidlist; + /** + * 机构编号:通常为一个4位数的短号 用于与其他系统的对接之用 + */ + @TableField("orgSN") + private String orgSN; + /** + * 创建时间:年月日时分秒 + */ + @TableField("createDate") + private LocalDateTime createDate; + /** + * 机构logo的URL + */ + @TableField("orgLogoUrl") + private String orgLogoUrl; + /** + * 是否删除:1为删除 + */ + @TableField("isdelete") + private String isdelete; + /** + * dcm文件前缀名称 + */ + @TableField("dcmprefix") + private String dcmprefix; + /** + * dcm文件请求地址 + */ + @TableField("dcmurl") + private String dcmurl; + /** + * 是否启用云胶片:1为启用 + */ + @TableField("enableCloudDicom") + private String enableCloudDicom; + /** + * 云胶片地址 + */ + @TableField("cloudDicom") + private String cloudDicom; + /** + * 在his系统中的 hiscode 机构码 + */ + @TableField("inHisCode") + private String inHisCode; + + public InspectOrgDO(Long orgid) { + this.orgid = orgid; + } + + public InspectOrgDO(String orgSN) { + this.orgSN = orgSN; + } +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/mysql/inspectorg/InspectOrgMapper.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/mysql/inspectorg/InspectOrgMapper.java new file mode 100644 index 0000000..46b7788 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/dal/mysql/inspectorg/InspectOrgMapper.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.inspect.dal.mysql.inspectorg; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgPageReqVO; +import cn.iocoder.yudao.module.inspect.dal.dataobject.inspectorg.InspectOrgDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * tb_org Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface InspectOrgMapper extends BaseMapperX { + + default PageResult selectPage(InspectOrgPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(InspectOrgDO::getOrgName, reqVO.getOrgName()) + .eqIfPresent(InspectOrgDO::getAddress, reqVO.getAddress()) + .eqIfPresent(InspectOrgDO::getContactTel, reqVO.getContactTel()) + .eqIfPresent(InspectOrgDO::getContactPerson, reqVO.getContactPerson()) + .likeIfPresent(InspectOrgDO::getReportName, reqVO.getReportName()) + .eqIfPresent(InspectOrgDO::getHighLevelOrgID, reqVO.getHighLevelOrgID()) + .likeIfPresent(InspectOrgDO::getHighLevelOrgName, reqVO.getHighLevelOrgName()) + .eqIfPresent(InspectOrgDO::getOrgSN, reqVO.getOrgSN()) + .eqIfPresent(InspectOrgDO::getOrgLogoUrl, reqVO.getOrgLogoUrl()) + .eqIfPresent(InspectOrgDO::getIsdelete, 0) + .eqIfPresent(InspectOrgDO::getInHisCode, reqVO.getInHisCode()) + .orderByDesc(InspectOrgDO::getOrgid)); + } + default InspectOrgDO selectById(Long id){ + return selectOne(new LambdaQueryWrapperX() + .eq(InspectOrgDO::getOrgid,id) + .eq(InspectOrgDO::getIsdelete,0)); + } + /** + * 根据条件查询一个机构,添加行锁 + * @param inspectOrgDO + * @return + */ + InspectOrgDO selectOneForLock(InspectOrgDO inspectOrgDO); + + /** + * 查询当前机构及其子级机构和所有子级的子级 + * @param orgid + * @return + */ + List listChildrenWithSelf(Long orgid); + +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgService.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgService.java new file mode 100644 index 0000000..539fd63 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.inspect.service.inspectorg; + +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgPageReqVO; +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgSaveReqVO; +import cn.iocoder.yudao.module.inspect.dal.dataobject.inspectorg.InspectOrgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.validation.Valid; + +/** + * tb_org Service 接口 + * + * @author 芋道源码 + */ +public interface InspectOrgService { + + /** + * 创建tb_org + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createInspectOrg(@Valid InspectOrgSaveReqVO createReqVO); + + /** + * 更新tb_org + * + * @param updateReqVO 更新信息 + */ + void updateInspectOrg(@Valid InspectOrgSaveReqVO updateReqVO); + + /** + * 删除tb_org + * + * @param id 编号 + */ + void deleteInspectOrg(Long id); + + /** + * 获得tb_org + * + * @param id 编号 + * @return tb_org + */ + InspectOrgDO getInspectOrg(Long id); + + /** + * 获得tb_org分页 + * + * @param pageReqVO 分页查询 + * @return tb_org分页 + */ + PageResult getInspectOrgPage(InspectOrgPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgServiceImpl.java b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgServiceImpl.java new file mode 100644 index 0000000..520b4b8 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/java/cn/iocoder/yudao/module/inspect/service/inspectorg/InspectOrgServiceImpl.java @@ -0,0 +1,130 @@ +package cn.iocoder.yudao.module.inspect.service.inspectorg; + +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgPageReqVO; +import cn.iocoder.yudao.module.inspect.controller.admin.inspectorg.vo.InspectOrgSaveReqVO; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import cn.iocoder.yudao.module.inspect.dal.dataobject.inspectorg.InspectOrgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.inspect.dal.mysql.inspectorg.InspectOrgMapper; + +import javax.annotation.Resource; + +import java.util.List; +import java.util.Objects; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.tb.enums.ErrorCodeConstants.*; + +/** + * tb_org Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class InspectOrgServiceImpl implements InspectOrgService { + + @Resource + private InspectOrgMapper inspectOrgMapper; + + @Override + @Transactional + public Long createInspectOrg(InspectOrgSaveReqVO createReqVO) { + Long highLevelOrgID = createReqVO.getHighLevelOrgID(); // 上级机构id + if (highLevelOrgID != null) { +// 上级机构 + InspectOrgDO highOrg = inspectOrgMapper.selectOneForLock(new InspectOrgDO().setOrgid(createReqVO.getHighLevelOrgID())); + if (highOrg == null){ + throw exception(HIGH_INSPECT_ORG_NOT_EXISTS); + } + } +// 根据机构编号查询 + InspectOrgDO one = inspectOrgMapper.selectOneForLock(new InspectOrgDO().setOrgSN(createReqVO.getOrgSN())); + if (one!=null){ + throw exception(ORGSN_EXISTS); + } +// 名称不允许重复 + one = inspectOrgMapper.selectOneForLock(new InspectOrgDO().setOrgName(createReqVO.getOrgName())); + if (one!=null){ + throw exception(ORGNAME_EXISTS); + } + InspectOrgDO inspectOrg = BeanUtils.toBean(createReqVO, InspectOrgDO.class); + inspectOrgMapper.insert(inspectOrg); + // 返回 + return inspectOrg.getOrgid(); + } + + @Override + public void updateInspectOrg(InspectOrgSaveReqVO updateReqVO) { + // 校验存在 + validateInspectOrgExists(updateReqVO.getOrgid()); +// 上级机构不能是自己 + if (Objects.equals(updateReqVO.getHighLevelOrgID(), updateReqVO.getOrgid())){ + throw exception(HIGH_NOT_ALLOW_SELF); + } +// 上级机构不能是自己的子级或子级的子级 + List childrenWithSelf = inspectOrgMapper.listChildrenWithSelf(updateReqVO.getOrgid()); + boolean match = childrenWithSelf + .stream() + .anyMatch(org -> Objects.equals(org.getOrgid(), updateReqVO.getHighLevelOrgID())); + if (match){ + throw exception(HIGH_NOT_ALLOW_SELF); + } +// 无上级机构 + if (updateReqVO.getHighLevelOrgID()==null){ + updateReqVO.setHighLevelOrgName(null); + }else { + InspectOrgDO highOrg = inspectOrgMapper.selectOneForLock(new InspectOrgDO().setOrgid(updateReqVO.getHighLevelOrgID())); + if (highOrg == null){ + throw exception(HIGH_INSPECT_ORG_NOT_EXISTS); + } + updateReqVO.setHighLevelOrgName(highOrg.getOrgName()); + } +// 机构编号不能重复 + InspectOrgDO one = inspectOrgMapper.selectOneForLock(new InspectOrgDO().setOrgSN(updateReqVO.getOrgSN())); + if (one != null && !Objects.equals(one.getOrgid(), updateReqVO.getOrgid())){ + throw exception(ORGSN_EXISTS); + } + // 名称不允许重复 + one = inspectOrgMapper.selectOneForLock(new InspectOrgDO().setOrgName(updateReqVO.getOrgName())); + if (one != null && !Objects.equals(one.getOrgid(),updateReqVO.getOrgid())){ + throw exception(ORGNAME_EXISTS); + } + InspectOrgDO updateObj = BeanUtils.toBean(updateReqVO, InspectOrgDO.class); + inspectOrgMapper.updateById(updateObj); + } + + @Override + public void deleteInspectOrg(Long id) { + // 校验存在 + validateInspectOrgExists(id); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(InspectOrgDO::getIsdelete,1).eq(InspectOrgDO::getOrgid,id); + // 删除 + inspectOrgMapper.update(updateWrapper); + } + + private void validateInspectOrgExists(Long id) { + if (inspectOrgMapper.selectById(id) == null) { + throw exception(INSPECT_ORG_NOT_EXISTS); + } + } + + @Override + public InspectOrgDO getInspectOrg(Long id) { + InspectOrgDO inspectOrgDO = inspectOrgMapper.selectById(id); + return inspectOrgDO == null?new InspectOrgDO():inspectOrgDO; + } + + @Override + public PageResult getInspectOrgPage(InspectOrgPageReqVO pageReqVO) { + return inspectOrgMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-inspect/yudao-module-inspect-biz/src/main/resources/mapper/inspectorg/InspectOrgMapper.xml b/yudao-module-inspect/yudao-module-inspect-biz/src/main/resources/mapper/inspectorg/InspectOrgMapper.xml new file mode 100644 index 0000000..5d20271 --- /dev/null +++ b/yudao-module-inspect/yudao-module-inspect-biz/src/main/resources/mapper/inspectorg/InspectOrgMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file