From 6ba5bd093b421fae8c25b813a37a0e52f23c6d1d Mon Sep 17 00:00:00 2001 From: zjh <10930829+zheng-jinhao1209@user.noreply.gitee.com> Date: Wed, 12 Jul 2023 15:22:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E8=A7=84=E5=88=99=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/modulex/ModulexList.vue | 11 +- .../org/jeecg/JeecgSystemApplication.java | 2 +- .../rulex/controller/RulexController.java | 257 ++++++++++++++---- 3 files changed, 211 insertions(+), 59 deletions(-) diff --git a/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue b/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue index a2a2738..4535d68 100644 --- a/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue +++ b/ant-design-vue-jeecg/src/views/modulex/ModulexList.vue @@ -397,7 +397,8 @@ export default { deleteBatch: "/modulex/modulex/deleteBatch", exportXlsUrl: "/modulex/modulex/exportXls", importExcelUrl: "modulex/modulex/importExcel", - + tablexImportExcelUrl: "tablex/tablex/importExcel", + ruleImportExcelUrl: "rulex/rulex/importExcel", }, dictOptions: {}, superFieldList: [], @@ -422,7 +423,13 @@ export default { // 用计算属性取出columns的dataIndex,作为多选框的选项数据 checkColumn: function () { return this.columns.map(item => item.title) - } + }, + tablexImportExcelUrl: function(){ + return `${window._CONFIG['domianURL']}/${this.url.tablexImportExcelUrl}`; + }, + ruleImportExcelUrl: function () { + return `${window._CONFIG['domianURL']}/${this.url.ruleImportExcelUrl}` + }, }, methods: { // 多选框的事件回调 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java index 07a2ce3..4658e77 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java @@ -14,7 +14,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; /** - * 单体启动类(采用此类启动为单体模式) 想笑 别叫 有用 + * 单体启动类(采用此类启动为单体模式) 想笑 别叫 有用 别想 别叫 别用 */ @Slf4j @SpringBootApplication 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 8f0b8f2..428f7c5 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 @@ -1,16 +1,23 @@ package org.jeecg.modules.demo.rulex.controller; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Map; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.demo.functionx.entity.Functionx; import org.jeecg.modules.demo.functionx.mapper.FunctionxMapper; +import org.jeecg.modules.demo.functionx.service.IFunctionxService; import org.jeecg.modules.demo.rulex.entity.RuleVo; import org.jeecg.modules.demo.rulex.entity.Rulex; +import org.jeecg.modules.demo.rulex.mapper.RulexMapper; import org.jeecg.modules.demo.rulex.service.IRuleVoService; import org.jeecg.modules.demo.rulex.service.IRulexService; @@ -19,16 +26,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.demo.rulex.util.DateValidator; +import org.jeecg.modules.demo.rulex.util.DateValidatorUsingDateFormat; 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.system.entity.SysDict; +import org.jeecg.modules.system.entity.SysDictItem; +import org.jeecg.modules.system.mapper.SysDictItemMapper; import org.jeecg.modules.tablex.entity.Tablex; import org.jeecg.modules.tablex.service.ITablexService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @@ -54,7 +69,10 @@ public class RulexController extends JeecgController { private IRuleVoService iRuleVoService; @Autowired FunctionxMapper functionxMapper; - + @Autowired + IFunctionxService functionxService; + @Autowired + RulexMapper rulexMapper; @Autowired IFieldxService iFieldxService; @Autowired @@ -62,6 +80,12 @@ public class RulexController extends JeecgController { @Autowired IModulexService iModulexService; + @Autowired + RulexController rulexController; + + @Autowired + private SysDictItemMapper sysDictItemMapper; + /** * 分页列表查询 @@ -205,13 +229,16 @@ public class RulexController extends JeecgController { */ @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, Rulex.class); + + return rulexController.preImportAndExcel(request); } - public Result preImportAndExcel(HttpServletRequest request) { + @Transactional + public Result preImportAndExcel(HttpServletRequest request) { //return super.importExcel(request, response, ScTeams.class); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); - + //校验时间 + final DateValidator validator = new DateValidatorUsingDateFormat("yyyy-MM-dd hh:mm:ss"); for (Map.Entry entity : fileMap.entrySet()) { System.err.println("----------------------------------------------"); // 获取上传文件对象 @@ -233,37 +260,37 @@ public class RulexController extends JeecgController { System.out.println("List list = ExcelImportUtil.importExcel: " + list); int num = 0; for (int i = 0; i < list.size(); i++) { - if (list.size() > 0 && - list.get(i).getRuleNo() == null && - list.get(i).getRuleCode() == null && - list.get(i).getPmDescribe() == null && - list.get(i).getModuleId() == null && - list.get(i).getFunctionId() == null && - list.get(i).getDiagrams() == null && - list.get(i).getTableId() == null && - list.get(i).getFieldId() == null && - list.get(i).getManagerUsers() == null && - list.get(i).getWorkLevel() == null && - list.get(i).getWorkStatus() == null && - list.get(i).getStartTime() == null && - list.get(i).getManagerUsers() == null && - list.get(i).getDuration() == null && - list.get(i).getSubmitTime() == null && + if ( + //excel出现必要值未填该行直接跳过 + list.get(i).getRuleNo() == null || + list.get(i).getRuleCode() == null || +// list.get(i).getPmDescribe() == null && + list.get(i).getModuleId() == null || + list.get(i).getFunctionId() == null || +// list.get(i).getDiagrams() == null && + list.get(i).getTableId() == null || + list.get(i).getFieldId() == null || + list.get(i).getManagerUsers() == null || + list.get(i).getWorkLevel() == null || + list.get(i).getWorkStatus() == null || +// list.get(i).getStartTime() == null && +// list.get(i).getManagerUsers() == null && +// list.get(i).getDuration() == null && +// list.get(i).getSubmitTime() == null && list.get(i).getRealDuration() == null&& - list.get(i).getStatus() == null&& - list.get(i).getVerisonStatus() == null&& + list.get(i).getStatus() == null|| + list.get(i).getVerisonStatus() == null|| list.get(i).getVerison() == null) { continue; } - iRuleVoService.save(list.get(i)); + num++; if (num == 0) { return Result.error("文件导入失败:导入模板不匹配"); - } else { - return Result.ok("文件导入成功!"); +// } else if (num!=list.size()) { +// return Result.error("文件导入失败:请检查填写文字"); } + iRuleVoService.save(list.get(i)); } - - }catch (Exception e) { //update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示 String msg = e.getMessage(); @@ -285,69 +312,187 @@ public class RulexController extends JeecgController { } List ruleVoList = iRuleVoService.list(); if (ruleVoList.size()<=0||ruleVoList==null){ - return Result.error("文件导入失败"); + return Result.error("文件导入失败,模板不匹配"); } for (int i = 0; i < ruleVoList.size(); i++) { + Rulex rulex = new Rulex(); RuleVo ruleVo = ruleVoList.get(i); //对应字段 String fieldId = ruleVo.getFieldId(); - Fieldx byId = iFieldxService.getById(fieldId); - if (byId==null){ + LambdaQueryWrapper rulexLambdaQueryWrapper = new LambdaQueryWrapper<>(); + rulexLambdaQueryWrapper.eq(Fieldx::getFieldName, fieldId); + Fieldx byId = iFieldxService.getOne(rulexLambdaQueryWrapper); + if (byId == null) { + iRuleVoService.remove(null); return Result.error("字段输入错误,请核对"); } + rulex.setFieldId(byId.getId()); //对应功能 - String functionId = ruleVo.getFunctionId(); - Fieldx byId1 = iFieldxService.getById(functionId); - if (byId1==null){ + String functionName = ruleVo.getFunctionId(); + LambdaQueryWrapper functionxLambdaQueryWrapper = new LambdaQueryWrapper(); + functionxLambdaQueryWrapper.eq(Functionx::getFunctionName, functionName); + Functionx byId1 = functionxService.getOne(functionxLambdaQueryWrapper); + if (byId1 == null) { + iRuleVoService.remove(null); return Result.error("功能输入错误,请核对"); } + rulex.setFunctionId(byId1.getId()); //对应模块 - String moduleId = ruleVo.getModuleId(); - Modulex byId2 = iModulexService.getById(moduleId); - if (byId2==null){ + String moduleName = ruleVo.getModuleId(); + LambdaQueryWrapper modulexLambdaQueryWrapper = new LambdaQueryWrapper<>(); + modulexLambdaQueryWrapper.eq(Modulex::getModuleName, moduleName); + Modulex byId2 = iModulexService.getOne(modulexLambdaQueryWrapper); + if (byId2 == null) { + iRuleVoService.remove(null); + return Result.error("模块输入错误,请核对"); } + rulex.setModuleId(byId2.getId()); //对应实体 String tableId = ruleVo.getTableId(); - Tablex byId3 = iTablexService.getById(tableId); - if (byId3==null){ + LambdaQueryWrapper tableLambdaQueryWrapper = new LambdaQueryWrapper<>(); + tableLambdaQueryWrapper.eq(Tablex::getTableName, tableId); + Tablex byId3 = iTablexService.getOne(tableLambdaQueryWrapper); + if (byId3 == null) { + iRuleVoService.remove(null); + return Result.error("实体输入错误,请核对"); } + rulex.setTableId(byId3.getId()); + Double aDouble = null; try { - Double.valueOf(ruleVo.getDuration()); - }catch (Exception e){ + if (aDouble != null) + aDouble = Double.valueOf(ruleVo.getDuration()); + rulex.setDuration(aDouble); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + return Result.error("任务时长输入错误,请核对"); } + Double d; try { - Integer.valueOf(ruleVo.getRealDuration()); - }catch (Exception e){ + d = Double.valueOf(ruleVo.getRealDuration()); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + return Result.error("实际时长输入错误,请核对"); } - + rulex.setRealDuration(d); + Integer integer; try { - Integer.valueOf(ruleVo.getWorkLevel()); - }catch (Exception e){ + integer = Integer.valueOf(ruleVo.getWorkLevel()); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + return Result.error("任务等级输入错误,请核对"); } - try { - Double.valueOf(ruleVo.getWorkStatus()); - }catch (Exception e){ + rulex.setWorkLevel(integer); + String workStatus = ruleVo.getWorkStatus(); + LambdaQueryWrapper sysDictItemLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysDictItemLambdaQueryWrapper.eq(SysDictItem::getItemText, workStatus).eq(SysDictItem::getDictId,"1645268542514421762"); + SysDictItem sysDictItem = sysDictItemMapper.selectOne(sysDictItemLambdaQueryWrapper); + if (sysDictItem == null){ + iRuleVoService.remove(null); return Result.error("任务状态输入错误,请核对"); } - try { - Integer.valueOf(ruleVo.getStatus()); - }catch (Exception e){ - return Result.error("规则输入错误,请核对"); + + rulex.setWorkStatus(Integer.valueOf(sysDictItem.getItemValue())); + + String status = ruleVo.getStatus(); + LambdaQueryWrapper sysDictItemLambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + sysDictItemLambdaQueryWrapper2.eq(SysDictItem::getItemText, status).eq(SysDictItem::getDictId,"1645264493205491713"); + SysDictItem sysDictItem2 = sysDictItemMapper.selectOne(sysDictItemLambdaQueryWrapper2); + if (sysDictItem2 == null){ + iRuleVoService.remove(null); + return Result.error("规则状态输入错误,请核对"); } - try { - Double.valueOf(ruleVo.getVerisonStatus()); - }catch (Exception e){ + + + rulex.setStatus(Integer.valueOf(sysDictItem2.getItemValue())); + String verisonStatus = ruleVo.getVerisonStatus(); + LambdaQueryWrapper sysDictItemLambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + sysDictItemLambdaQueryWrapper3.eq(SysDictItem::getItemText, verisonStatus); + SysDictItem sysDictItem3 = sysDictItemMapper.selectOne(sysDictItemLambdaQueryWrapper3); + if (sysDictItem3 == null) { + iRuleVoService.remove(null); return Result.error("版本状态输入错误,请核对"); } + rulex.setVerisonStatus(Integer.valueOf(sysDictItem3.getItemValue())); + + //String转Date + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + try { + String startTime = ruleVo.getStartTime(); + if (startTime != null) + if (!validator.isValid(startTime)){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + return Result.error("开始时间输入错误"); + } + + else { + Date date = simpleDateFormat.parse(startTime); + rulex.setStartTime(date); + } + String submitTime = ruleVo.getSubmitTime(); + if (submitTime != null) + if (!validator.isValid(submitTime)){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + return Result.error("提交时间输入错误"); + } + + else { + Date date1 = simpleDateFormat.parse(submitTime); + rulex.setSubmitTime(date1); + } + } catch (ParseException e) { + e.printStackTrace(); + } + + //规则序号 + String ruleNo = ruleVo.getRuleNo(); + List list = rulexMapper.checkRuleNo(byId1.getId()); + if (list.contains(ruleNo)) { + iRuleVoService.remove(null); + return Result.error("规则序号已存在"); + } + rulex.setRuleNo(ruleNo); + //规则编码 + String ruleCode = ruleVo.getRuleCode(); + Functionx functionxServiceById = functionxService.getById(byId1.getId()); + String functionCode = functionxServiceById.getFunctionCode(); +// if (!ruleCode.matches(functionCode)) +// return Result.error("规则编码错误"); + rulex.setRuleCode(functionCode); + //规则描述 + String pmDescribe = ruleVo.getPmDescribe(); + if (pmDescribe != null) + rulex.setPmDescribe(pmDescribe); + //分析图 + String diagrams = ruleVo.getDiagrams(); + if (diagrams != null) + rulex.setDiagrams(diagrams); + //版本号 + Integer integer1; + try { + integer1 = Integer.valueOf(ruleVo.getVerison()); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回滚,这样上层就无需去处理异常了 + + return Result.error("版本号输入错误,请核对"); + } + rulex.setVerison(String.valueOf(integer1)); + //责任人、 + String managerUsers = ruleVo.getManagerUsers(); + if (managerUsers != null) + rulex.setManagerUsers(managerUsers); + //存入真实表 + rulexService.save(rulex); + iRuleVoService.remove(null); } - return Result.error("文件导入失败!"); + return Result.ok("文件导入成功!"); } @GetMapping(value = "/sort")