yun-zuoyi
wei.peng 5 years ago
commit 613c4d4ade

@ -26,7 +26,7 @@ public interface ISysLocaleLanguageService {
void deleteSysLocaleLanguageById(Long id);
@ApiOperation(value = "查询全部系统语言",notes = "查询全部系统语言")
List listSysLocaleLanguage();
List<SysLocaleLanguage> listSysLocaleLanguage();
@ApiOperation(value = "系统语言复杂查询,分页,排序",notes = "系统语言复杂查询,分页,排序")
ListPager querySysLocaleLanguageByPager(SysLocaleLanguage sysLocaleLanguage, Pager pager);

@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.model.platform.MissResourceModel;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import io.swagger.annotations.ApiOperation;
@ -58,4 +59,17 @@ public interface ISysLocaleResourceService {
@ApiOperation(value = "删除所有资源")
void deleteSysLocaleResourceAll();
/***************************** 缺失资源管理 ******************************/
List<MissResourceModel> listMissResourceModel();
MissResourceModel saveMissResourceModel(MissResourceModel missResourceModel);
void updateMissResourceModelIsValidByKeys(String[] keys, Integer isValid);
void doCleanInValidMissResource();
void doConversionMissResourceByKeys(String[] keys);
}

@ -518,4 +518,19 @@ public class WhiteController extends CoreBaseController {
return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
@PostMapping(value = "/miss-resource/get")
@ApiOperation(value = "根据条件分页查询账号信息", notes = "根据条件分页查询账号信息")
public ResultBean getMissResourceByKey(String key,String soft){
try {
LocaleUtils.saveMissResource(key, AuthUtil.getSessionLanguage().toString(), CommonEnumUtil.SOFT_TYPE.descOf(soft),
CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MISSING.getValue(),
CommonEnumUtil.MiSS_RESOURCE_SOURCE.SERVER.getValue());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
}

@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleLanguageService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.BaseImppException;
@ -15,7 +16,9 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.MissResourceModel;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
@ -41,6 +44,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description :
@ -62,6 +66,9 @@ public class SysLocaleResourceController extends CoreBaseController {
private ISysLocaleResourceService sysLocaleResourceService;
@Autowired
private ISysLocaleLanguageService sysLocaleLanguageService;
@Autowired
private ISystemInitService systemInitService;
@Autowired
@ -505,7 +512,6 @@ public class SysLocaleResourceController extends CoreBaseController {
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
private Long getResourceKey(String resKey, String languageCode) {
@ -518,4 +524,162 @@ public class SysLocaleResourceController extends CoreBaseController {
}
return null;
}
/************************* 缺失资源管理 **********************/
@GetMapping(value = "/miss/list")
@ApiOperation(value = "缺失资源列表")
public ResultBean listMissResource(){
try {
List<MissResourceModel> missResourceModelList = sysLocaleResourceService.listMissResourceModel();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(missResourceModelList);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PutMapping(value = "/miss/update")
@ApiOperation(value = "更新缺失资源信息")
public ResultBean listMissResource(MissResourceModel missResourceModel){
try {
missResourceModel = sysLocaleResourceService.saveMissResourceModel(missResourceModel);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(missResourceModel);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PutMapping(value = "/miss/batch-update-valid")
@ApiOperation(value = "更新缺失资源有效状态")
public ResultBean updateMissResourceIsValidByKeys(String[] keys,Integer valid){
try {
sysLocaleResourceService.updateMissResourceModelIsValidByKeys(keys, valid);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@DeleteMapping(value = "/miss/clean-invalid")
@ApiOperation(value = "更新缺失资源有效状态")
public ResultBean cleanMissResourceByInvalid(){
try {
sysLocaleResourceService.doCleanInValidMissResource();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/miss/batch-conversion")
@ApiOperation(value = "批量转换缺失资源")
public ResultBean doBatchConversionMissResource(String[] keys){
try {
sysLocaleResourceService.doConversionMissResourceByKeys(keys);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/miss/export")
@ApiOperation(value = "导出缺失资源")
public ResultBean exportMissResource(HttpServletResponse response){
try {
List<MissResourceModel> missResourceModelList = sysLocaleResourceService.listMissResourceModel();
Map<String, String> langCodeMap = sysLocaleLanguageService.listSysLocaleLanguage()
.stream()
.collect(
Collectors.toMap(
SysLocaleLanguage::getLanguageCode,
SysLocaleLanguage::getLanguageName
)
);
List<SysLocaleResource> sysLocaleResourceList = new ArrayList<>(missResourceModelList.size());
SysLocaleResource sysLocaleResource;
for (MissResourceModel resourceModel : missResourceModelList) {
sysLocaleResource = new SysLocaleResource();
sysLocaleResource.setSoftType(resourceModel.getSoftType());
sysLocaleResource.setLanguageCode(resourceModel.getLanguageCode());
sysLocaleResource.setLanguageNameRdd(langCodeMap.get(resourceModel.getLanguageCode()));
sysLocaleResource.setResourceType(resourceModel.getResourceType());
sysLocaleResource.setResourceKey(resourceModel.getResourceKey());
sysLocaleResource.setResourceValue(resourceModel.getResourceValue());
sysLocaleResource.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
sysLocaleResourceList.add(sysLocaleResource);
}
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "locale_" + System.currentTimeMillis() + ".xls";
File file = new File(fileName);
if (file.createNewFile()) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode())
.setErrorDetail("临时文件创建失败!")
.build();
}
File excle = excelTool.exportData(file, sysLocaleResourceList, SysLocaleResource.class, new String[]{
"resourceType", "languageCode", "languageNameRdd", "resourceKey", "resourceValue", "softType"
});
String userAgent = request.getHeader("User-Agent");
// 针对IE或者以IE为内核的浏览器
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
} else {
// 非IE浏览器的处理
fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
}
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(".xls")); // 设置文件名
BufferedInputStream bis = null;
InputStream targetStream = null;
try {
targetStream = new DataInputStream(new FileInputStream(excle));
bis = new BufferedInputStream(targetStream);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} finally {
if (bis != null) {
bis.close();
}
if (targetStream != null) {
targetStream.close();
}
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.BeanCopyTool;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.tool.SerializeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
@ -10,6 +11,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.MissResourceModel;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
@ -20,6 +22,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -28,8 +31,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.RESOURCE_PREFIX_MENU;
@ -228,4 +231,113 @@ public class SysLocaleResourceService implements ISysLocaleResourceService {
sysLocaleResourceRDao.deleteAllInBatch();
}
@Override
public List<MissResourceModel> listMissResourceModel() {
List<Object> listStr = redisRes.scan(CommonConstWords.REDIS_PREFIX_CACHE_NO_RES + "*");
MissResourceModel missResourceModel = null;
List<MissResourceModel> missResourceModelList = new ArrayList<>(listStr.size());
// 更新状态
for (Object missResourceStr : listStr) {
if (missResourceStr == null || StringUtils.isBlank(missResourceStr.toString())) {
continue;
}
missResourceModel = JsonUtilTool.decode(missResourceStr.toString(), MissResourceModel.class);
// 转换失败
if(missResourceModel==null){
continue;
}
missResourceModelList.add(missResourceModel);
}
return missResourceModelList;
}
@Override
public MissResourceModel saveMissResourceModel(MissResourceModel missResourceModel) {
redisRes.putObject(missResourceModel.getKey(), JSON.toJSONString(missResourceModel), -1);
return missResourceModel;
}
@Override
public void updateMissResourceModelIsValidByKeys(String[] keys, Integer valid) {
List<Object> missResourceStrList = redisRes.findObject(Arrays.asList(keys));
MissResourceModel missResourceModel = null;
List<MissResourceModel> missResourceModelList = new ArrayList<>(missResourceStrList.size());
// 更新状态
for (Object missResourceStr : missResourceStrList) {
if (missResourceStr == null || StringUtils.isBlank(missResourceStr.toString())) {
continue;
}
missResourceModel = JsonUtilTool.decode(missResourceStr.toString(), MissResourceModel.class);
missResourceModel.setIsValid(valid);
missResourceModelList.add(missResourceModel);
}
// 存入redis
for (MissResourceModel resourceModel : missResourceModelList) {
redisRes.putObject(resourceModel.getKey(), JsonUtilTool.encode(resourceModel));
}
}
@Override
public void doCleanInValidMissResource() {
List<Object> listStr = redisRes.scan(CommonConstWords.REDIS_PREFIX_CACHE_NO_RES + "*");
MissResourceModel missResourceModel = null;
List<String> cleanKeys = new ArrayList<>(listStr.size());
// 更新状态
for (Object missResourceStr : listStr) {
if (missResourceStr ==null || StringUtils.isBlank(missResourceStr.toString())) {
continue;
}
missResourceModel = JsonUtilTool.decode(missResourceStr.toString(), MissResourceModel.class);
if (missResourceModel != null && missResourceModel.getIsValid() != null
&& CommonEnumUtil.IS_VAILD.INVAILD.getValue() == missResourceModel.getIsValid()) {
cleanKeys.add(missResourceModel.getKey());
}
}
redisRes.deleteKey(cleanKeys.toArray(new String[cleanKeys.size()]));
}
@Override
public void doConversionMissResourceByKeys(String[] keys) {
List<Object> missResourceStrList = redisRes.findObject(Arrays.asList(keys));
MissResourceModel missResourceModel = null;
List<MissResourceModel> missResourceModelList = new ArrayList<>(missResourceStrList.size());
Map<String, String> langCodeMap = sysLocaleLanguageRDao.list()
.stream()
.collect(
Collectors.toMap(
SysLocaleLanguage::getLanguageCode,
SysLocaleLanguage::getLanguageName
)
);
// 类型转换
for (Object missResourceStr : missResourceStrList) {
if (missResourceStr == null || StringUtils.isBlank(missResourceStr.toString())) {
continue;
}
missResourceModel = JsonUtilTool.decode(missResourceStr.toString(), MissResourceModel.class);
missResourceModelList.add(missResourceModel);
}
SysLocaleResource sysLocaleResource;
for (MissResourceModel resourceModel : missResourceModelList) {
sysLocaleResource = new SysLocaleResource();
sysLocaleResource.setSoftType(resourceModel.getSoftType());
sysLocaleResource.setLanguageCode(resourceModel.getLanguageCode());
sysLocaleResource.setLanguageNameRdd(langCodeMap.get(resourceModel.getLanguageCode()));
sysLocaleResource.setResourceType(resourceModel.getResourceType());
sysLocaleResource.setResourceKey(resourceModel.getResourceKey());
sysLocaleResource.setResourceValue(resourceModel.getResourceValue());
sysLocaleResource.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
insertSysLocaleResource(sysLocaleResource);
redisRes.deleteKey(resourceModel.getKey());
}
}
}

Loading…
Cancel
Save