From 2b88f3ecf1547334fdf399b6221e6f50fa87a0a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Tue, 14 Jul 2020 17:25:22 +0800 Subject: [PATCH] =?UTF-8?q?ptl=E8=B0=83=E5=BA=A6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/iservice/busi/ISysTaskCycleService.java | 8 + .../core/api/iservice/busi/ISysTaskService.java | 17 +- modules/i3plus-core-apiservice/pom.xml | 4 + .../apiservice/controller/base/AuthController.java | 13 +- .../controller/busi/SysTaskController.java | 221 +++++++++++++++++++-- .../controller/busi/SysTaskCycleController.java | 167 +++++++++++++++- .../controller/busi/SysTaskPlanController.java | 147 ++++++++++++++ .../core/apiservice/schedulejob/DemoJob.java | 4 + .../serviceimpl/base/SystemInitService.java | 13 ++ .../serviceimpl/busi/SysMenuService.java | 61 +++--- .../serviceimpl/busi/SysTaskCycleService.java | 5 + .../serviceimpl/busi/SysTaskService.java | 58 +++--- pom.xml | 7 + 13 files changed, 638 insertions(+), 87 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskCycleService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskCycleService.java index 8125430..1bfa314 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskCycleService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskCycleService.java @@ -40,6 +40,14 @@ public interface ISysTaskCycleService { SysTaskCycle insertSysTaskCycle(SysTaskCycle sysTaskCycle); /** + * 批量新增任务周期 + * @param sysTaskCycleList + * @return + */ + @ApiOperation(value = "批量新增任务周期",notes = "批量新增任务周期") + List insertBatchSysTaskCycle(List sysTaskCycleList); + + /** * 查询所有任务周期信息 * @return */ diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskService.java index 7f091de..239fbcb 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskService.java @@ -4,7 +4,6 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SysTask; import io.swagger.annotations.ApiOperation; -import org.springframework.data.domain.Page; import java.util.List; @@ -26,6 +25,14 @@ public interface ISysTaskService { SysTask insertSysTask(SysTask sysTask); /** + * 批量添加任务 + * @param sysTaskList + * @return + */ + @ApiOperation(value = "批量添加任务",notes = "批量添加任务") + List insertBatchSysTask(List sysTaskList); + + /** * 修改任务 * @param sysTask * @return @@ -85,4 +92,12 @@ public interface ISysTaskService { */ @ApiOperation(value = "根据code查询任务",notes = "根据code查询任务") SysTask getSysTaskByCode(String code); + + /** + * 定时任务唯一校验 + * @param sysTask + * @return + */ + @ApiOperation(value = "定时任务唯一校验",notes = "定时任务唯一校验") + boolean checkSysTaskOnly(SysTask sysTask); } diff --git a/modules/i3plus-core-apiservice/pom.xml b/modules/i3plus-core-apiservice/pom.xml index 6fd8fb7..ebb3a1f 100644 --- a/modules/i3plus-core-apiservice/pom.xml +++ b/modules/i3plus-core-apiservice/pom.xml @@ -33,6 +33,10 @@ i3plus.icloud + i3plus-icloud-ptl + + + i3plus.icloud i3plus-icloud-andon diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java index 62a963a..5e134e4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java @@ -1,7 +1,9 @@ package cn.estsh.i3plus.core.apiservice.controller.base; import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.SysLocaleLanguageService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -12,7 +14,6 @@ import cn.estsh.i3plus.pojo.platform.bean.SysMenu; 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.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.LocaleUtils; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -49,6 +50,9 @@ public class AuthController extends CoreBaseController { @Autowired private ICoreMemTreeService memTreeService; + @Autowired + private ISysMenuService sysMenuService; + /** * 获取登录用户信息 * @@ -147,6 +151,7 @@ public class AuthController extends CoreBaseController { ValidatorBean.checkIsNumber(parentId,"父节点不能为空"); List result = memTreeService.packTreeSysMenuByUserIdAndParentId(getSessionUser().getUser().getId(), Long.parseLong(parentId)); + result=sysMenuService.setLanguageSysMenuName(AuthUtil.getSessionUser().getLanguageCode(),result); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); } catch (ImppBusiException busExcep) { LOGGER.error(busExcep.getErrorMsg() + ":{}", busExcep.getErrorDetail(), busExcep); @@ -171,7 +176,11 @@ public class AuthController extends CoreBaseController { ValidatorBean.checkIsNumber(parentId,"父节点不能为空"); List result = memTreeService.packTreeSysMenuByUserIdAndParentId(getSessionUser().getUser().getId(), Long.parseLong(parentId)); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + result = findChildList(result); + // 国际化 + result = sysMenuService.setLanguageSysMenuName(getSessionUser().getLanguageCode(),result); + return ResultBean.success("操作成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultList(findChildList(result)); } catch (ImppBusiException busExcep) { LOGGER.error(busExcep.getErrorMsg() + ":{}", busExcep.getErrorDetail(), busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskController.java index c14153d..3a2a5b0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskController.java @@ -1,19 +1,28 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; +import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService; import cn.estsh.i3plus.icloud.andon.sdk.IAndonCommonCloud; import cn.estsh.i3plus.icloud.mes.pcn.sdk.IMesPcnCommonCloud; import cn.estsh.i3plus.icloud.mes.sdk.IMesCommonCloud; +import cn.estsh.i3plus.icloud.ptl.sdk.IPtlCommonCloud; import cn.estsh.i3plus.icloud.softswitch.sdk.IBsCommonCloud; import cn.estsh.i3plus.icloud.wms.sdk.IWmsCommonCloud; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.platform.common.tool.FileTool; import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.tool.ZipTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; 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.platform.bean.SysFile; import cn.estsh.i3plus.pojo.platform.bean.SysTask; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.base.service.CommonServiceImpl; @@ -21,6 +30,8 @@ import cn.estsh.impp.framework.base.service.ICommonService; 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.fileservice.ImppFileService; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -28,14 +39,17 @@ 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.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.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.persistence.EntityManager; +import java.io.File; +import java.io.FileInputStream; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; /** * @Description : 任务管理服务 @@ -72,25 +86,41 @@ public class SysTaskController extends CoreBaseController { @Autowired private IBsCommonCloud bsCommonCloud; + @Autowired + private IPtlCommonCloud ptlCommonCloud; + + @Autowired + private EntityManager entityManager; + + @Autowired + private ImppFileService fileService; + + @Autowired + private ISysFileService sysFileService; + + @Autowired + private ISysMessageService sysMessageService; + /** * 获取对应软件模块的通用服务 + * * @param softType 软件模块 * @return 通用服务 */ - private ICommonService getCommonService(int softType){ + private ICommonService getCommonService(int softType) { ICommonService commonService = coreCommonService; // 平台 - if(softType == CommonEnumUtil.SOFT_TYPE.CORE.getValue()){ + if (softType == CommonEnumUtil.SOFT_TYPE.CORE.getValue()) { commonService = coreCommonService; // WMS - } else if(softType == CommonEnumUtil.SOFT_TYPE.WMS.getValue()){ + } else if (softType == CommonEnumUtil.SOFT_TYPE.WMS.getValue()) { commonService = wmsCommonCloud; // MES - } else if(softType == CommonEnumUtil.SOFT_TYPE.MES.getValue()){ + } else if (softType == CommonEnumUtil.SOFT_TYPE.MES.getValue()) { commonService = mesCommonCloud; // MES_PCN - } else if(softType == CommonEnumUtil.SOFT_TYPE.MES_PCN.getValue()){ + } else if (softType == CommonEnumUtil.SOFT_TYPE.MES_PCN.getValue()) { commonService = mesPcnCommonCloud; // ANDON } else if (softType == CommonEnumUtil.SOFT_TYPE.ANDON.getValue()) { @@ -98,12 +128,16 @@ public class SysTaskController extends CoreBaseController { // SoftSwitch } else if (softType == CommonEnumUtil.SOFT_TYPE.SOFTSWITCH.getValue()) { commonService = bsCommonCloud; + // Ptl + } else if (softType == CommonEnumUtil.SOFT_TYPE.PTL.getValue()) { + commonService = ptlCommonCloud; } return commonService; } /** * 添加任务 + * * @param sysTask 任务 * @return 处理结果 */ @@ -120,7 +154,7 @@ public class SysTaskController extends CoreBaseController { // 类校验 BaseResultBean resultBean = getCommonService(sysTask.getTaskSoftType()).isExistClass(sysTask.getTaskPackage(), sysTask.getTaskClass()); - if(!resultBean.isSuccess()){ + if (!resultBean.isSuccess()) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) @@ -128,6 +162,15 @@ public class SysTaskController extends CoreBaseController { .build(); } + if (!sysTaskService.checkSysTaskOnly(sysTask)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("任务名称【%s】必须唯一", sysTask.getName()) + .setErrorSolution("请重新输入") + .build(); + } + // 设置组织代码 sysTask.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); @@ -142,6 +185,7 @@ public class SysTaskController extends CoreBaseController { /** * 修改任务 + * * @param sysTask 任务 * @return 处理结果 */ @@ -156,6 +200,25 @@ public class SysTaskController extends CoreBaseController { .notNull("taskPackage", sysTask.getTaskPackage()) .notNull("taskClass", sysTask.getTaskClass()); + // 类校验 + BaseResultBean resultBean = getCommonService(sysTask.getTaskSoftType()).isExistClass(sysTask.getTaskPackage(), sysTask.getTaskClass()); + if (!resultBean.isSuccess()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail(resultBean.errorMsg) + .build(); + } + + if (!sysTaskService.checkSysTaskOnly(sysTask)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("任务名称【%s】必须唯一", sysTask.getName()) + .setErrorSolution("请重新输入") + .build(); + } + sysTaskService.updateSysTask(sysTask); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { @@ -167,6 +230,7 @@ public class SysTaskController extends CoreBaseController { /** * 删除任务 + * * @param idStr 任务id * @return 处理结果 */ @@ -198,6 +262,7 @@ public class SysTaskController extends CoreBaseController { /** * 查询所有任务 + * * @return 处理结果 */ @GetMapping(value = "/list") @@ -216,8 +281,9 @@ public class SysTaskController extends CoreBaseController { /** * 任务复杂查询 + * * @param sysTask 查询条件 - * @param pager 分页信息 + * @param pager 分页信息 * @return 处理结果 */ @GetMapping(value = "/query") @@ -235,6 +301,7 @@ public class SysTaskController extends CoreBaseController { /** * 根据id批量删除任务 + * * @param idsStr 任务id * @return 处理结果 */ @@ -260,6 +327,7 @@ public class SysTaskController extends CoreBaseController { /** * 根据code查询任务 + * * @return */ @GetMapping(value = "/get-code/{code}") @@ -278,4 +346,129 @@ public class SysTaskController extends CoreBaseController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + + /**************************************** 数据导入导出 ***********************************************/ + + @GetMapping(value = "/export") + @ApiOperation(value = "导出数据") + public ResultBean exportExcel(SysTask bean, boolean needSendMessage) { + ListPager listPager; + List result = new ArrayList<>(); + File zipFile = null; + File excelDir = null; + File excelFile; + ExcelTool excelTool; + try { + Pager pager = new Pager(0); + // 判断是否超过excel最大导出数量设定值 + pager.setPageSize(RedisCacheTool.getSysConfigIntVal(PlatformConstWords.EXCEL_EXPORT_MAX_ROW, 20000)); + + // 数据校验 + Map colMap = ExcelTool.getColName(SysTask.class); + String[] colName = new String[colMap.size()]; + int i = 0; + for (String key : colMap.keySet()) { + colName[i++] = key; + } + + excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime()); + excelDir.mkdir(); + do { + listPager = sysTaskService.querySysTaskByPager(bean, pager); + pager = listPager.getObjectPager(); + + // 将excel导出至临时文件夹 + excelFile = new File(MessageFormat.format("{0}{1}{2}{3}.xls", excelDir, File.separator, SysTask.class.getSimpleName(), + pager.getCurrentPage())); + excelFile.createNewFile(); + excelTool.exportData(excelFile, listPager.getObjectList(), SysTask.class, colName); + + pager.setCurrentPage(pager.getCurrentPage() + 1); + } while (pager.getCurrentPage() <= pager.getTotalPages()); + + // 将所有excel文件打包上传 + zipFile = ZipTool.zipFile(null, excelDir); + SysFile sysFile = fileService.upload(new FileInputStream(zipFile), zipFile.getName(), + StringTool.getStringFileSuffix(zipFile.getName(), true), CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + + result.add(sysFileService.insertSysFile(sysFile)); + + // 是否发送站内信 + if (needSendMessage) { + sysMessageService.insertSysMessage(ExcelTool.sendStationLetter(result, getSessionUser().getUser().getId())); + } + + return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } finally { + // 清理临时文件文件 + if (zipFile != null) { + FileTool.deleteFile(zipFile.getPath()); + } + if (excelDir != null) { + FileTool.deleteFile(excelDir.getPath()); + } + } + } + + @PostMapping(value = "/import") + @ApiOperation(value = "导入数据") + public ResultBean importExcel(@RequestParam("file") MultipartFile file) { + try { + ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + List beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), SysTask.class); + + // 校验导入数据并初始化 + for (SysTask sysTask : beanList) { + if (!sysTaskService.checkSysTaskOnly(sysTask)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("任务名称【%s】必须唯一", sysTask.getName()) + .setErrorSolution("请重新输入") + .build(); + } + + ConvertBean.modelInitialize(sysTask, AuthUtil.getSessionUser()); + } + + sysTaskService.insertBatchSysTask(beanList); + + 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 = "/down-template") + @ApiOperation(value = "下载导入模板") + public ResultBean downExcelTemplate() { + try { + ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + String importTemplateCode = "SysTaskImportTemplate"; + + // 查询服务器中是否存在模板文件 + ImppFile fastDFSFile = new ImppFile("SysTaskImportTemplate.xls", + excelTool.importTemplate(SysTask.class), ".xls"); + + SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode); + if (sysFile == null) { + sysFile = fileService.upload(fastDFSFile, CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysFile.setFileCode(importTemplateCode); + sysFile = sysFileService.insertSysFile(sysFile); + } + + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile); + } 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/controller/busi/SysTaskCycleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskCycleController.java index 6ca6b16..e35722e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskCycleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskCycleController.java @@ -1,30 +1,32 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; -import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskCycleService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskPlanService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService; +import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.icloud.andon.sdk.IAndonScheduleJobCloud; import cn.estsh.i3plus.icloud.mes.pcn.sdk.IMesPcnScheduleJobCloud; import cn.estsh.i3plus.icloud.mes.sdk.IMesScheduleJobCloud; import cn.estsh.i3plus.icloud.wms.sdk.IWmsScheduleJobCloud; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.platform.common.tool.FileTool; import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.tool.ZipTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; 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.platform.bean.SysRefTaskCyclePlan; -import cn.estsh.i3plus.pojo.platform.bean.SysTask; -import cn.estsh.i3plus.pojo.platform.bean.SysTaskCycle; -import cn.estsh.i3plus.pojo.platform.bean.SysTaskPlan; +import cn.estsh.i3plus.pojo.platform.bean.*; 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.fileservice.ImppFileService; import cn.estsh.impp.framework.boot.quartz.IQuartzJobService; import cn.estsh.impp.framework.boot.quartz.ScheduleTool; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -34,9 +36,17 @@ 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.multipart.MultipartFile; +import javax.persistence.EntityManager; +import java.io.File; +import java.io.FileInputStream; +import java.text.MessageFormat; import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; /** * @Description : 任务周期管理服务 @@ -61,6 +71,19 @@ public class SysTaskCycleController extends CoreBaseController { @Autowired private ISysTaskService sysTaskService; + @Autowired + private ISysFileService sysFileService; + + @Autowired + private ImppFileService fileService; + + @Autowired + private ISysMessageService sysMessageService; + + @Autowired + private EntityManager entityManager; + + /************ 微服定时任务 *********/ @Autowired private ScheduleTool scheduleTool; @@ -172,8 +195,8 @@ public class SysTaskCycleController extends CoreBaseController { // 查询调度库中数据是否存在 BaseResultBean baseResultBean = getJobService(sysTaskPlan.getTaskSoftTypeRdd()).checkJobExists(sysTask.getTaskPackage(), - sysTask.getTaskClass()); - if(sysTaskPlan == null || sysTask == null || (baseResultBean.isSuccess() && (boolean)baseResultBean.getResultObject())){ + sysTask.getTaskClass()); + if (sysTaskPlan == null || sysTask == null || (baseResultBean.isSuccess() && (boolean) baseResultBean.getResultObject())) { continue; } @@ -325,4 +348,130 @@ public class SysTaskCycleController extends CoreBaseController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + + /**************************************** 数据导入导出 ***********************************************/ + + @GetMapping(value = "/export") + @ApiOperation(value = "导出数据") + public ResultBean exportExcel(SysTaskCycle bean, boolean needSendMessage) { + ListPager listPager; + List result = new ArrayList<>(); + File zipFile = null; + File excelDir = null; + File excelFile; + ExcelTool excelTool; + try { + Pager pager = new Pager(0); + // 判断是否超过excel最大导出数量设定值 + pager.setPageSize(RedisCacheTool.getSysConfigIntVal(PlatformConstWords.EXCEL_EXPORT_MAX_ROW, 20000)); + + // 数据校验 + Map colMap = ExcelTool.getColName(SysTaskCycle.class); + String[] colName = new String[colMap.size()]; + int i = 0; + for (String key : colMap.keySet()) { + colName[i++] = key; + } + + excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime()); + excelDir.mkdir(); + do { + listPager = sysTaskCycleService.querySysTaskCycleByPager(bean, pager); + pager = listPager.getObjectPager(); + + // 将excel导出至临时文件夹 + excelFile = new File(MessageFormat.format("{0}{1}{2}{3}.xls", excelDir, File.separator, + SysTaskCycle.class.getSimpleName(), + pager.getCurrentPage())); + excelFile.createNewFile(); + excelTool.exportData(excelFile, listPager.getObjectList(), SysTaskCycle.class, colName); + + pager.setCurrentPage(pager.getCurrentPage() + 1); + } while (pager.getCurrentPage() <= pager.getTotalPages()); + + // 将所有excel文件打包上传 + zipFile = ZipTool.zipFile(null, excelDir); + SysFile sysFile = fileService.upload(new FileInputStream(zipFile), zipFile.getName(), + StringTool.getStringFileSuffix(zipFile.getName(), true), CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + + result.add(sysFileService.insertSysFile(sysFile)); + + // 是否发送站内信 + if (needSendMessage) { + sysMessageService.insertSysMessage(ExcelTool.sendStationLetter(result, getSessionUser().getUser().getId())); + } + + return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } finally { + // 清理临时文件文件 + if (zipFile != null) { + FileTool.deleteFile(zipFile.getPath()); + } + if (excelDir != null) { + FileTool.deleteFile(excelDir.getPath()); + } + } + } + + @PostMapping(value = "/import") + @ApiOperation(value = "导入数据") + public ResultBean importExcel(@RequestParam("file") MultipartFile file) { + try { + ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + List beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), SysTaskCycle.class); + + //校验导入数据并初始化 + for (SysTaskCycle taskCycle : beanList) { +// if (!sysTaskService.checkSysTaskOnly(sysTask)) { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("任务名称【%s】必须唯一", sysTask.getName()) +// .setErrorSolution("请重新输入") +// .build(); +// } + + ConvertBean.modelInitialize(taskCycle, AuthUtil.getSessionUser()); + } + +// sysTaskCycleService.insertSysTaskCycle(beanList); + + 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 = "/down-template") + @ApiOperation(value = "下载导入模板") + public ResultBean downExcelTemplate() { + try { + ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + String importTemplateCode = "SysTaskCycleImportTemplate"; + + // 查询服务器中是否存在模板文件 + ImppFile fastDFSFile = new ImppFile("SysTaskCycleImportTemplate.xls", + excelTool.importTemplate(SysTaskCycle.class), ".xls"); + + SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode); + if (sysFile == null) { + sysFile = fileService.upload(fastDFSFile, CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysFile.setFileCode(importTemplateCode); + sysFile = sysFileService.insertSysFile(sysFile); + } + + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile); + } 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/controller/busi/SysTaskPlanController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskPlanController.java index c9bde05..c7ebf98 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskPlanController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskPlanController.java @@ -6,15 +6,20 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService; import cn.estsh.i3plus.icloud.andon.sdk.IAndonScheduleJobCloud; import cn.estsh.i3plus.icloud.mes.pcn.sdk.IMesPcnScheduleJobCloud; import cn.estsh.i3plus.icloud.mes.sdk.IMesScheduleJobCloud; +import cn.estsh.i3plus.icloud.ptl.sdk.IPtlScheduleJobCloud; import cn.estsh.i3plus.icloud.softswitch.sdk.IBsScheduleJobCloud; import cn.estsh.i3plus.icloud.wms.sdk.IWmsScheduleJobCloud; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.platform.common.tool.FileTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; 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.platform.bean.SysFile; import cn.estsh.i3plus.pojo.platform.bean.SysTask; import cn.estsh.i3plus.pojo.platform.bean.SysTaskCycle; import cn.estsh.i3plus.pojo.platform.bean.SysTaskPlan; @@ -24,6 +29,7 @@ import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.quartz.IQuartzJobService; import cn.estsh.impp.framework.boot.quartz.ScheduleTool; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -32,8 +38,13 @@ 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.multipart.MultipartFile; +import javax.persistence.EntityManager; +import java.io.File; +import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @Description : 任务计划管理服务 @@ -58,6 +69,9 @@ public class SysTaskPlanController extends CoreBaseController { @Autowired private ISysTaskService sysTaskService; + @Autowired + private EntityManager entityManager; + /************ 微服定时任务 *********/ @Autowired private ScheduleTool scheduleTool; @@ -77,6 +91,9 @@ public class SysTaskPlanController extends CoreBaseController { @Autowired private IBsScheduleJobCloud bsScheduleJobCloud; + @Autowired + private IPtlScheduleJobCloud ptlScheduleJobCloud; + /** * 根据来源切换定时任务服务 * @@ -104,6 +121,9 @@ public class SysTaskPlanController extends CoreBaseController { // SoftSwitch } else if (source == CommonEnumUtil.SOFT_TYPE.SOFTSWITCH.getValue()) { quartzJobService = bsScheduleJobCloud; + // Ptl + } else if (source == CommonEnumUtil.SOFT_TYPE.PTL.getValue()) { + quartzJobService = ptlScheduleJobCloud; } return quartzJobService; } @@ -478,4 +498,131 @@ public class SysTaskPlanController extends CoreBaseController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + + /**************************************** 数据导入导出 ***********************************************/ + + @GetMapping(value = "/export") + @ApiOperation(value = "导出数据") + public ResultBean exportExcel(SysTask bean, boolean needSendMessage) { + ListPager listPager; + List result = new ArrayList<>(); + File zipFile = null; + File excelDir = null; + File excelFile; + ExcelTool excelTool; + try { + Pager pager = new Pager(0); + // 判断是否超过excel最大导出数量设定值 + pager.setPageSize(RedisCacheTool.getSysConfigIntVal(PlatformConstWords.EXCEL_EXPORT_MAX_ROW, 20000)); + + // 数据校验 + Map colMap = ExcelTool.getColName(SysTaskCycle.class); + String[] colName = new String[colMap.size()]; + int i = 0; + for (String key : colMap.keySet()) { + colName[i++] = key; + } + +// excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); +// excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime()); +// excelDir.mkdir(); +// do { +// listPager = sysTaskService.querySysTaskByPager(bean, pager); +// pager = listPager.getObjectPager(); +// +// // 将excel导出至临时文件夹 +// excelFile = new File(MessageFormat.format("{0}{1}{2}{3}.xls", excelDir, File.separator, +// SysTaskCycle.class.getSimpleName(), +// pager.getCurrentPage())); +// excelFile.createNewFile(); +// excelTool.exportData(excelFile, listPager.getObjectList(), SysTaskCycle.class, colName); +// +// pager.setCurrentPage(pager.getCurrentPage() + 1); +// } while (pager.getCurrentPage() <= pager.getTotalPages()); +// +// // 将所有excel文件打包上传 +// zipFile = ZipTool.zipFile(null, excelDir); +// SysFile sysFile = fileService.upload(new FileInputStream(zipFile), zipFile.getName(), +// StringTool.getStringFileSuffix(zipFile.getName(), true), CommonEnumUtil.SOFT_TYPE.CORE.getValue()); +// +// result.add(sysFileService.insertSysFile(sysFile)); +// +// // 是否发送站内信 +// if (needSendMessage) { +// sysMessageService.insertSysMessage(ExcelTool.sendStationLetter(result, getSessionUser().getUser().getId())); +// } + + return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } finally { + // 清理临时文件文件 + if (zipFile != null) { + FileTool.deleteFile(zipFile.getPath()); + } + if (excelDir != null) { + FileTool.deleteFile(excelDir.getPath()); + } + } + } + + @PostMapping(value = "/import") + @ApiOperation(value = "导入数据") + public ResultBean importExcel(@RequestParam("file") MultipartFile file) { + try { + ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + List beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), SysTask.class); + + // 校验导入数据并初始化 + for (SysTask sysTask : beanList) { + if (!sysTaskService.checkSysTaskOnly(sysTask)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("任务名称【%s】必须唯一", sysTask.getName()) + .setErrorSolution("请重新输入") + .build(); + } + + ConvertBean.modelInitialize(sysTask, AuthUtil.getSessionUser()); + } + + sysTaskService.insertBatchSysTask(beanList); + + 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 = "/down-template") + @ApiOperation(value = "下载导入模板") + public ResultBean downExcelTemplate() { + try { +// ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); +// String importTemplateCode = "SysTaskCycleImportTemplate"; +// +// // 查询服务器中是否存在模板文件 +// ImppFile fastDFSFile = new ImppFile("SysTaskCycleImportTemplate.xls", +// excelTool.importTemplate(SysTaskCycle.class), ".xls"); +// +// SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode); +// if (sysFile == null) { +// sysFile = fileService.upload(fastDFSFile, CommonEnumUtil.SOFT_TYPE.CORE.getValue()); +// sysFile.setFileCode(importTemplateCode); +// sysFile = sysFileService.insertSysFile(sysFile); +// } + +// return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile); + return null; + } 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/schedulejob/DemoJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java index 7c0b9e0..403948e 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,6 +1,8 @@ package cn.estsh.i3plus.core.apiservice.schedulejob; import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob; import cn.estsh.impp.framework.boot.init.ApplicationProperties; import io.swagger.annotations.ApiOperation; @@ -39,6 +41,8 @@ public class DemoJob extends BaseImppScheduleJob { // .setErrorSolution("请检查异常通知邮件") // .buildSearch(); // } + sysMessageService.querySysMessageByPager(new SysMessage(),new Pager(10,10)); + try { if(getJobParam() != null && StringUtils.isNotBlank(getJobParam())) { Thread.sleep(Long.parseLong(getJobParam())*1000); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java index 01b1afe..c85c2e5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java @@ -19,6 +19,7 @@ import cn.estsh.i3plus.pojo.platform.repository.SysDictionaryRepository; import cn.estsh.i3plus.pojo.platform.repository.SysLocaleLanguageRepository; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ImppSystemTool; +import cn.estsh.impp.framework.boot.util.LocaleUtils; import cn.estsh.impp.framework.boot.util.RedisCacheTool; import com.alibaba.fastjson.JSON; import io.swagger.annotations.ApiOperation; @@ -146,10 +147,15 @@ public class SystemInitService implements ISystemInitService { public void putAndLoadSysLocaleLanguage() { // 加载资源 putAndLoadResource(); + // 加载WEB资源 putAndLoadWebResource(); + //加载语言数据 putAndLoadSysMenu(); + + // 加载内存数据 + putAndLoadRAMResource(); } public void putAndLoadWebResource() { @@ -264,6 +270,7 @@ public class SystemInitService implements ISystemInitService { resMap.put(res.getLanguageCode(), res.getResourceValue()); } + pager.resetEndRow(); LOGGER.info("【加载资源】数据分类中 {} / {} ", pager.getEndRow(), pager.getTotalRows()); } while (pager.hasNext()); @@ -333,6 +340,12 @@ public class SystemInitService implements ISystemInitService { } } + public void putAndLoadRAMResource(){ + // 清除内存中的资源缓存 + menuService.refreshMemSysMenuLanguage(); + LocaleUtils.cleanCacheResMap(); + } + /** * 缓存存放数据统一管理 * @param key diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java index b0d3043..34e326b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMenuService.java @@ -29,19 +29,21 @@ import java.util.*; import static cn.estsh.i3plus.platform.common.util.CommonConstWords.RESOURCE_PREFIX_MENU; /** - * @Description : 系统功能业务接口实现 - * @Reference : - * @Author : wei.peng - * @Date : 2018-10-22 15:18:14.969 - * @Modify : + * @Description : 系统功能业务接口实现 + * @Reference : + * @Author : wei.peng + * @Date : 2018-10-22 15:18:14.969 + * @Modify : **/ @Service public class SysMenuService extends CacheCrudService implements ISysMenuService { public static final Logger LOGGER = LoggerFactory.getLogger(SysMenuService.class); - /** 功能权限国际化 */ - private final static Map> MEM_CACHE_LANGAGE = new HashMap<>(); + /** + * 功能权限国际化 + */ + private final static Map> MEM_CACHE_LANGAGE = new HashMap<>(); @Autowired private SysMenuRepository sysMenuRDao; @@ -73,10 +75,10 @@ public class SysMenuService extends CacheCrudService implements ISysMen @Override public void checkSysMenuOnly(SysMenu bean) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean); - DdlPreparedPack.getNumNOEqualPack(bean.getId(),"id",packBean); - DdlPreparedPack.getStringLikerPack(bean.getMenuCode(),"menuCode",packBean); + DdlPreparedPack.getNumNOEqualPack(bean.getId(), "id", packBean); + DdlPreparedPack.getStringLikerPack(bean.getMenuCode(), "menuCode", packBean); - if(sysMenuRDao.findByHqlWhereCount(packBean) > 0){ + if (sysMenuRDao.findByHqlWhereCount(packBean) > 0) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode()) @@ -92,14 +94,14 @@ public class SysMenuService extends CacheCrudService implements ISysMen SysLocaleResource resource = new SysLocaleResource(); resource.setResourceType(CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MENU.getValue()); List resourceList = localeResourceService.findSysLocaleResource(resource); - if(CollectionUtils.isNotEmpty(resourceList)){ + if (CollectionUtils.isNotEmpty(resourceList)) { for (SysLocaleResource localeResource : resourceList) { Map map = MEM_CACHE_LANGAGE.get(localeResource.getLanguageCode()); - if(Objects.isNull(map)){ + if (Objects.isNull(map)) { map = new HashMap<>(); } - map.put(localeResource.getResourceKey(),localeResource.getResourceValue()); - MEM_CACHE_LANGAGE.put(localeResource.getLanguageCode(),map); + map.put(localeResource.getResourceKey(), localeResource.getResourceValue()); + MEM_CACHE_LANGAGE.put(localeResource.getLanguageCode(), map); } } } @@ -107,25 +109,25 @@ public class SysMenuService extends CacheCrudService implements ISysMen @Override public void refreshRefSysMenuBySoftType() { List list = findAll(); - if(CollectionUtils.isNotEmpty(list)){ + if (CollectionUtils.isNotEmpty(list)) { Map> refMap = new HashMap<>(); for (SysMenu menu : list) { - if(Objects.nonNull(menu.getSoftType())){ + if (Objects.nonNull(menu.getSoftType())) { List ids = refMap.get(menu.getSoftType()); - if(CollectionUtils.isEmpty(ids)){ + if (CollectionUtils.isEmpty(ids)) { ids = new ArrayList<>(); } ids.add(menu.getId()); - refMap.put(menu.getSoftType(),ids); + refMap.put(menu.getSoftType(), ids); } } - if(MapUtils.isNotEmpty(refMap)){ + if (MapUtils.isNotEmpty(refMap)) { DdlPackBean packBean = null; for (Integer softType : refMap.keySet()) { packBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getInPackList(refMap.get(softType),"menuId",packBean); - refRoleMenuRDao.updateByProperties("softType",softType,packBean); + DdlPreparedPack.getInPackList(refMap.get(softType), "menuId", packBean); + refRoleMenuRDao.updateByProperties("softType", softType, packBean); } } } @@ -133,11 +135,11 @@ public class SysMenuService extends CacheCrudService implements ISysMen @Override public List setLanguageSysMenuName(String languageCode, List menuList) { - if (menuList != null) { - languageCode = StringUtils.isNotBlank(languageCode) ? languageCode : CommonConstWords.DEFAULT_LANGUAGE; - List resultList = (List) SerializeTool.copyObject(menuList); - Map localeResourceMap = MEM_CACHE_LANGAGE.get(languageCode); + languageCode = StringUtils.isNotBlank(languageCode) ? languageCode : CommonConstWords.DEFAULT_LANGUAGE; + Map localeResourceMap = MEM_CACHE_LANGAGE.get(languageCode); + if (menuList != null && localeResourceMap != null) { + List resultList = (List) SerializeTool.copyObject(menuList); for (SysMenu menu : resultList) { if (menu != null) { if (StringUtils.isNotBlank(menu.getName())) { @@ -149,11 +151,15 @@ public class SysMenuService extends CacheCrudService implements ISysMen String parentNameRdd = localeResourceMap.get(RESOURCE_PREFIX_MENU + menu.getParentNameRdd()); menu.setParentNameRdd(StringUtils.isNotBlank(parentNameRdd) ? parentNameRdd : menu.getParentNameRdd()); } + + if(CollectionUtils.isNotEmpty(menu.getChildList())){ + menu.setChildList(setLanguageSysMenuName(languageCode, menu.getChildList())); + } } } - return resultList; } + return menuList; } @@ -342,9 +348,8 @@ public class SysMenuService extends CacheCrudService implements ISysMen @Override public SysMenu getSysMenuByCode(String code) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getStringEqualPack(code,"menuCode",packBean); + DdlPreparedPack.getStringEqualPack(code, "menuCode", packBean); return sysMenuRDao.getByProperty(packBean); } - } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskCycleService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskCycleService.java index dfae76b..3edeadc 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskCycleService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskCycleService.java @@ -72,6 +72,11 @@ public class SysTaskCycleService implements ISysTaskCycleService { } @Override + public List insertBatchSysTaskCycle(List sysTaskCycleList) { + return sysTaskCycleRDao.saveAll(sysTaskCycleList); + } + + @Override @ApiOperation(value = "查询所有任务周期信息",notes = "查询所有任务周期信息") public List listSysTaskCycle() { return sysTaskCycleRDao.list(); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskService.java index 8bdb712..e614eac 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskService.java @@ -40,36 +40,23 @@ public class SysTaskService implements ISysTaskService { private SysTaskPlanRepository sysTaskPlanRDao; @Override - @ApiOperation(value = "添加任务",notes = "添加任务") + @ApiOperation(value = "添加任务", notes = "添加任务") public SysTask insertSysTask(SysTask sysTask) { - if(sysTaskRDao.findByPropertyCount("name",sysTask.getName()) > 0){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("任务名称不能相同") - .setErrorSolution("请重新输入") - .build(); - } - return sysTaskRDao.insert(sysTask); } @Override - @ApiOperation(value = "修改任务信息",notes = "修改任务信息") + public List insertBatchSysTask(List sysTaskList) { + return sysTaskRDao.saveAll(sysTaskList); + } + + @Override + @ApiOperation(value = "修改任务信息", notes = "修改任务信息") public void updateSysTask(SysTask sysTask) { // 业务校验,不能重名 StringBuffer sb = new StringBuffer(); - HqlPack.getStringEqualPack(sysTask.getName(),"name",sb); - HqlPack.getNumNOEqualPack(sysTask.getId(),"id",sb); - - if(sysTaskRDao.findByHqlWhereCount(sb.toString()) > 0){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("任务名称不能相同") - .setErrorSolution("请重新输入") - .build(); - } + HqlPack.getStringEqualPack(sysTask.getName(), "name", sb); + HqlPack.getNumNOEqualPack(sysTask.getId(), "id", sb); SysTask newSysTask = sysTaskRDao.getById(sysTask.getId()); newSysTask.setName(sysTask.getName()); @@ -81,32 +68,32 @@ public class SysTaskService implements ISysTaskService { sysTaskRDao.update(newSysTask); // 修改冗余信息 - sysTaskPlanRDao.updateByProperties("taskId",sysTask.getId(), - "taskNameRdd",sysTask.getName()); + sysTaskPlanRDao.updateByProperties("taskId", sysTask.getId(), + "taskNameRdd", sysTask.getName()); } @Override - @ApiOperation(value = "查询所有任务",notes = "查询所有任务") + @ApiOperation(value = "查询所有任务", notes = "查询所有任务") public List listSysTask() { return sysTaskRDao.list(); } @Override - @ApiOperation(value = "根据组织代码查询任务",notes = "根据组织代码查询任务") + @ApiOperation(value = "根据组织代码查询任务", notes = "根据组织代码查询任务") public List listSysTaskByOrg(String organizeCode) { - return sysTaskRDao.findByProperty("organizeCode",organizeCode); + return sysTaskRDao.findByProperty("organizeCode", organizeCode); } @Override - @ApiOperation(value = "根据id查询任务信息",notes = "根据id查询任务信息") + @ApiOperation(value = "根据id查询任务信息", notes = "根据id查询任务信息") public SysTask getSysTaskById(Long id) { return sysTaskRDao.getById(id); } @Override - @ApiOperation(value = "删除任务",notes = "根据id删除任务") + @ApiOperation(value = "删除任务", notes = "根据id删除任务") public void deleteSysTaskById(Long id) { - if(sysTaskPlanRDao.isExitByProperty("taskId",id)){ + if (sysTaskPlanRDao.isExitByProperty("taskId", id)) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) @@ -119,13 +106,13 @@ public class SysTaskService implements ISysTaskService { } @Override - @ApiOperation(value = "删除任务",notes = "根据id批量删除任务") + @ApiOperation(value = "删除任务", notes = "根据id批量删除任务") public void deleteSysTaskByIds(Long[] ids) { sysTaskRDao.deleteByIds(ids); } @Override - @ApiOperation(value = "任务管理复杂查询,分页,排序",notes = "任务管理复杂查询,分页,排序") + @ApiOperation(value = "任务管理复杂查询,分页,排序", notes = "任务管理复杂查询,分页,排序") public ListPager querySysTaskByPager(SysTask sysTask, Pager pager) { if (sysTask == null) { pager = PagerHelper.getPager(pager, sysTaskRDao.listCount()); @@ -139,6 +126,11 @@ public class SysTaskService implements ISysTaskService { @Override public SysTask getSysTaskByCode(String code) { - return sysTaskRDao.getByProperty("taskCode",code); + return sysTaskRDao.getByProperty("taskCode", code); + } + + @Override + public boolean checkSysTaskOnly(SysTask sysTask) { + return !sysTaskRDao.isExitByHql(CoreHqlPack.packHqlCheckSysTaskOnly(sysTask)); } } diff --git a/pom.xml b/pom.xml index 055ff17..b8e6d69 100644 --- a/pom.xml +++ b/pom.xml @@ -76,6 +76,13 @@ ${project.version} + + + i3plus.icloud + i3plus-icloud-ptl + ${project.version} + + i3plus.icloud i3plus-icloud-andon