clazz) {
+ try (ExcelReader reader = ExcelReader.read(stream)) {
+ return reader.sheet(0) // 读取第1个Sheet页
+ .header(1) // 指定第6行为表头
+ .rows() // 读取数据行
+ .map(row -> row.to(clazz))// 将每行数据转换为User对象
+ .collect(Collectors.toList()); // 收集数据进行后续处理
+ } catch (IOException e) {
+ throw new NflgException(STATE.BusinessError, "读取EXCEL失败,请检查模板是否正确:" + e.getMessage());
+ }
+ }
+
/**
* 行读取excel sheet 0
*
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java
index b16eb68d..54aa8315 100644
--- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/TokenUtil.java
@@ -27,4 +27,14 @@ public class TokenUtil {
throw new NflgException(STATE.LoginError,"请登录");
}
}
+
+ public static String getUserName() {
+ try {
+ //TODO 待实现
+ return "admin";
+ //return StpUtil.getLoginIdAsInt();
+ } catch (Exception ex) {
+ throw new NflgException(STATE.LoginError, "请登录");
+ }
+ }
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemMapper.java
index 24f5c9ca..4ace324d 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemMapper.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemMapper.java
@@ -1,7 +1,9 @@
package com.nflg.mobilebroken.repository.mapper;
-import com.nflg.mobilebroken.repository.entity.DictionaryItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nflg.mobilebroken.repository.entity.DictionaryItem;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.data.repository.query.Param;
/**
*
@@ -13,4 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface DictionaryItemMapper extends BaseMapper {
+ @Select("SELECT di.id FROM dictionary_item di INNER JOIN dictionary d ON di.dictionary_id=d.id WHERE d.`name`=#{dictionaryName} AND di.`name`=#{dictionaryItemName}")
+ Integer getId(@Param("dictionaryName") String dictionaryName, @Param("dictionaryItemName") String dictionaryItemName);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java
index 963b3d43..f7ecda4b 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DictionaryItemTranslateMapper.java
@@ -1,7 +1,10 @@
package com.nflg.mobilebroken.repository.mapper;
-import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nflg.mobilebroken.common.pojo.vo.DictionaryItemTranslateVO;
+import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate;
+
+import java.util.List;
/**
*
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface DictionaryItemTranslateMapper extends BaseMapper {
+ List getListByDictionaryItemId(Integer id);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemService.java
index fa69855e..713d1be6 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemService.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemService.java
@@ -1,7 +1,10 @@
package com.nflg.mobilebroken.repository.service;
-import com.nflg.mobilebroken.repository.entity.DictionaryItem;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.nflg.mobilebroken.common.pojo.request.DictionaryItemSearchRequest;
+import com.nflg.mobilebroken.common.pojo.request.SaveDictionaryItemRequest;
+import com.nflg.mobilebroken.repository.entity.DictionaryItem;
/**
*
@@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IDictionaryItemService extends IService {
+ void search(DictionaryItemSearchRequest request, IPage page);
+
+ void save(SaveDictionaryItemRequest request);
+
+ Integer getId(String dictionaryName, String dictionaryItemName);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java
index 703bc993..563f88ad 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryItemTranslateService.java
@@ -1,7 +1,14 @@
package com.nflg.mobilebroken.repository.service;
-import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.nflg.mobilebroken.common.pojo.dto.DictionaryItemTranslateDTO;
+import com.nflg.mobilebroken.common.pojo.vo.DictionaryItemTranslateVO;
+import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
/**
*
@@ -13,4 +20,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IDictionaryItemTranslateService extends IService {
+ List getListByDictionaryItemId(@Valid @NotNull Integer id);
+
+ List getAllLanguageByDictionaryItemIds(@NotEmpty List dictionaryItemIds);
+
+ Integer getId(Integer dictionaryItemId, String code);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryService.java
index ab8b7777..86a9256a 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryService.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDictionaryService.java
@@ -1,10 +1,11 @@
package com.nflg.mobilebroken.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.mobilebroken.common.pojo.request.DictionarySearchRequest;
+import com.nflg.mobilebroken.common.pojo.request.SaveDictionaryRequest;
import com.nflg.mobilebroken.common.pojo.vo.DictionaryVO;
import com.nflg.mobilebroken.repository.entity.Dictionary;
-import com.baomidou.mybatisplus.extension.service.IService;
/**
*
@@ -17,4 +18,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface IDictionaryService extends IService {
void search(DictionarySearchRequest request, IPage page);
+
+ void save(SaveDictionaryRequest request);
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java
index 38fdfeb7..300d7c4c 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemServiceImpl.java
@@ -1,10 +1,28 @@
package com.nflg.mobilebroken.repository.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.nflg.mobilebroken.common.pojo.request.DictionaryItemSearchRequest;
+import com.nflg.mobilebroken.common.pojo.request.SaveDictionaryItemRequest;
+import com.nflg.mobilebroken.common.pojo.request.TranslateMap;
+import com.nflg.mobilebroken.common.util.TokenUtil;
import com.nflg.mobilebroken.repository.entity.DictionaryItem;
+import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate;
import com.nflg.mobilebroken.repository.mapper.DictionaryItemMapper;
import com.nflg.mobilebroken.repository.service.IDictionaryItemService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
/**
*
@@ -17,4 +35,83 @@ import org.springframework.stereotype.Service;
@Service
public class DictionaryItemServiceImpl extends ServiceImpl implements IDictionaryItemService {
+ @Resource
+ private IDictionaryItemTranslateService dictionaryItemTranslateService;
+
+ @Override
+ public void search(DictionaryItemSearchRequest request, IPage page) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ if (StrUtil.isNotBlank(request.getName())) {
+ queryWrapper.like(DictionaryItem::getName, request.getName());
+ }
+ if (StrUtil.isNotBlank(request.getCode())) {
+ queryWrapper.like(DictionaryItem::getCode, request.getCode());
+ }
+ queryWrapper.orderByDesc(DictionaryItem::getId);
+ baseMapper.selectPage(page, queryWrapper);
+ }
+
+ @Transactional
+ @Override
+ public boolean removeBatchByIds(Collection> list) {
+ super.removeBatchByIds(list);
+ dictionaryItemTranslateService.remove(new LambdaQueryWrapper()
+ .in(DictionaryItemTranslate::getDictionaryItemId, list));
+ return true;
+ }
+
+ @Transactional
+ @Override
+ public void save(SaveDictionaryItemRequest request) {
+ Integer id = request.getId();
+ if (Objects.isNull(request.getId())) {
+ DictionaryItem dictionary = new DictionaryItem()
+ .setName(request.getName())
+ .setCode(request.getCode())
+ .setValue(request.getValue())
+ .setCreateBy(TokenUtil.getUserName())
+ .setCreateTime(LocalDateTime.now());
+ save(dictionary);
+ id = dictionary.getId();
+ } else {
+ DictionaryItem dictionary = new DictionaryItem()
+ .setId(request.getId())
+ .setName(request.getName())
+ .setCode(request.getCode())
+ .setValue(request.getValue())
+ .setUpdateBy(TokenUtil.getUserName())
+ .setUpdateTime(LocalDateTime.now());
+ updateById(dictionary);
+ }
+ if (CollectionUtil.isNotEmpty(request.getLanguages())) {
+ dictionaryItemTranslateService.remove(new LambdaQueryWrapper()
+ .eq(DictionaryItemTranslate::getDictionaryItemId, id));
+ List forAdd = new ArrayList<>();
+ List forUpdate = new ArrayList<>();
+ for (TranslateMap translate : request.getLanguages()) {
+ DictionaryItemTranslate t = new DictionaryItemTranslate()
+ .setDictionaryItemId(id)
+ .setLanguageCode(translate.getCode())
+ .setValue(translate.getValue());
+ if (Objects.isNull(translate.getId())) {
+ t.setCreateBy(TokenUtil.getUserName()).setCreateTime(LocalDateTime.now());
+ forAdd.add(t);
+ } else {
+ t.setId(translate.getId()).setUpdateBy(TokenUtil.getUserName()).setUpdateTime(LocalDateTime.now());
+ forUpdate.add(t);
+ }
+ }
+ if (CollectionUtil.isNotEmpty(forAdd)) {
+ dictionaryItemTranslateService.saveBatch(forAdd);
+ }
+ if (CollectionUtil.isNotEmpty(forUpdate)) {
+ dictionaryItemTranslateService.updateBatchById(forUpdate);
+ }
+ }
+ }
+
+ @Override
+ public Integer getId(String dictionaryName, String dictionaryItemName) {
+ return baseMapper.getId(dictionaryName, dictionaryItemName);
+ }
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java
index 597951f2..dbf86f1d 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryItemTranslateServiceImpl.java
@@ -1,11 +1,27 @@
package com.nflg.mobilebroken.repository.service.impl;
-import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate;
-import com.nflg.mobilebroken.repository.mapper.DictionaryItemTranslateMapper;
-import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.nflg.mobilebroken.common.pojo.dto.DictionaryItemTranslateDTO;
+import com.nflg.mobilebroken.common.pojo.vo.DictionaryItemTranslateVO;
+import com.nflg.mobilebroken.common.util.VUtils;
+import com.nflg.mobilebroken.repository.entity.Dictionary;
+import com.nflg.mobilebroken.repository.entity.DictionaryItem;
+import com.nflg.mobilebroken.repository.entity.DictionaryItemTranslate;
+import com.nflg.mobilebroken.repository.entity.Language;
+import com.nflg.mobilebroken.repository.mapper.DictionaryItemTranslateMapper;
+import com.nflg.mobilebroken.repository.service.IDictionaryItemService;
+import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService;
+import com.nflg.mobilebroken.repository.service.IDictionaryService;
+import com.nflg.mobilebroken.repository.service.ILanguageService;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
/**
*
* 字典值翻译 服务实现类
@@ -17,4 +33,51 @@ import org.springframework.stereotype.Service;
@Service
public class DictionaryItemTranslateServiceImpl extends ServiceImpl implements IDictionaryItemTranslateService {
+ @Resource
+ private ILanguageService languageService;
+
+ @Resource
+ private IDictionaryItemService dictionaryItemService;
+
+ @Resource
+ private IDictionaryService dictionaryService;
+
+ @Override
+ public List getListByDictionaryItemId(Integer id) {
+ return baseMapper.getListByDictionaryItemId(id);
+ }
+
+ @Override
+ public List getAllLanguageByDictionaryItemIds(List dictionaryItemIds) {
+ List dictionaryItems = dictionaryItemService.lambdaQuery().in(DictionaryItem::getId, dictionaryItemIds).list();
+ VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(dictionaryItems)).throwMessage("字典值不存在");
+ Dictionary dictionary = dictionaryService.getById(dictionaryItems.get(0).getDictionaryId());
+ VUtils.trueThrowBusinessError(Objects.isNull(dictionary)).throwMessage("字典不存在");
+ List dictionaryItemTranslates = lambdaQuery().in(DictionaryItemTranslate::getDictionaryItemId, dictionaryItemIds).list();
+ List languages = languageService.getLanguages();
+ List vos = new ArrayList<>();
+ dictionaryItems.forEach(di -> {
+ languages.forEach(l -> {
+ DictionaryItemTranslateDTO vo = new DictionaryItemTranslateDTO();
+ vo.setDictionaryName(dictionary.getName());
+ vo.setDictionaryItemName(di.getName());
+ vo.setLanguageName(l.getName());
+ DictionaryItemTranslate it = dictionaryItemTranslates.stream().filter(t -> Objects.equals(di.getId(), t.getDictionaryItemId())
+ && StrUtil.equals(t.getLanguageCode(), l.getCode())).findFirst().orElse(null);
+ if (Objects.nonNull(it)) {
+ vo.setTranslateValue(it.getValue());
+ }
+ vos.add(vo);
+ });
+ });
+ return vos;
+ }
+
+ @Override
+ public Integer getId(Integer dictionaryItemId, String code) {
+ DictionaryItemTranslate translate = lambdaQuery()
+ .eq(DictionaryItemTranslate::getDictionaryItemId, dictionaryItemId).eq(DictionaryItemTranslate::getLanguageCode, code)
+ .one();
+ return Objects.isNull(translate) ? null : translate.getId();
+ }
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryServiceImpl.java
index 3df7dcca..6b363340 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DictionaryServiceImpl.java
@@ -5,11 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.pojo.request.DictionarySearchRequest;
+import com.nflg.mobilebroken.common.pojo.request.SaveDictionaryRequest;
+import com.nflg.mobilebroken.common.util.TokenUtil;
import com.nflg.mobilebroken.repository.entity.Dictionary;
import com.nflg.mobilebroken.repository.mapper.DictionaryMapper;
import com.nflg.mobilebroken.repository.service.IDictionaryService;
import org.springframework.stereotype.Service;
+import java.time.LocalDateTime;
+import java.util.Objects;
+
/**
*
* 字典 服务实现类
@@ -33,4 +38,24 @@ public class DictionaryServiceImpl extends ServiceImpl
+