DataDictServiceImpl.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.kym.service.miniapp.impl;
  2. import com.github.yulichang.base.MPJBaseServiceImpl;
  3. import com.kym.common.utils.CommUtil;
  4. import com.kym.entity.miniapp.DataDict;
  5. import com.kym.mapper.miniapp.DataDictMapper;
  6. import com.kym.service.miniapp.DataDictService;
  7. import org.springframework.stereotype.Service;
  8. import org.springframework.transaction.annotation.Transactional;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Objects;
  12. import java.util.stream.Collectors;
  13. /**
  14. * <p>
  15. * 数据字典 服务实现类
  16. * </p>
  17. *
  18. * @author zuy
  19. * @since 2023-08-13
  20. */
  21. @Service
  22. public class DataDictServiceImpl extends MPJBaseServiceImpl<DataDictMapper, DataDict> implements DataDictService {
  23. @Override
  24. public Object list(DataDict query) {
  25. var list = lambdaQuery()
  26. .like(CommUtil.isNotEmptyAndNull(query.getCode()), DataDict::getCode, query.getCode())
  27. .like(CommUtil.isNotEmptyAndNull(query.getName()), DataDict::getName, query.getName())
  28. .list();
  29. return list;
  30. }
  31. /*
  32. @Override
  33. public Object listV2(IQuery<DataDict> query) {
  34. QueryChainWrapper<DataDict> wrapper = getWrapper(query.query, DataDict.class);
  35. wrapper.select("distinct(code)");
  36. Long count = wrapper.count();
  37. PageHelper.startPage(query.pageNum, query.pageSize);
  38. List<DataDict> list = wrapper.list();
  39. if (CommUtil.isNotEmptyAndNull(list)) {
  40. List<DataDict> list1 = lambdaQuery().in(CommUtil.isNotEmptyAndNull(list), DataDict::getCode, list.stream().map(DataDict::getCode).collect(Collectors.toList())).list();
  41. return IQuery.newPageBean(count, list1.stream().filter(CommUtil.distinctByKey(DataDict::getCode)).toList());
  42. } else {
  43. return IQuery.newPageBean(0, Collections.emptyList());
  44. }
  45. }*/
  46. @Transactional(rollbackFor = Exception.class)
  47. @Override
  48. public void saveOrUpdate(List<DataDict> dictList) {
  49. List<DataDict> list = lambdaQuery().list();
  50. if (CommUtil.isNotEmptyAndNull(list)) {
  51. Map<String, List<DataDict>> dbDictMap = list.stream().collect(Collectors.groupingBy(DataDict::getCode));
  52. //校验重名和重复值
  53. dictList.forEach(dict -> {
  54. List<DataDict> dataDicts = dbDictMap.get(dict.getCode());
  55. if (CommUtil.isNotEmptyAndNull(dataDicts)) {
  56. CommUtil.asserts(dataDicts.stream().noneMatch(k-> !Objects.equals(k.getId(), dict.getId()) &&(k.getName().equalsIgnoreCase(dict.getName())||k.getValue().equalsIgnoreCase(dict.getValue()))),String.format("字典%s取值异常,请核对",dict.getCode()));
  57. }
  58. });
  59. }
  60. saveOrUpdateBatch(dictList);
  61. }
  62. }