From eb2ac2a40f92359739701c6f060607a474010de0 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 09 十二月 2024 18:11:23 +0800 Subject: [PATCH] 单位管理 --- medicalWaste-system/src/main/java/com/sinata/system/domain/dto/RegulatoryUnitDTO.java | 53 ++ medicalWaste-system/src/main/java/com/sinata/system/domain/vo/RegulatoryUnitVO.java | 49 ++ medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwRegulatoryUnitController.java | 97 ++++ medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java | 428 +++++++++++++++++ medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml | 155 ++++++ medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecordItem.java | 5 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/DisposalUnitVO.java | 39 + medicalWaste-system/src/main/java/com/sinata/system/domain/MwCheckoutRecordItem.java | 5 medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java | 5 medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java | 5 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMedicalInstitutionController.java | 110 ++++ medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRouteCar.java | 5 medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java | 5 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalInstitutionVO.java | 47 + medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningConfigItem.java | 5 medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java | 4 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwDisposalUnitController.java | 96 ++++ medicalWaste-system/src/main/java/com/sinata/system/domain/dto/DisposalUnitDTO.java | 34 + medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MedicalInstitutionDTO.java | 37 + medicalWaste-system/src/main/java/com/sinata/system/domain/query/DepartmentQuery.java | 32 + medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java | 129 +++++ medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java | 8 medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java | 5 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java | 56 ++ 24 files changed, 1,376 insertions(+), 38 deletions(-) diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwDisposalUnitController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwDisposalUnitController.java new file mode 100644 index 0000000..7085858 --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwDisposalUnitController.java @@ -0,0 +1,96 @@ +package com.sinata.web.controller.backend; + +import com.sinata.common.core.domain.R; +import com.sinata.common.entity.PageDTO; +import com.sinata.system.domain.dto.DisposalUnitDTO; +import com.sinata.system.domain.query.DepartmentQuery; +import com.sinata.system.domain.vo.DisposalUnitVO; +import com.sinata.system.service.SysDepartmentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Validated +@RestController +@RequestMapping("/backend/disposal") +@RequiredArgsConstructor +@Api(tags = "处置单位管理相关接口") +public class MwDisposalUnitController { + private final SysDepartmentService sysDepartmentService; + + /** + * 处置单位分页列表 + * + * @param query + * @return + */ + @PostMapping("/page") + @ApiOperation("处置单位分页列表") + public R<PageDTO<DisposalUnitVO>> pageList(@RequestBody DepartmentQuery query) { + return R.ok(sysDepartmentService.pageDisposalUnitList(query)); + } + + /** + * 新增处置单位 + * + * @param dto + */ + @PostMapping("/add") + @ApiOperation("新增处置单位") + public R<?> add(@Valid @RequestBody DisposalUnitDTO dto) { + sysDepartmentService.addDisposalUnit(dto); + return R.ok(); + } + + /** + * 编辑处置单位 + * + * @param dto + * @return + */ + @PostMapping("/edit") + @ApiOperation("编辑处置单位") + public R<?> edit(@Valid @RequestBody DisposalUnitDTO dto) { + sysDepartmentService.editDisposalUnit(dto); + return R.ok(); + } + + /** + * 处置单位详情 + * + * @param id + * @return + */ + @GetMapping("/detail/{id}") + @ApiOperation("处置单位详情") + public R<DisposalUnitVO> detail(@ApiParam(name = "id", value = "处置单位id", required = true) @PathVariable("id") Long id) { + return R.ok(sysDepartmentService.getDisposalUnitDetailById(id)); + } + + /** + * 删除处置单位 + * + * @param id + */ + @DeleteMapping("/{id}") + @ApiOperation("删除处置单位") + public R<?> delete(@ApiParam(name = "id", value = "处置单位id", required = true) @PathVariable("id") Long id) { + sysDepartmentService.deleteDisposalUnit(id); + return R.ok(); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMedicalInstitutionController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMedicalInstitutionController.java new file mode 100644 index 0000000..9c2f3bc --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMedicalInstitutionController.java @@ -0,0 +1,110 @@ +package com.sinata.web.controller.backend; + +import com.sinata.common.core.domain.R; +import com.sinata.common.entity.PageDTO; +import com.sinata.system.domain.dto.MedicalInstitutionDTO; +import com.sinata.system.domain.query.DepartmentQuery; +import com.sinata.system.domain.vo.DisposalUnitVO; +import com.sinata.system.domain.vo.MedicalInstitutionVO; +import com.sinata.system.service.SysDepartmentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Validated +@RestController +@RequestMapping("/backend/medical") +@RequiredArgsConstructor +@Api(tags = "医疗机构管理相关接口") +public class MwMedicalInstitutionController { + private final SysDepartmentService sysDepartmentService; + + /** + * 医疗机构分页列表 + * + * @param query + * @return + */ + @PostMapping("/page") + @ApiOperation("医疗机构分页列表") + public R<PageDTO<MedicalInstitutionVO>> pageList(@RequestBody DepartmentQuery query) { + return R.ok(sysDepartmentService.pageMedicalList(query)); + } + + /** + * 新增医疗机构 + * + * @param dto + */ + @PostMapping("/add") + @ApiOperation("新增医疗机构") + public R<?> add(@Valid @RequestBody MedicalInstitutionDTO dto) { + sysDepartmentService.addMedical(dto); + return R.ok(); + } + + /** + * 根据父级区域id查询处置单位列表 + * + * @param id + * @return + */ + @GetMapping("/getDisposalList/{id}") + @ApiOperation("根据父级区域id查询处置单位列表") + public R<List<DisposalUnitVO>> getDisposalUnitList(@ApiParam(name = "id", value = "父级区域id") @PathVariable("id") Long id) { + return R.ok(sysDepartmentService.getDisposalUnitListByParentId(id)); + } + + /** + * 编辑医疗机构 + * + * @param dto + * @return + */ + @PostMapping("/edit") + @ApiOperation("编辑医疗机构") + public R<?> edit(@Valid @RequestBody MedicalInstitutionDTO dto) { + sysDepartmentService.editMedical(dto); + return R.ok(); + } + + /** + * 医疗机构详情 + * + * @param id + * @return + */ + @GetMapping("/detail/{id}") + @ApiOperation("医疗机构详情") + public R<MedicalInstitutionVO> detail(@ApiParam(name = "id", value = "医疗机构id", required = true) @PathVariable("id") Long id) { + return R.ok(sysDepartmentService.getMedicalDetailById(id)); + } + + /** + * 删除医疗机构 + * + * @param id + */ + @DeleteMapping("/{id}") + @ApiOperation("删除医疗机构") + public R<?> delete(@ApiParam(name = "id", value = "医疗机构id", required = true) @PathVariable("id") Long id) { + sysDepartmentService.deleteMedical(id); + return R.ok(); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwRegulatoryUnitController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwRegulatoryUnitController.java new file mode 100644 index 0000000..54a44df --- /dev/null +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwRegulatoryUnitController.java @@ -0,0 +1,97 @@ +package com.sinata.web.controller.backend; + +import com.sinata.common.core.domain.R; +import com.sinata.common.entity.PageDTO; +import com.sinata.system.domain.dto.RegulatoryUnitDTO; +import com.sinata.system.domain.query.DepartmentQuery; +import com.sinata.system.domain.vo.RegulatoryUnitVO; +import com.sinata.system.service.SysDepartmentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Validated +@RestController +@RequestMapping("/backend/regulatory") +@RequiredArgsConstructor +@Api(tags = "监管单位管理相关接口") +public class MwRegulatoryUnitController { + private final SysDepartmentService sysDepartmentService; + + /** + * 监管单位分页列表 + * + * @param query + * @return + */ + @PostMapping("/page") + @ApiOperation("监管单位分页列表") + public R<PageDTO<RegulatoryUnitVO>> pageList(@RequestBody DepartmentQuery query) { + return R.ok(sysDepartmentService.pageRegulatoryUnitList(query)); + } + + /** + * 新增监管单位 + * + * @param dto + */ + @PostMapping("/add") + @ApiOperation("新增监管单位") + public R<?> add(@Valid @RequestBody RegulatoryUnitDTO dto) { + sysDepartmentService.addRegulatoryUnit(dto); + return R.ok(); + } + + /** + * 编辑监管单位 + * + * @param dto + * @return + */ + @PostMapping("/edit") + @ApiOperation("编辑监管单位") + public R<?> edit(@Valid @RequestBody RegulatoryUnitDTO dto) { + sysDepartmentService.editRegulatoryUnit(dto); + return R.ok(); + } + + + /** + * 监管单位详情 + * + * @param id + * @return + */ + @GetMapping("/detail/{id}") + @ApiOperation("监管单位详情") + public R<RegulatoryUnitVO> detail(@ApiParam(name = "id", value = "监管单位id", required = true) @PathVariable("id") Long id) { + return R.ok(sysDepartmentService.getRegulatoryUnitDetailById(id)); + } + + /** + * 删除监管单位 + * + * @param id + */ + @DeleteMapping("/{id}") + @ApiOperation("删除监管单位") + public R<?> delete(@ApiParam(name = "id", value = "监管单位id", required = true) @PathVariable("id") Long id) { + sysDepartmentService.deleteRegulatoryUnit(id); + return R.ok(); + } +} diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java index f6798de..0d34e09 100644 --- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java @@ -22,6 +22,7 @@ import com.sinata.system.service.ISysRoleService; import com.sinata.system.service.ISysUserService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.commons.lang3.ArrayUtils; @@ -47,7 +48,7 @@ * * @author ruoyi */ -@Api(tags = {"管理后台-用户管理"}) +@Api(tags = {"用户管理"}) @Validated @RestController @RequestMapping("/backend/system/user") @@ -117,9 +118,7 @@ /** * 批量修改账号状态 - * - * @param userIds - * @param status + * @param dto * @return */ @ApiOperation("批量修改账号状态") @@ -137,6 +136,7 @@ */ @ApiOperation("批量删除") @PostMapping("/delBatch") + @ApiImplicitParam(name = "userIds", value = "用户id列表", required = true, allowMultiple = true) public R<?> delBatch(@RequestBody List<Long> userIds) { userService.delBatch(userIds); return R.ok(); diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCheckoutRecordItem.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCheckoutRecordItem.java index e1f0db8..1e1d3ee 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCheckoutRecordItem.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwCheckoutRecordItem.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -22,9 +21,7 @@ @Setter @TableName("MW_CHECKOUT_RECORD_ITEM") @ApiModel(value = "MwCheckoutRecordItem对象", description = "暂存间出库记录项") -public class MwCheckoutRecordItem extends BaseModel { - - private static final long serialVersionUID = 1L; +public class MwCheckoutRecordItem { @ApiModelProperty("医废出库入库关联表") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java index ec6e807..30be243 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwDisposalRecordItem.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -22,9 +21,7 @@ @Setter @TableName("MW_DISPOSAL_RECORD_ITEM") @ApiModel(value = "MwDisposalRecordItem对象", description = "处置接收记录项") -public class MwDisposalRecordItem extends BaseModel { - - private static final long serialVersionUID = 1L; +public class MwDisposalRecordItem { @ApiModelProperty("处置接收记录项id") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecordItem.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecordItem.java index 1bcf506..1e53d2a 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecordItem.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecordItem.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -22,9 +21,7 @@ @Setter @TableName("MW_MICRO_EQUIPMENT_RECORD_ITEM") @ApiModel(value = "MwMicroEquipmentRecordItem对象", description = "设备使用记录项") -public class MwMicroEquipmentRecordItem extends BaseModel { - - private static final long serialVersionUID = 1L; +public class MwMicroEquipmentRecordItem { @ApiModelProperty("设备使用记录项") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java index 2b0444d..101148e 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoute.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -22,9 +21,7 @@ @Setter @TableName("MW_TRANSIT_ROUTE") @ApiModel(value = "MwTransitRoute对象", description = "转运线路") -public class MwTransitRoute extends BaseModel { - - private static final long serialVersionUID = 1L; +public class MwTransitRoute { @ApiModelProperty("转运线路id") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRouteCar.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRouteCar.java index f266b27..f350c3b 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRouteCar.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRouteCar.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -22,9 +21,7 @@ @Setter @TableName("MW_TRANSIT_ROUTE_CAR") @ApiModel(value = "MwTransitRouteCar对象", description = "转运线路车辆关系") -public class MwTransitRouteCar extends BaseModel { - - private static final long serialVersionUID = 1L; +public class MwTransitRouteCar { @ApiModelProperty("转运线路车辆关系id") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java index 081e087..6b11d64 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwTransitRoutePoints.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -22,9 +21,8 @@ @Setter @TableName("MW_TRANSIT_ROUTE_POINTS") @ApiModel(value = "MwTransitRoutePoints对象", description = "转运线路途经点") -public class MwTransitRoutePoints extends BaseModel { +public class MwTransitRoutePoints { - private static final long serialVersionUID = 1L; @ApiModelProperty("转运线路途经点id") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningConfigItem.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningConfigItem.java index f9bd63f..35c8563 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningConfigItem.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningConfigItem.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -22,9 +21,7 @@ @Setter @TableName("MW_WARNING_CONFIG_ITEM") @ApiModel(value = "MwWarningConfigItem对象", description = "预警配置项") -public class MwWarningConfigItem extends BaseModel { - - private static final long serialVersionUID = 1L; +public class MwWarningConfigItem { @ApiModelProperty("预警配置项id") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java index 051f11a..de08a27 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java @@ -82,5 +82,8 @@ @TableField("UNIFIED_SOCIAL_CREDIT_CODE") private String unifiedSocialCreditCode; - + @ApiModelProperty("区域") + @TableField("REGION") + private String region; + } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java index 4f2fdd3..dcc52a9 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.sinata.common.entity.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -24,9 +23,7 @@ @Setter @TableName("SYS_DEPARTMENT_INFO") @ApiModel(value = "SysDepartmentInfo对象", description = "单位信息") -public class SysDepartmentInfo extends BaseModel { - - private static final long serialVersionUID = 1L; +public class SysDepartmentInfo { @ApiModelProperty("主键id") @TableId(value = "ID", type = IdType.AUTO) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/DisposalUnitDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/DisposalUnitDTO.java new file mode 100644 index 0000000..2c5c92c --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/DisposalUnitDTO.java @@ -0,0 +1,34 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("处置单位数据传输对象") +public class DisposalUnitDTO extends RegulatoryUnitDTO { + + @ApiModelProperty("许可证图片") + private String disposalLicenseImage; + + @ApiModelProperty("日处理能力(kg)") + private BigDecimal dailyDisposalQuantity; + + @ApiModelProperty("年处理能力(kg)") + private BigDecimal yearlyDisposalQuantity; + + @ApiModelProperty("主要技术") + private String mainTechnology; + + @ApiModelProperty("医废最大存储量") + private BigDecimal maximumStorageCapacity; + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MedicalInstitutionDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MedicalInstitutionDTO.java new file mode 100644 index 0000000..08a849c --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MedicalInstitutionDTO.java @@ -0,0 +1,37 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("医疗机构数据传输对象") +public class MedicalInstitutionDTO extends RegulatoryUnitDTO { + + @ApiModelProperty("机构级别(数据字典id)") + private Long institutionLevel; + + @ApiModelProperty("机构性质(数据字典id)") + private Long institutionType; + + @ApiModelProperty("每日产废范围起") + private BigDecimal dailyMinWasteQuantity; + + @ApiModelProperty("每日产废范围止") + private BigDecimal dailyMaxWasteQuantity; + + @ApiModelProperty("每月产废范围起") + private BigDecimal monthlyMinWasteQuantity; + + @ApiModelProperty("每月产废范围止") + private BigDecimal monthlyMaxWasteQuantity; + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/RegulatoryUnitDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/RegulatoryUnitDTO.java new file mode 100644 index 0000000..218b50f --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/RegulatoryUnitDTO.java @@ -0,0 +1,53 @@ +package com.sinata.system.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Data +@ApiModel("监管单位数据传输对象") +public class RegulatoryUnitDTO { + + @ApiModelProperty(value = "id", notes = "新增不传,编辑必传") + private Long id; + + @ApiModelProperty("所属区域id") + @NotNull(message = "所属区域id不能为空") + private Long parentId; + + @ApiModelProperty("单位名称") + @NotBlank(message = "单位名称不能为空") + @Length(max = 20, message = "单位名称长度不能超过20个字符") + private String departmentName; + + @ApiModelProperty("统一社会信用代码") + private String unifiedSocialCreditCode; + + @ApiModelProperty("单位地址") + private String address; + + @ApiModelProperty("经度") + private Double longitude; + + @ApiModelProperty("纬度") + private Double latitude; + + @ApiModelProperty("联系人") + private String contactPerson; + + @ApiModelProperty("联系电话") + private String contactPhone; + + @ApiModelProperty("备注") + private String remark; + + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/DepartmentQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/DepartmentQuery.java new file mode 100644 index 0000000..a97d463 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/DepartmentQuery.java @@ -0,0 +1,32 @@ +package com.sinata.system.domain.query; + +import com.sinata.common.entity.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("单位查询数据传输对象") +public class DepartmentQuery extends BasePage { + + private static final long serialVersionUID = 3842694251110119850L; + + @ApiModelProperty("所属区域id") + private Long departmentId; + + @ApiModelProperty("单位名称") + private String departmentName; + + @ApiModelProperty("联系人") + private String contactPerson; + + @ApiModelProperty("联系电话") + private String contactPhone; + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/DisposalUnitVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/DisposalUnitVO.java new file mode 100644 index 0000000..0f78912 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/DisposalUnitVO.java @@ -0,0 +1,39 @@ +package com.sinata.system.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("处置单位视图对象") +public class DisposalUnitVO extends RegulatoryUnitVO { + + @ApiModelProperty("法人代表") + private String legalPerson; + + @ApiModelProperty("医疗废物处置许可证号") + private String disposalLicenseNumber; + + @ApiModelProperty("许可证图片") + private String disposalLicenseImage; + + @ApiModelProperty("日处理能力(kg)") + private BigDecimal dailyDisposalQuantity; + + @ApiModelProperty("年处理能力(kg)") + private BigDecimal yearlyDisposalQuantity; + + @ApiModelProperty("主要技术") + private String mainTechnology; + + @ApiModelProperty("医废最大存储量") + private BigDecimal maximumStorageCapacity; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalInstitutionVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalInstitutionVO.java new file mode 100644 index 0000000..817b1a3 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalInstitutionVO.java @@ -0,0 +1,47 @@ +package com.sinata.system.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("医疗机构视图对象") +public class MedicalInstitutionVO extends RegulatoryUnitVO { + + @ApiModelProperty("机构级别(数据字典id)") + private Long institutionLevel; + + @ApiModelProperty("机构级别") + private String institutionLevelStr; + + @ApiModelProperty("机构性质(数据字典id)") + private Long institutionType; + + @ApiModelProperty("机构性质") + private String institutionTypeStr; + + @ApiModelProperty("每日产废范围起") + private BigDecimal dailyMinWasteQuantity; + + @ApiModelProperty("每日产废范围止") + private BigDecimal dailyMaxWasteQuantity; + + @ApiModelProperty("每月产废范围起") + private BigDecimal monthlyMinWasteQuantity; + + @ApiModelProperty("每月产废范围止") + private BigDecimal monthlyMaxWasteQuantity; + + @ApiModelProperty("处置单位列表") + private List<DisposalUnitVO> disposalUnitList; + +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/RegulatoryUnitVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/RegulatoryUnitVO.java new file mode 100644 index 0000000..1797707 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/RegulatoryUnitVO.java @@ -0,0 +1,49 @@ +package com.sinata.system.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author mitao + * @date 2024/12/9 + */ +@Data +@ApiModel("监管单位视图对象") +public class RegulatoryUnitVO { + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("所属区域id") + private Long parentId; + + @ApiModelProperty("所属区域") + private String region; + + @ApiModelProperty("单位名称") + private String departmentName; + + @ApiModelProperty("联系人") + private String contactPerson; + + @ApiModelProperty("联系电话") + private String contactPhone; + + @ApiModelProperty("统一社会信用代码") + private String unifiedSocialCreditCode; + + @ApiModelProperty("经度") + private Double longitude; + + @ApiModelProperty("纬度") + private Double latitude; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty(value = "添加时间") + private Date createTime; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java index 83c57dd..56bdac4 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java @@ -1,9 +1,14 @@ package com.sinata.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sinata.system.domain.SysDepartment; +import com.sinata.system.domain.vo.DisposalUnitVO; +import com.sinata.system.domain.vo.MedicalInstitutionVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -16,10 +21,57 @@ @Mapper public interface SysDepartmentMapper extends BaseMapper<SysDepartment> { /** - * 根据类型查询用户区域列表 + * 查询用户区域列表 * @param userId - * @param type * @return */ SysDepartment getDepartmentByUserId(@Param("userId") Long userId); + + /** + * 根据类型查询机构列表 + * + * @param medicalInstitutionVOPage + * @param departmentName + * @param contactPerson + * @param contactPhone + * @param treeCode + * @return + */ + Page<MedicalInstitutionVO> pageMedicalList(Page<MedicalInstitutionVO> medicalInstitutionVOPage, @Param("departmentId") Long departmentId, @Param("departmentName") String departmentName, @Param("contactPerson") String contactPerson, @Param("contactPhone") String contactPhone, @Param("treeCode") String treeCode); + + /** + * 查询医疗机构详情 + * + * @param id + * @return + */ + MedicalInstitutionVO getMedicalDetailById(Long id); + + /** + * 根据treeCode查询处置单位列表 + * + * @param treeCode + * @return + */ + List<DisposalUnitVO> getDisposalUnitListByTreeCode(String treeCode); + + /** + * 处置单位分页列表 + * + * @param page + * @param departmentName + * @param contactPerson + * @param contactPhone + * @param treeCode + * @return + */ + Page<DisposalUnitVO> pageRegulatoryUnitList(Page<DisposalUnitVO> page, @Param("departmentId") Long departmentId, @Param("departmentName") String departmentName, @Param("contactPerson") String contactPerson, @Param("contactPhone") String contactPhone, @Param("treeCode") String treeCode); + + /** + * 处置单位详情 + * + * @param id + * @return + */ + DisposalUnitVO getDisposalUnitDetailById(@Param("id") Long id); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java index 5e9e5fe..fdab3b1 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java @@ -1,8 +1,16 @@ package com.sinata.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.sinata.common.entity.PageDTO; import com.sinata.system.domain.SysDepartment; +import com.sinata.system.domain.dto.DisposalUnitDTO; +import com.sinata.system.domain.dto.MedicalInstitutionDTO; +import com.sinata.system.domain.dto.RegulatoryUnitDTO; import com.sinata.system.domain.dto.SysDepartmentDTO; +import com.sinata.system.domain.query.DepartmentQuery; +import com.sinata.system.domain.vo.DisposalUnitVO; +import com.sinata.system.domain.vo.MedicalInstitutionVO; +import com.sinata.system.domain.vo.RegulatoryUnitVO; import com.sinata.system.domain.vo.SysDepartmentVO; import java.util.List; @@ -85,4 +93,125 @@ * @param id */ void deleteRegion(Long id); + + /** + * 医疗机构分页列表 + * + * @param query + * @return + */ + PageDTO<MedicalInstitutionVO> pageMedicalList(DepartmentQuery query); + + /** + * 新增医疗机构 + * + * @param dto + */ + void addMedical(MedicalInstitutionDTO dto); + + /** + * 编辑医疗机构 + * + * @param dto + * @return + */ + void editMedical(MedicalInstitutionDTO dto); + + /** + * 医疗机构详情 + * + * @param id + * @return + */ + MedicalInstitutionVO getMedicalDetailById(Long id); + + /** + * 根据父级区域id查询处置单位列表 + * + * @param id + * @return + */ + List<DisposalUnitVO> getDisposalUnitListByParentId(Long id); + + /** + * 删除医疗机构 + * + * @param id + */ + void deleteMedical(Long id); + + /** + * 处置单位分页列表 + * + * @param query + * @return + */ + PageDTO<DisposalUnitVO> pageDisposalUnitList(DepartmentQuery query); + + /** + * 新增处置单位 + * + * @param dto + */ + void addDisposalUnit(DisposalUnitDTO dto); + + /** + * 编辑医疗机构 + * + * @param dto + * @return + */ + void editDisposalUnit(DisposalUnitDTO dto); + + /** + * 处置单位详情 + * + * @param id + * @return + */ + DisposalUnitVO getDisposalUnitDetailById(Long id); + + /** + * 删除处置单位 + * + * @param id + */ + void deleteDisposalUnit(Long id); + + /** + * 监管单位分页列表 + * + * @param query + * @return + */ + PageDTO<RegulatoryUnitVO> pageRegulatoryUnitList(DepartmentQuery query); + + /** + * 新增监管单位 + * + * @param dto + */ + void addRegulatoryUnit(RegulatoryUnitDTO dto); + + /** + * 编辑监管单位 + * + * @param dto + */ + void editRegulatoryUnit(RegulatoryUnitDTO dto); + + /** + * 监管单位详情 + * + * @param id + * @return + */ + RegulatoryUnitVO getRegulatoryUnitDetailById(Long id); + + /** + * 删除监管单位 + * + * @param id + */ + void deleteRegulatoryUnit(Long id); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java index 9ad50a5..a1a5eed 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java @@ -1,25 +1,37 @@ package com.sinata.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sinata.common.constant.CacheConstants; +import com.sinata.common.entity.PageDTO; import com.sinata.common.exception.ServiceException; import com.sinata.common.utils.BeanUtils; import com.sinata.common.utils.CollUtils; import com.sinata.common.utils.SecurityUtils; import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.SysDepartment; +import com.sinata.system.domain.SysDepartmentInfo; import com.sinata.system.domain.SysUserDepartment; +import com.sinata.system.domain.dto.DisposalUnitDTO; +import com.sinata.system.domain.dto.MedicalInstitutionDTO; +import com.sinata.system.domain.dto.RegulatoryUnitDTO; import com.sinata.system.domain.dto.SysDepartmentDTO; +import com.sinata.system.domain.query.DepartmentQuery; +import com.sinata.system.domain.vo.DisposalUnitVO; +import com.sinata.system.domain.vo.MedicalInstitutionVO; +import com.sinata.system.domain.vo.RegulatoryUnitVO; import com.sinata.system.domain.vo.SysDepartmentVO; import com.sinata.system.enums.DepartmentEnum; import com.sinata.system.mapper.SysDepartmentMapper; +import com.sinata.system.service.SysDepartmentInfoService; import com.sinata.system.service.SysDepartmentService; import com.sinata.system.service.SysUserDepartmentService; import lombok.RequiredArgsConstructor; import org.jetbrains.annotations.NotNull; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Arrays; @@ -44,6 +56,7 @@ public class SysDepartmentServiceImpl extends ServiceImpl<SysDepartmentMapper, SysDepartment> implements SysDepartmentService { private final SysUserDepartmentService sysUserDepartmentService; private final RedisTemplate<Object, Object> redisTemplate; + private final SysDepartmentInfoService sysDepartmentInfoService; /** * 获取区域树 * @return @@ -340,4 +353,419 @@ } removeById(id); } + + /** + * 医疗机构分页列表 + * + * @param query + * @return + */ + @Override + public PageDTO<MedicalInstitutionVO> pageMedicalList(DepartmentQuery query) { + String treeCode = ""; + if (Objects.isNull(query.getDepartmentId())) { + SysDepartment myDepartment = getMyDepartment(); + if (Objects.nonNull(myDepartment)) { + treeCode = myDepartment.getTreeCode(); + } + } + Page<MedicalInstitutionVO> page = baseMapper.pageMedicalList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); + return PageDTO.of(page); + } + + /** + * 新增医疗机构 + * + * @param dto + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void addMedical(MedicalInstitutionDTO dto) { + SysDepartment currentDepartment = getMyDepartment(); + if (Objects.isNull(currentDepartment)) { + throw new ServiceException("无操作权限"); + } + SysDepartment parent = this.getById(dto.getParentId()); + if (Objects.isNull(parent)) { + throw new ServiceException("找不到对应父级组织"); + } + if (!parent.getTreeCode().startsWith(currentDepartment.getTreeCode())) { + throw new ServiceException("无操作权限"); + } + Long count = this.lambdaQuery().eq(SysDepartment::getDepartmentName, dto.getDepartmentName()) + .eq(SysDepartment::getOrgType, DepartmentEnum.MEDICAL_INSTITUTION.getCode()) + .count(); + if (count > 0) { + throw new ServiceException("医疗机构已存在"); + } + SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); + department.setTreeCode(getTreeCode(parent.getId())); + department.setOrgCode(getOrgCode(parent.getId(), DepartmentEnum.MEDICAL_INSTITUTION.getCode())); + department.setOrgType(DepartmentEnum.MEDICAL_INSTITUTION.getCode()); + //查询父级完整区域 + String region = getRegionName(parent); + department.setRegion(region); + save(department); + SysDepartmentInfo sysDepartmentInfo = BeanUtils.copyBean(dto, SysDepartmentInfo.class); + sysDepartmentInfo.setDepartmentId(department.getId()); + sysDepartmentInfoService.save(sysDepartmentInfo); + } + + @Override + public List<DisposalUnitVO> getDisposalUnitListByParentId(Long id) { + List<DisposalUnitVO> disposalUnitList = null; + SysDepartment parent = getById(id); + if (Objects.nonNull(parent)) { + //查询处置单位 + disposalUnitList = baseMapper.getDisposalUnitListByTreeCode(parent.getTreeCode()); + } + return disposalUnitList; + } + + /** + * 获取完成区域 + * + * @param department + * @return + */ + private String getRegionName(SysDepartment department) { + String region = department.getDepartmentName(); + SysDepartment sysDepartment = this.lambdaQuery().eq(SysDepartment::getId, department.getParentId()).ne(SysDepartment::getId, -1).one(); + if (Objects.nonNull(sysDepartment)) { + region = getRegionName(sysDepartment) + region; + } + return region; + } + + /** + * 编辑医疗机构 + * + * @param dto + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void editMedical(MedicalInstitutionDTO dto) { + if (Objects.isNull(dto.getId())) { + throw new ServiceException("id不能为空"); + } + SysDepartment sysDepartment = getById(dto.getId()); + if (Objects.isNull(sysDepartment)) { + throw new ServiceException("医疗机构不存在"); + } + SysDepartment currentDepartment = getMyDepartment(); + if (Objects.isNull(currentDepartment)) { + throw new ServiceException("无操作权限"); + } + + SysDepartment parent = this.getById(dto.getParentId()); + if (Objects.isNull(parent)) { + throw new ServiceException("找不到对应父级组织"); + } + if (!parent.getTreeCode().startsWith(currentDepartment.getTreeCode())) { + throw new ServiceException("无操作权限"); + } + Long count = this.lambdaQuery().eq(SysDepartment::getDepartmentName, dto.getDepartmentName()) + .eq(SysDepartment::getOrgType, DepartmentEnum.MEDICAL_INSTITUTION.getCode()).ne(SysDepartment::getId, dto.getId()) + .count(); + if (count > 0) { + throw new ServiceException("机构已存在"); + } + SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); + if (!department.getParentId().equals(sysDepartment.getParentId())) { + department.setTreeCode(getTreeCode(parent.getId())); + //查询父级完整区域 + String region = getRegionName(parent); + department.setRegion(region); + } + updateById(department); + sysDepartmentInfoService.lambdaUpdate().eq(SysDepartmentInfo::getDepartmentId, sysDepartment.getId()).remove(); + SysDepartmentInfo sysDepartmentInfo = BeanUtils.copyBean(dto, SysDepartmentInfo.class); + sysDepartmentInfo.setDepartmentId(department.getId()); + sysDepartmentInfo.setId(null); + sysDepartmentInfoService.save(sysDepartmentInfo); + } + + /** + * 医疗机构详情 + * + * @param id + * @return + */ + @Override + public MedicalInstitutionVO getMedicalDetailById(Long id) { + MedicalInstitutionVO vo = baseMapper.getMedicalDetailById(id); + List<DisposalUnitVO> disposalUnitList = getDisposalUnitListByParentId(vo.getParentId()); + vo.setDisposalUnitList(disposalUnitList); + return vo; + } + + /** + * 删除医疗机构 + * + * @param id + */ + @Override + public void deleteMedical(Long id) { + Long count = sysUserDepartmentService.lambdaQuery().eq(SysUserDepartment::getDepartmentId, id).count(); + if (count > 0) { + throw new ServiceException("该医疗机构已存在用户,无法删除"); + } + removeById(id); + } + + /** + * 处置单位分页列表 + * + * @param query + * @return + */ + @Override + public PageDTO<DisposalUnitVO> pageDisposalUnitList(DepartmentQuery query) { + String treeCode = ""; + if (Objects.isNull(query.getDepartmentId())) { + SysDepartment myDepartment = getMyDepartment(); + if (Objects.nonNull(myDepartment)) { + treeCode = myDepartment.getTreeCode(); + } + } + Page<DisposalUnitVO> page = baseMapper.pageRegulatoryUnitList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); + return PageDTO.of(page); + } + + /** + * 新增处置单位 + * + * @param dto + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void addDisposalUnit(DisposalUnitDTO dto) { + SysDepartment currentDepartment = getMyDepartment(); + if (Objects.isNull(currentDepartment)) { + throw new ServiceException("无操作权限"); + } + SysDepartment parent = this.getById(dto.getParentId()); + if (Objects.isNull(parent)) { + throw new ServiceException("找不到对应父级组织"); + } + if (!parent.getTreeCode().startsWith(currentDepartment.getTreeCode())) { + throw new ServiceException("无操作权限"); + } + Long count = this.lambdaQuery().eq(SysDepartment::getDepartmentName, dto.getDepartmentName()) + .eq(SysDepartment::getOrgType, DepartmentEnum.DISPOSAL_UNIT.getCode()) + .count(); + if (count > 0) { + throw new ServiceException("处置单位已存在"); + } + SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); + department.setTreeCode(getTreeCode(parent.getId())); + department.setOrgCode(getOrgCode(parent.getId(), DepartmentEnum.DISPOSAL_UNIT.getCode())); + department.setOrgType(DepartmentEnum.DISPOSAL_UNIT.getCode()); + //查询父级完整区域 + String region = getRegionName(parent); + department.setRegion(region); + save(department); + SysDepartmentInfo sysDepartmentInfo = BeanUtils.copyBean(dto, SysDepartmentInfo.class); + sysDepartmentInfo.setDepartmentId(department.getId()); + sysDepartmentInfoService.save(sysDepartmentInfo); + } + + /** + * 编辑处置单位 + * + * @param dto + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void editDisposalUnit(DisposalUnitDTO dto) { + if (Objects.isNull(dto.getId())) { + throw new ServiceException("id不能为空"); + } + SysDepartment sysDepartment = getById(dto.getId()); + if (Objects.isNull(sysDepartment)) { + throw new ServiceException("处置单位不存在"); + } + SysDepartment currentDepartment = getMyDepartment(); + if (Objects.isNull(currentDepartment)) { + throw new ServiceException("无操作权限"); + } + SysDepartment parent = this.getById(dto.getParentId()); + if (Objects.isNull(parent)) { + throw new ServiceException("找不到对应父级组织"); + } + if (!parent.getTreeCode().startsWith(currentDepartment.getTreeCode())) { + throw new ServiceException("无操作权限"); + } + Long count = this.lambdaQuery().eq(SysDepartment::getDepartmentName, dto.getDepartmentName()) + .eq(SysDepartment::getOrgType, DepartmentEnum.DISPOSAL_UNIT.getCode()).ne(SysDepartment::getId, dto.getId()) + .count(); + if (count > 0) { + throw new ServiceException("处置单位已存在"); + } + SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); + + if (!department.getParentId().equals(sysDepartment.getParentId())) { + department.setTreeCode(getTreeCode(parent.getId())); + //查询父级完整区域 + String region = getRegionName(parent); + department.setRegion(region); + } + updateById(department); + sysDepartmentInfoService.lambdaUpdate().eq(SysDepartmentInfo::getDepartmentId, sysDepartment.getId()).remove(); + SysDepartmentInfo sysDepartmentInfo = BeanUtils.copyBean(dto, SysDepartmentInfo.class); + sysDepartmentInfo.setId(null); + sysDepartmentInfo.setDepartmentId(department.getId()); + sysDepartmentInfoService.save(sysDepartmentInfo); + } + + /** + * 处置单位详情 + * + * @param id + * @return + */ + @Override + public DisposalUnitVO getDisposalUnitDetailById(Long id) { + return baseMapper.getDisposalUnitDetailById(id); + } + + @Override + public void deleteDisposalUnit(Long id) { + Long count = sysUserDepartmentService.lambdaQuery().eq(SysUserDepartment::getDepartmentId, id).count(); + if (count > 0) { + throw new ServiceException("该处置单位构已存在用户,无法删除"); + } + removeById(id); + } + + /** + * 监管单位分页列表 + * + * @param query + * @return + */ + @Override + public PageDTO<RegulatoryUnitVO> pageRegulatoryUnitList(DepartmentQuery query) { + String treeCode = ""; + if (Objects.isNull(query.getDepartmentId())) { + SysDepartment myDepartment = getMyDepartment(); + if (Objects.nonNull(myDepartment)) { + treeCode = myDepartment.getTreeCode(); + } + } + Page<SysDepartment> page = this.lambdaQuery().eq(Objects.nonNull(query.getDepartmentId()), SysDepartment::getParentId, query.getDepartmentId()) + .likeRight(StringUtils.isNotBlank(treeCode), SysDepartment::getTreeCode, treeCode) + .like(StringUtils.isNotEmpty(query.getDepartmentName()), SysDepartment::getDepartmentName, query.getDepartmentName()) + .like(StringUtils.isNotBlank(query.getContactPerson()), SysDepartment::getContactPerson, query.getContactPerson()) + .like(StringUtils.isNotBlank(query.getContactPhone()), SysDepartment::getContactPhone, query.getContactPhone()) + .page(new Page<>(query.getPageCurr(), query.getPageSize())); + return PageDTO.of(page, RegulatoryUnitVO.class); + } + + /** + * 新增监管单位 + * + * @param dto + */ + @Override + public void addRegulatoryUnit(RegulatoryUnitDTO dto) { + SysDepartment currentDepartment = getMyDepartment(); + if (Objects.isNull(currentDepartment)) { + throw new ServiceException("无操作权限"); + } + SysDepartment parent = this.getById(dto.getParentId()); + if (Objects.isNull(parent)) { + throw new ServiceException("找不到对应父级组织"); + } + if (!parent.getTreeCode().startsWith(currentDepartment.getTreeCode())) { + throw new ServiceException("无操作权限"); + } + Long count = this.lambdaQuery().eq(SysDepartment::getDepartmentName, dto.getDepartmentName()) + .eq(SysDepartment::getOrgType, DepartmentEnum.REGULATORY_UNIT.getCode()) + .count(); + if (count > 0) { + throw new ServiceException("监管单位已存在"); + } + SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); + department.setTreeCode(getTreeCode(parent.getId())); + department.setOrgCode(getOrgCode(parent.getId(), DepartmentEnum.REGULATORY_UNIT.getCode())); + department.setOrgType(DepartmentEnum.REGULATORY_UNIT.getCode()); + //查询父级完整区域 + String region = getRegionName(parent); + department.setRegion(region); + save(department); + } + + /** + * 编辑监管单位 + * + * @param dto + * @return + */ + @Override + public void editRegulatoryUnit(RegulatoryUnitDTO dto) { + if (Objects.isNull(dto.getId())) { + throw new ServiceException("id不能为空"); + } + SysDepartment sysDepartment = getById(dto.getId()); + if (Objects.isNull(sysDepartment)) { + throw new ServiceException("监管单位不存在"); + } + SysDepartment currentDepartment = getMyDepartment(); + if (Objects.isNull(currentDepartment)) { + throw new ServiceException("无操作权限"); + } + SysDepartment parent = this.getById(dto.getParentId()); + if (Objects.isNull(parent)) { + throw new ServiceException("找不到对应父级组织"); + } + if (!parent.getTreeCode().startsWith(currentDepartment.getTreeCode())) { + throw new ServiceException("无操作权限"); + } + Long count = this.lambdaQuery().eq(SysDepartment::getDepartmentName, dto.getDepartmentName()) + .eq(SysDepartment::getOrgType, DepartmentEnum.REGULATORY_UNIT.getCode()).ne(SysDepartment::getId, dto.getId()) + .count(); + if (count > 0) { + throw new ServiceException("监管单位已存在"); + } + SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); + + if (!department.getParentId().equals(sysDepartment.getParentId())) { + department.setTreeCode(getTreeCode(parent.getId())); + //查询父级完整区域 + String region = getRegionName(parent); + department.setRegion(region); + } + updateById(department); + } + + /** + * 监管单位详情 + * + * @param id + * @return + */ + @Override + public RegulatoryUnitVO getRegulatoryUnitDetailById(Long id) { + SysDepartment department = this.lambdaQuery().eq(SysDepartment::getId, id).eq(SysDepartment::getOrgType, DepartmentEnum.REGULATORY_UNIT.getCode()).one(); + if (Objects.nonNull(department)) { + return BeanUtils.copyBean(department, RegulatoryUnitVO.class); + } + return null; + } + + /** + * 删除监管单位 + * + * @param id + */ + @Override + public void deleteRegulatoryUnit(Long id) { + Long count = sysUserDepartmentService.lambdaQuery().eq(SysUserDepartment::getDepartmentId, id).count(); + if (count > 0) { + throw new ServiceException("该监管单位构已存在用户,无法删除"); + } + removeById(id); + } } diff --git a/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml index 2b87d90..a8d6ab1 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml +++ b/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml @@ -41,5 +41,160 @@ </where> LIMIT 1 </select> + <select id="pageMedicalList" resultType="com.sinata.system.domain.vo.MedicalInstitutionVO"> + SELECT sd.*, + sdi.DEPARTMENT_ID, + sdi.INSTITUTION_LEVEL, + sdi.INSTITUTION_TYPE, + sdi.DAILY_MIN_WASTE_QUANTITY, + sdi.DAILY_MAX_WASTE_QUANTITY, + sdi.MONTHLY_MIN_WASTE_QUANTITY, + sdi.MONTHLY_MAX_WASTE_QUANTITY, + sdi.DISPOSAL_LICENSE_NUMBER, + sdi.DISPOSAL_LICENSE_IMAGE, + sdi.DAILY_DISPOSAL_QUANTITY, + sdi.YEARLY_DISPOSAL_QUANTITY, + sdi.MAIN_TECHNOLOGY, + sdi.MAXIMUM_STORAGE_CAPACITY, + sdd.DICT_LABEL AS INSTITUTION_LEVEL_STR,sdd2.DICT_LABEL AS INSTITUTION_TYPE_STR + FROM SYS_DEPARTMENT sd + LEFT JOIN SYS_DEPARTMENT_INFO sdi + ON sd.id = sdi.DEPARTMENT_ID + LEFT JOIN SYS_DICT_DATA sdd + ON sdi.INSTITUTION_LEVEL = sdd.DICT_CODE + LEFT JOIN SYS_DICT_DATA sdd2 + ON sdi.INSTITUTION_TYPE = sdd2.DICT_CODE + <where> + sd.ORG_TYPE = 2 + <if test="departmentId != null"> + AND sd.PARENT_ID = #{departmentId} + </if> + <if test="departmentName != null and departmentName != ''"> + AND sd.DEPARTMENT_NAME LIKE CONCAT('%', #{departmentName}, '%') + </if> + <if test="contactPerson != null and contactPerson != ''"> + AND sd.CONTACT_PERSON LIKE CONCAT('%', #{contactPerson}, '%') + </if> + <if test="contactPhone != null and contactPhone != ''"> + AND sd.CONTACT_PHONE LIKE CONCAT('%', #{contactPhone}, '%') + </if> + <if test="treeCode != null and treeCode != ''"> + AND sd.TREE_CODE LIKE CONCAT(#{treeCode}, '%') + </if> + </where> + ORDER BY sd.CREATE_TIME DESC + </select> + <select id="getMedicalDetailById" resultType="com.sinata.system.domain.vo.MedicalInstitutionVO" + parameterType="java.lang.Long"> + SELECT sd.*, + sdi.DEPARTMENT_ID, + sdi.INSTITUTION_LEVEL, + sdi.INSTITUTION_TYPE, + sdi.DAILY_MIN_WASTE_QUANTITY, + sdi.DAILY_MAX_WASTE_QUANTITY, + sdi.MONTHLY_MIN_WASTE_QUANTITY, + sdi.MONTHLY_MAX_WASTE_QUANTITY, + sdi.DISPOSAL_LICENSE_NUMBER, + sdi.DISPOSAL_LICENSE_IMAGE, + sdi.DAILY_DISPOSAL_QUANTITY, + sdi.YEARLY_DISPOSAL_QUANTITY, + sdi.MAIN_TECHNOLOGY, + sdi.MAXIMUM_STORAGE_CAPACITY, + sdd.DICT_LABEL AS INSTITUTION_LEVEL_STR,sdd2.DICT_LABEL AS INSTITUTION_TYPE_STR + FROM SYS_DEPARTMENT sd + LEFT JOIN SYS_DEPARTMENT_INFO sdi + ON sd.id = sdi.DEPARTMENT_ID + LEFT JOIN SYS_DICT_DATA sdd + ON sdi.INSTITUTION_LEVEL = sdd.DICT_CODE + LEFT JOIN SYS_DICT_DATA sdd2 + ON sdi.INSTITUTION_TYPE = sdd2.DICT_CODE + <where> + sd.ORG_TYPE = 2 AND sd.id = #{id} + </where> + </select> + <select id="getDisposalUnitListByTreeCode" resultType="com.sinata.system.domain.vo.DisposalUnitVO" + parameterType="java.lang.String"> + SELECT sd.*, + sdi.DEPARTMENT_ID, + sdi.INSTITUTION_LEVEL, + sdi.INSTITUTION_TYPE, + sdi.DAILY_MIN_WASTE_QUANTITY, + sdi.DAILY_MAX_WASTE_QUANTITY, + sdi.MONTHLY_MIN_WASTE_QUANTITY, + sdi.MONTHLY_MAX_WASTE_QUANTITY, + sdi.DISPOSAL_LICENSE_NUMBER, + sdi.DISPOSAL_LICENSE_IMAGE, + sdi.DAILY_DISPOSAL_QUANTITY, + sdi.YEARLY_DISPOSAL_QUANTITY, + sdi.MAIN_TECHNOLOGY, + sdi.MAXIMUM_STORAGE_CAPACITY + FROM SYS_DEPARTMENT sd + LEFT JOIN SYS_DEPARTMENT_INFO sdi + ON sd.id = sdi.DEPARTMENT_ID + <where> + sd.ORG_TYPE = 3 AND sd.TREE_CODE LIKE CONCAT(#{treeCode}, '%') + </where> + </select> + <select id="pageRegulatoryUnitList" resultType="com.sinata.system.domain.vo.DisposalUnitVO"> + SELECT sd.*, + sdi.DEPARTMENT_ID, + sdi.INSTITUTION_LEVEL, + sdi.INSTITUTION_TYPE, + sdi.DAILY_MIN_WASTE_QUANTITY, + sdi.DAILY_MAX_WASTE_QUANTITY, + sdi.MONTHLY_MIN_WASTE_QUANTITY, + sdi.MONTHLY_MAX_WASTE_QUANTITY, + sdi.DISPOSAL_LICENSE_NUMBER, + sdi.DISPOSAL_LICENSE_IMAGE, + sdi.DAILY_DISPOSAL_QUANTITY, + sdi.YEARLY_DISPOSAL_QUANTITY, + sdi.MAIN_TECHNOLOGY, + sdi.MAXIMUM_STORAGE_CAPACITY + FROM SYS_DEPARTMENT sd + LEFT JOIN SYS_DEPARTMENT_INFO sdi + ON sd.id = sdi.DEPARTMENT_ID + <where> + sd.ORG_TYPE = 3 + <if test="departmentId != null"> + AND sd.PARENT_ID = #{departmentId} + </if> + <if test="departmentName != null and departmentName != ''"> + AND sd.DEPARTMENT_NAME LIKE CONCAT('%', #{departmentName}, '%') + </if> + <if test="contactPerson != null and contactPerson != ''"> + AND sd.CONTACT_PERSON LIKE CONCAT('%', #{contactPerson}, '%') + </if> + <if test="contactPhone != null and contactPhone != ''"> + AND sd.CONTACT_PHONE LIKE CONCAT('%', #{contactPhone}, '%') + </if> + <if test="treeCode != null and treeCode != ''"> + AND sd.TREE_CODE LIKE CONCAT(#{treeCode}, '%') + </if> + </where> + </select> + <select id="getDisposalUnitDetailById" resultType="com.sinata.system.domain.vo.DisposalUnitVO" + parameterType="java.lang.Long"> + SELECT sd.*, + sdi.DEPARTMENT_ID, + sdi.INSTITUTION_LEVEL, + sdi.INSTITUTION_TYPE, + sdi.DAILY_MIN_WASTE_QUANTITY, + sdi.DAILY_MAX_WASTE_QUANTITY, + sdi.MONTHLY_MIN_WASTE_QUANTITY, + sdi.MONTHLY_MAX_WASTE_QUANTITY, + sdi.DISPOSAL_LICENSE_NUMBER, + sdi.DISPOSAL_LICENSE_IMAGE, + sdi.DAILY_DISPOSAL_QUANTITY, + sdi.YEARLY_DISPOSAL_QUANTITY, + sdi.MAIN_TECHNOLOGY, + sdi.MAXIMUM_STORAGE_CAPACITY + FROM SYS_DEPARTMENT sd + LEFT JOIN SYS_DEPARTMENT_INFO sdi + ON sd.id = sdi.DEPARTMENT_ID + <where> + sd.id = #{id} + </where> + </select> + </mapper> -- Gitblit v1.7.1