字典修改

This commit is contained in:
2022-11-30 19:34:52 +08:00
parent ba2c3606a6
commit 47db877b0a
13 changed files with 208 additions and 145 deletions

View File

@@ -69,4 +69,5 @@ public class Dict extends BaseEntity implements Serializable {
private String para2;
private String para3;
}

View File

@@ -16,6 +16,7 @@
package org.nl.modules.system.rest;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
/**
@@ -50,21 +52,21 @@ public class DictController {
@ApiOperation("导出字典数据")
@GetMapping(value = "/download")
@SaCheckPermission("dict:list")
// @SaCheckPermission("dict:list")
public void download(HttpServletResponse response, DictQueryCriteria criteria) throws IOException {
dictService.download(dictService.queryAll(criteria), response);
}
@ApiOperation("查询字典")
@GetMapping(value = "/all")
@SaCheckPermission("dict:list")
// @SaCheckPermission("dict:list")
public ResponseEntity<Object> queryAll(){
return new ResponseEntity<>(dictService.queryAll(new DictQueryCriteria()),HttpStatus.OK);
}
@ApiOperation("查询字典")
@GetMapping
@SaCheckPermission("dict:list")
// @SaCheckPermission("dict:list")
public ResponseEntity<Object> query(DictQueryCriteria resources, Pageable pageable){
return new ResponseEntity<>(dictService.queryAll(resources,pageable),HttpStatus.OK);
}
@@ -72,8 +74,8 @@ public class DictController {
@Log("新增字典")
@ApiOperation("新增字典")
@PostMapping
@SaCheckPermission("dict:add")
public ResponseEntity<Object> create(@RequestBody Dict resources){
// @SaCheckPermission("dict:add")
public ResponseEntity<Object> create(@RequestBody DictDto resources){
if (resources.getDict_id() != null) {
throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
}
@@ -81,21 +83,22 @@ public class DictController {
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@Log("修改字典")
@ApiOperation("修改字典")
@PutMapping
@SaCheckPermission("dict:edit")
public ResponseEntity<Object> update(@Validated(Dict.Update.class) @RequestBody Dict resources){
dictService.update(resources);
//@SaCheckPermission("@el.check('dict:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody DictDto dto){
dictService.update(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@Log("删除字典")
@ApiOperation("删除字典")
@DeleteMapping
@SaCheckPermission("dict:del")
// @SaCheckPermission("dict:del")
public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
dictService.delete(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -27,6 +27,7 @@ import org.nl.modules.system.repository.DictRepository;
import org.nl.modules.system.service.DictDetailService;
import org.nl.modules.system.service.dto.DictDetailDto;
import org.nl.modules.system.service.dto.DictDetailQueryCriteria;
import org.nl.modules.system.service.dto.DictDto;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
@@ -49,7 +50,6 @@ import java.util.Optional;
@Api(tags = "系统:字典详情管理")
@RequestMapping("/api/dictDetail")
public class DictDetailController {
private final DictRepository dictRepository;
private final DictDetailService dictDetailService;
private static final String ENTITY_NAME = "dictDetail";
@@ -74,13 +74,8 @@ public class DictDetailController {
@Log("新增字典详情")
@ApiOperation("新增字典详情")
@PostMapping
@SaCheckPermission("dict:add")
public ResponseEntity<Object> create(@Validated @RequestBody DictDetail resources){
if (resources.getId() != null) {
throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
}
Optional<Dict> d=dictRepository.findById(resources.getDict().getDict_id());
resources.setName(dictRepository.findById(resources.getDict().getDict_id()).get().getName());
// @SaCheckPermission("dict:add")
public ResponseEntity<Object> create( @RequestBody DictDto resources){
dictDetailService.create(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -88,9 +83,8 @@ public class DictDetailController {
@Log("修改字典详情")
@ApiOperation("修改字典详情")
@PutMapping
@SaCheckPermission("dict:edit")
public ResponseEntity<Object> update(@Validated(DictDetail.Update.class) @RequestBody DictDetail resources){
resources.setName(dictRepository.findById(resources.getDict().getDict_id()).get().getName());
// @SaCheckPermission("dict:edit")
public ResponseEntity<Object> update(@RequestBody DictDto resources){
dictDetailService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -98,7 +92,7 @@ public class DictDetailController {
@Log("删除字典详情")
@ApiOperation("删除字典详情")
@DeleteMapping(value = "/{id}")
@SaCheckPermission("dict:del")
// @SaCheckPermission("dict:del")
public ResponseEntity<Object> delete(@PathVariable Long id){
dictDetailService.delete(id);
return new ResponseEntity<>(HttpStatus.OK);

View File

@@ -18,6 +18,7 @@ package org.nl.modules.system.service;
import org.nl.modules.system.domain.DictDetail;
import org.nl.modules.system.service.dto.DictDetailDto;
import org.nl.modules.system.service.dto.DictDetailQueryCriteria;
import org.nl.modules.system.service.dto.DictDto;
import org.springframework.data.domain.Pageable;
import java.util.List;
@@ -33,13 +34,13 @@ public interface DictDetailService {
* 创建
* @param resources /
*/
void create(DictDetail resources);
void create(DictDto resources);
/**
* 编辑
* @param resources /
*/
void update(DictDetail resources);
void update(DictDto resources);
/**
* 删除
@@ -61,4 +62,12 @@ public interface DictDetailService {
* @return /
*/
List<DictDetailDto> getDictByName(String name);
}
/**
* 根据ID查询
* @param dict_id ID
* @return Point
*/
DictDto findById(Long dict_id);
}

View File

@@ -15,6 +15,7 @@
*/
package org.nl.modules.system.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.modules.system.domain.Dict;
import org.nl.modules.system.service.dto.DictDto;
import org.nl.modules.system.service.dto.DictQueryCriteria;
@@ -52,7 +53,7 @@ public interface DictService {
* @param dict_id ID
* @return Point
*/
Dict findById(Long dict_id);
DictDto findById(Long dict_id);
/**
@@ -60,13 +61,13 @@ public interface DictService {
* @param resources /
* @return /
*/
void create(Dict resources);
void create(DictDto resources);
/**
* 编辑
* @param resources /
* @param dto /
*/
void update(Dict resources);
void update(DictDto dto);
/**
* 删除

View File

@@ -25,9 +25,8 @@ import org.nl.modules.common.annotation.Query;
@Data
public class DictDetailQueryCriteria {
@Query(type = Query.Type.INNER_LIKE)
private String label;
private String code;
@Query(propName = "name",joinName = "dict")
private String dictName;
}
private String name;
private String dict_id;
}

View File

@@ -1,66 +1,52 @@
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.nl.modules.system.service.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.io.Serializable;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.nl.modules.common.base.BaseDTO;
import java.io.Serializable;
import java.util.List;
/**
* @author Zheng Jie
* @date 2019-04-10
*/
* @description /
* @author lyd
* @date 2022-11-30
**/
@Data
public class DictDto implements Serializable {
public class DictDto implements Serializable {
// 字典标识
/** 字典标识 */
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long dict_id;
// 编码
@JsonSerialize(using= ToStringSerializer.class)
private Long id; // 区分使用
/** 编码 */
private String code;
// 名称
/** 名称 */
private String name;
// 字典标签
/** 字典标签 */
private String label;
// 字典值
/** 字典值 */
private String value;
// 排序号
private String dict_sort;
/** 排序号 */
private BigDecimal dict_sort;
// 字典类型
/** 字典类型 */
private String dict_type;
/**
* 参数123
*/
/** 参数1 */
private String para1;
/** 参数2 */
private String para2;
/** 参数3 */
private String para3;
/** 创建人 */

View File

@@ -25,6 +25,5 @@ import org.nl.modules.common.annotation.Query;
@Data
public class DictQueryCriteria {
@Query(blurry = "name")
private String blurry;
}

View File

@@ -15,11 +15,14 @@
*/
package org.nl.modules.system.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.nl.modules.common.utils.PageUtil;
import org.nl.modules.common.utils.QueryHelp;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.common.utils.ValidationUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.*;
import org.nl.modules.system.domain.Dict;
import org.nl.modules.system.domain.DictDetail;
import org.nl.modules.system.repository.DictDetailRepository;
@@ -27,7 +30,11 @@ import org.nl.modules.system.repository.DictRepository;
import org.nl.modules.system.service.DictDetailService;
import org.nl.modules.system.service.dto.DictDetailDto;
import org.nl.modules.system.service.dto.DictDetailQueryCriteria;
import org.nl.modules.system.service.dto.DictDto;
import org.nl.modules.system.service.mapstruct.DictDetailMapper;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
@@ -47,34 +54,51 @@ import java.util.Map;
@CacheConfig(cacheNames = "dict")
public class DictDetailServiceImpl implements DictDetailService {
private final DictRepository dictRepository;
private final DictDetailRepository dictDetailRepository;
private final DictDetailMapper dictDetailMapper;
private final RedisUtils redisUtils;
@Override
public Map<String,Object> queryAll(DictDetailQueryCriteria criteria, Pageable pageable) {
Page<DictDetail> page = dictDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(dictDetailMapper::toDto));
JSONObject map = new JSONObject();
map.put("flag", "2");
map.put("code", criteria.getCode());
JSONObject json = WQL.getWO("SYS_DICT").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageable), "dict_sort asc");
return json;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(DictDetail resources) {
dictDetailRepository.save(resources);
// 清理缓存
delCaches(resources);
public void create(DictDto resources) {
Long id = resources.getId();
DictDto dict = this.findById(id); // 字典
resources.setDict_id(IdUtil.getSnowflake(1, 1).nextId());
resources.setCode(dict.getCode());
resources.setName(dict.getName());
resources.setCreate_id(SecurityUtils.getCurrentUserId());
resources.setCreate_name(SecurityUtils.getCurrentNickName());
resources.setCreate_time(DateUtil.now());
resources.setUpdate_optid(SecurityUtils.getCurrentUserId());
resources.setUpdate_optname(SecurityUtils.getCurrentNickName());
resources.setUpdate_time(DateUtil.now());
WQLObject wo = WQLObject.getWQLObject("sys_dict");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(resources));
wo.insert(json);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DictDetail resources) {
DictDetail dictDetail = dictDetailRepository.findById(resources.getId()).orElseGet(DictDetail::new);
ValidationUtil.isNull( dictDetail.getId(),"DictDetail","id",resources.getId());
resources.setId(dictDetail.getId());
dictDetailRepository.save(resources);
public void update(DictDto dto) {
WQLObject dictTab = WQLObject.getWQLObject("sys_dict");
DictDto entity = this.findById(dto.getDict_id());
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
dto.setUpdate_time(DateUtil.now());
dto.setUpdate_optname(SecurityUtils.getCurrentNickName());
dto.setUpdate_optid(SecurityUtils.getCurrentUserId());
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
dictTab.update(json);
// 清理缓存
delCaches(resources);
delCaches(dto);
}
@Override
@@ -86,14 +110,28 @@ public class DictDetailServiceImpl implements DictDetailService {
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
DictDetail dictDetail = dictDetailRepository.findById(id).orElseGet(DictDetail::new);
DictDto dictDto = this.findById(id);
if (dictDto == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
// 清理缓存
delCaches(dictDetail);
dictDetailRepository.deleteById(id);
delCaches(dictDto);
WQLObject dictTab = WQLObject.getWQLObject("sys_dict");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dictDto));
dictTab.delete(json);
}
public void delCaches(DictDetail dictDetail){
Dict dict = dictRepository.findById(dictDetail.getDict().getDict_id()).orElseGet(Dict::new);
public void delCaches(DictDto dict){
redisUtils.del("dict::name:" + dict.getName());
}
@Override
public DictDto findById(Long dict_id) {
WQLObject wo = WQLObject.getWQLObject("sys_dict");
JSONObject json = wo.query("dict_id =" + dict_id + "").uniqueResult(0);
if (ObjectUtil.isNotEmpty(json)) {
return json.toJavaObject(DictDto.class);
}
final DictDto obj = json.toJavaObject(DictDto.class);
return obj;
}
}

View File

@@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
/**
@@ -51,8 +52,6 @@ import java.util.*;
@CacheConfig(cacheNames = "dict")
public class DictServiceImpl implements DictService {
private final DictRepository dictRepository;
private final DictMapper dictMapper;
private final RedisUtils redisUtils;
@Override
@@ -60,7 +59,7 @@ public class DictServiceImpl implements DictService {
JSONObject map = new JSONObject();
map.put("flag", "1");
map.put("blurry", dict.getBlurry());
JSONObject json = WQL.getWO("SYS_DICT").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageable), "code asc");
JSONObject json = WQL.getWO("SYS_DICT").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageable), "dict.code asc");
return json;
}
@@ -76,10 +75,10 @@ public class DictServiceImpl implements DictService {
@Override
@Transactional(rollbackFor = Exception.class)
public void create(Dict dto) {
public void create(DictDto dto) {
Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
Date date = new Date();
String date = DateUtil.now();
dto.setDict_id(IdUtil.getSnowflake(1, 1).nextId());
dto.setCreate_id(currentUserId);
dto.setCreate_name(nickName);
@@ -94,22 +93,24 @@ public class DictServiceImpl implements DictService {
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Dict resources) {
Dict entity = this.findById(resources.getDict_id());
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
// 清理缓存
delCaches(resources);
public void update(DictDto dto) {
DictDto entity = this.findById(dto.getDict_id());
if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!");
// 清除缓存
this.delCaches(dto);
Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
resources.setUpdate_time(new Date());
resources.setUpdate_optid(currentUserId);
resources.setUpdate_optname(nickName);
WQLObject dictTab = WQLObject.getWQLObject("sys_dict");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dictTab));
dictTab.update(json);
String now = DateUtil.now();
dto.setUpdate_time(now);
dto.setUpdate_optid(currentUserId);
dto.setUpdate_optname(nickName);
WQLObject wo = WQLObject.getWQLObject("sys_dict");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.update(json);
}
@Override
@@ -118,10 +119,10 @@ public class DictServiceImpl implements DictService {
WQLObject wo = WQLObject.getWQLObject("sys_dict");
for (Long dict_id : ids) {
// 清理缓存
Dict dictDto = this.findById(dict_id);
DictDto dictDto = this.findById(dict_id);
delCaches(dictDto);
// 删除数据
wo.delete("id = '" + dict_id + "'");
wo.delete("code = '" + dictDto.getCode() + "'");
}
}
@@ -152,18 +153,18 @@ public class DictServiceImpl implements DictService {
FileUtil.downloadExcel(list, response);
}
public void delCaches(Dict dict){
public void delCaches(DictDto dict){
redisUtils.del("dict::name:" + dict.getName());
}
@Override
public Dict findById(Long dict_id) {
public DictDto findById(Long dict_id) {
WQLObject wo = WQLObject.getWQLObject("sys_dict");
JSONObject json = wo.query("dict_id =" + dict_id + "").uniqueResult(0);
if (ObjectUtil.isNotEmpty(json)) {
return json.toJavaObject(Dict.class);
return json.toJavaObject(DictDto.class);
}
final Dict obj = json.toJavaObject(Dict.class);
final DictDto obj = json.toJavaObject(DictDto.class);
return obj;
}
}

View File

@@ -15,6 +15,7 @@
#################################################
输入.flag TYPEAS s_string
输入.blurry TYPEAS s_string
输入.code TYPEAS s_string
[临时表]
@@ -46,7 +47,9 @@
FROM
sys_dict dict
WHERE
1 = 1
ISNULL(dict.label)
OR
dict.label = ""
OPTION 输入.blurry <> ""
(dict.code like "%" 输入.blurry "%" or dict.name like "%" 输入.blurry "%")
ENDOPTION
@@ -54,5 +57,21 @@
ENDPAGEQUERY
ENDIF
IF 输入.flag = "2"
PAGEQUERY
SELECT
dict.*
FROM
sys_dict dict
WHERE
dict.label IS NOT NULL
AND dict.label != ""
OPTION 输入.code <> ""
dict.code = 输入.code
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF