From 5488fa1f81d658df568d17f4dfab59022915e8b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Wed, 27 Nov 2019 11:41:39 +0800 Subject: [PATCH] =?UTF-8?q?Job=E6=B5=8B=E8=AF=95=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=88=9D=E5=A7=8B=E5=8C=96=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=EF=BC=88=E5=AF=BC=E5=85=A5=EF=BC=8C=E5=AF=BC=E5=87=BA=EF=BC=89?= =?UTF-8?q?=20=E5=BC=82=E5=B8=B8=E6=97=A5=E5=BF=97=E6=8C=81=E4=B9=85?= =?UTF-8?q?=E5=8C=96bug=20OPC=E6=9C=8D=E5=8A=A1=20MQ=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iservice/busi/ISysLocaleResourceService.java | 3 + .../busi/SysLocaleResourceController.java | 104 +++++++++++- .../core/apiservice/mq/SysLocalResourceQueue.java | 2 +- .../apiservice/schedulejob/CoreLogClearJob.java | 2 + .../apiservice/schedulejob/CoreMessagePushJob.java | 2 + .../core/apiservice/schedulejob/DemoCloudJob.java | 2 + .../core/apiservice/schedulejob/DemoJob.java | 23 ++- .../schedulejob/SysDashboardDataJob.java | 2 + .../apiservice/schedulejob/TestCRUDPressure.java | 3 +- .../serviceimpl/busi/SysLocaleResourceService.java | 64 +++++++- .../i3plus/core/apiservice/util/ResourceUtil.java | 177 +++++++++++++++++++++ 11 files changed, 363 insertions(+), 21 deletions(-) create mode 100644 modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/ResourceUtil.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java index 3e9f293..07bb411 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java @@ -54,4 +54,7 @@ public interface ISysLocaleResourceService { @ApiOperation(value = "功能权限国际化") List tranSysMenu(List menuList); + + @ApiOperation(value = "添加初始化资源") + void insertInitSysLocaleResourceList(List sysLocaleResources); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java index 5cc14d7..58d36eb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java @@ -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 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 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); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java index 578fd05..5e0e142 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java @@ -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); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreLogClearJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreLogClearJob.java index 2c84a12..12b89c4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreLogClearJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreLogClearJob.java @@ -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); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreMessagePushJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreMessagePushJob.java index 6eaa7fc..de4c17b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreMessagePushJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreMessagePushJob.java @@ -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 { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java index c57a1a9..07155e7 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java @@ -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); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java index 4793845..e9e33ed 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java @@ -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(); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/SysDashboardDataJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/SysDashboardDataJob.java index 480bdfa..1f62b9d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/SysDashboardDataJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/SysDashboardDataJob.java @@ -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); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/TestCRUDPressure.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/TestCRUDPressure.java index 117a72b..f30fcff 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/TestCRUDPressure.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/TestCRUDPressure.java @@ -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; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java index e0e95c3..787daec 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java @@ -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 sysLocaleResourceList) { + sysLocaleResourceRDao.deleteAll(); + + // 资源去重 + Map> resourceMap = new HashMap<>(); + Map 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 resourceList = new ArrayList<>(); + for (String key : resourceMap.keySet()) { + for (SysLocaleResource value : resourceMap.get(key).values()) { + resourceList.add(value); + } + } + + for (List sysLocaleResources : splitList(resourceList, 1000)) { + sysLocaleResourceRDao.saveAll(sysLocaleResources); + } + + } + + /** + * 按指定大小,分隔集合,将集合按规定个数分为n个部分 + * @param + * + * @param list + * @param len + * @return + */ + public static List> splitList(List list, int len) { + + if (list == null || list.isEmpty() || len < 1) { + return Collections.emptyList(); + } + + List> result = new ArrayList<>(); + + int size = list.size(); + int count = (size + len - 1) / len; + + for (int i = 0; i < count; i++) { + List subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1))); + result.add(subList); + } + + return result; + } } diff --git a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/ResourceUtil.java b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/ResourceUtil.java new file mode 100644 index 0000000..7d8b846 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/ResourceUtil.java @@ -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> resource = new HashMap<>(); + Map 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 resourceList = new ArrayList<>(); + for (String key : resource.keySet()) { + for (SysLocaleResource value : resource.get(key).values()) { + resourceList.add(value); + } + } + + for (List sysLocaleResources : splitList(resourceList, 1000)) { + sysLocaleResourceService.saveSysLocaleResource(sysLocaleResources); + } + + + } catch (Exception e) { + e.printStackTrace(); + } + + } + /** + * 按指定大小,分隔集合,将集合按规定个数分为n个部分 + * @param + * + * @param list + * @param len + * @return + */ + public static List> splitList(List list, int len) { + + if (list == null || list.isEmpty() || len < 1) { + return Collections.emptyList(); + } + + List> result = new ArrayList<>(); + + int size = list.size(); + int count = (size + len - 1) / len; + + for (int i = 0; i < count; i++) { + List 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; + } + + } + +}