From 50c97f9b0e958aa16d1fedabb321c82b091700ee Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Sun, 13 Apr 2025 12:26:33 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E5=AD=97=E5=85=B8=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=85=B7=E4=BD=93=E7=B1=BB=E5=9E=8B=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84=E6=98=8E=E7=BB=86=E6=95=B0=E6=8D=AE=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysDictDataController.java | 140 ++++++++++++++++-- .../core/domain/entity/SysDictData.java | 123 ++------------- .../domain/vo/dictData/DictDataDeleteVO.java | 25 ++++ .../domain/vo/dictData/DictDataPageVO.java | 29 ++++ .../domain/vo/dictData/DictDataResVO.java | 37 +++++ .../core/domain/vo/dictData/DictDataVO.java | 46 ++++++ .../core/domain/vo/dictType/DictTypeVO.java | 2 + .../domain/dto/dictData/DictDataDTO.java | 35 +++++ .../dto/dictData/DictDataDeleteDTO.java | 24 +++ .../domain/dto/dictData/DictDataPageDTO.java | 27 ++++ .../domain/dto/dictData/DictDataResDTO.java | 37 +++++ .../domain/dto/dictType/DictTypeDTO.java | 8 +- .../system/mapper/SysDictDataMapper.java | 3 +- .../system/service/ISysDictDataService.java | 17 +++ .../service/impl/SysDictDataServiceImpl.java | 97 +++++++++++- .../service/impl/SysDictTypeServiceImpl.java | 7 +- .../mapper/system/SysDictDataMapper.xml | 28 +--- sql/ry_20240629.sql | 2 +- 18 files changed, 530 insertions(+), 157 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataDeleteVO.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataPageVO.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataResVO.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDeleteDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataPageDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataResDTO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java index a76afe7d7..00c1c23e4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java @@ -1,16 +1,34 @@ package com.ruoyi.web.controller.system; +import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.vo.dictData.DictDataDeleteVO; +import com.ruoyi.common.core.domain.vo.dictData.DictDataPageVO; +import com.ruoyi.common.core.domain.vo.dictData.DictDataResVO; +import com.ruoyi.common.core.domain.vo.dictData.DictDataVO; +import com.ruoyi.common.core.domain.vo.dictType.DictTypePageResVO; +import com.ruoyi.common.core.domain.vo.dictType.DictTypePageVO; +import com.ruoyi.common.core.page.Page; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.dto.dictData.DictDataDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataDeleteDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataPageDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataResDTO; +import com.ruoyi.system.domain.dto.dictType.DictTypePageDTO; import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictTypeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -24,14 +42,107 @@ import java.util.List; * * @author ruoyi */ +@RequiredArgsConstructor +@Api(tags = "字典数据明细") @RestController @RequestMapping("/system/dict/data") public class SysDictDataController extends BaseController { - @Autowired - private ISysDictDataService dictDataService; - @Autowired - private ISysDictTypeService dictTypeService; + final ISysDictDataService dictDataService; + final ISysDictTypeService dictTypeService; + + /** + * 新增字典明细类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:add')") + @ApiOperation(value = "新增字典明细类型", httpMethod = "POST", response = R.class) + @Log(title = "新增字典明细类型", businessType = BusinessType.INSERT) + @PostMapping + public R create(@Validated @RequestBody DictDataVO dataVO) { + return R.ok(dictDataService.create(BeanUtil.toBean(dataVO, DictDataDTO.class))); + } + + /** + * 修改字典明细类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:edit')") + @ApiOperation(value = "修改字典明细类型", httpMethod = "PUT", response = R.class) + @Log(title = "修改字典明细类型", businessType = BusinessType.UPDATE) + @PutMapping + public R update(@Validated @RequestBody DictDataVO dataVO) { + return R.ok(dictDataService.update(BeanUtil.toBean(dataVO, DictDataDTO.class))); + } + + /** + * 删除字典明细类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:remove')") + @ApiOperation(value = "删除字典明细类型", httpMethod = "PUT", response = R.class) + @Log(title = "删除字典明细类型", businessType = BusinessType.DELETE) + @DeleteMapping() + public R delete(@Validated @RequestBody DictDataDeleteVO deleteVO) { + return R.ok(dictDataService.delete(BeanUtil.toBean(deleteVO, DictDataDeleteDTO.class))); + } + + /** + * 查询字典数据详细 + */ + @PreAuthorize("@ss.hasPermi('system:dict:query')") + @ApiOperation(value = "查询字典数据详细", httpMethod = "GET", response = R.class) + @GetMapping(value = "/{dictDataId}") + public R getInfo(@PathVariable Long dictDataId) { + return R.ok(BeanUtil.toBean(dictDataService.selectById(dictDataId), DictDataResVO.class)); + } + + /** + * 根据字典类型查询字典数据信息 + */ + @GetMapping(value = "/type/{dictType}") + @ApiOperation(value = "根据字典类型查询字典数据信息", httpMethod = "GET", response = R.class) + public R> dictType(@PathVariable String dictType) { + return R.ok(BeanUtil.copyToList(dictDataService.selectByDictType(dictType), DictDataResVO.class)); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // =============================================================================================== + // =============================================================================================== + // =============================================================================================== + // =============================================================================================== + @PreAuthorize("@ss.hasPermi('system:dict:list')") @GetMapping("/list") @@ -53,54 +164,55 @@ public class SysDictDataController extends BaseController { /** * 查询字典数据详细 */ - @PreAuthorize("@ss.hasPermi('system:dict:query')") + /* @PreAuthorize("@ss.hasPermi('system:dict:query')") @GetMapping(value = "/{dictCode}") public AjaxResult getInfo(@PathVariable Long dictCode) { return success(dictDataService.selectDictDataById(dictCode)); - } + }*/ /** * 根据字典类型查询字典数据信息 */ - @GetMapping(value = "/type/{dictType}") + /* @GetMapping(value = "/type/{dictType}") public AjaxResult dictType(@PathVariable String dictType) { List data = dictTypeService.selectDictDataByType(dictType); if (StringUtils.isNull(data)) { data = new ArrayList(); } return success(data); - } + }*/ /** * 新增字典类型 */ - @PreAuthorize("@ss.hasPermi('system:dict:add')") + /*@PreAuthorize("@ss.hasPermi('system:dict:add')") @Log(title = "字典数据", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody SysDictData dict) { dict.setCreateBy(getUsername()); return toAjax(dictDataService.insertDictData(dict)); - } + }*/ /** * 修改保存字典类型 */ - @PreAuthorize("@ss.hasPermi('system:dict:edit')") + /*@PreAuthorize("@ss.hasPermi('system:dict:edit')") @Log(title = "字典数据", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody SysDictData dict) { dict.setUpdateBy(getUsername()); return toAjax(dictDataService.updateDictData(dict)); - } + }*/ /** * 删除字典类型 */ - @PreAuthorize("@ss.hasPermi('system:dict:remove')") + /*@PreAuthorize("@ss.hasPermi('system:dict:remove')") @Log(title = "字典类型", businessType = BusinessType.DELETE) @DeleteMapping("/{dictCodes}") public AjaxResult remove(@PathVariable Long[] dictCodes) { dictDataService.deleteDictDataByIds(dictCodes); return success(); - } + }*/ + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java index 519564673..1f8d0bdd7 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java @@ -1,9 +1,13 @@ package com.ruoyi.common.core.domain.entity; +import com.baomidou.mybatisplus.annotation.TableId; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.domain.XktBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -15,155 +19,56 @@ import javax.validation.constraints.Size; * * @author ruoyi */ -public class SysDictData extends BaseEntity { +@EqualsAndHashCode(callSuper = true) +@Data +public class SysDictData extends XktBaseEntity { private static final long serialVersionUID = 1L; /** * 字典编码 */ - @Excel(name = "字典编码", cellType = ColumnType.NUMERIC) - private Long dictCode; + @TableId(value = "id") + private Long id; /** * 字典排序 */ - @Excel(name = "字典排序", cellType = ColumnType.NUMERIC) private Long dictSort; /** * 字典标签 */ - @Excel(name = "字典标签") private String dictLabel; /** * 字典键值 */ - @Excel(name = "字典键值") private String dictValue; /** * 字典类型 */ - @Excel(name = "字典类型") private String dictType; - /** - * 样式属性(其他样式扩展) - */ - private String cssClass; - - /** - * 表格字典样式 - */ - private String listClass; - - /** - * 是否默认(Y是 N否) - */ - @Excel(name = "是否默认", readConverterExp = "Y=是,N=否") - private String isDefault; - /** * 状态(0正常 1停用) */ @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; - public Long getDictCode() { - return dictCode; - } - - public void setDictCode(Long dictCode) { - this.dictCode = dictCode; - } - - public Long getDictSort() { - return dictSort; - } - - public void setDictSort(Long dictSort) { - this.dictSort = dictSort; - } - - @NotBlank(message = "字典标签不能为空") - @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符") - public String getDictLabel() { - return dictLabel; - } - - public void setDictLabel(String dictLabel) { - this.dictLabel = dictLabel; - } - - @NotBlank(message = "字典键值不能为空") - @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符") - public String getDictValue() { - return dictValue; - } - - public void setDictValue(String dictValue) { - this.dictValue = dictValue; - } - - @NotBlank(message = "字典类型不能为空") - @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符") - public String getDictType() { - return dictType; - } - - public void setDictType(String dictType) { - this.dictType = dictType; - } - - @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符") - public String getCssClass() { - return cssClass; - } - - public void setCssClass(String cssClass) { - this.cssClass = cssClass; - } - - public String getListClass() { - return listClass; - } - - public void setListClass(String listClass) { - this.listClass = listClass; - } - - public boolean getDefault() { - return UserConstants.YES.equals(this.isDefault); - } - - public String getIsDefault() { - return isDefault; - } - - public void setIsDefault(String isDefault) { - this.isDefault = isDefault; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } + /** + * 备注 + */ + private String remark; @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("dictCode", getDictCode()) + .append("id", getId()) .append("dictSort", getDictSort()) .append("dictLabel", getDictLabel()) .append("dictValue", getDictValue()) .append("dictType", getDictType()) - .append("cssClass", getCssClass()) - .append("listClass", getListClass()) - .append("isDefault", getIsDefault()) .append("status", getStatus()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataDeleteVO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataDeleteVO.java new file mode 100644 index 000000000..00958843d --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataDeleteVO.java @@ -0,0 +1,25 @@ +package com.ruoyi.common.core.domain.vo.dictData; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("删除系统字典明细类型") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DictDataDeleteVO { + + @NotNull(message = "字典明细主键列表不能为空") + @ApiModelProperty(value = "字典明细主键列表") + private List dictDataIdList; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataPageVO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataPageVO.java new file mode 100644 index 000000000..b4efcba1b --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataPageVO.java @@ -0,0 +1,29 @@ +package com.ruoyi.common.core.domain.vo.dictData; + +import com.ruoyi.common.core.domain.vo.BasePageVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@ApiModel("字典明细类型分页查询入参") +@Data +public class DictDataPageVO extends BasePageVO { + + @ApiModelProperty(value = "字典标签") + private String dictLabel; + @NotBlank(message = "字典类型不能为空") + @ApiModelProperty(value = "字典类型") + private String dictType; + @ApiModelProperty(value = "状态") + private String status; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataResVO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataResVO.java new file mode 100644 index 000000000..8a242fa69 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataResVO.java @@ -0,0 +1,37 @@ +package com.ruoyi.common.core.domain.vo.dictData; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("系统字典明细") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DictDataResVO { + + @ApiModelProperty(value = "新增不传,编辑必传") + private Long dictDataId; + @ApiModelProperty(value = "字典排序") + private Long dictSort; + @ApiModelProperty(value = "字典标签") + private String dictLabel; + @ApiModelProperty(value = "字典键值") + private String dictValue; + @ApiModelProperty(value = "字典类型") + private String dictType; + @ApiModelProperty(name = "状态") + private String status; + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataVO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataVO.java new file mode 100644 index 000000000..ee85a5f57 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictData/DictDataVO.java @@ -0,0 +1,46 @@ +package com.ruoyi.common.core.domain.vo.dictData; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("系统字典明细") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DictDataVO { + + @ApiModelProperty(value = "新增不传,编辑必传") + private Long dictDataId; + @NotNull(message = "字典排序不能为空") + @ApiModelProperty(value = "字典排序") + private Long dictSort; + @NotBlank(message = "字典标签不能为空") + @Size(min = 1, max = 100, message = "字典标签长度不能超过100个字符") + @ApiModelProperty(value = "字典标签") + private String dictLabel; + @NotBlank(message = "字典键值不能为空") + @Size(min = 1, max = 100, message = "字典键值长度不能超过100个字符") + @ApiModelProperty(value = "字典标签") + private String dictValue; + @NotBlank(message = "字典类型不能为空") + @Size(min = 1, max = 100, message = "字典类型长度不能超过100个字符") + @ApiModelProperty(value = "字典标签") + private String dictType; + @ApiModelProperty(name = "状态") + @NotBlank(message = "状态不能为空") + private String status; + @ApiModelProperty(name = "备注") + private String remark; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictType/DictTypeVO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictType/DictTypeVO.java index 73001b621..a3a79aeb4 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictType/DictTypeVO.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/dictType/DictTypeVO.java @@ -33,5 +33,7 @@ public class DictTypeVO { private String dictType; @Size(min = 1, max = 100, message = "字典类型类型长度不能超过100个字符") private String remark; + @ApiModelProperty(value = "状态(0正常 1停用)") + private String status; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDTO.java new file mode 100644 index 000000000..9be90b62c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDTO.java @@ -0,0 +1,35 @@ +package com.ruoyi.system.domain.dto.dictData; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("系统字典明细") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DictDataDTO { + + @ApiModelProperty(value = "新增不传,编辑必传") + private Long dictDataId; + @ApiModelProperty(value = "字典排序") + private Long dictSort; + @ApiModelProperty(value = "字典标签") + private String dictLabel; + @ApiModelProperty(value = "字典键值") + private String dictValue; + @ApiModelProperty(value = "字典类型") + private String dictType; + @ApiModelProperty(name = "状态") + private String status; + @ApiModelProperty(name = "备注") + private String remark; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDeleteDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDeleteDTO.java new file mode 100644 index 000000000..d8f6ce4d6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataDeleteDTO.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.domain.dto.dictData; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("删除系统字典明细类型") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DictDataDeleteDTO { + + @ApiModelProperty(value = "字典明细主键列表") + private List dictDataIdList; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataPageDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataPageDTO.java new file mode 100644 index 000000000..dff936ea0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataPageDTO.java @@ -0,0 +1,27 @@ +package com.ruoyi.system.domain.dto.dictData; + +import com.ruoyi.common.core.domain.vo.BasePageVO; +import com.ruoyi.system.domain.dto.BasePageDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@ApiModel("字典明细类型分页查询入参") +@Data +public class DictDataPageDTO extends BasePageDTO { + + @ApiModelProperty(value = "字典标签") + private String dictLabel; + @ApiModelProperty(value = "字典类型") + private String dictType; + @ApiModelProperty(value = "状态") + private String status; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataResDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataResDTO.java new file mode 100644 index 000000000..371568875 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictData/DictDataResDTO.java @@ -0,0 +1,37 @@ +package com.ruoyi.system.domain.dto.dictData; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("系统字典明细") +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DictDataResDTO { + + @ApiModelProperty(value = "新增不传,编辑必传") + private Long dictDataId; + @ApiModelProperty(value = "字典排序") + private Long dictSort; + @ApiModelProperty(value = "字典标签") + private String dictLabel; + @ApiModelProperty(value = "字典键值") + private String dictValue; + @ApiModelProperty(value = "字典类型") + private String dictType; + @ApiModelProperty(name = "状态") + private String status; + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictType/DictTypeDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictType/DictTypeDTO.java index 86f80961a..61796ea13 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictType/DictTypeDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/dictType/DictTypeDTO.java @@ -21,17 +21,13 @@ public class DictTypeDTO { @ApiModelProperty(value = "字典主键, 新增不传 编辑必传") private Long dictId; - @NotBlank(message = "字典名称不能为空") - @Size(min = 1, max = 100, message = "字典类型名称长度不能超过100个字符") @ApiModelProperty(value = "字典名称") private String dictName; - @NotBlank(message = "字典类型不能为空") - @Size(min = 1, max = 100, message = "字典类型类型长度不能超过100个字符") - @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)") @ApiModelProperty(value = "字典类型") private String dictType; - @Size(min = 1, max = 100, message = "字典类型类型长度不能超过100个字符") @ApiModelProperty(value = "字典描述") private String remark; + @ApiModelProperty(value = "状态(0正常 1停用)") + private String status; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java index 007c21a2f..d080f9b64 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java @@ -1,5 +1,6 @@ package com.ruoyi.system.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.domain.entity.SysDictData; import org.apache.ibatis.annotations.Param; @@ -10,7 +11,7 @@ import java.util.List; * * @author ruoyi */ -public interface SysDictDataMapper { +public interface SysDictDataMapper extends BaseMapper { /** * 根据条件分页查询字典数据 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java index 1d618dc2a..ade90189c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java @@ -1,6 +1,12 @@ package com.ruoyi.system.service; import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.vo.dictData.DictDataResVO; +import com.ruoyi.common.core.page.Page; +import com.ruoyi.system.domain.dto.dictData.DictDataDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataDeleteDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataPageDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataResDTO; import java.util.List; @@ -57,4 +63,15 @@ public interface ISysDictDataService { * @return 结果 */ public int updateDictData(SysDictData dictData); + + Integer create(DictDataDTO dataDTO); + + Integer update(DictDataDTO dataDTO); + + Integer delete(DictDataDeleteDTO deleteDTO); + + DictDataResDTO selectById(Long dictDataId); + + List selectByDictType(String dictType); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java index 5dda3223e..c5808dcac 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java @@ -1,23 +1,114 @@ package com.ruoyi.system.service.impl; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.page.Page; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DictUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.domain.dto.dictData.DictDataDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataDeleteDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataPageDTO; +import com.ruoyi.system.domain.dto.dictData.DictDataResDTO; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.service.ISysDictDataService; +import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; +import java.util.Optional; + +import static com.ruoyi.common.utils.SecurityUtils.getUsername; /** * 字典 业务层处理 * * @author ruoyi */ +@RequiredArgsConstructor @Service public class SysDictDataServiceImpl implements ISysDictDataService { - @Autowired - private SysDictDataMapper dictDataMapper; + + final SysDictDataMapper dictDataMapper; + + private final static String STATUS_NORMAL = "0"; + + + @Override + @Transactional + public Integer create(DictDataDTO dataDTO) { + SysDictData dictData = BeanUtil.toBean(dataDTO, SysDictData.class); + dictData.setCreateBy(getUsername()); + return this.dictDataMapper.insert(dictData); + } + + @Override + @Transactional + public Integer update(DictDataDTO dataDTO) { + SysDictData dict = Optional.ofNullable(this.dictDataMapper.selectOne(new LambdaQueryWrapper() + .eq(SysDictData::getId, dataDTO.getDictDataId()).eq(SysDictData::getDelFlag, Constants.UNDELETED) + .eq(SysDictData::getStatus, dataDTO.getStatus()))) + .orElseThrow(() -> new ServiceException("字典数据不存在!", HttpStatus.ERROR)); + dict.setUpdateBy(getUsername()); + BeanUtil.copyProperties(dataDTO, dict); + return this.dictDataMapper.updateById(dict); + } + + @Override + @Transactional + public Integer delete(DictDataDeleteDTO deleteDTO) { + List dataList = Optional.ofNullable(this.dictDataMapper.selectList(new LambdaQueryWrapper() + .in(SysDictData::getId, deleteDTO.getDictDataIdList()).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("字典数据不存在!", HttpStatus.ERROR)); + dataList.forEach(x -> x.setDelFlag(Constants.DELETED)); + return this.dictDataMapper.updateById(dataList).size(); + } + + @Override + @Transactional(readOnly = true) + public DictDataResDTO selectById(Long dictDataId) { + SysDictData dictData = Optional.ofNullable(this.dictDataMapper.selectOne(new LambdaQueryWrapper() + .eq(SysDictData::getId, dictDataId).eq(SysDictData::getDelFlag, Constants.UNDELETED))) + .orElseThrow(() -> new ServiceException("字典数据不存在!", HttpStatus.ERROR)); + return BeanUtil.toBean(dictData, DictDataResDTO.class); + } + + @Override + @Transactional(readOnly = true) + public List selectByDictType(String dictType) { + List dataList = this.dictDataMapper.selectList(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, dictType).eq(SysDictData::getDelFlag, Constants.UNDELETED)); + return BeanUtil.copyToList(dataList, DictDataResDTO.class); + } + + + + + + + + + + + + + + + + + + // =================================================================================================== + // =================================================================================================== + // =================================================================================================== + /** * 根据条件分页查询字典数据 @@ -99,4 +190,6 @@ public class SysDictDataServiceImpl implements ISysDictDataService { } return row; } + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java index 7fcc54d73..b5dd8bd8b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java @@ -108,7 +108,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService { } SysDictType dict = Optional.ofNullable(this.dictTypeMapper.selectOne(new LambdaQueryWrapper() .eq(SysDictType::getDictId, typeDTO.getDictId()).eq(SysDictType::getDelFlag, Constants.UNDELETED) - .eq(SysDictType::getStatus, STATUS_NORMAL))) + .eq(SysDictType::getStatus, typeDTO.getStatus()))) .orElseThrow(() -> new ServiceException("字典类型不存在!", HttpStatus.ERROR)); dict.setUpdateBy(getUsername()); BeanUtil.copyProperties(typeDTO, dict); @@ -125,8 +125,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService { @Transactional public Integer delete(DictTypeDeleteDTO deleteDTO) { List dictList = Optional.ofNullable(this.dictTypeMapper.selectList(new LambdaQueryWrapper() - .in(SysDictType::getDictId, deleteDTO.getDictIdList()).eq(SysDictType::getDelFlag, Constants.UNDELETED) - .eq(SysDictType::getStatus, STATUS_NORMAL))) + .in(SysDictType::getDictId, deleteDTO.getDictIdList()).eq(SysDictType::getDelFlag, Constants.UNDELETED))) .orElseThrow(() -> new ServiceException("字典类型不存在!", HttpStatus.ERROR)); dictList.forEach(x -> x.setDelFlag(Constants.DELETED)); return this.dictTypeMapper.updateById(dictList).size(); @@ -144,7 +143,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService { public Page page(DictTypePageDTO pageDTO) { PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize()); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(SysDictType::getStatus, STATUS_NORMAL).eq(SysDictType::getDelFlag, Constants.UNDELETED); + .eq(SysDictType::getDelFlag, Constants.UNDELETED); if (StringUtils.isNotBlank(pageDTO.getDictName())) { queryWrapper.like(SysDictType::getDictName, pageDTO.getDictName()); } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml index c5e1da9d0..e3e014daa 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -5,14 +5,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - - - @@ -21,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark + select id, dict_sort, dict_label, dict_value, dict_type, status, create_by, create_time, remark from sys_dict_data @@ -53,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from sys_dict_data where dict_code = #{dictCode} + delete from sys_dict_data where id = #{id} - delete from sys_dict_data where dict_code in - - #{dictCode} + delete from sys_dict_data where id in + + #{id} @@ -78,15 +75,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dict_label = #{dictLabel}, dict_value = #{dictValue}, dict_type = #{dictType}, - css_class = #{cssClass}, - list_class = #{listClass}, - is_default = #{isDefault}, status = #{status}, remark = #{remark}, update_by = #{updateBy}, update_time = sysdate() - where dict_code = #{dictCode} + where id = #{id} @@ -99,9 +93,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dict_label, dict_value, dict_type, - css_class, - list_class, - is_default, status, remark, create_by, @@ -111,9 +102,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{dictLabel}, #{dictValue}, #{dictType}, - #{cssClass}, - #{listClass}, - #{isDefault}, #{status}, #{remark}, #{createBy}, diff --git a/sql/ry_20240629.sql b/sql/ry_20240629.sql index d5f67fe86..0628ac687 100644 --- a/sql/ry_20240629.sql +++ b/sql/ry_20240629.sql @@ -364,7 +364,7 @@ insert into sys_dict_type values(10, '系统状态', 'sys_common_status', '0', drop table if exists sys_dict_data; create table sys_dict_data ( - dict_code bigint(20) not null auto_increment comment '字典编码', + id bigint(20) not null auto_increment comment '字典编码', dict_sort int(4) default 0 comment '字典排序', dict_label varchar(100) default '' comment '字典标签', dict_value varchar(100) default '' comment '字典键值',