Merge remote-tracking branch 'remotes/origin/dev' into test

yun-zuoyi
汪云昊 6 years ago
commit 68c7b90cf5

@ -54,4 +54,7 @@ public interface ISysLocaleResourceService {
@ApiOperation(value = "功能权限国际化")
List<SysMenu> tranSysMenu(List<SysMenu> menuList);
@ApiOperation(value = "添加初始化资源")
void insertInitSysLocaleResourceList(List<SysLocaleResource> sysLocaleResources);
}

@ -2,6 +2,8 @@ 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.ISysLocaleResourceService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
@ -11,6 +13,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
@ -22,9 +25,26 @@ import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -51,6 +71,9 @@ public class SysLocaleResourceController extends CoreBaseController {
@Autowired
private ISystemInitService systemInitService;
@Autowired
private EntityManager entityManager;
/**
*
* @param sysLocaleResource
@ -265,4 +288,81 @@ public class SysLocaleResourceController extends CoreBaseController {
redisRes.putHashMap(CommonConstWords.REDIS_PREFIX_CACHE_LANGUAGE + ":" + sysLocaleResource.getResourceKey(), resource, 0);
}
}
@PostMapping(value = "/import")
@ApiOperation(value = "导入系统资源")
public ResultBean importSysLocaleResource(@RequestParam("file") MultipartFile file){
try {
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
List<SysLocaleResource> sysLocaleResourceList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(),
SysLocaleResource.class);
// 初始化数据
for (SysLocaleResource sysOrderNoRule : sysLocaleResourceList) {
sysOrderNoRule.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
ConvertBean.modelInitialize(sysOrderNoRule, AuthUtil.getSessionUser());
}
sysLocaleResourceService.insertInitSysLocaleResourceList(sysLocaleResourceList);
// 重新加载资源
systemInitService.putAndLoadSysLocaleLanguage();
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 = "/export")
@ApiOperation(value = "导入系统资源")
public ResultBean exportSysLocaleResource(HttpServletResponse response) {
try {
startMultiService();
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "locale_" + System.currentTimeMillis() + ".xls";
List<SysLocaleResource> list = sysLocaleResourceService.listSysLocaleResource();
File file = new File(fileName);
file.createNewFile();
File excle = excelTool.exportData(file, list, SysLocaleResource.class, new String[]{
"resourceType", "languageCode", "languageNameRdd", "resourceKey", "resourceValue", "softType"
});
InputStream targetStream = new DataInputStream(new FileInputStream(excle));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", "application/octet-stream"); // 设置文件名
BufferedInputStream bis = null;
try {
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);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
targetStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
file.delete(); // 删除临时文件
return ResultBean.success("下载").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -75,7 +75,7 @@ public class SysLocalResourceQueue {
resource.setLanguageCode(language.getLanguageCode());
resource.setLanguageNameRdd(language.getLanguageName());
resource.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
resource.setResourceType(CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.EXCEPTION.getValue());
resource.setResourceType(CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MISSING.getValue());
resource.setResourceValue(resourceKey);
resource.setResourceKey(resourceKey);

@ -8,6 +8,7 @@ import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import com.alibaba.fastjson.JSONObject;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -23,6 +24,7 @@ import java.util.Date;
* @CreateDate : 2019-07-04 19:13
* @Modify:
**/
@DisallowConcurrentExecution
public class CoreLogClearJob extends BaseImppScheduleJob {
public static final Logger LOGGER = LoggerFactory.getLogger(CoreLogClearJob.class);

@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import io.swagger.annotations.ApiOperation;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -17,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
* @CreateDate : 2019-05-04 16:02
* @Modify:
**/
@DisallowConcurrentExecution
@ApiOperation("通用消息推送job")
public class CoreMessagePushJob extends BaseImppScheduleJob {

@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.schedulejob;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import io.swagger.annotations.ApiOperation;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -14,6 +15,7 @@ import org.slf4j.LoggerFactory;
* @CreateDate : 2019-03-12 17:51
* @Modify:
**/
@DisallowConcurrentExecution
@ApiOperation("测试微服定时任务demo")
public class DemoCloudJob extends BaseImppScheduleJob {
public static final Logger LOGGER = LoggerFactory.getLogger(DemoJob.class);

@ -1,13 +1,11 @@
package cn.estsh.i3plus.core.apiservice.schedulejob;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -20,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
* @CreateDate : 2018-09-30 13:25
* @Modify:
**/
@DisallowConcurrentExecution
@ApiOperation("定时任务demo")
public class DemoJob extends BaseImppScheduleJob {
public static final Logger LOGGER = LoggerFactory.getLogger(DemoJob.class);
@ -34,17 +33,17 @@ public class DemoJob extends BaseImppScheduleJob {
@Override
public void executeImppJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
if(getJobParam() != null && "error".equals(getJobParam())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("定时任务异常测试!")
.setErrorSolution("请检查异常通知邮件")
.build();
}
// if(getJobParam() != null && "error".equals(getJobParam())){
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("定时任务异常测试!")
// .setErrorSolution("请检查异常通知邮件")
// .build();
// }
try {
if(getJobParam() != null && StringUtils.isNotBlank(getJobParam())) {
Thread.sleep(Long.parseLong(getJobParam()));
Thread.sleep(Long.parseLong(getJobParam())*1000);
}
} catch (InterruptedException e) {
e.printStackTrace();

@ -9,6 +9,7 @@ import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -27,6 +28,7 @@ import java.util.Map;
* @CreateDate : 2019-11-08 15:15
* @Modify:
**/
@DisallowConcurrentExecution
public class SysDashboardDataJob extends BaseImppScheduleJob {
private static final Logger LOGGER = LoggerFactory.getLogger(SysDashboardDataJob.class);

@ -10,7 +10,6 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysToolTypeService;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysFileAttach;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage;
@ -23,6 +22,7 @@ import cn.estsh.i3plus.pojo.platform.bean.SysTool;
import cn.estsh.i3plus.pojo.platform.bean.SysToolType;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
* @CreateDate : 2019-07-17 11:31
* @Modify:
**/
@DisallowConcurrentExecution
public class TestCRUDPressure extends BaseImppScheduleJob {
private static final long serialVersionUID = -5611654157756961800L;

@ -1,18 +1,14 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.BeanCopyTool;
import cn.estsh.i3plus.platform.common.tool.SerializeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
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.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
@ -30,9 +26,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -222,4 +218,62 @@ public class SysLocaleResourceService implements ISysLocaleResourceService {
}
return menuList;
}
@Override
public void insertInitSysLocaleResourceList(List<SysLocaleResource> sysLocaleResourceList) {
sysLocaleResourceRDao.deleteAll();
// 资源去重
Map<String, Map<String, SysLocaleResource>> resourceMap = new HashMap<>();
Map<String, SysLocaleResource> itemMap;
for (SysLocaleResource localeResource : sysLocaleResourceList) {
if (resourceMap.containsKey(localeResource.getResourceKey())) {
itemMap = resourceMap.get(localeResource.getResourceKey());
} else {
itemMap = new HashMap<>();
resourceMap.put(localeResource.getResourceKey(), itemMap);
}
itemMap.put(localeResource.getLanguageCode(), localeResource);
}
List<SysLocaleResource> resourceList = new ArrayList<>();
for (String key : resourceMap.keySet()) {
for (SysLocaleResource value : resourceMap.get(key).values()) {
resourceList.add(value);
}
}
for (List<SysLocaleResource> sysLocaleResources : splitList(resourceList, 1000)) {
sysLocaleResourceRDao.saveAll(sysLocaleResources);
}
}
/**
* n
* @param <T>
*
* @param list
* @param len
* @return
*/
public static <T> List<List<T>> splitList(List<T> list, int len) {
if (list == null || list.isEmpty() || len < 1) {
return Collections.emptyList();
}
List<List<T>> result = new ArrayList<>();
int size = list.size();
int count = (size + len - 1) / len;
for (int i = 0; i < count; i++) {
List<T> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1)));
result.add(subList);
}
return result;
}
}

@ -0,0 +1,177 @@
package test.cn.estsh.i3plus.core.apiservice.util;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService;
import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource;
import com.alibaba.fastjson.JSON;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2019-11-25 20:28
* @Modify:
**/
public class ResourceUtil extends TestBase {
@Autowired
private ISysLocaleResourceService sysLocaleResourceService;
public static void main(String[] args) {
new ResourceUtil().initResource();
}
@Test
public void initResource() {
File file = new File("C:\\Users\\yunha\\Desktop\\资源文件.xlsx");
try {
SnowflakeIdMaker snowflakeIdMaker = new SnowflakeIdMaker();
Workbook wb = new XSSFWorkbook(file);
// 前端资源
Sheet webSheet = wb.getSheet("SUM");
Row row = null;
SysLocaleResource sysLocaleResource;
Map<String, Map<String, SysLocaleResource>> resource = new HashMap<>();
Map<String, SysLocaleResource> item = new HashMap<>();
for (int i = 1; i < webSheet.getLastRowNum(); i++) {
row = webSheet.getRow(i);
if (row == null || row.getCell(2) == null || row.getCell(3) == null) {
continue;
}
System.out.println(snowflakeIdMaker.nextId() + "行:" + i);
row.getCell(1).setCellType(CellType.STRING); // 资源类型
row.getCell(2).setCellType(CellType.STRING); // 模块
row.getCell(3).setCellType(CellType.STRING); // key
row.getCell(4).setCellType(CellType.STRING); // 中文
row.getCell(5).setCellType(CellType.STRING); // 英文
int resType = CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.descOf(row.getCell(1).getStringCellValue());
int softType = CommonEnumUtil.SOFT_TYPE.descOf(row.getCell(2).getStringCellValue());
String key = row.getCell(3).getStringCellValue();
String cnVal = row.getCell(4).getStringCellValue();
String enVal = row.getCell(5).getStringCellValue();
if (resource.containsKey(key)) {
item = resource.get(key);
} else {
item = new HashMap<>();
resource.put(key,item);
}
//中文
sysLocaleResource = new SysLocaleResource();
sysLocaleResource.setId(snowflakeIdMaker.nextId());
sysLocaleResource.setLanguageCode(cn.estsh.i3plus.core.apiservice.util.ResourceUtil.YY.CN.getValue());
sysLocaleResource.setLanguageNameRdd(cn.estsh.i3plus.core.apiservice.util.ResourceUtil.YY.CN.getDescription());
sysLocaleResource.setResourceType(resType);
sysLocaleResource.setSoftType(softType);
sysLocaleResource.setResourceKey(key);
sysLocaleResource.setResourceValue(cnVal);
ConvertBean.serviceModelInitialize(sysLocaleResource, PlatformConstWords.SYSTEM_INIT_USER);
item.put(cn.estsh.i3plus.core.apiservice.util.ResourceUtil.YY.CN.getValue(), sysLocaleResource);
System.out.println(JSON.toJSONString(sysLocaleResource));
// 英文
sysLocaleResource = new SysLocaleResource();
sysLocaleResource.setId(snowflakeIdMaker.nextId());
sysLocaleResource.setResourceType(resType);
sysLocaleResource.setSoftType(softType);
sysLocaleResource.setLanguageCode(cn.estsh.i3plus.core.apiservice.util.ResourceUtil.YY.EN.getValue());
sysLocaleResource.setLanguageNameRdd(cn.estsh.i3plus.core.apiservice.util.ResourceUtil.YY.EN.getDescription());
sysLocaleResource.setResourceType(resType);
sysLocaleResource.setSoftType(softType);
sysLocaleResource.setResourceKey(key);
sysLocaleResource.setResourceValue(enVal);
ConvertBean.serviceModelInitialize(sysLocaleResource, PlatformConstWords.SYSTEM_INIT_USER);
item.put(cn.estsh.i3plus.core.apiservice.util.ResourceUtil.YY.EN.getValue(), sysLocaleResource);
System.out.println(JSON.toJSONString(sysLocaleResource));
}
List<SysLocaleResource> resourceList = new ArrayList<>();
for (String key : resource.keySet()) {
for (SysLocaleResource value : resource.get(key).values()) {
resourceList.add(value);
}
}
for (List<SysLocaleResource> sysLocaleResources : splitList(resourceList, 1000)) {
sysLocaleResourceService.saveSysLocaleResource(sysLocaleResources);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* n
* @param <T>
*
* @param list
* @param len
* @return
*/
public static <T> List<List<T>> splitList(List<T> list, int len) {
if (list == null || list.isEmpty() || len < 1) {
return Collections.emptyList();
}
List<List<T>> result = new ArrayList<>();
int size = list.size();
int count = (size + len - 1) / len;
for (int i = 0; i < count; i++) {
List<T> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1)));
result.add(subList);
}
return result;
}
/**
*
*/
public enum YY {
CN("CN/zh", "简体中文"), EN("US/en", "English");
private String value;
private String description;
private YY(String value, String description) {
this.value = value;
this.description = description;
}
public String getValue() {
return value;
}
public String getDescription() {
return description;
}
}
}
Loading…
Cancel
Save