From 1b56b32f633566ecb29bd0915657f6406225172f Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Mon, 26 Feb 2024 15:30:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E6=9E=84=E4=BB=A3=E7=A0=81=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xinelu/common/constant/Constants.java | 5 + .../com/xinelu/common/utils/DateUtils.java | 44 +++ .../utils/codes/GenerateSystemCodeUtil.java | 83 ++++++ .../controller/agency/AgencyController.java | 99 +++++++ .../AgencyCategoryController.java | 95 ++++++ .../xinelu/manage/domain/agency/Agency.java | 193 +++++++++++++ .../domain/agencycategory/AgencyCategory.java | 92 ++++++ .../manage/mapper/agency/AgencyMapper.java | 63 ++++ .../agencycategory/AgencyCategoryMapper.java | 62 ++++ .../manage/service/agency/IAgencyService.java | 70 +++++ .../agency/impl/AgencyServiceImpl.java | 157 ++++++++++ .../IAgencyCategoryService.java | 62 ++++ .../impl/AgencyCategoryServiceImpl.java | 102 +++++++ .../com/xinelu/manage/vo/agency/AgencyVO.java | 75 +++++ .../mapper/manage/agency/AgencyMapper.xml | 272 ++++++++++++++++++ 15 files changed, 1474 insertions(+) create mode 100644 postdischarge-common/src/main/java/com/xinelu/common/utils/codes/GenerateSystemCodeUtil.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/controller/agency/AgencyController.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/controller/agencycategory/AgencyCategoryController.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/domain/agency/Agency.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/domain/agencycategory/AgencyCategory.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agency/AgencyMapper.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agencycategory/AgencyCategoryMapper.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/IAgencyService.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/impl/AgencyServiceImpl.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/IAgencyCategoryService.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/impl/AgencyCategoryServiceImpl.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/agency/AgencyVO.java create mode 100644 postdischarge-manage/src/main/resources/mapper/manage/agency/AgencyMapper.xml diff --git a/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java b/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java index 0be737ca..9c63c487 100644 --- a/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java +++ b/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java @@ -133,4 +133,9 @@ public class Constants { */ public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", "org.springframework", "org.apache", "com.xinelu.common.utils.file"}; + + /** + * 机构类别编码前缀 + */ + public static final String CATEGORY_CODE = "CC"; } diff --git a/postdischarge-common/src/main/java/com/xinelu/common/utils/DateUtils.java b/postdischarge-common/src/main/java/com/xinelu/common/utils/DateUtils.java index 9c7af8da..7e8b39de 100644 --- a/postdischarge-common/src/main/java/com/xinelu/common/utils/DateUtils.java +++ b/postdischarge-common/src/main/java/com/xinelu/common/utils/DateUtils.java @@ -6,7 +6,10 @@ import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; import java.util.Date; +import java.util.Objects; /** * 时间工具类 @@ -157,4 +160,45 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } + + /** + * 转换日期到字符串 + * + * @param date LocalDate + * @param pattern 解析格式 + * @return 日期字符串 + * @Author jihan + */ + public static String formatDateToString(LocalDate date, String pattern) { + if (Objects.isNull(date)) { + throw new IllegalArgumentException("date time is null."); + } + return date.format(StringUtils.isNotBlank(pattern) ? DateTimeFormatter.ofPattern(pattern) : DateTimeFormatter.ofPattern("yyyy-MM-dd")); + } + + /** + * 获取指定日期的结束时间 + * + * @param date 指定日期,如果为null,默认为当天 + * @return 结束日期 + * @author jihan + */ + public static LocalDateTime end(LocalDate date) { + return LocalDateTime.of(null == date ? LocalDate.now() : date, LocalTime.MAX); + } + + /** + * 计算两个时间的分钟差 + * + * @param beginTime 开始时间 + * @param endTime 结束时间可以为null, 如果为null则表示now + * @return 分钟差值 + * @author jihan + */ + public static long differenceMinutes(LocalDateTime beginTime, LocalDateTime endTime) { + if (null == beginTime) { + throw new IllegalArgumentException("开始时间不能为空"); + } + return ChronoUnit.MINUTES.between(beginTime, null == endTime ? LocalDateTime.now() : endTime); + } } diff --git a/postdischarge-common/src/main/java/com/xinelu/common/utils/codes/GenerateSystemCodeUtil.java b/postdischarge-common/src/main/java/com/xinelu/common/utils/codes/GenerateSystemCodeUtil.java new file mode 100644 index 00000000..87131f01 --- /dev/null +++ b/postdischarge-common/src/main/java/com/xinelu/common/utils/codes/GenerateSystemCodeUtil.java @@ -0,0 +1,83 @@ +package com.xinelu.common.utils.codes; + + +import com.xinelu.common.utils.DateUtils; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DecimalFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.temporal.TemporalAdjusters; +import java.util.concurrent.TimeUnit; + +/** + * @Description 编号工具类 + * @Author 纪寒 + * @Date 2022-08-02 18:13:55 + * @Version 1.0 + */ +@Component +public class GenerateSystemCodeUtil { + + @Resource + private RedisTemplate redisTemplate; + + /** + * 使用Redis生成唯一不重复的编码 + * + * @param prefixCode 编号前缀 + * @return 编号信息 MMdd + */ + public String generatePatientCode(String prefixCode) { + DecimalFormat df = new DecimalFormat("0000"); + String dateFmt = DateUtils.formatDateToString(LocalDate.now(), "MMdd"); + Long maxVal = redisTemplate.opsForValue().increment(prefixCode, 1); + //redis有效期开始时间 + LocalDateTime now = LocalDateTime.now(); + //redis有效期结束时间 + LocalDateTime end = DateUtils.end(LocalDate.now()); + redisTemplate.expire(prefixCode, DateUtils.differenceMinutes(now, end), TimeUnit.MINUTES); + return dateFmt + df.format(maxVal); + } + + + /** + * 使用Redis生成唯一不重复的编码 + * + * @param prefixCode 编号前缀 + * @return 编号信息 yyyyMMdd + */ + public String generateSystemCode(String prefixCode) { + DecimalFormat df = new DecimalFormat("0000"); + String dateFmt = DateUtils.formatDateToString(LocalDate.now(), "yyyyMMdd"); + Long maxVal = redisTemplate.opsForValue().increment(prefixCode, 1); + //redis有效期开始时间 + LocalDateTime now = LocalDateTime.now(); + //redis有效期结束时间 + LocalDateTime end = DateUtils.end(LocalDate.now()); + redisTemplate.expire(prefixCode, DateUtils.differenceMinutes(now, end), TimeUnit.MINUTES); + return dateFmt + df.format(maxVal); + + + } + + /** + * 生成科室编码 + * + * @param prefixCode 科室名称前缀 + * @return 科室编码 + */ + public String generateDepartCode(String prefixCode) { + DecimalFormat df = new DecimalFormat("00000"); + String dateFmt = DateUtils.formatDateToString(LocalDate.now(), "yyyy"); + Long maxVal = redisTemplate.opsForValue().increment(prefixCode, 1); + //redis有效期开始时间 + LocalDateTime now = LocalDateTime.now(); + //redis有效期结束时间 + LocalDateTime end = DateUtils.end(LocalDate.now().plusYears(0).with(TemporalAdjusters.lastDayOfYear())); + redisTemplate.expire(prefixCode, DateUtils.differenceMinutes(now, end), TimeUnit.MINUTES); + return dateFmt + df.format(maxVal); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/agency/AgencyController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/agency/AgencyController.java new file mode 100644 index 00000000..f282e77d --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/agency/AgencyController.java @@ -0,0 +1,99 @@ +package com.xinelu.manage.controller.agency; + +import com.xinelu.common.annotation.Log; +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.enums.BusinessType; +import com.xinelu.common.utils.poi.ExcelUtil; +import com.xinelu.manage.domain.agency.Agency; +import com.xinelu.manage.service.agency.IAgencyService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 机构信息Controller + * + * @author xinelu + * @date 2024-02-26 + */ +@RestController +@RequestMapping("/system/agency") +public class AgencyController extends BaseController { + @Resource + private IAgencyService agencyService; + + /** + * 查询机构信息列表 + */ + @PreAuthorize("@ss.hasPermi('system:agency:list')") + @GetMapping("/list") + public TableDataInfo list(Agency agency) { + startPage(); + List list = agencyService.selectAgencyList(agency); + return getDataTable(list); + } + + /** + * 导出机构信息列表 + */ + @PreAuthorize("@ss.hasPermi('system:agency:export')") + @Log(title = "机构信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, Agency agency) { + List list = agencyService.selectAgencyList(agency); + ExcelUtil util = new ExcelUtil(Agency.class); + util.exportExcel(response, list, "机构信息数据"); + } + + /** + * 获取机构信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:agency:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(agencyService.selectAgencyById(id)); + } + + /** + * 新增机构信息 + */ + @PreAuthorize("@ss.hasPermi('system:agency:add')") + @Log(title = "机构信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody Agency agency) { + return toAjax(agencyService.insertAgency(agency)); + } + + /** + * 修改机构信息 + */ + @PreAuthorize("@ss.hasPermi('system:agency:edit')") + @Log(title = "机构信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody Agency agency) { + return toAjax(agencyService.updateAgency(agency)); + } + + /** + * 删除机构信息 + */ + @PreAuthorize("@ss.hasPermi('system:agency:remove')") + @Log(title = "机构信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(agencyService.deleteAgencyByIds(ids)); + } + + /** + * 查询机构信息列表 - 树图 + */ + @GetMapping("/agencyList") + public AjaxResult agencyList() { + return AjaxResult.success(agencyService.agencyList()); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/agencycategory/AgencyCategoryController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/agencycategory/AgencyCategoryController.java new file mode 100644 index 00000000..abd1c708 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/agencycategory/AgencyCategoryController.java @@ -0,0 +1,95 @@ +package com.xinelu.manage.controller.agencycategory; + +import com.xinelu.common.annotation.Log; +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.enums.BusinessType; +import com.xinelu.common.utils.poi.ExcelUtil; +import com.xinelu.manage.domain.agencycategory.AgencyCategory; +import com.xinelu.manage.service.agencycategory.IAgencyCategoryService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Objects; + +/** + * 机构类别Controller + * + * @author xinelu + * @date 2024-02-26 + */ +@RestController +@RequestMapping("/system/agencyCategory") +public class AgencyCategoryController extends BaseController { + @Resource + private IAgencyCategoryService agencyCategoryService; + + /** + * 查询机构类别列表 + */ + @PreAuthorize("@ss.hasPermi('system:agencyCategory:list')") + @GetMapping("/list") + public TableDataInfo list(AgencyCategory agencyCategory) { + startPage(); + List list = agencyCategoryService.selectAgencyCategoryList(agencyCategory); + return getDataTable(list); + } + + /** + * 导出机构类别列表 + */ + @PreAuthorize("@ss.hasPermi('system:agencyCategory:export')") + @Log(title = "机构类别", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, AgencyCategory agencyCategory) { + List list = agencyCategoryService.selectAgencyCategoryList(agencyCategory); + ExcelUtil util = new ExcelUtil(AgencyCategory.class); + util.exportExcel(response, list, "机构类别数据"); + } + + /** + * 获取机构类别详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:agencyCategory:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(agencyCategoryService.selectAgencyCategoryById(id)); + } + + /** + * 新增机构类别 + */ + @PreAuthorize("@ss.hasPermi('system:agencyCategory:add')") + @Log(title = "机构类别", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody AgencyCategory agencyCategory) { + if (Objects.isNull(agencyCategory)) { + return AjaxResult.success(); + } + return toAjax(agencyCategoryService.insertAgencyCategory(agencyCategory)); + } + + /** + * 修改机构类别 + */ + @PreAuthorize("@ss.hasPermi('system:agencyCategory:edit')") + @Log(title = "机构类别", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody AgencyCategory agencyCategory) { + return toAjax(agencyCategoryService.updateAgencyCategory(agencyCategory)); + } + + /** + * 删除机构类别 + */ + @PreAuthorize("@ss.hasPermi('system:agencyCategory:remove')") + @Log(title = "机构类别", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(agencyCategoryService.deleteAgencyCategoryByIds(ids)); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/agency/Agency.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/agency/Agency.java new file mode 100644 index 00000000..91a4ab42 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/agency/Agency.java @@ -0,0 +1,193 @@ +package com.xinelu.manage.domain.agency; + +import com.xinelu.common.annotation.Excel; +import com.xinelu.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.ArrayList; +import java.util.List; + +/** + * 机构信息对象 agency + * + * @author xinelu + * @date 2024-02-26 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "机构信息对象", description = "agency") +public class Agency extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + private Long id; + + /** + * 上级机构id + */ + @ApiModelProperty(value = "上级机构id") + @Excel(name = "上级机构id") + private Long parentId; + + /** + * 所属机构类别id + */ + @ApiModelProperty(value = "所属机构类别id") + @Excel(name = "所属机构类别id") + private Long agencyCategoryId; + + /** + * 所属机构类别名称 + */ + @ApiModelProperty(value = "所属机构类别名称") + @Excel(name = "所属机构类别名称") + private String agencyCategoryName; + + /** + * 所属行政区域编码 + */ + @ApiModelProperty(value = "所属行政区域编码") + @Excel(name = "所属行政区域编码") + private String areaCode; + + /** + * 所属行政区域名称 + */ + @ApiModelProperty(value = "所属行政区域名称") + @Excel(name = "所属行政区域名称") + private String areaName; + + /** + * 机构名称 + */ + @ApiModelProperty(value = "机构名称") + @Excel(name = "机构名称") + private String agencyName; + + /** + * 机构代码 + */ + @ApiModelProperty(value = "机构代码") + @Excel(name = "机构代码") + private String agencyCode; + + /** + * 机构简称 + */ + @ApiModelProperty(value = "机构简称") + @Excel(name = "机构简称") + private String agencyAbbreviation; + + /** + * 机构状态,ON:启用,OFF:禁用 + */ + @ApiModelProperty(value = "机构状态,ON:启用,OFF:禁用") + @Excel(name = "机构状态,ON:启用,OFF:禁用") + private String agencyStatus; + + /** + * 节点类型,节点类型,卫健委:HEALTH_COMMISSION,医保局:MEDICAL_INSURANCE_BUREAU,医院:HOSPITAL,院区:CAMPUS,药店:PHARMACY,科室:DEPARTMENT,病区:WARD,中国:CHINA,省份:PROVINCE + */ + @ApiModelProperty(value = "节点类型,节点类型,卫健委:HEALTH_COMMISSION,医保局:MEDICAL_INSURANCE_BUREAU,医院:HOSPITAL,院区:CAMPUS,药店:PHARMACY,科室:DEPARTMENT,病区:WARD,中国:CHINA,省份:PROVINCE") + @Excel(name = "节点类型,节点类型,卫健委:HEALTH_COMMISSION,医保局:MEDICAL_INSURANCE_BUREAU,医院:HOSPITAL,院区:CAMPUS,药店:PHARMACY,科室:DEPARTMENT,病区:WARD,中国:CHINA,省份:PROVINCE") + private String nodeType; + + /** + * 组织机构编码 + */ + @ApiModelProperty(value = "组织机构编码") + @Excel(name = "组织机构编码") + private String orgAgencyCode; + + /** + * 机构分类管理类别,非营利性医疗机构:NON_PROFIT_MEDICAL_AGENCY,营利性医疗机构:FOR_PROFIT_MEDICAL_AGENCY,其他卫生机构:OTHER_HEALTH_AGENCY + */ + @ApiModelProperty(value = "机构分类管理类别,非营利性医疗机构:NON_PROFIT_MEDICAL_AGENCY,营利性医疗机构:FOR_PROFIT_MEDICAL_AGENCY,其他卫生机构:OTHER_HEALTH_AGENCY") + @Excel(name = "机构分类管理类别,非营利性医疗机构:NON_PROFIT_MEDICAL_AGENCY,营利性医疗机构:FOR_PROFIT_MEDICAL_AGENCY,其他卫生机构:OTHER_HEALTH_AGENCY") + private String agencyCategoryManageLevel; + + /** + * 机构联系人 + */ + @ApiModelProperty(value = "机构联系人") + @Excel(name = "机构联系人") + private String agencyContacts; + + /** + * 机构联系电话 + */ + @ApiModelProperty(value = "机构联系电话") + @Excel(name = "机构联系电话") + private String agencyPhone; + + /** + * 机构详细地址 + */ + @ApiModelProperty(value = "机构详细地址") + @Excel(name = "机构详细地址") + private String agencyAddress; + + /** + * 机构概述 + */ + @ApiModelProperty(value = "机构概述") + @Excel(name = "机构概述") + private String agencyRemark; + + /** + * 机构排序 + */ + @ApiModelProperty(value = "机构排序") + @Excel(name = "机构排序") + private Integer agencySort; + + private List children = new ArrayList(); + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("parentId", getParentId()) + .append("agencyCategoryId", getAgencyCategoryId()) + .append("agencyCategoryName", getAgencyCategoryName()) + .append("areaCode", getAreaCode()) + .append("areaName", getAreaName()) + .append("agencyName", getAgencyName()) + .append("agencyCode", getAgencyCode()) + .append("agencyAbbreviation", getAgencyAbbreviation()) + .append("agencyStatus", getAgencyStatus()) + .append("nodeType", getNodeType()) + .append("orgAgencyCode", getOrgAgencyCode()) + .append("agencyCategoryManageLevel", getAgencyCategoryManageLevel()) + .append("agencyContacts", getAgencyContacts()) + .append("agencyPhone", getAgencyPhone()) + .append("agencyAddress", getAgencyAddress()) + .append("agencyRemark", getAgencyRemark()) + .append("agencySort", getAgencySort()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/agencycategory/AgencyCategory.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/agencycategory/AgencyCategory.java new file mode 100644 index 00000000..1f65b527 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/agencycategory/AgencyCategory.java @@ -0,0 +1,92 @@ +package com.xinelu.manage.domain.agencycategory; + +import com.xinelu.common.annotation.Excel; +import com.xinelu.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 机构类别对象 agency_category + * + * @author xinelu + * @date 2024-02-26 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "机构类别对象", description = "agency_category") +public class AgencyCategory extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + private Long id; + + /** + * 父级类别id + */ + @ApiModelProperty(value = "父级类别id") + @Excel(name = "父级类别id") + private Long parentCategoryId; + + /** + * 类别名称 + */ + @ApiModelProperty(value = "类别名称") + @Excel(name = "类别名称") + private String categoryName; + + /** + * 类别编码 + */ + @ApiModelProperty(value = "类别编码") + @Excel(name = "类别编码") + private String categoryCode; + + /** + * 类别等级,1:一级类型,2:二级类别,3:三级类别等 + */ + @ApiModelProperty(value = "类别等级,1:一级类型,2:二级类别,3:三级类别等") + @Excel(name = "类别等级,1:一级类型,2:二级类别,3:三级类别等") + private Integer categoryLevel; + + /** + * 类别排序 + */ + @ApiModelProperty(value = "类别排序") + @Excel(name = "类别排序") + private Integer categorySort; + + /** + * 类别概述 + */ + @ApiModelProperty(value = "类别概述") + @Excel(name = "类别概述") + private String categoryRemark; + + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("parentCategoryId", getParentCategoryId()) + .append("categoryName", getCategoryName()) + .append("categoryCode", getCategoryCode()) + .append("categoryLevel", getCategoryLevel()) + .append("categorySort", getCategorySort()) + .append("categoryRemark", getCategoryRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agency/AgencyMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agency/AgencyMapper.java new file mode 100644 index 00000000..70c8592d --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agency/AgencyMapper.java @@ -0,0 +1,63 @@ +package com.xinelu.manage.mapper.agency; + +import com.xinelu.manage.domain.agency.Agency; +import com.xinelu.manage.vo.agency.AgencyVO; + +import java.util.List; + + +/** + * 机构信息Mapper接口 + * + * @author xinelu + * @date 2024-02-26 + */ +public interface AgencyMapper { + /** + * 查询机构信息 + * + * @param id 机构信息主键 + * @return 机构信息 + */ + Agency selectAgencyById(Long id); + + /** + * 查询机构信息列表 + * + * @param agency 机构信息 + * @return 机构信息集合 + */ + List selectAgencyList(Agency agency); + + /** + * 新增机构信息 + * + * @param agency 机构信息 + * @return 结果 + */ + int insertAgency(Agency agency); + + /** + * 修改机构信息 + * + * @param agency 机构信息 + * @return 结果 + */ + int updateAgency(Agency agency); + + /** + * 删除机构信息 + * + * @param id 机构信息主键 + * @return 结果 + */ + int deleteAgencyById(Long id); + + /** + * 批量删除机构信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteAgencyByIds(Long[] ids); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agencycategory/AgencyCategoryMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agencycategory/AgencyCategoryMapper.java new file mode 100644 index 00000000..ba0ab704 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/agencycategory/AgencyCategoryMapper.java @@ -0,0 +1,62 @@ +package com.xinelu.manage.mapper.agencycategory; + +import com.xinelu.manage.domain.agencycategory.AgencyCategory; + +import java.util.List; + + +/** + * 机构类别Mapper接口 + * + * @author xinelu + * @date 2024-02-26 + */ +public interface AgencyCategoryMapper { + /** + * 查询机构类别 + * + * @param id 机构类别主键 + * @return 机构类别 + */ + AgencyCategory selectAgencyCategoryById(Long id); + + /** + * 查询机构类别列表 + * + * @param agencyCategory 机构类别 + * @return 机构类别集合 + */ + List selectAgencyCategoryList(AgencyCategory agencyCategory); + + /** + * 新增机构类别 + * + * @param agencyCategory 机构类别 + * @return 结果 + */ + int insertAgencyCategory(AgencyCategory agencyCategory); + + /** + * 修改机构类别 + * + * @param agencyCategory 机构类别 + * @return 结果 + */ + int updateAgencyCategory(AgencyCategory agencyCategory); + + /** + * 删除机构类别 + * + * @param id 机构类别主键 + * @return 结果 + */ + int deleteAgencyCategoryById(Long id); + + /** + * 批量删除机构类别 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteAgencyCategoryByIds(Long[] ids); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/IAgencyService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/IAgencyService.java new file mode 100644 index 00000000..a06c3cc4 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/IAgencyService.java @@ -0,0 +1,70 @@ +package com.xinelu.manage.service.agency; + +import com.xinelu.manage.domain.agency.Agency; +import com.xinelu.manage.vo.agency.AgencyVO; + +import java.util.List; + + +/** + * 机构信息Service接口 + * + * @author xinelu + * @date 2024-02-26 + */ +public interface IAgencyService { + /** + * 查询机构信息 + * + * @param id 机构信息主键 + * @return 机构信息 + */ + Agency selectAgencyById(Long id); + + /** + * 查询机构信息列表 + * + * @param agency 机构信息 + * @return 机构信息集合 + */ + List selectAgencyList(Agency agency); + + /** + * 新增机构信息 + * + * @param agency 机构信息 + * @return 结果 + */ + int insertAgency(Agency agency); + + /** + * 修改机构信息 + * + * @param agency 机构信息 + * @return 结果 + */ + int updateAgency(Agency agency); + + /** + * 批量删除机构信息 + * + * @param ids 需要删除的机构信息主键集合 + * @return 结果 + */ + int deleteAgencyByIds(Long[] ids); + + /** + * 删除机构信息信息 + * + * @param id 机构信息主键 + * @return 结果 + */ + int deleteAgencyById(Long id); + + /** + * 树图 + * + * @return AgencyVO + */ + List agencyList(); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/impl/AgencyServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/impl/AgencyServiceImpl.java new file mode 100644 index 00000000..e2b748d9 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agency/impl/AgencyServiceImpl.java @@ -0,0 +1,157 @@ +package com.xinelu.manage.service.agency.impl; + +import com.xinelu.common.utils.DateUtils; +import com.xinelu.common.utils.StringUtils; +import com.xinelu.manage.domain.agency.Agency; +import com.xinelu.manage.mapper.agency.AgencyMapper; +import com.xinelu.manage.service.agency.IAgencyService; +import com.xinelu.manage.vo.agency.AgencyVO; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * 机构信息Service业务层处理 + * + * @author xinelu + * @date 2024-02-26 + */ +@Service +public class AgencyServiceImpl implements IAgencyService { + @Resource + private AgencyMapper agencyMapper; + + /** + * 查询机构信息 + * + * @param id 机构信息主键 + * @return 机构信息 + */ + @Override + public Agency selectAgencyById(Long id) { + return agencyMapper.selectAgencyById(id); + } + + /** + * 查询机构信息列表 + * + * @param agency 机构信息 + * @return 机构信息 + */ + @Override + public List selectAgencyList(Agency agency) { + return agencyMapper.selectAgencyList(agency); + } + + /** + * 新增机构信息 + * + * @param agency 机构信息 + * @return 结果 + */ + @Override + public int insertAgency(Agency agency) { + agency.setCreateTime(DateUtils.getNowDate()); + return agencyMapper.insertAgency(agency); + } + + /** + * 修改机构信息 + * + * @param agency 机构信息 + * @return 结果 + */ + @Override + public int updateAgency(Agency agency) { + agency.setUpdateTime(DateUtils.getNowDate()); + return agencyMapper.updateAgency(agency); + } + + /** + * 批量删除机构信息 + * + * @param ids 需要删除的机构信息主键 + * @return 结果 + */ + @Override + public int deleteAgencyByIds(Long[] ids) { + return agencyMapper.deleteAgencyByIds(ids); + } + + /** + * 删除机构信息信息 + * + * @param id 机构信息主键 + * @return 结果 + */ + @Override + public int deleteAgencyById(Long id) { + return agencyMapper.deleteAgencyById(id); + } + + /** + * 树图 + * + * @return AgencyVO + */ + @Override + public List agencyList() { + List agencies = agencyMapper.selectAgencyList(null); + List agencies1 = buildDeptTree(agencies); + return agencies1.stream().map(AgencyVO::new).collect(Collectors.toList()); + } + + public List buildDeptTree(List agencies) { + List returnList = new ArrayList(); + List tempList = new ArrayList(); + for (Agency agency : agencies) { + tempList.add(agency.getId()); + } + for (Agency agency : agencies) { + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(agency.getParentId())) { + recursionFn(agencies, agency); + returnList.add(agency); + } + } + if (returnList.isEmpty()) { + returnList = agencies; + } + return returnList; + } + + private void recursionFn(List list, Agency t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (Agency tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild); + } + } + } + + private List getChildList(List list, Agency t) { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) { + Agency n = (Agency) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, Agency t) { + return getChildList(list, t).size() > 0; + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/IAgencyCategoryService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/IAgencyCategoryService.java new file mode 100644 index 00000000..de5c259c --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/IAgencyCategoryService.java @@ -0,0 +1,62 @@ +package com.xinelu.manage.service.agencycategory; + + +import com.xinelu.manage.domain.agencycategory.AgencyCategory; + +import java.util.List; + +/** + * 机构类别Service接口 + * + * @author xinelu + * @date 2024-02-26 + */ +public interface IAgencyCategoryService { + /** + * 查询机构类别 + * + * @param id 机构类别主键 + * @return 机构类别 + */ + AgencyCategory selectAgencyCategoryById(Long id); + + /** + * 查询机构类别列表 + * + * @param agencyCategory 机构类别 + * @return 机构类别集合 + */ + List selectAgencyCategoryList(AgencyCategory agencyCategory); + + /** + * 新增机构类别 + * + * @param agencyCategory 机构类别 + * @return 结果 + */ + int insertAgencyCategory(AgencyCategory agencyCategory); + + /** + * 修改机构类别 + * + * @param agencyCategory 机构类别 + * @return 结果 + */ + int updateAgencyCategory(AgencyCategory agencyCategory); + + /** + * 批量删除机构类别 + * + * @param ids 需要删除的机构类别主键集合 + * @return 结果 + */ + int deleteAgencyCategoryByIds(Long[] ids); + + /** + * 删除机构类别信息 + * + * @param id 机构类别主键 + * @return 结果 + */ + int deleteAgencyCategoryById(Long id); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/impl/AgencyCategoryServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/impl/AgencyCategoryServiceImpl.java new file mode 100644 index 00000000..837d9159 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/agencycategory/impl/AgencyCategoryServiceImpl.java @@ -0,0 +1,102 @@ +package com.xinelu.manage.service.agencycategory.impl; + +import com.xinelu.common.constant.Constants; +import com.xinelu.common.utils.DateUtils; +import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.utils.codes.GenerateSystemCodeUtil; +import com.xinelu.manage.domain.agencycategory.AgencyCategory; +import com.xinelu.manage.mapper.agencycategory.AgencyCategoryMapper; +import com.xinelu.manage.service.agencycategory.IAgencyCategoryService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + + +/** + * 机构类别Service业务层处理 + * + * @author xinelu + * @date 2024-02-26 + */ +@Service +public class AgencyCategoryServiceImpl implements IAgencyCategoryService { + @Resource + private AgencyCategoryMapper agencyCategoryMapper; + @Resource + private GenerateSystemCodeUtil generateSystemCodeUtil; + + /** + * 查询机构类别 + * + * @param id 机构类别主键 + * @return 机构类别 + */ + @Override + public AgencyCategory selectAgencyCategoryById(Long id) { + return agencyCategoryMapper.selectAgencyCategoryById(id); + } + + /** + * 查询机构类别列表 + * + * @param agencyCategory 机构类别 + * @return 机构类别 + */ + @Override + public List selectAgencyCategoryList(AgencyCategory agencyCategory) { + return agencyCategoryMapper.selectAgencyCategoryList(agencyCategory); + } + + /** + * 新增机构类别 + * + * @param agencyCategory 机构类别 + * @return 结果 + */ + @Override + public int insertAgencyCategory(AgencyCategory agencyCategory) { + if (agencyCategory.getCategoryLevel().equals(1)) { + agencyCategory.setParentCategoryId(null); + } + agencyCategory.setCreateTime(DateUtils.getNowDate()); + agencyCategory.setCreateBy(SecurityUtils.getUsername()); + agencyCategory.setCategoryCode(Constants.CATEGORY_CODE + generateSystemCodeUtil.generateSystemCode(Constants.CATEGORY_CODE)); + return agencyCategoryMapper.insertAgencyCategory(agencyCategory); + } + + /** + * 修改机构类别 + * + * @param agencyCategory 机构类别 + * @return 结果 + */ + @Override + public int updateAgencyCategory(AgencyCategory agencyCategory) { + agencyCategory.setUpdateTime(DateUtils.getNowDate()); + agencyCategory.setUpdateBy(SecurityUtils.getUsername()); + return agencyCategoryMapper.updateAgencyCategory(agencyCategory); + } + + /** + * 批量删除机构类别 + * + * @param ids 需要删除的机构类别主键 + * @return 结果 + */ + @Override + public int deleteAgencyCategoryByIds(Long[] ids) { + return agencyCategoryMapper.deleteAgencyCategoryByIds(ids); + } + + /** + * 删除机构类别信息 + * + * @param id 机构类别主键 + * @return 结果 + */ + @Override + public int deleteAgencyCategoryById(Long id) { + return agencyCategoryMapper.deleteAgencyCategoryById(id); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/agency/AgencyVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/agency/AgencyVO.java new file mode 100644 index 00000000..89bb2f37 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/agency/AgencyVO.java @@ -0,0 +1,75 @@ +package com.xinelu.manage.vo.agency; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.xinelu.common.core.domain.entity.SysMenu; +import com.xinelu.manage.domain.agency.Agency; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 机构信息对象vo agency + * + * @author xinelu + * @date 2024-02-26 + */ +public class AgencyVO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 节点ID + */ + private Long id; + + /** + * 节点名称 + */ + private String label; + + /** + * 子节点 + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public AgencyVO() { + + } + + public AgencyVO(Agency agency) { + this.id = agency.getId(); + this.label = agency.getAgencyName(); + this.children = agency.getChildren().stream().map(AgencyVO::new).collect(Collectors.toList()); + } + + public AgencyVO(SysMenu menu) { + this.id = menu.getMenuId(); + this.label = menu.getMenuName(); + this.children = menu.getChildren().stream().map(AgencyVO::new).collect(Collectors.toList()); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } +} diff --git a/postdischarge-manage/src/main/resources/mapper/manage/agency/AgencyMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/agency/AgencyMapper.xml new file mode 100644 index 00000000..1dbe26b6 --- /dev/null +++ b/postdischarge-manage/src/main/resources/mapper/manage/agency/AgencyMapper.xml @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, parent_id, agency_category_id, agency_category_name, area_code, area_name, agency_name, agency_code, agency_abbreviation, agency_status, node_type, org_agency_code, agency_category_manage_level, agency_contacts, agency_phone, agency_address, agency_remark, agency_sort, create_by, create_time, update_by, update_time from agency + + + + + + + + insert into agency + + parent_id, + + agency_category_id, + + agency_category_name, + + area_code, + + area_name, + + agency_name, + + agency_code, + + agency_abbreviation, + + agency_status, + + node_type, + + org_agency_code, + + agency_category_manage_level, + + agency_contacts, + + agency_phone, + + agency_address, + + agency_remark, + + agency_sort, + + create_by, + + create_time, + + update_by, + + update_time, + + + + #{parentId}, + + #{agencyCategoryId}, + + #{agencyCategoryName}, + + #{areaCode}, + + #{areaName}, + + #{agencyName}, + + #{agencyCode}, + + #{agencyAbbreviation}, + + #{agencyStatus}, + + #{nodeType}, + + #{orgAgencyCode}, + + #{agencyCategoryManageLevel}, + + #{agencyContacts}, + + #{agencyPhone}, + + #{agencyAddress}, + + #{agencyRemark}, + + #{agencySort}, + + #{createBy}, + + #{createTime}, + + #{updateBy}, + + #{updateTime}, + + + + + + update agency + + parent_id = + #{parentId}, + + agency_category_id = + #{agencyCategoryId}, + + agency_category_name = + #{agencyCategoryName}, + + area_code = + #{areaCode}, + + area_name = + #{areaName}, + + agency_name = + #{agencyName}, + + agency_code = + #{agencyCode}, + + agency_abbreviation = + #{agencyAbbreviation}, + + agency_status = + #{agencyStatus}, + + node_type = + #{nodeType}, + + org_agency_code = + #{orgAgencyCode}, + + agency_category_manage_level = + #{agencyCategoryManageLevel}, + + agency_contacts = + #{agencyContacts}, + + agency_phone = + #{agencyPhone}, + + agency_address = + #{agencyAddress}, + + agency_remark = + #{agencyRemark}, + + agency_sort = + #{agencySort}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + + + where id = #{id} + + + + delete from agency where id = #{id} + + + + delete from agency where id in + + #{id} + + + \ No newline at end of file