diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/controller/DictTypeController.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/controller/DictTypeController.java deleted file mode 100644 index 5ca9cea..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/controller/DictTypeController.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.nu.modules.dictType.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.nu.modules.dictType.entity.DictType; -import com.nu.modules.dictType.service.IDictTypeService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.jeecg.common.api.vo.Result; -import org.jeecg.common.aspect.annotation.AutoLog; -import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.common.system.query.QueryGenerator; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Arrays; - - /** - * @Description: 业务字典主表 - * @Author: 张明远 - * @Date: 2025-03-11 - * @Version: V1.0 - */ -@Api(tags="业务字典主表") -@RestController -@RequestMapping("/dictType/dictType") -@Slf4j -public class DictTypeController extends JeecgController { - @Autowired - private IDictTypeService dictTypeService; - - @GetMapping("/abc") - public String abc(){ - return "abc"; - } - - /** - * 分页列表查询 - * - * @param dictType - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "业务字典主表-分页列表查询") - @ApiOperation(value="业务字典主表-分页列表查询", notes="业务字典主表-分页列表查询") - @GetMapping(value = "/list") - public Result> queryPageList(DictType dictType, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(dictType, req.getParameterMap()); - Page page = new Page(pageNo, pageSize); - IPage pageList = dictTypeService.page(page, queryWrapper); - return Result.OK(pageList); - } - - /** - * 添加 - * - * @param dictType - * @return - */ - @AutoLog(value = "业务字典主表-添加") - @ApiOperation(value="业务字典主表-添加", notes="业务字典主表-添加") - @RequiresPermissions("dictType:dict_type:add") - @PostMapping(value = "/add") - public Result add(@RequestBody DictType dictType) { - dictTypeService.save(dictType); - return Result.OK("添加成功!"); - } - - /** - * 编辑 - * - * @param dictType - * @return - */ - @AutoLog(value = "业务字典主表-编辑") - @ApiOperation(value="业务字典主表-编辑", notes="业务字典主表-编辑") - @RequiresPermissions("dictType:dict_type:edit") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result edit(@RequestBody DictType dictType) { - dictTypeService.updateById(dictType); - return Result.OK("编辑成功!"); - } - - /** - * 通过id删除 - * - * @param id - * @return - */ - @AutoLog(value = "业务字典主表-通过id删除") - @ApiOperation(value="业务字典主表-通过id删除", notes="业务字典主表-通过id删除") - @RequiresPermissions("dictType:dict_type:delete") - @DeleteMapping(value = "/delete") - public Result delete(@RequestParam(name="id",required=true) String id) { - dictTypeService.removeById(id); - return Result.OK("删除成功!"); - } - - /** - * 批量删除 - * - * @param ids - * @return - */ - @AutoLog(value = "业务字典主表-批量删除") - @ApiOperation(value="业务字典主表-批量删除", notes="业务字典主表-批量删除") - @RequiresPermissions("dictType:dict_type:deleteBatch") - @DeleteMapping(value = "/deleteBatch") - public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.dictTypeService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - //@AutoLog(value = "业务字典主表-通过id查询") - @ApiOperation(value="业务字典主表-通过id查询", notes="业务字典主表-通过id查询") - @GetMapping(value = "/queryById") - public Result queryById(@RequestParam(name="id",required=true) String id) { - DictType dictType = dictTypeService.getById(id); - if(dictType==null) { - return Result.error("未找到对应数据"); - } - return Result.OK(dictType); - } - - /** - * 导出excel - * - * @param request - * @param dictType - */ - @RequiresPermissions("dictType:dict_type:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, DictType dictType) { - return super.exportXls(request, dictType, DictType.class, "业务字典主表"); - } - - /** - * 通过excel导入数据 - * - * @param request - * @param response - * @return - */ - @RequiresPermissions("dictType:dict_type:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, DictType.class); - } - -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/controller/DictTypeItemController.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/controller/DictTypeItemController.java deleted file mode 100644 index b7e23f4..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/controller/DictTypeItemController.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.nu.modules.dictType.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.nu.modules.dictType.entity.DictTypeItem; -import com.nu.modules.dictType.service.IDictTypeItemService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.jeecg.common.api.vo.Result; -import org.jeecg.common.aspect.annotation.AutoLog; -import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.common.system.query.QueryGenerator; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Arrays; - - /** - * @Description: dict_type_item - * @Author: 张明远 - * @Date: 2025-03-12 - * @Version: V1.0 - */ -@Api(tags="dict_type_item") -@RestController -@RequestMapping("/dictType/dictTypeItem") -@Slf4j -public class DictTypeItemController extends JeecgController { - @Autowired - private IDictTypeItemService dictTypeItemService; - - /** - * 分页列表查询 - * - * @param dictTypeItem - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "dict_type_item-分页列表查询") - @ApiOperation(value="dict_type_item-分页列表查询", notes="dict_type_item-分页列表查询") - @GetMapping(value = "/list") - public Result> queryPageList(DictTypeItem dictTypeItem, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(dictTypeItem, req.getParameterMap()); - Page page = new Page(pageNo, pageSize); - IPage pageList = dictTypeItemService.page(page, queryWrapper); - return Result.OK(pageList); - } - - /** - * 添加 - * - * @param dictTypeItem - * @return - */ - @AutoLog(value = "dict_type_item-添加") - @ApiOperation(value="dict_type_item-添加", notes="dict_type_item-添加") - @PostMapping(value = "/add") - public Result add(@RequestBody DictTypeItem dictTypeItem) { - dictTypeItemService.save(dictTypeItem); - return Result.OK("添加成功!"); - } - - /** - * 编辑 - * - * @param dictTypeItem - * @return - */ - @AutoLog(value = "dict_type_item-编辑") - @ApiOperation(value="dict_type_item-编辑", notes="dict_type_item-编辑") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result edit(@RequestBody DictTypeItem dictTypeItem) { - dictTypeItemService.updateById(dictTypeItem); - return Result.OK("编辑成功!"); - } - - /** - * 通过id删除 - * - * @param id - * @return - */ - @AutoLog(value = "dict_type_item-通过id删除") - @ApiOperation(value="dict_type_item-通过id删除", notes="dict_type_item-通过id删除") - @DeleteMapping(value = "/delete") - public Result delete(@RequestParam(name="id",required=true) String id) { - dictTypeItemService.removeById(id); - return Result.OK("删除成功!"); - } - - /** - * 批量删除 - * - * @param ids - * @return - */ - @AutoLog(value = "dict_type_item-批量删除") - @ApiOperation(value="dict_type_item-批量删除", notes="dict_type_item-批量删除") - @DeleteMapping(value = "/deleteBatch") - public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.dictTypeItemService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - //@AutoLog(value = "dict_type_item-通过id查询") - @ApiOperation(value="dict_type_item-通过id查询", notes="dict_type_item-通过id查询") - @GetMapping(value = "/queryById") - public Result queryById(@RequestParam(name="id",required=true) String id) { - DictTypeItem dictTypeItem = dictTypeItemService.getById(id); - if(dictTypeItem==null) { - return Result.error("未找到对应数据"); - } - return Result.OK(dictTypeItem); - } - - /** - * 导出excel - * - * @param request - * @param dictTypeItem - */ - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, DictTypeItem dictTypeItem) { - return super.exportXls(request, dictTypeItem, DictTypeItem.class, "dict_type_item"); - } - - /** - * 通过excel导入数据 - * - * @param request - * @param response - * @return - */ - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, DictTypeItem.class); - } - -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/entity/DictType.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/entity/DictType.java deleted file mode 100644 index 1fc5d9e..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/entity/DictType.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.nu.modules.dictType.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.jeecgframework.poi.excel.annotation.Excel; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.util.Date; - -/** - * @Description: 业务字典主表 - * @Author: 张明远 - * @Date: 2025-03-11 - * @Version: V1.0 - */ -@Data -@TableName("nu_dict_type") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="nu_dict_type对象", description="业务字典主表") -public class DictType implements Serializable { - private static final long serialVersionUID = 1L; - - /**id*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "id") - private String id; - /**字典名称*/ - @Excel(name = "字典名称", width = 15) - @ApiModelProperty(value = "字典名称") - private String dictName; - /**字典编码*/ - @Excel(name = "字典编码", width = 15) - @ApiModelProperty(value = "字典编码") - private String dictCode; - /**描述*/ - @Excel(name = "描述", width = 15) - @ApiModelProperty(value = "描述") - private String description; - /**删除状态*/ - @Excel(name = "删除状态", width = 15) - @ApiModelProperty(value = "删除状态") - @TableLogic - private Integer delFlag; - /**创建人*/ - @ApiModelProperty(value = "创建人") - private String createBy; - /**创建时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "创建时间") - private Date createTime; - /**更新人*/ - @ApiModelProperty(value = "更新人") - private String updateBy; - /**更新时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/entity/DictTypeItem.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/entity/DictTypeItem.java deleted file mode 100644 index f93ade6..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/entity/DictTypeItem.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.nu.modules.dictType.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.jeecg.common.aspect.annotation.Dict; -import org.jeecgframework.poi.excel.annotation.Excel; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.util.Date; - -/** - * @Description: dict_type_item - * @Author: 张明远 - * @Date: 2025-03-12 - * @Version: V1.0 - */ -@Data -@TableName("nu_dict_type_item") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="nu_dict_type_item对象", description="dict_type_item") -public class DictTypeItem implements Serializable { - private static final long serialVersionUID = 1L; - - /**id*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "id") - private String id; - /**字典id*/ - @Excel(name = "字典id", width = 15) - @ApiModelProperty(value = "字典id") - private String dictId; - /**字典项文本*/ - @Excel(name = "字典项文本", width = 15) - @ApiModelProperty(value = "字典项文本") - private String itemText; - /**字典项值*/ - @Excel(name = "字典项值", width = 15) - @ApiModelProperty(value = "字典项值") - private String itemValue; - /**描述*/ - @Excel(name = "描述", width = 15) - @ApiModelProperty(value = "描述") - private String description; - /**排序*/ - @Excel(name = "排序", width = 15) - @ApiModelProperty(value = "排序") - private Integer sortOrder; - /**状态(1启用 0不启用)*/ - @Excel(name = "状态(0启用 1不启用)", width = 15) - @ApiModelProperty(value = "状态(0启用 1不启用)") - @Dict(dicCode = "iz_enabled") - private String status; - /**创建人*/ - @ApiModelProperty(value = "创建人") - private String createBy; - /**创建时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "创建时间") - private Date createTime; - /**更新人*/ - @ApiModelProperty(value = "更新人") - private String updateBy; - /**更新时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/DictTypeItemMapper.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/DictTypeItemMapper.java deleted file mode 100644 index 9e8cd6d..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/DictTypeItemMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.nu.modules.dictType.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.nu.modules.dictType.entity.DictTypeItem; - -/** - * @Description: dict_type_item - * @Author: 张明远 - * @Date: 2025-03-12 - * @Version: V1.0 - */ -public interface DictTypeItemMapper extends BaseMapper { - -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/DictTypeMapper.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/DictTypeMapper.java deleted file mode 100644 index 2f22bd6..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/DictTypeMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.nu.modules.dictType.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.nu.modules.dictType.entity.DictType; - -/** - * @Description: 业务字典主表 - * @Author: 张明远 - * @Date: 2025-03-11 - * @Version: V1.0 - */ -public interface DictTypeMapper extends BaseMapper { - -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/xml/DictTypeItemMapper.xml b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/xml/DictTypeItemMapper.xml deleted file mode 100644 index 769c239..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/xml/DictTypeItemMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/xml/DictTypeMapper.xml b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/xml/DictTypeMapper.xml deleted file mode 100644 index 9010d83..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/mapper/xml/DictTypeMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/IDictTypeItemService.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/IDictTypeItemService.java deleted file mode 100644 index 39cc859..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/IDictTypeItemService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.nu.modules.dictType.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.nu.modules.dictType.entity.DictTypeItem; - -/** - * @Description: dict_type_item - * @Author: 张明远 - * @Date: 2025-03-12 - * @Version: V1.0 - */ -public interface IDictTypeItemService extends IService { - -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/IDictTypeService.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/IDictTypeService.java deleted file mode 100644 index d7a8111..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/IDictTypeService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.nu.modules.dictType.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.nu.modules.dictType.entity.DictType; - -/** - * @Description: 业务字典主表 - * @Author: 张明远 - * @Date: 2025-03-11 - * @Version: V1.0 - */ -public interface IDictTypeService extends IService { - -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/impl/DictTypeItemServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/impl/DictTypeItemServiceImpl.java deleted file mode 100644 index 6cf80d6..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/impl/DictTypeItemServiceImpl.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.nu.modules.dictType.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.nu.modules.dictType.entity.DictTypeItem; -import com.nu.modules.dictType.mapper.DictTypeItemMapper; -import com.nu.modules.dictType.service.IDictTypeItemService; -import org.springframework.stereotype.Service; - -/** - * @Description: dict_type_item - * @Author: 张明远 - * @Date: 2025-03-12 - * @Version: V1.0 - */ -@Service -public class DictTypeItemServiceImpl extends ServiceImpl implements IDictTypeItemService { - -} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/impl/DictTypeServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/impl/DictTypeServiceImpl.java deleted file mode 100644 index 1477d1b..0000000 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/dictType/service/impl/DictTypeServiceImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.nu.modules.dictType.service.impl; - -import com.nu.modules.dictType.entity.DictType; -import com.nu.modules.dictType.mapper.DictTypeMapper; -import com.nu.modules.dictType.service.IDictTypeService; -import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - -/** - * @Description: 业务字典主表 - * @Author: 张明远 - * @Date: 2025-03-11 - * @Version: V1.0 - */ -@Service -public class DictTypeServiceImpl extends ServiceImpl implements IDictTypeService { - -} diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/NuDictController.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/NuDictController.java new file mode 100644 index 0000000..bff6653 --- /dev/null +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/NuDictController.java @@ -0,0 +1,779 @@ +package org.jeecg.modules.system.controller; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.apache.shiro.subject.Subject; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.config.TenantContext; +import org.jeecg.common.constant.CacheConstant; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.SymbolConstant; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.system.vo.DictQuery; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.ImportExcelUtil; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.common.util.TokenUtils; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.config.mybatis.MybatisPlusSaasConfig; +import org.jeecg.config.shiro.ShiroRealm; +import org.jeecg.modules.system.entity.SysDict; +import org.jeecg.modules.system.entity.SysDictItem; +import org.jeecg.modules.system.model.SysDictTree; +import org.jeecg.modules.system.model.TreeSelectModel; +import org.jeecg.modules.system.service.ISysDictItemService; +import org.jeecg.modules.system.service.ISysDictService; +import org.jeecg.modules.system.vo.SysDictPage; +import org.jeecg.modules.system.vo.lowapp.SysDictVo; +import org.jeecgframework.poi.excel.ExcelImportCheckUtil; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.*; + +/** + *

+ * nu字典表 前端控制器 + *

+ * + * @Author zmy + * @since 2025-4-2 16:13:43 + */ +@RestController +@RequestMapping("/nu/dict") +@Slf4j +public class NuDictController { + + @Autowired + private ISysDictService sysDictService; + @Autowired + private ISysDictItemService sysDictItemService; + @Autowired + public RedisTemplate redisTemplate; + @Autowired + private RedisUtil redisUtil; + @Autowired + private ShiroRealm shiroRealm; + + @RequestMapping(value = "/list", method = RequestMethod.GET) + public Result> queryPageList( + SysDict sysDict, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + // 查询关键字,模糊筛选code和name + @RequestParam(name = "keywords", required = false) String keywords, + HttpServletRequest req + ) { + Result> result = new Result>(); + //------------------------------------------------------------------------------------------------ + //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 + if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ + sysDict.setTenantId(oConvertUtils.getInt(TenantContext.getTenant(),0)); + } + //------------------------------------------------------------------------------------------------ + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDict, req.getParameterMap()); + queryWrapper.eq("tag","nu"); + // 查询关键字,模糊筛选code和name + if (oConvertUtils.isNotEmpty(keywords)) { + queryWrapper.and(i -> i.like("dict_code", keywords).or().like("dict_name", keywords)); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = sysDictService.page(page, queryWrapper); + log.debug("查询当前页:"+pageList.getCurrent()); + log.debug("查询当前页数量:"+pageList.getSize()); + log.debug("查询结果数量:"+pageList.getRecords().size()); + log.debug("数据总数:"+pageList.getTotal()); + result.setSuccess(true); + result.setResult(pageList); + return result; + } + + /** + * @功能:获取树形字典数据 + * @param sysDict + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @SuppressWarnings("unchecked") + @RequestMapping(value = "/treeList", method = RequestMethod.GET) + public Result> treeList(SysDict sysDict, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { + Result> result = new Result<>(); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + // 构造查询条件 + String dictName = sysDict.getDictName(); + if(oConvertUtils.isNotEmpty(dictName)) { + query.like(true, SysDict::getDictName, dictName); + } + query.orderByDesc(true, SysDict::getCreateTime); + List list = sysDictService.list(query); + List treeList = new ArrayList<>(); + for (SysDict node : list) { + treeList.add(new SysDictTree(node)); + } + result.setSuccess(true); + result.setResult(treeList); + return result; + } + + /** + * 获取全部字典数据 + * + * @return + */ + @RequestMapping(value = "/queryAllDictItems", method = RequestMethod.GET) + public Result queryAllDictItems(HttpServletRequest request) { + Map> res = new HashMap(5); + res = sysDictService.queryAllDictItems(); + return Result.ok(res); + } + + /** + * 获取字典数据 + * @param dictCode + * @return + */ + @RequestMapping(value = "/getDictText/{dictCode}/{key}", method = RequestMethod.GET) + public Result getDictText(@PathVariable("dictCode") String dictCode, @PathVariable("key") String key) { + log.info(" dictCode : "+ dictCode); + Result result = new Result(); + String text = null; + try { + text = sysDictService.queryDictTextByKey(dictCode, key); + result.setSuccess(true); + result.setResult(text); + } catch (Exception e) { + log.error(e.getMessage(),e); + result.error500("操作失败"); + return result; + } + return result; + } + + + /** + * 获取字典数据 【接口签名验证】 + * @param dictCode 字典code + * @param dictCode 表名,文本字段,code字段 | 举例:sys_user,realname,id + * @return + */ + @RequestMapping(value = "/getDictItems/{dictCode}", method = RequestMethod.GET) + public Result> getDictItems(@PathVariable("dictCode") String dictCode, @RequestParam(value = "sign",required = false) String sign,HttpServletRequest request) { + log.info(" dictCode : "+ dictCode); + Result> result = new Result>(); + try { + List ls = sysDictService.getDictItems(dictCode); + if (ls == null) { + result.error500("字典Code格式不正确!"); + return result; + } + result.setSuccess(true); + result.setResult(ls); + log.debug(result.toString()); + } catch (Exception e) { + log.error(e.getMessage(), e); + result.error500("操作失败"); + return result; + } + return result; + } + + /** + * 【接口签名验证】 + * 【JSearchSelectTag下拉搜索组件专用接口】 + * 大数据量的字典表 走异步加载 即前端输入内容过滤数据 + * @param dictCode 字典code格式:table,text,code + * @return + */ + @RequestMapping(value = "/loadDict/{dictCode}", method = RequestMethod.GET) + public Result> loadDict(@PathVariable("dictCode") String dictCode, + @RequestParam(name="keyword",required = false) String keyword, + @RequestParam(value = "sign",required = false) String sign, + @RequestParam(name = "pageNo", defaultValue = "1", required = false) Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10", required = false) Integer pageSize) { + + //update-begin-author:taoyan date:2023-5-22 for: /issues/4905 因为中括号(%5)的问题导致的 表单生成器字段配置时,选择关联字段,在进行高级配置时,无法加载数据库列表,提示 Sgin签名校验错误! #4905 RouteToRequestUrlFilter + if(keyword!=null && keyword.indexOf("%5")>=0){ + try { + keyword = URLDecoder.decode(keyword, "UTF-8"); + } catch (UnsupportedEncodingException e) { + log.error("下拉搜索关键字解码失败", e); + } + } + //update-end-author:taoyan date:2023-5-22 for: /issues/4905 因为中括号(%5)的问题导致的 表单生成器字段配置时,选择关联字段,在进行高级配置时,无法加载数据库列表,提示 Sgin签名校验错误! #4905 + + log.info(" 加载字典表数据,加载关键字: "+ keyword); + Result> result = new Result>(); + try { + List ls = sysDictService.loadDict(dictCode, keyword, pageNo,pageSize); + if (ls == null) { + result.error500("字典Code格式不正确!"); + return result; + } + result.setSuccess(true); + result.setResult(ls); + log.info(result.toString()); + return result; + } catch (Exception e) { + log.error(e.getMessage(),e); + result.error500("操作失败:" + e.getMessage()); + return result; + } + } + + /** + * 【接口签名验证】 + * 【给表单设计器的表字典使用】下拉搜索模式,有值时动态拼接数据 + * @param dictCode + * @param keyword 当前控件的值,可以逗号分割 + * @param sign + * @param pageSize + * @return + */ + @RequestMapping(value = "/loadDictOrderByValue/{dictCode}", method = RequestMethod.GET) + public Result> loadDictOrderByValue( + @PathVariable("dictCode") String dictCode, + @RequestParam(name = "keyword") String keyword, + @RequestParam(value = "sign", required = false) String sign, + @RequestParam(value = "pageSize", required = false) Integer pageSize) { + // 首次查询查出来用户选中的值,并且不分页 + Result> firstRes = this.loadDict(dictCode, keyword, sign,null, null); + if (!firstRes.isSuccess()) { + return firstRes; + } + // 然后再查询出第一页的数据 + Result> result = this.loadDict(dictCode, "", sign,1, pageSize); + if (!result.isSuccess()) { + return result; + } + // 合并两次查询的数据 + List firstList = firstRes.getResult(); + List list = result.getResult(); + for (DictModel firstItem : firstList) { + // anyMatch 表示:判断的条件里,任意一个元素匹配成功,返回true + // allMatch 表示:判断条件里的元素,所有的都匹配成功,返回true + // noneMatch 跟 allMatch 相反,表示:判断条件里的元素,所有的都匹配失败,返回true + boolean none = list.stream().noneMatch(item -> item.getValue().equals(firstItem.getValue())); + // 当元素不存在时,再添加到集合里 + if (none) { + list.add(0, firstItem); + } + } + return result; + } + + /** + * 【接口签名验证】 + * 根据字典code加载字典text 返回 + * @param dictCode 顺序:tableName,text,code + * @param keys 要查询的key + * @param sign + * @param delNotExist 是否移除不存在的项,默认为true,设为false如果某个key不存在数据库中,则直接返回key本身 + * @param request + * @return + */ + @RequestMapping(value = "/loadDictItem/{dictCode}", method = RequestMethod.GET) + public Result> loadDictItem(@PathVariable("dictCode") String dictCode,@RequestParam(name="key") String keys, @RequestParam(value = "sign",required = false) String sign,@RequestParam(value = "delNotExist",required = false,defaultValue = "true") boolean delNotExist,HttpServletRequest request) { + Result> result = new Result<>(); + try { + if(dictCode.indexOf(SymbolConstant.COMMA)!=-1) { + String[] params = dictCode.split(SymbolConstant.COMMA); + if(params.length!=3) { + result.error500("字典Code格式不正确!"); + return result; + } + List texts = sysDictService.queryTableDictByKeys(params[0], params[1], params[2], keys, delNotExist); + + result.setSuccess(true); + result.setResult(texts); + log.info(result.toString()); + }else { + result.error500("字典Code格式不正确!"); + } + } catch (Exception e) { + log.error(e.getMessage(),e); + result.error500("操作失败"); + return result; + } + + return result; + } + + /** + * 【接口签名验证】 + * 根据表名——显示字段-存储字段 pid 加载树形数据 + * @param hasChildField 是否叶子节点字段 + * @param converIsLeafVal 是否需要系统转换 是否叶子节点的值 (0标识不转换、1标准系统自动转换) + * @param tableName 表名 + * @param text label字段 + * @param code value 字段 + * @param condition 查询条件 ? + * + */ + @SuppressWarnings("unchecked") + @RequestMapping(value = "/loadTreeData", method = RequestMethod.GET) + public Result> loadTreeData(@RequestParam(name="pid",required = false) String pid, @RequestParam(name="pidField") String pidField, + @RequestParam(name="tableName") String tableName, + @RequestParam(name="text") String text, + @RequestParam(name="code") String code, + @RequestParam(name="hasChildField") String hasChildField, + @RequestParam(name="converIsLeafVal",defaultValue ="1") int converIsLeafVal, + @RequestParam(name="condition") String condition, + @RequestParam(value = "sign",required = false) String sign, HttpServletRequest request) { + Result> result = new Result>(); + + // 【QQYUN-9207】防止参数为空导致报错 + if (oConvertUtils.isEmpty(tableName) || oConvertUtils.isEmpty(text) || oConvertUtils.isEmpty(code)) { + result.error500("字典Code格式不正确!"); + return result; + } + + // 1.获取查询条件参数 + Map query = null; + if(oConvertUtils.isNotEmpty(condition)) { + query = JSON.parseObject(condition, Map.class); + } + + // 2.返回查询结果 + List ls = sysDictService.queryTreeList(query,tableName, text, code, pidField, pid,hasChildField,converIsLeafVal); + result.setSuccess(true); + result.setResult(ls); + return result; + } + + /** + * 【APP接口】根据字典配置查询表字典数据(目前暂未找到调用的地方) + * @param query + * @param pageNo + * @param pageSize + * @return + */ + @Deprecated + @GetMapping("/queryTableData") + public Result> queryTableData(DictQuery query, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + @RequestParam(value = "sign",required = false) String sign,HttpServletRequest request){ + Result> res = new Result>(); + List ls = this.sysDictService.queryDictTablePageList(query,pageSize,pageNo); + res.setResult(ls); + res.setSuccess(true); + return res; + } + + /** + * @功能:新增 + * @param sysDict + * @return + */ + @RequiresPermissions("nu:dict:add") + @RequestMapping(value = "/add", method = RequestMethod.POST) + public Result add(@RequestBody SysDict sysDict) { + sysDict.setTag("nu"); + Result result = new Result(); + try { + sysDict.setCreateTime(new Date()); + sysDict.setDelFlag(CommonConstant.DEL_FLAG_0); + sysDictService.save(sysDict); + result.success("保存成功!"); + } catch (Exception e) { + log.error(e.getMessage(),e); + result.error500("操作失败"); + } + return result; + } + + /** + * @功能:编辑 + * @param sysDict + * @return + */ + @RequiresPermissions("nu:dict:edit") + @RequestMapping(value = "/edit", method = { RequestMethod.PUT,RequestMethod.POST }) + public Result edit(@RequestBody SysDict sysDict) { + Result result = new Result(); + SysDict sysdict = sysDictService.getById(sysDict.getId()); + if(sysdict==null) { + result.error500("未找到对应实体"); + }else { + sysDict.setUpdateTime(new Date()); + boolean ok = sysDictService.updateById(sysDict); + if(ok) { + result.success("编辑成功!"); + } + } + return result; + } + + /** + * @功能:删除 + * @param id + * @return + */ + @RequiresPermissions("nu:dict:delete") + @RequestMapping(value = "/delete", method = RequestMethod.DELETE) + @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) + public Result delete(@RequestParam(name="id",required=true) String id) { + Result result = new Result(); + boolean ok = sysDictService.removeById(id); + if(ok) { + result.success("删除成功!"); + }else{ + result.error500("删除失败!"); + } + return result; + } + + /** + * @功能:批量删除 + * @param ids + * @return + */ + @RequiresPermissions("nu:dict:deleteBatch") + @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) + @CacheEvict(value= {CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + Result result = new Result(); + if(oConvertUtils.isEmpty(ids)) { + result.error500("参数不识别!"); + }else { + sysDictService.removeByIds(Arrays.asList(ids.split(","))); + result.success("删除成功!"); + } + return result; + } + + /** + * @功能:刷新缓存 + * @return + */ + @RequestMapping(value = "/refleshCache") + public Result refleshCache() { + Result result = new Result(); + //清空字典缓存 +// Set keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*"); +// Set keys7 = redisTemplate.keys(CacheConstant.SYS_ENABLE_DICT_CACHE + "*"); +// Set keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*"); +// Set keys21 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE + "*"); +// Set keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*"); +// Set keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*"); +// Set keys5 = redisTemplate.keys( "jmreport:cache:dict*"); +// Set keys6 = redisTemplate.keys( "jmreport:cache:dictTable*"); +// redisTemplate.delete(keys); +// redisTemplate.delete(keys2); +// redisTemplate.delete(keys21); +// redisTemplate.delete(keys3); +// redisTemplate.delete(keys4); +// redisTemplate.delete(keys5); +// redisTemplate.delete(keys6); +// redisTemplate.delete(keys7); + + //update-begin-author:liusq date:20230404 for: [issue/4358]springCache中的清除缓存的操作使用了“keys” + redisUtil.removeAll(CacheConstant.SYS_DICT_CACHE); + redisUtil.removeAll(CacheConstant.SYS_ENABLE_DICT_CACHE); + redisUtil.removeAll(CacheConstant.SYS_DICT_TABLE_CACHE); + redisUtil.removeAll(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE); + redisUtil.removeAll(CacheConstant.SYS_DEPARTS_CACHE); + redisUtil.removeAll(CacheConstant.SYS_DEPART_IDS_CACHE); + redisUtil.removeAll("jmreport:cache:dict"); + redisUtil.removeAll("jmreport:cache:dictTable"); + //update-end-author:liusq date:20230404 for: [issue/4358]springCache中的清除缓存的操作使用了“keys” + + //update-begin---author:scott ---date:2024-06-18 for:【TV360X-1320】分配权限必须退出重新登录才生效,造成很多用户困扰--- + // 清除当前用户的授权缓存信息 + Subject currentUser = SecurityUtils.getSubject(); + if (currentUser.isAuthenticated()) { + shiroRealm.clearCache(currentUser.getPrincipals()); + } + //update-end---author:scott ---date::2024-06-18 for:【TV360X-1320】分配权限必须退出重新登录才生效,造成很多用户困扰--- + return result; + } + + /** + * 导出excel + * + * @param request + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(SysDict sysDict,HttpServletRequest request) { + sysDict.setTag("nu"); + //------------------------------------------------------------------------------------------------ + //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 + if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ + sysDict.setTenantId(oConvertUtils.getInt(TenantContext.getTenant(), 0)); + } + //------------------------------------------------------------------------------------------------ + + // Step.1 组装查询条件 + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDict, request.getParameterMap()); + //Step.2 AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + String selections = request.getParameter("selections"); + if(!oConvertUtils.isEmpty(selections)){ + queryWrapper.in("id",selections.split(",")); + } + List pageList = new ArrayList(); + + List sysDictList = sysDictService.list(queryWrapper); + for (SysDict dictMain : sysDictList) { + SysDictPage vo = new SysDictPage(); + BeanUtils.copyProperties(dictMain, vo); + // 查询机票 + List sysDictItemList = sysDictItemService.selectItemsByMainId(dictMain.getId()); + vo.setSysDictItemList(sysDictItemList); + pageList.add(vo); + } + + // 导出文件名称 + mv.addObject(NormalExcelConstants.FILE_NAME, "数据字典"); + // 注解对象Class + mv.addObject(NormalExcelConstants.CLASS, SysDictPage.class); + // 自定义表格参数 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("数据字典列表", "导出人:"+user.getRealname(), "数据字典")); + // 导出数据列表 + mv.addObject(NormalExcelConstants.DATA_LIST, pageList); + return mv; + } + + /** + * 通过excel导入数据 + * + * @param request + * @param + * @return + */ + @RequiresPermissions("nu:dict:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry entity : fileMap.entrySet()) { + // 获取上传文件对象 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(2); + params.setHeadRows(2); + params.setNeedSave(true); + try { + //导入Excel格式校验,看匹配的字段文本概率 + Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysDictPage.class, params); + if(t!=null && !t){ + throw new RuntimeException("导入Excel校验失败 !"); + } + List list = ExcelImportUtil.importExcel(file.getInputStream(), SysDictPage.class, params); + // 错误信息 + List errorMessage = new ArrayList<>(); + int successLines = 0, errorLines = 0; + for (int i=0;i< list.size();i++) { + SysDict po = new SysDict(); + BeanUtils.copyProperties(list.get(i), po); + po.setTag("nu"); + po.setDelFlag(CommonConstant.DEL_FLAG_0); + try { + Integer integer = sysDictService.saveMain(po, list.get(i).getSysDictItemList()); + if(integer>0){ + successLines++; + //update-begin---author:wangshuai ---date:20220211 for:[JTC-1168]如果字典项值为空,则字典项忽略导入------------ + }else if(integer == -1){ + errorLines++; + errorMessage.add("字典名称:" + po.getDictName() + ",对应字典列表的字典项值不能为空,忽略导入。"); + }else{ + //update-end---author:wangshuai ---date:20220211 for:[JTC-1168]如果字典项值为空,则字典项忽略导入------------ + errorLines++; + int lineNumber = i + 1; + //update-begin---author:wangshuai ---date:20220209 for:[JTC-1168]字典编号不能为空------------ + if(oConvertUtils.isEmpty(po.getDictCode())){ + errorMessage.add("第 " + lineNumber + " 行:字典编码不能为空,忽略导入。"); + }else{ + errorMessage.add("第 " + lineNumber + " 行:字典编码已经存在,忽略导入。"); + } + //update-end---author:wangshuai ---date:20220209 for:[JTC-1168]字典编号不能为空------------ + } + } catch (Exception e) { + errorLines++; + int lineNumber = i + 1; + errorMessage.add("第 " + lineNumber + " 行:字典编码已经存在,忽略导入。"); + } + } + return ImportExcelUtil.imporReturnRes(errorLines,successLines,errorMessage); + } catch (Exception e) { + log.error(e.getMessage(),e); + return Result.error("文件导入失败:"+e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return Result.error("文件导入失败!"); + } + + + /** + * 查询被删除的列表 + * @return + */ + @RequestMapping(value = "/deleteList", method = RequestMethod.GET) + public Result> deleteList(HttpServletRequest request) { + Result> result = new Result>(); + String tenantId = TokenUtils.getTenantIdByRequest(request); + List list = this.sysDictService.queryDeleteList(tenantId,"nu"); + result.setSuccess(true); + result.setResult(list); + return result; + } + + /** + * 物理删除 + * @param id + * @return + */ + @RequestMapping(value = "/deletePhysic/{id}", method = RequestMethod.DELETE) + public Result deletePhysic(@PathVariable("id") String id) { + try { + sysDictService.deleteOneDictPhysically(id); + return Result.ok("删除成功!"); + } catch (Exception e) { + e.printStackTrace(); + return Result.error("删除失败!"); + } + } + + /** + * 逻辑删除的字段,进行取回 + * @param id + * @return + */ + @RequestMapping(value = "/back/{id}", method = RequestMethod.PUT) + public Result back(@PathVariable("id") String id) { + try { + sysDictService.updateDictDelFlag(0,id); + return Result.ok("操作成功!"); + } catch (Exception e) { + e.printStackTrace(); + return Result.error("操作失败!"); + } + } + /** + * 还原被逻辑删除的用户 + * + * @param jsonObject + * @return + */ + @RequestMapping(value = "/putRecycleBin", method = RequestMethod.PUT) + public Result putRecycleBin(@RequestBody JSONObject jsonObject, HttpServletRequest request) { + try { + String ids = jsonObject.getString("ids"); + if (StringUtils.isNotBlank(ids)) { + sysDictService.revertLogicDeleted(Arrays.asList(ids.split(","))); + return Result.ok("操作成功!"); + } + } catch (Exception e) { + e.printStackTrace(); + return Result.error("操作失败!"); + } + return Result.ok("还原成功"); + } + /** + * 彻底删除字典 + * + * @param ids 被删除的字典ID,多个id用半角逗号分割 + * @return + */ + @RequiresPermissions("nu:dict:deleteRecycleBin") + @RequestMapping(value = "/deleteRecycleBin", method = RequestMethod.DELETE) + public Result deleteRecycleBin(@RequestParam("ids") String ids) { + try { + if (StringUtils.isNotBlank(ids)) { + sysDictService.removeLogicDeleted(Arrays.asList(ids.split(","))); + } + return Result.ok("删除成功!"); + } catch (Exception e) { + e.printStackTrace(); + return Result.error("删除失败!"); + } + } + + /** + * VUEN-2584【issue】平台sql注入漏洞几个问题 + * 部分特殊函数 可以将查询结果混夹在错误信息中,导致数据库的信息暴露 + * @param e + * @return + */ + @ExceptionHandler(java.sql.SQLException.class) + public Result handleSQLException(Exception e){ + String msg = e.getMessage(); + String extractvalue = "extractvalue"; + String updatexml = "updatexml"; + if(msg!=null && (msg.toLowerCase().indexOf(extractvalue)>=0 || msg.toLowerCase().indexOf(updatexml)>=0)){ + return Result.error("校验失败,sql解析异常!"); + } + return Result.error("校验失败,sql解析异常!" + msg); + } + + /** + * 根据应用id获取字典列表和详情 + * @param request + */ + @GetMapping("/getDictListByLowAppId") + public Result> getDictListByLowAppId(HttpServletRequest request){ + String lowAppId = oConvertUtils.getString(TokenUtils.getLowAppIdByRequest(request)); + List list = sysDictService.getDictListByLowAppId(lowAppId); + return Result.ok(list); + } + + /** + * 添加字典 + * @param sysDictVo + * @param request + * @return + */ + @PostMapping("/addDictByLowAppId") + public Result addDictByLowAppId(@RequestBody SysDictVo sysDictVo,HttpServletRequest request){ + String lowAppId = oConvertUtils.getString(TokenUtils.getLowAppIdByRequest(request)); + String tenantId = oConvertUtils.getString(TokenUtils.getTenantIdByRequest(request)); + sysDictVo.setLowAppId(lowAppId); + sysDictVo.setTenantId(oConvertUtils.getInteger(tenantId, null)); + sysDictService.addDictByLowAppId(sysDictVo); + return Result.ok("添加成功"); + } + + @PutMapping("/editDictByLowAppId") + public Result editDictByLowAppId(@RequestBody SysDictVo sysDictVo,HttpServletRequest request){ + String lowAppId = oConvertUtils.getString(TokenUtils.getLowAppIdByRequest(request)); + sysDictVo.setLowAppId(lowAppId); + sysDictService.editDictByLowAppId(sysDictVo); + return Result.ok("编辑成功"); + } +} diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/NuDictItemController.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/NuDictItemController.java new file mode 100644 index 0000000..c4a1daa --- /dev/null +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/NuDictItemController.java @@ -0,0 +1,177 @@ +package org.jeecg.modules.system.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CacheConstant; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.system.entity.SysDictItem; +import org.jeecg.modules.system.service.ISysDictItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.Date; + +/** + *

+ * 前端控制器 + *

+ * + * @Author zhangweijian + * @since 2018-12-28 + */ +@Api(tags = "数据字典") +@RestController +@RequestMapping("/nu/dictItem") +@Slf4j +public class NuDictItemController { + + @Autowired + private ISysDictItemService sysDictItemService; + + /** + * @功能:查询字典数据 + * @param sysDictItem + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @RequestMapping(value = "/list", method = RequestMethod.GET) + public Result> queryPageList(SysDictItem sysDictItem, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { + Result> result = new Result>(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); + queryWrapper.orderByAsc("sort_order"); + Page page = new Page(pageNo, pageSize); + IPage pageList = sysDictItemService.page(page, queryWrapper); + result.setSuccess(true); + result.setResult(pageList); + return result; + } + + /** + * @功能:新增 + * @return + */ + @RequiresPermissions("nu:dict:item:add") + @RequestMapping(value = "/add", method = RequestMethod.POST) + @CacheEvict(value= {CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) + public Result add(@RequestBody SysDictItem sysDictItem) { + Result result = new Result(); + try { + sysDictItem.setCreateTime(new Date()); + sysDictItemService.save(sysDictItem); + result.success("保存成功!"); + } catch (Exception e) { + log.error(e.getMessage(),e); + result.error500("操作失败"); + } + return result; + } + + /** + * @功能:编辑 + * @param sysDictItem + * @return + */ + @RequiresPermissions("nu:dict:item:edit") + @RequestMapping(value = "/edit", method = { RequestMethod.PUT,RequestMethod.POST }) + @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) + public Result edit(@RequestBody SysDictItem sysDictItem) { + Result result = new Result(); + SysDictItem sysdict = sysDictItemService.getById(sysDictItem.getId()); + if(sysdict==null) { + result.error500("未找到对应实体"); + }else { + sysDictItem.setUpdateTime(new Date()); + boolean ok = sysDictItemService.updateById(sysDictItem); + //TODO 返回false说明什么? + if(ok) { + result.success("编辑成功!"); + } + } + return result; + } + + /** + * @功能:删除字典数据 + * @param id + * @return + */ + @RequiresPermissions("nu:dict:item:delete") + @RequestMapping(value = "/delete", method = RequestMethod.DELETE) + @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) + public Result delete(@RequestParam(name="id",required=true) String id) { + Result result = new Result(); + SysDictItem joinSystem = sysDictItemService.getById(id); + if(joinSystem==null) { + result.error500("未找到对应实体"); + }else { + boolean ok = sysDictItemService.removeById(id); + if(ok) { + result.success("删除成功!"); + } + } + return result; + } + + /** + * @功能:批量删除字典数据 + * @param ids + * @return + */ + @RequiresPermissions("nu:dict:item:deleteBatch") + @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) + @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + Result result = new Result(); + if(ids==null || "".equals(ids.trim())) { + result.error500("参数不识别!"); + }else { + this.sysDictItemService.removeByIds(Arrays.asList(ids.split(","))); + result.success("删除成功!"); + } + return result; + } + + /** + * 字典值重复校验 + * @param sysDictItem + * @param request + * @return + */ + @RequestMapping(value = "/dictItemCheck", method = RequestMethod.GET) + @ApiOperation("字典重复校验接口") + public Result doDictItemCheck(SysDictItem sysDictItem, HttpServletRequest request) { + Long num = Long.valueOf(0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(SysDictItem::getItemValue,sysDictItem.getItemValue()); + queryWrapper.eq(SysDictItem::getDictId,sysDictItem.getDictId()); + if (StringUtils.isNotBlank(sysDictItem.getId())) { + // 编辑页面校验 + queryWrapper.ne(SysDictItem::getId,sysDictItem.getId()); + } + num = sysDictItemService.count(queryWrapper); + if (num == 0) { + // 该值可用 + return Result.ok("该值可用!"); + } else { + // 该值不可用 + log.info("该值不可用,系统中已存在!"); + return Result.error("该值不可用,系统中已存在!"); + } + } + +} diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java index 14c7b22..1c54a24 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java @@ -93,6 +93,7 @@ public class SysDictController { } //------------------------------------------------------------------------------------------------ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDict, req.getParameterMap()); + queryWrapper.eq("tag","sys"); // 查询关键字,模糊筛选code和name if (oConvertUtils.isNotEmpty(keywords)) { queryWrapper.and(i -> i.like("dict_code", keywords).or().like("dict_name", keywords)); @@ -120,7 +121,7 @@ public class SysDictController { @SuppressWarnings("unchecked") @RequestMapping(value = "/treeList", method = RequestMethod.GET) public Result> treeList(SysDict sysDict, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { Result> result = new Result<>(); LambdaQueryWrapper query = new LambdaQueryWrapper<>(); // 构造查询条件 @@ -163,8 +164,8 @@ public class SysDictController { String text = null; try { text = sysDictService.queryDictTextByKey(dictCode, key); - result.setSuccess(true); - result.setResult(text); + result.setSuccess(true); + result.setResult(text); } catch (Exception e) { log.error(e.getMessage(),e); result.error500("操作失败"); @@ -210,10 +211,10 @@ public class SysDictController { */ @RequestMapping(value = "/loadDict/{dictCode}", method = RequestMethod.GET) public Result> loadDict(@PathVariable("dictCode") String dictCode, - @RequestParam(name="keyword",required = false) String keyword, - @RequestParam(value = "sign",required = false) String sign, - @RequestParam(name = "pageNo", defaultValue = "1", required = false) Integer pageNo, - @RequestParam(name = "pageSize", defaultValue = "10", required = false) Integer pageSize) { + @RequestParam(name="keyword",required = false) String keyword, + @RequestParam(value = "sign",required = false) String sign, + @RequestParam(name = "pageNo", defaultValue = "1", required = false) Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10", required = false) Integer pageSize) { //update-begin-author:taoyan date:2023-5-22 for: /issues/4905 因为中括号(%5)的问题导致的 表单生成器字段配置时,选择关联字段,在进行高级配置时,无法加载数据库列表,提示 Sgin签名校验错误! #4905 RouteToRequestUrlFilter if(keyword!=null && keyword.indexOf("%5")>=0){ @@ -336,13 +337,13 @@ public class SysDictController { @SuppressWarnings("unchecked") @RequestMapping(value = "/loadTreeData", method = RequestMethod.GET) public Result> loadTreeData(@RequestParam(name="pid",required = false) String pid, @RequestParam(name="pidField") String pidField, - @RequestParam(name="tableName") String tableName, - @RequestParam(name="text") String text, - @RequestParam(name="code") String code, - @RequestParam(name="hasChildField") String hasChildField, - @RequestParam(name="converIsLeafVal",defaultValue ="1") int converIsLeafVal, - @RequestParam(name="condition") String condition, - @RequestParam(value = "sign",required = false) String sign, HttpServletRequest request) { + @RequestParam(name="tableName") String tableName, + @RequestParam(name="text") String text, + @RequestParam(name="code") String code, + @RequestParam(name="hasChildField") String hasChildField, + @RequestParam(name="converIsLeafVal",defaultValue ="1") int converIsLeafVal, + @RequestParam(name="condition") String condition, + @RequestParam(value = "sign",required = false) String sign, HttpServletRequest request) { Result> result = new Result>(); // 【QQYUN-9207】防止参数为空导致报错 @@ -389,9 +390,10 @@ public class SysDictController { * @param sysDict * @return */ - @RequiresPermissions("system:dict:add") + @RequiresPermissions("system:dict:add") @RequestMapping(value = "/add", method = RequestMethod.POST) public Result add(@RequestBody SysDict sysDict) { + sysDict.setTag("sys"); Result result = new Result(); try { sysDict.setCreateTime(new Date()); @@ -410,7 +412,7 @@ public class SysDictController { * @param sysDict * @return */ - @RequiresPermissions("system:dict:edit") + @RequiresPermissions("system:dict:edit") @RequestMapping(value = "/edit", method = { RequestMethod.PUT,RequestMethod.POST }) public Result edit(@RequestBody SysDict sysDict) { Result result = new Result(); @@ -432,7 +434,7 @@ public class SysDictController { * @param id * @return */ - @RequiresPermissions("system:dict:delete") + @RequiresPermissions("system:dict:delete") @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result delete(@RequestParam(name="id",required=true) String id) { @@ -451,7 +453,7 @@ public class SysDictController { * @param ids * @return */ - @RequiresPermissions("system:dict:deleteBatch") + @RequiresPermissions("system:dict:deleteBatch") @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) @CacheEvict(value= {CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true) public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { @@ -518,6 +520,7 @@ public class SysDictController { */ @RequestMapping(value = "/exportXls") public ModelAndView exportXls(SysDict sysDict,HttpServletRequest request) { + sysDict.setTag("sys"); //------------------------------------------------------------------------------------------------ //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ @@ -564,13 +567,13 @@ public class SysDictController { * @param * @return */ - @RequiresPermissions("system:dict:importExcel") + @RequiresPermissions("system:dict:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { - MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { - // 获取上传文件对象 + // 获取上传文件对象 MultipartFile file = entity.getValue(); ImportParams params = new ImportParams(); params.setTitleRows(2); @@ -589,27 +592,28 @@ public class SysDictController { for (int i=0;i< list.size();i++) { SysDict po = new SysDict(); BeanUtils.copyProperties(list.get(i), po); + po.setTag("sys"); po.setDelFlag(CommonConstant.DEL_FLAG_0); try { Integer integer = sysDictService.saveMain(po, list.get(i).getSysDictItemList()); if(integer>0){ successLines++; - //update-begin---author:wangshuai ---date:20220211 for:[JTC-1168]如果字典项值为空,则字典项忽略导入------------ + //update-begin---author:wangshuai ---date:20220211 for:[JTC-1168]如果字典项值为空,则字典项忽略导入------------ }else if(integer == -1){ - errorLines++; - errorMessage.add("字典名称:" + po.getDictName() + ",对应字典列表的字典项值不能为空,忽略导入。"); - }else{ - //update-end---author:wangshuai ---date:20220211 for:[JTC-1168]如果字典项值为空,则字典项忽略导入------------ + errorLines++; + errorMessage.add("字典名称:" + po.getDictName() + ",对应字典列表的字典项值不能为空,忽略导入。"); + }else{ + //update-end---author:wangshuai ---date:20220211 for:[JTC-1168]如果字典项值为空,则字典项忽略导入------------ errorLines++; int lineNumber = i + 1; - //update-begin---author:wangshuai ---date:20220209 for:[JTC-1168]字典编号不能为空------------ - if(oConvertUtils.isEmpty(po.getDictCode())){ - errorMessage.add("第 " + lineNumber + " 行:字典编码不能为空,忽略导入。"); - }else{ - errorMessage.add("第 " + lineNumber + " 行:字典编码已经存在,忽略导入。"); - } - //update-end---author:wangshuai ---date:20220209 for:[JTC-1168]字典编号不能为空------------ - } + //update-begin---author:wangshuai ---date:20220209 for:[JTC-1168]字典编号不能为空------------ + if(oConvertUtils.isEmpty(po.getDictCode())){ + errorMessage.add("第 " + lineNumber + " 行:字典编码不能为空,忽略导入。"); + }else{ + errorMessage.add("第 " + lineNumber + " 行:字典编码已经存在,忽略导入。"); + } + //update-end---author:wangshuai ---date:20220209 for:[JTC-1168]字典编号不能为空------------ + } } catch (Exception e) { errorLines++; int lineNumber = i + 1; @@ -640,7 +644,7 @@ public class SysDictController { public Result> deleteList(HttpServletRequest request) { Result> result = new Result>(); String tenantId = TokenUtils.getTenantIdByRequest(request); - List list = this.sysDictService.queryDeleteList(tenantId); + List list = this.sysDictService.queryDeleteList(tenantId,"sys"); result.setSuccess(true); result.setResult(list); return result; diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDict.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDict.java index 6458ab0..63968c6 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDict.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDict.java @@ -55,6 +55,13 @@ public class SysDict implements Serializable { */ private String description; + /** + * 标识 + * sys:系统字典,非客户使用字典 + * nu:业务字典,客户使用字典 + */ + private String tag; + /** * 删除状态 */ diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java index 9f99029..d31a7ce 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java @@ -29,25 +29,25 @@ public interface SysDictMapper extends BaseMapper { /** * 重复检查SQL - * @param duplicateCheckVo + * @param duplicateCheckVo * @return */ @Deprecated public Long duplicateCheckCountSql(DuplicateCheckVo duplicateCheckVo); - /** - * 重复校验 sql语句 - * @param duplicateCheckVo - * @return - */ + /** + * 重复校验 sql语句 + * @param duplicateCheckVo + * @return + */ @Deprecated public Long duplicateCheckCountSqlNoDataId(DuplicateCheckVo duplicateCheckVo); - /** - * 通过字典code获取字典数据 - * @param code 字典code - * @return List - */ + /** + * 通过字典code获取字典数据 + * @param code 字典code + * @return List + */ public List queryDictItemsByCode(@Param("code") String code); /** @@ -66,12 +66,12 @@ public interface SysDictMapper extends BaseMapper { */ public List queryDictItemsByCodeList(@Param("dictCodeList") List dictCodeList); - /** - * 通过字典code获取字典数据 - * @param code - * @param key - * @return - */ + /** + * 通过字典code获取字典数据 + * @param code + * @param key + * @return + */ public String queryDictTextByKey(@Param("code") String code,@Param("key") String key); /** @@ -101,14 +101,14 @@ public interface SysDictMapper extends BaseMapper { public List queryAllUserBackDictModel(); /** - * 根据表名、显示字段名、存储字段名 查询树 + * 根据表名、显示字段名、存储字段名 查询树 * @param table * @param text * @param code * @param pid * @param hasChildField - * @param query - * @param pidField + * @param query + * @param pidField * @return */ @Deprecated @@ -127,8 +127,8 @@ public interface SysDictMapper extends BaseMapper { * 查询被逻辑删除的数据 * @return */ - @Select("select * from sys_dict where del_flag = 1") - public List queryDeleteList(); + @Select("select * from sys_dict where del_flag = 1 and tag = #{tag}") + public List queryDeleteList(@Param("tag") String tag); /** * 修改状态值 @@ -192,14 +192,14 @@ public interface SysDictMapper extends BaseMapper { * @return */ @InterceptorIgnore(tenantLine = "true") - List getDictListByLowAppId(@Param("lowAppId") String lowAppId, @Param("tenantId") Integer tenantId); + List getDictListByLowAppId(@Param("lowAppId") String lowAppId, @Param("tenantId") Integer tenantId); /** * 查询被逻辑删除的数据(根据租户id) * @return */ - @Select("select * from sys_dict where del_flag = 1 and tenant_id = #{tenantId}") - List queryDeleteListBtTenantId(@Param("tenantId") Integer tenantId); + @Select("select * from sys_dict where del_flag = 1 and tenant_id = #{tenantId} and tag = #{tag}}") + List queryDeleteListBtTenantId(@Param("tenantId") Integer tenantId,@Param("tag") String tag); /** * 还原被逻辑删除的数据(根据id) @@ -213,7 +213,7 @@ public interface SysDictMapper extends BaseMapper { * @param ids * @return */ - int removeLogicDeleted(@Param("ids")List ids); + int removeLogicDeleted(@Param("ids")List ids); int existColumn(@Param("tableName") String tableName, @Param("columnName") String columnName); } diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java index 4cae5fe..68bf741 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java @@ -31,12 +31,12 @@ public interface ISysDictService extends IService { @Deprecated public boolean duplicateCheckData(DuplicateCheckVo duplicateCheckVo); - /** - * 通过字典code获取字典数据 - * @param code - * @return - */ - public List queryDictItemsByCode(String code); + /** + * 通过字典code获取字典数据 + * @param code + * @return + */ + public List queryDictItemsByCode(String code); /** * 查询有效的数据字典项 @@ -53,40 +53,40 @@ public interface ISysDictService extends IService { */ Map> queryDictItemsByCodeList(List dictCodeList); - /** - * 登录加载系统字典 - * @return - */ - public Map> queryAllDictItems(); + /** + * 登录加载系统字典 + * @return + */ + public Map> queryAllDictItems(); - /** - * 查通过查询指定table的 text code 获取字典 - * @param tableFilterSql - * @param text - * @param code - * @return - */ - @Deprecated - List queryTableDictItemsByCode(String tableFilterSql, String text, String code); + /** + * 查通过查询指定table的 text code 获取字典 + * @param tableFilterSql + * @param text + * @param code + * @return + */ + @Deprecated + List queryTableDictItemsByCode(String tableFilterSql, String text, String code); - /** - * 通过查询指定table的 text code 获取字典(指定查询条件) - * @param table - * @param text - * @param code - * @param filterSql - * @return - */ - @Deprecated + /** + * 通过查询指定table的 text code 获取字典(指定查询条件) + * @param table + * @param text + * @param code + * @param filterSql + * @return + */ + @Deprecated public List queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql); - /** - * 通过字典code及字典项的value获取字典文本 - * @param code - * @param key - * @return - */ - public String queryDictTextByKey(String code, String key); + /** + * 通过字典code及字典项的value获取字典文本 + * @param code + * @param key + * @return + */ + public String queryDictTextByKey(String code, String key); /** * 可通过多个字典code查询翻译文本 @@ -96,15 +96,15 @@ public interface ISysDictService extends IService { */ Map> queryManyDictByKeys(List dictCodeList, List keys); - /** - * 通过查询指定table的 text code key 获取字典值 - * @param table - * @param text - * @param code - * @param key - * @return - */ - @Deprecated + /** + * 通过查询指定table的 text code key 获取字典值 + * @param table + * @param text + * @param code + * @param key + * @return + */ + @Deprecated String queryTableDictTextByKey(String table, String text, String code, String key); //update-begin---author:chenrui ---date:20231221 for:[issues/#5643]解决分布式下表字典跨库无法查询问题------------ @@ -121,46 +121,46 @@ public interface ISysDictService extends IService { List queryTableDictTextByKeys(String table, String text, String code, List keys, String dataSource); //update-end---author:chenrui ---date:20231221 for:[issues/#5643]解决分布式下表字典跨库无法查询问题------------ - /** - * 通过查询指定table的 text code key 获取字典值,包含value - * @param table 表名 - * @param text - * @param code - * @param keys - * @return - */ + /** + * 通过查询指定table的 text code key 获取字典值,包含value + * @param table 表名 + * @param text + * @param code + * @param keys + * @return + */ @Deprecated List queryTableDictByKeys(String table, String text, String code, String keys); - /** - * 通过查询指定table的 text code key 获取字典值,包含value - * @param table - * @param text - * @param code - * @param keys - * @param delNotExist - * @return - */ + /** + * 通过查询指定table的 text code key 获取字典值,包含value + * @param table + * @param text + * @param code + * @param keys + * @param delNotExist + * @return + */ @Deprecated List queryTableDictByKeys(String table, String text, String code, String keys,boolean delNotExist); - /** - * 根据字典类型删除关联表中其对应的数据 - * - * @param sysDict - * @return - */ - boolean deleteByDictId(SysDict sysDict); + /** + * 根据字典类型删除关联表中其对应的数据 + * + * @param sysDict + * @return + */ + boolean deleteByDictId(SysDict sysDict); - /** - * 添加一对多 - * @param sysDict - * @param sysDictItemList - * @return Integer - */ - public Integer saveMain(SysDict sysDict, List sysDictItemList); + /** + * 添加一对多 + * @param sysDict + * @param sysDictItemList + * @return Integer + */ + public Integer saveMain(SysDict sysDict, List sysDictItemList); - /** + /** * 查询所有部门 作为字典信息 id -->value,departName -->text * @return */ @@ -189,8 +189,8 @@ public interface ISysDictService extends IService { * @param text * @param code * @param keyword - * @param condition - * @param pageSize 每页条数 + * @param condition + * @param pageSize 每页条数 * @return */ @Deprecated @@ -208,14 +208,14 @@ public interface ISysDictService extends IService { @Deprecated public List queryAllTableDictItems(String table, String text, String code, String condition, String keyword); /** - * 根据表名、显示字段名、存储字段名 查询树 + * 根据表名、显示字段名、存储字段名 查询树 * @param table * @param text * @param code * @param pidField * @param pid * @param hasChildField - * @param query + * @param query * @return */ @Deprecated @@ -238,7 +238,7 @@ public interface ISysDictService extends IService { * 查询被逻辑删除的数据 * @return */ - public List queryDeleteList(String tenantId); + public List queryDeleteList(String tenantId,String tag); /** * 分页查询 @@ -250,25 +250,25 @@ public interface ISysDictService extends IService { @Deprecated public List queryDictTablePageList(DictQuery query,int pageSize, int pageNo); - /** - * 获取字典数据 - * @param dictCode 字典code - * @param dictCode 表名,文本字段,code字段 | 举例:sys_user,realname,id - * @return - */ - List getDictItems(String dictCode); + /** + * 获取字典数据 + * @param dictCode 字典code + * @param dictCode 表名,文本字段,code字段 | 举例:sys_user,realname,id + * @return + */ + List getDictItems(String dictCode); - /** - * 【JSearchSelectTag下拉搜索组件专用接口】 - * 大数据量的字典表 走异步加载 即前端输入内容过滤数据 - * - * @param dictCode 字典code格式:table,text,code - * @param keyword - * @param pageNo - * @param pageSize 每页条数 - * @return - */ - List loadDict(String dictCode, String keyword, Integer pageNo, Integer pageSize); + /** + * 【JSearchSelectTag下拉搜索组件专用接口】 + * 大数据量的字典表 走异步加载 即前端输入内容过滤数据 + * + * @param dictCode 字典code格式:table,text,code + * @param keyword + * @param pageNo + * @param pageSize 每页条数 + * @return + */ + List loadDict(String dictCode, String keyword, Integer pageNo, Integer pageSize); /** * 根据应用id获取字典列表和详情 diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java index 15b09d0..f1fc063 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java @@ -701,16 +701,16 @@ public class SysDictServiceImpl extends ServiceImpl impl } @Override - public List queryDeleteList(String tenantId) { + public List queryDeleteList(String tenantId,String tag) { //update-begin---author:wangshuai---date:2024-02-27---for:【QQYUN-8340】回收站查找软删除记录时,没有判断是否启用多租户,造成可以查找并回收其他租户的数据 #5907--- if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) { if (oConvertUtils.isEmpty(tenantId)) { return new ArrayList<>(); } - return baseMapper.queryDeleteListBtTenantId(oConvertUtils.getInt(tenantId)); + return baseMapper.queryDeleteListBtTenantId(oConvertUtils.getInt(tenantId),tag); } //update-end---author:wangshuai---date:2024-02-27---for:【QQYUN-8340】回收站查找软删除记录时,没有判断是否启用多租户,造成可以查找并回收其他租户的数据 #5907--- - return baseMapper.queryDeleteList(); + return baseMapper.queryDeleteList(tag); } @Override