From 5126e009a2ac5a6df7b821d07e89f562e4ab8bc8 Mon Sep 17 00:00:00 2001 From: zjh <10930829+zheng-jinhao1209@user.noreply.gitee.com> Date: Fri, 28 Jul 2023 16:11:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E8=A7=84=E5=88=99?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/modulex/ModulexList.vue | 17 +- .../rulex/controller/RulexController.java | 345 +++++++++++------- .../modules/demo/rulex/entity/RuleVo.java | 15 +- .../modules/demo/rulex/entity/Rulex.java | 2 + 4 files changed, 222 insertions(+), 157 deletions(-) diff --git a/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue b/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue index a518289..b11b49b 100644 --- a/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue +++ b/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue @@ -602,22 +602,25 @@ export default { }, ruleData: function () { return { - note: ['对应模块(必填):填写正确的模块名称', + note: [ + '对应项目(必填):填写正确的项目名称', + '上级模块(非必填):填写正确的上级模块名称', + '对应模块(必填):填写正确的模块名称', '对应功能(必填):填写正确的功能名称', - '对应实体(必填):填写正确的实体名称', - '顺序号(必填):同功能下不重复', + '对应实体(非必填):填写正确的实体名称', + '对应字段(非必填):填写正确的字段名称', + '顺序号(必填):同功能下不重复,为正整数且与规则编码顺序号相等', '规则编码(必填):功能编码+顺序号(格式001)', '规则描述(非必填)', - '分析图(非必填)', - '责任人(非必填):如果有多个值请使用,分割', + '责任人(非必填):如果有多个值请使用逗号分割', '任务等级(必填):值:1、2、3、4、5个等级', '任务状态(必填):值:未发布、已发布、开发中、已完成、已撤回、已取消', '版本状态(必填): 可填入值为[当前、历史]', '规则状态(必填): 值:正常、停用、废弃', '开始时间(非必填):时间格式2023-04-11 14:21:22', - '任务时长(非必填)', + '任务时长(非必填):正整数', '提交时间(非必填):时间格式2023-04-11 14:21:22', - '实际时长(非必填)', + '实际时长(非必填):正整数', '规则状态(必填):值:正常、停用、废弃', '版本号(必填):请填写小于五位数的正整数' ], diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/controller/RulexController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/controller/RulexController.java index 88af61d..98abf5d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/controller/RulexController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/controller/RulexController.java @@ -29,6 +29,8 @@ import org.jeecg.modules.fieldx.entity.Fieldx; import org.jeecg.modules.fieldx.service.IFieldxService; import org.jeecg.modules.modulex.entity.Modulex; import org.jeecg.modules.modulex.service.IModulexService; +import org.jeecg.modules.projectx.entity.Projectx; +import org.jeecg.modules.projectx.service.impl.ProjectxServiceImpl; import org.jeecg.modules.system.entity.SysDictItem; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.mapper.SysDictItemMapper; @@ -96,6 +98,9 @@ public class RulexController extends JeecgController { @Autowired private WebSocketUtils webSocketUtils; + @Autowired + private ProjectxServiceImpl projectxService; + @Value("${jeecg.wordPath}") private String wordPath; @@ -258,13 +263,13 @@ public class RulexController extends JeecgController { message.put("uploaded", "0"); message.put("status", "判断文件结构"); message.put("isError", "false"); - message.put("closeable","false"); + message.put("closeable", "false"); webSocketUtils.sendMessage(loginUser.getId(), message); //判断文件是否为空 if (file == null) { message.put("isError", "true"); - message.put("closeable","true"); - message.put("status","文件上传失败,请重新上传"); + message.put("closeable", "true"); + message.put("status", "文件上传失败,请重新上传"); webSocketUtils.sendMessage(loginUser.getId(), message); return Result.error("文件上传失败,请重新上传"); } @@ -274,8 +279,8 @@ public class RulexController extends JeecgController { (!originalFilename.endsWith("xls") && !originalFilename.endsWith("xlsx"))) { message.put("isError", "true"); - message.put("closeable","true"); - message.put("status","文件格式不正确"); + message.put("closeable", "true"); + message.put("status", "文件格式不正确"); webSocketUtils.sendMessage(loginUser.getId(), message); return Result.error("文件格式不正确"); } @@ -285,8 +290,8 @@ public class RulexController extends JeecgController { params.setHeadRows(1);//表头行数,默认1 params.setNeedSave(true);//是否需要保存上传的Excel,默认为false - message.put("status", "数据预读入"); - webSocketUtils.sendMessage(loginUser.getId(), message); + message.put("status", "数据预读入"); + webSocketUtils.sendMessage(loginUser.getId(), message); List list = null; try { list = ExcelImportUtil.importExcel(file.getInputStream(), RuleVo.class, params); @@ -294,44 +299,45 @@ public class RulexController extends JeecgController { e.printStackTrace(); } if (list == null || list.size() <= 0) { - message.put("isError", "true"); - message.put("closeable","true"); - message.put("status","文件导入失败:模板中暂无数据"); - webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("文件导入失败:模板中暂无数据"); - } - //必要字段判断空值 - for (int i = 0; i < list.size(); i++) { - if ( - StringUtils.isBlank(list.get(i).getRuleNo()) || - StringUtils.isBlank(list.get(i).getRuleCode()) || + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "文件导入失败:模板中暂无数据"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("文件导入失败:模板中暂无数据"); + } + //必要字段判断空值 + for (int i = 0; i < list.size(); i++) { + if ( + StringUtils.isBlank(list.get(i).getRuleNo()) || + StringUtils.isBlank(list.get(i).getProjectId()) || + StringUtils.isBlank(list.get(i).getRuleCode()) || // StringUtils.isBlank() list.get(i).getPmDescribe() == null && - StringUtils.isBlank(list.get(i).getModuleId() ) || - StringUtils.isBlank(list.get(i).getFunctionId()) || + StringUtils.isBlank(list.get(i).getModuleId()) || + StringUtils.isBlank(list.get(i).getFunctionId()) || // StringUtils.isBlank() list.get(i).getDiagrams() == null && - StringUtils.isBlank( list.get(i).getTableId() ) || +// StringUtils.isBlank(list.get(i).getTableId()) || // StringUtils.isBlank() list.get(i).getFieldId() == null || - StringUtils.isBlank( list.get(i).getManagerUsers())|| - StringUtils.isBlank(list.get(i).getWorkLevel()) || - StringUtils.isBlank(list.get(i).getWorkStatus()) || + StringUtils.isBlank(list.get(i).getManagerUsers()) || + StringUtils.isBlank(list.get(i).getWorkLevel()) || + StringUtils.isBlank(list.get(i).getWorkStatus()) || // StringUtils.isBlank() list.get(i).getStartTime() == null && // StringUtils.isBlank() list.get(i).getManagerUsers() == null && // StringUtils.isBlank() list.get(i).getDuration() == null && // StringUtils.isBlank() list.get(i).getSubmitTime() == null && - StringUtils.isBlank(list.get(i).getRealDuration()) && - StringUtils.isBlank(list.get(i).getStatus() ) || - StringUtils.isBlank( list.get(i).getVerisonStatus()) || - StringUtils.isBlank(list.get(i).getVerison()) ) { +// StringUtils.isBlank(list.get(i).getRealDuration()) && + StringUtils.isBlank(list.get(i).getStatus()) || + StringUtils.isBlank(list.get(i).getVerisonStatus()) || + StringUtils.isBlank(list.get(i).getVerison())) { - message.put("isError", "true"); - message.put("closeable","true"); - message.put("status","文件导入失败:"+"第"+(i + 1) + "条存在必填数据为空,请核对"); - webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("文件导入失败:"+"第"+(i + 1) + "条不能为空,请核对"); - } - //存入预存表 - iRuleVoService.save(list.get(i)); + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "文件导入失败:" + "第" + (i + 1) + "条存在必填数据为空,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("文件导入失败:" + "第" + (i + 1) + "条不能为空,请核对"); } + //存入预存表 + iRuleVoService.save(list.get(i)); + } List rulexList; try { //取出预存表校验字段 @@ -339,8 +345,8 @@ public class RulexController extends JeecgController { if (ruleVoList.size() <= 0 || ruleVoList == null) { message.put("isError", "true"); - message.put("closeable","true"); - message.put("status","文件导入失败,模板不匹配有空值"); + message.put("closeable", "true"); + message.put("status", "文件导入失败,模板不匹配有空值"); webSocketUtils.sendMessage(loginUser.getId(), message); return Result.error("文件导入失败,模板不匹配有空值"); } @@ -355,13 +361,24 @@ public class RulexController extends JeecgController { for (int i = 0; i < ruleVoList.size(); i++) { Rulex rulex = new Rulex(); RuleVo ruleVo = ruleVoList.get(i); - + String projectId = ruleVo.getProjectId(); String pModuleId = ruleVo.getModulePid(); String moduleId = ruleVo.getModuleId(); //对应模块 + LambdaQueryWrapper projectxLambdaQueryWrapper =new LambdaQueryWrapper<>(); + projectxLambdaQueryWrapper.eq(Projectx::getProjectName,projectId); + + Projectx projectx = projectxService.getOne(projectxLambdaQueryWrapper); + if (projectx==null){ + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,项目输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,项目输入错误,请核对"); + } //判断上级模块是否存在 int n = 0; - if (!StringUtils.isBlank(pModuleId) ) { + if (!StringUtils.isBlank(pModuleId)) { //存在 String pid = ""; for (Modulex modulex : modulexList) { @@ -380,10 +397,20 @@ public class RulexController extends JeecgController { return Result.error("第" + (i + 1) + "条数据,上级模块输入错误,请核对"); } } - //判断上级模块+模块是否存在 + //判断上级模块+模块是否存在且是否属于当前项目下 + for (Modulex modulex : modulexList) { if (modulex.getModuleName().equals(moduleId) && modulex.getPid().equals(pid)) { + if (!modulex.getProjectId().equals(projectx.getId())) + { + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,该模块与项目不对应输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,该模块与项目不对应输入错误,请核对"); + } rulex.setModuleId(modulex.getId()); + break; } n++; @@ -397,9 +424,17 @@ public class RulexController extends JeecgController { } } else { n = 0; - //判断模块是否存在 + //判断模块是否存在且是否属于当前项目下 for (Modulex modulex : modulexList) { if (modulex.getModuleName().equals(moduleId) && modulex.getPid() == null) { + if (!modulex.getProjectId().equals(projectx.getId())) + { + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,该模块与项目不对应输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,该模块与项目不对应输入错误,请核对"); + } rulex.setModuleId(modulex.getId()); break; } @@ -430,25 +465,28 @@ public class RulexController extends JeecgController { rulex.setFunctionId(functionx.getId()); // //对应实体 + String tableId = ruleVo.getTableId(); - LambdaQueryWrapper tableLambdaQueryWrapper = new LambdaQueryWrapper<>(); - tableLambdaQueryWrapper.eq(Tablex::getTableName, tableId).eq(Tablex::getModuleId, rulex.getModuleId()); - Tablex tablex = iTablexService.getOne(tableLambdaQueryWrapper); - if (tablex == null) { + if (!StringUtils.isBlank(tableId)) { + LambdaQueryWrapper tableLambdaQueryWrapper = new LambdaQueryWrapper<>(); + tableLambdaQueryWrapper.eq(Tablex::getTableName, tableId).eq(Tablex::getModuleId, rulex.getModuleId()); + Tablex tablex = iTablexService.getOne(tableLambdaQueryWrapper); + if (tablex == null) { - iRuleVoService.remove(null); - message.put("isError", "true"); - message.put("closeable", "true"); - message.put("status", "第" + (i + 1) + "条数据,对应实体输入错误,请核对"); - webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("第" + (i + 1) + "条数据,对应实体输入错误,请核对"); + iRuleVoService.remove(null); + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,对应实体输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,对应实体输入错误,请核对"); + } + rulex.setTableId(tablex.getId()); } - rulex.setTableId(tablex.getId()); //对应字段 String fieldId = ruleVo.getFieldId(); String tableId1 = rulex.getTableId(); - if (!StringUtils.isBlank(fieldId) ) { + if (!StringUtils.isBlank(fieldId)) { LambdaQueryWrapper rulexLambdaQueryWrapper = new LambdaQueryWrapper<>(); rulexLambdaQueryWrapper.eq(Fieldx::getFieldName, fieldId).eq(Fieldx::getTableId, tableId1); Fieldx fieldx = iFieldxService.getOne(rulexLambdaQueryWrapper); @@ -462,11 +500,17 @@ public class RulexController extends JeecgController { } rulex.setFieldId(fieldx.getId()); } - Double aDouble = null; + Double duration = null; try { - if (aDouble != null) - aDouble = Double.valueOf(ruleVo.getDuration()); - rulex.setDuration(aDouble); + if (duration < 0){ + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,任务时长输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,任务时长输入错误,请核对"); + } + duration = Double.valueOf(ruleVo.getDuration()); + rulex.setDuration(duration); } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 message.put("isError", "true"); @@ -477,29 +521,37 @@ public class RulexController extends JeecgController { } Double d; - try { - d = Double.valueOf(ruleVo.getRealDuration()); - } catch (Exception e) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 - message.put("isError", "true"); - message.put("closeable", "true"); - message.put("status", "第" + (i + 1) + "条数据,实际时长输入错误,请核对"); - webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("第" + (i + 1) + "条数据,实际时长输入错误,请核对"); + String realDuration = ruleVo.getRealDuration(); + if (!StringUtils.isBlank(realDuration)) { + try { + d = Double.valueOf(realDuration); + if (d < 0) { + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,实际时长输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,实际时长输入错误,请核对"); + } + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,实际时长输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,实际时长输入错误,请核对"); + } + rulex.setRealDuration(d); } - rulex.setRealDuration(d); - Integer integer; - try { - integer = Integer.valueOf(ruleVo.getWorkLevel()); - } catch (Exception e) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + +String workLevel = ruleVo.getWorkLevel(); + if (!workLevel.matches("^[1-5]$")){ message.put("isError", "true"); message.put("closeable", "true"); message.put("status", "第" + (i + 1) + "条数据,任务等级输入错误,请核对"); webSocketUtils.sendMessage(loginUser.getId(), message); return Result.error("第" + (i + 1) + "条数据,任务等级输入错误,请核对"); } - rulex.setWorkLevel(integer); + rulex.setWorkLevel(Integer.valueOf(workLevel)); String workStatus = ruleVo.getWorkStatus(); // LambdaQueryWrapper sysDictItemLambdaQueryWrapper = new LambdaQueryWrapper<>(); // sysDictItemLambdaQueryWrapper.eq(SysDictItem::getItemText, workStatus).eq(SysDictItem::getDictId, "1645268542514421762"); @@ -576,7 +628,7 @@ public class RulexController extends JeecgController { } } String submitTime = ruleVo.getSubmitTime(); - if (!StringUtils.isBlank(submitTime)){ + if (!StringUtils.isBlank(submitTime)) { String submitTimeT = getTime(submitTime); try { date = simpleDateFormat.parse(submitTimeT); @@ -591,9 +643,7 @@ public class RulexController extends JeecgController { } } - //规则序号 - String ruleNo = ruleVo.getRuleNo(); - rulex.setRuleNo(ruleNo); + //规则编码 String ruleCode = ruleVo.getRuleCode(); String functionCode1 = functionx.getFunctionCode(); @@ -632,96 +682,109 @@ public class RulexController extends JeecgController { return Result.error("第" + (i + 1) + "条数据,规则编码错误,请核对"); } rulex.setRuleCode(ruleCode); - //规则描述 - String pmDescribe = ruleVo.getPmDescribe(); - if (pmDescribe != null) - rulex.setPmDescribe(pmDescribe); - //分析图 - String diagrams = ruleVo.getDiagrams(); - if (diagrams != null) - rulex.setDiagrams(diagrams); - //版本号 - String verison = ruleVo.getVerison(); - if (ruleVo.getVerison() == null || verison.length() >= 5) { + //规则序号 + String ruleNo = ruleVo.getRuleNo(); + String c = ruleCode.substring(ruleCode.length() - ruleNo.length()); +//三位数整数且与编码后三位相同 + if (!(c.equals(ruleNo) && ruleNo.matches("^[0-9]*[1-9][0-9]*$") && (Integer.valueOf(ruleNo) < 1000))) { message.put("isError", "true"); message.put("closeable", "true"); - message.put("status", "第" + (i + 1) + "条数据,版本号错误,请核对"); + message.put("status", "第" + (i + 1) + "条数据,规则序号错误,请核对"); webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("第" + (i + 1) + "条数据,版本号错误,请核对"); + return Result.error("第" + (i + 1) + "条数据,规则序号错误,请核对"); } - try { - Integer integer2 = Integer.valueOf(verison); - if (integer2 > 0) - rulex.setVerison(String.valueOf(integer2)); - else { + rulex.setRuleNo(ruleNo); + { + + //规则描述 + String pmDescribe = ruleVo.getPmDescribe(); + if (pmDescribe != null) + rulex.setPmDescribe(pmDescribe); + //版本号 + String verison = ruleVo.getVerison(); + if (ruleVo.getVerison() == null || verison.length() >= 5) { message.put("isError", "true"); message.put("closeable", "true"); - message.put("status", "第" + (i + 1) + "条数据,版本号输入错误,请核对"); + message.put("status", "第" + (i + 1) + "条数据,版本号错误,请核对"); webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("第" + (i + 1) + "条数据,版本号输入错误,请核对"); + return Result.error("第" + (i + 1) + "条数据,版本号错误,请核对"); } - } catch (NumberFormatException e) { - message.put("isError", "true"); - message.put("closeable", "true"); - message.put("status", "第" + (i + 1) + "条数据,版本号输入错误,请核对"); - webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("第" + (i + 1) + "条数据,版本号输入错误,请核对"); - } - - - //责任人 - String managerUsers = ruleVo.getManagerUsers(); - if (managerUsers != null) { - LambdaQueryWrapper sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); - String[] split = managerUsers.split(","); - sysUserLambdaQueryWrapper.in(SysUser::getUsername, split); - List iSysUserServiceOne = iSysUserService.list(sysUserLambdaQueryWrapper); - if (iSysUserServiceOne == null) { + try { + Integer integer2 = Integer.valueOf(verison); + if (integer2 > 0) + rulex.setVerison(String.valueOf(integer2)); + else { + message.put("isError", "true"); + message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,版本号输入错误,请核对"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("第" + (i + 1) + "条数据,版本号输入错误,请核对"); + } + } catch (NumberFormatException e) { message.put("isError", "true"); - message.put("status", "导入失败,责任人信息查询不到"); message.put("closeable", "true"); + message.put("status", "第" + (i + 1) + "条数据,版本号输入错误,请核对"); webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("导入失败,责任人信息查询不到"); + return Result.error("第" + (i + 1) + "条数据,版本号输入错误,请核对"); } - if (iSysUserServiceOne.size() > 1) { - List list3 = iSysUserServiceOne.stream().map(SysUser::getId).collect(Collectors.toList()); - if (list3 == null) { + + + //责任人 + String managerUsers = ruleVo.getManagerUsers(); + if (!StringUtils.isBlank(managerUsers)) { + LambdaQueryWrapper sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); + String[] split = managerUsers.split(","); + sysUserLambdaQueryWrapper.in(SysUser::getUsername, split); + List iSysUserServiceOne = iSysUserService.list(sysUserLambdaQueryWrapper); + if (iSysUserServiceOne == null) { message.put("isError", "true"); message.put("status", "导入失败,责任人信息查询不到"); message.put("closeable", "true"); webSocketUtils.sendMessage(loginUser.getId(), message); return Result.error("导入失败,责任人信息查询不到"); } - rulex.setManagerUsers(Joiner.on(",").join(list3)); - } else if (iSysUserServiceOne.size() == 1) { - String id = iSysUserServiceOne.get(0).getId(); - rulex.setManagerUsers(id); + if (iSysUserServiceOne.size() > 1) { + List list3 = iSysUserServiceOne.stream().map(SysUser::getId).collect(Collectors.toList()); + if (list3 == null) { + message.put("isError", "true"); + message.put("status", "导入失败,责任人信息查询不到"); + message.put("closeable", "true"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("导入失败,责任人信息查询不到"); + } + rulex.setManagerUsers(Joiner.on(",").join(list3)); + } else if (iSysUserServiceOne.size() == 1) { + String id = iSysUserServiceOne.get(0).getId(); + rulex.setManagerUsers(id); + } } + + message.put("status", "正在读取数据"); + webSocketUtils.sendMessage(loginUser.getId(), message); + //存入集合待存真实表 + rulexList.add(rulex); } + } + } finally{ + //清理预存表 + iRuleVoService.remove(null); + } + //存入真实表 + Boolean aBoolean = rulexService.saveRule(rulexList, loginUser, message); - message.put("status", "正在读取数据"); + if (aBoolean) { + message.put("status", "导入成功"); + message.put("closeable", "true"); webSocketUtils.sendMessage(loginUser.getId(), message); - //存入集合待存真实表 - rulexList.add(rulex); + return Result.ok("文件导入成功!"); + } else { + return Result.error("文件导入失败!"); } - } finally { - //清理预存表 - iRuleVoService.remove(null); - } - //存入真实表 - Boolean aBoolean = rulexService.saveRule(rulexList, loginUser, message); - if (aBoolean) { - message.put("status", "导入成功"); - message.put("closeable", "true"); - webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.ok("文件导入成功!"); - }else { - return Result.error("文件导入失败!"); - } } + @GetMapping(value = "/sort") public Result sort(@RequestParam(name = "id", required = true) String id) { return rulexService.sort(id); diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/RuleVo.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/RuleVo.java index 853fd93..f9af013 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/RuleVo.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/RuleVo.java @@ -63,12 +63,14 @@ public class RuleVo implements Serializable { @ApiModelProperty(value = "更新日期") private String updateTime; + @Excel(name = "对应项目", width = 15) + @ApiModelProperty(value = "对应项目") + private java.lang.String projectId; /** * 对应模块父id */ - @TableField(exist = false) - @Excel(name = "对应模块父模块", width = 15) - @ApiModelProperty(value = "对应模块") + @Excel(name = "上级模块", width = 15) + @ApiModelProperty(value = "上级模块") private java.lang.String modulePid; /** * 对应模块id @@ -77,6 +79,7 @@ public class RuleVo implements Serializable { @ApiModelProperty(value = "对应模块") @Dict(dictTable = "modulex", dicCode = "id", dicText = "module_name") private java.lang.String moduleId; + /** * 对应功能id */ @@ -102,12 +105,6 @@ public class RuleVo implements Serializable { @Excel(name = "规则描述", width = 15) @ApiModelProperty(value = "规则描述") private java.lang.String pmDescribe; - /** - * 分析图 - */ - @Excel(name = "分析图", width = 15) - @ApiModelProperty(value = "分析图") - private java.lang.String diagrams; /** * 对应实体id */ diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/Rulex.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/Rulex.java index e340ffb..37567d4 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/Rulex.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/Rulex.java @@ -6,6 +6,7 @@ import java.util.Date; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -99,6 +100,7 @@ public class Rulex implements Serializable { */ @Excel(name = "分析图", width = 15) @ApiModelProperty(value = "分析图") + @TableField(exist = false) private java.lang.String diagrams; /** * 对应实体id From 679dc7dd1552f0c0679321418abb4e986df2584f Mon Sep 17 00:00:00 2001 From: guilongma <3307671311@qq.com> Date: Fri, 28 Jul 2023 17:02:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=89=8D=E6=A0=A1=E9=AA=8C=E4=B8=AD=E6=96=87=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E5=90=8D=E9=87=8D=E5=A4=8D=EF=BC=8C=E5=B0=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=BC=96=E7=A0=81=E6=94=B9=E4=B8=BA=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=B7=BB=E5=8A=A0=EF=BC=8C=E8=A7=A3=E5=86=B3=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=97=B6=E9=95=BF=E3=80=81=E5=AE=9E=E9=99=85=E6=97=B6?= =?UTF-8?q?=E9=95=BF=E4=B8=BA=E8=B4=9F=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/functionx/entity/FunctionxTest.java | 5 +- .../impl/FunctionXTestServiceImpl.java | 192 +++++++++++------- 2 files changed, 119 insertions(+), 78 deletions(-) diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/FunctionxTest.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/FunctionxTest.java index 54ecb0e..2cfb58a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/FunctionxTest.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/FunctionxTest.java @@ -24,8 +24,7 @@ public class FunctionxTest implements Serializable { /** * 对应上级模块 */ - @TableField("p_module_name") - private String pModuleName; + private String project; /** * 对应模块 @@ -45,7 +44,7 @@ public class FunctionxTest implements Serializable { /** * 功能编码 */ - private String functionCode; +// private String functionCode; /** * 功能类型 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/service/impl/FunctionXTestServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/service/impl/FunctionXTestServiceImpl.java index 1ea2434..6c0f80f 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/service/impl/FunctionXTestServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/service/impl/FunctionXTestServiceImpl.java @@ -23,13 +23,14 @@ import org.jeecg.modules.modulex.entity.Modulex; import org.jeecg.modules.modulex.service.IModulexService; import org.jeecg.modules.projectUserRole.entity.ProjectUserRole; import org.jeecg.modules.projectUserRole.service.IProjectUserRoleService; +import org.jeecg.modules.projectx.entity.Projectx; +import org.jeecg.modules.projectx.service.IProjectxService; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysUserService; -import org.jeecg.modules.tablex.vo.TablexVo; import org.jeecg.modules.tablex.ws.WebSocketUtils; -import org.jeecgframework.poi.excel.entity.ImportParams; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @@ -49,8 +50,11 @@ public class FunctionXTestServiceImpl extends ServiceImpl importExcel(MultipartFile file) { // 获取当前操作用户 @@ -137,46 +141,51 @@ public class FunctionXTestServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(username != null, FunctionxTest::getCreatName, username); + List list = this.list(queryWrapper); + + + int isSaveTestSuccess = saveTest(listVo); + if (isSaveTestSuccess != -1){ + this.remove(queryWrapper); message.put("isError", "true"); - message.put("status", "文件读入失败"); + message.put("status", "第" + (isSaveTestSuccess+1) + "行中文名或英文名有重复"); message.put("closeable", "true"); webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("文件读入失败"); + return Result.error("中文名或英文名有重复"); } message.put("status", "数据校验"); webSocketUtils.sendMessage(loginUser.getId(), message); //************************具体字段校验****************************** - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(username != null, FunctionxTest::getCreatName, username); - List list = this.list(queryWrapper); + boolean remove = this.remove(queryWrapper); if (!remove) { @@ -193,11 +202,11 @@ public class FunctionXTestServiceImpl extends ServiceImpl projectxQueryWrapper =new LambdaQueryWrapper<>(); + projectxQueryWrapper.eq(Projectx::getProjectName,project); + List list1 = projectxService.list(projectxQueryWrapper); + if (list1.size()==0){ + message.put("isError", "true"); + message.put("status", "第" + i + "行数据项目名称错误"); + message.put("closeable", "true"); + webSocketUtils.sendMessage(loginUser.getId(), message); + return Result.error("项目名称错误"); + } + project = list1.get(0).getId(); // 此时project为项目id + } + if (StringUtils.isBlank(moduleId)) { message.put("isError", "true"); message.put("status", "第" + i + "行数据对应模块不能为空"); @@ -223,30 +254,13 @@ public class FunctionXTestServiceImpl extends ServiceImpl0) { - String pid = ""; - for (Modulex modulex : modulexList) { - if (modulex.getModuleName().equals(pModuleId)) { - pid = modulex.getId(); - break; - } - } - for (Modulex modulex : modulexList) { - if (modulex.getModuleName().equals(moduleId) && modulex.getPid().equals(pid)) { - functionx.setModuleId(modulex.getId()); - moduleId = modulex.getId(); - moduleName = modulex.getModuleName(); - break; - } - } - } else { - for (Modulex modulex : modulexList) { - if (modulex.getModuleName().equals(moduleId) && modulex.getPid() == null) { - functionx.setModuleId(modulex.getId()); - moduleId = modulex.getId(); - moduleName = modulex.getModuleName(); - break; - } + for (Modulex modulex : modulexList) { + if (modulex.getModuleName().equals(moduleId) && modulex.getProjectId().equals(project)) { + functionx.setModuleId(modulex.getId()); + moduleId = modulex.getId(); + moduleName = modulex.getModuleName(); + moduleCode = modulex.getModuleCode(); + break; } } if (functionx.getModuleId() == null) { @@ -342,30 +356,32 @@ public class FunctionXTestServiceImpl extends ServiceImpl queryWrapperModulex = new LambdaQueryWrapper<>(); - queryWrapperModulex.eq(Modulex::getModuleName, moduleName); - Modulex modulex = modulexService.getOne(queryWrapperModulex); - String moduleCode = modulex.getModuleCode(); - String firstChar = toFirstChar(functionType); - String str = moduleCode + firstChar; - if (!str.equals(functionCode)) { - message.put("isError", "true"); - message.put("status", "第" + (i+1) + "行数据数据功能编码错误"); - message.put("closeable", "true"); - webSocketUtils.sendMessage(loginUser.getId(), message); - return Result.error("功能编码错误"); - } - - functionx.setFunctionCode(functionCode); - } + // 模块编码+功能缩写;自动填充+手动修改 // 改为自动生成 + String firstChar = toFirstChar(functionName); + String functionCode = moduleCode + firstChar; + functionx.setFunctionCode(functionCode); +// if (StringUtils.isBlank(functionCode)) { +// message.put("isError", "true"); +// message.put("status", "第" + (i+1) + "行数据数据功能编码不能为空"); +// message.put("closeable", "true"); +// webSocketUtils.sendMessage(loginUser.getId(), message); +// return Result.error("功能编码不能为空"); +// } else { +// LambdaQueryWrapper queryWrapperModulex = new LambdaQueryWrapper<>(); +// queryWrapperModulex.eq(Modulex::getModuleName, moduleName); +// Modulex modulex = modulexService.getOne(queryWrapperModulex); +// String moduleCode = modulex.getModuleCode(); +// String firstChar = toFirstChar(functionName); +// String str = moduleCode + firstChar; +// if (!str.equals(functionCode)) { +// message.put("isError", "true"); +// message.put("status", "第" + (i+1) + "行数据数据功能编码错误"); +// message.put("closeable", "true"); +// webSocketUtils.sendMessage(loginUser.getId(), message); +// return Result.error("功能编码错误"); +// } +// functionx.setFunctionCode(functionCode); +// } if (StringUtils.isNotBlank(pmDescribe)) { // 功能描述 functionx.setPmDescribe(pmDescribe); @@ -514,6 +530,13 @@ public class FunctionXTestServiceImpl extends ServiceImpl listVo) { + for (int i = 0; i < listVo.size(); i++) { + try { + this.save(listVo.get(i)); + } catch (Exception e) { + return i; + } + } + return -1; + } + private boolean funCheck(List list) { for (int i=0;i0){