dev
Gitea 1 year ago
commit 76d34a8aab
  1. 12
      ant-design-vue-jeecg/src/views/modulex/ModulexList.vue
  2. 10153
      jeecg-boot/db/project_management.sql
  3. 209
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/controller/RulexController.java
  4. 181
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/entity/RuleVo.java
  5. 16
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/mapper/RuleVoMapper.java
  6. 4
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/mapper/RulexMapper.java
  7. 16
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/service/IRuleVoService.java
  8. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/service/IRulexService.java
  9. 20
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/service/impl/RuleVoServiceImpl.java
  10. 5
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/util/DateValidator.java
  11. 27
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/rulex/util/DateValidatorUsingDateFormat.java
  12. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
  13. 4
      jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml

@ -72,7 +72,9 @@
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="import">导入模块</a-button>
<a-button type="primary" icon="import">导入功能</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="ruleImportExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入规则</a-button>
</a-upload>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="tablexImportExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入实体</a-button>
</a-upload>
@ -395,7 +397,6 @@ export default {
deleteBatch: "/modulex/modulex/deleteBatch",
exportXlsUrl: "/modulex/modulex/exportXls",
importExcelUrl: "modulex/modulex/importExcel",
tablexImportExcelUrl: "tablex/tablex/importExcel",
},
dictOptions: {},
@ -421,10 +422,7 @@ export default {
// columnsdataIndex
checkColumn: function () {
return this.columns.map(item => item.title)
},
tablexImportExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.tablexImportExcelUrl}`;
},
}
},
methods: {
//
@ -630,9 +628,7 @@ export default {
param.pageSize = this.ipagination.pageSize
//param.id=this.id;
//!!!!!!!
// 使
if(param.projectId==null)
param.projectId = this.$route.query.project;
// param.projectId = this.$route.query.project;
// console.log('paaaaaaaaaaaaaaaaaaaaa')
return filterObj(param)
},

File diff suppressed because one or more lines are too long

@ -3,22 +3,15 @@ package org.jeecg.modules.demo.rulex.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.functionx.entity.Functionx;
import org.jeecg.modules.demo.functionx.mapper.FunctionxMapper;
import org.jeecg.modules.demo.requirementfun.entity.RequirementFun;
import org.jeecg.modules.demo.requirementfun.service.IRequirementFunService;
import org.jeecg.modules.demo.requirementitem.entity.RequirementItem;
import org.jeecg.modules.demo.requirementitem.service.IRequirementItemService;
import org.jeecg.modules.demo.rulex.entity.RuleVo;
import org.jeecg.modules.demo.rulex.entity.Rulex;
import org.jeecg.modules.demo.rulex.service.IRuleVoService;
import org.jeecg.modules.demo.rulex.service.IRulexService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -26,18 +19,20 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
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.tablex.entity.Tablex;
import org.jeecg.modules.tablex.service.ITablexService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
@ -55,12 +50,17 @@ import org.jeecg.common.aspect.annotation.AutoLog;
public class RulexController extends JeecgController<Rulex, IRulexService> {
@Autowired
private IRulexService rulexService;
@Autowired
private IRuleVoService iRuleVoService;
@Autowired
FunctionxMapper functionxMapper;
@Autowired
private IRequirementFunService requirementFunService;
IFieldxService iFieldxService;
@Autowired
private IRequirementItemService requirementItemService;
ITablexService iTablexService;
@Autowired
IModulexService iModulexService;
/**
@ -126,43 +126,6 @@ public class RulexController extends JeecgController<Rulex, IRulexService> {
return Result.OK("添加成功!");
}
/**
* 转化规则
*
* @param rulex
* @return
*/
@AutoLog(value = "转化规则")
@ApiOperation(value="转化规则", notes="转化规则")
@PostMapping(value = "/zhgz")
public Result<?> zhgz(@RequestBody Rulex rulex) {
if(rulex.getFunctionId()==null){
return Result.error("功能点错误!!!");
}
Functionx functionx = functionxMapper.selectById(rulex.getFunctionId());
if(functionx.getStartTime()!=null){
rulex.setStartTime(functionx.getStartTime());
}
if(functionx.getSubmitTime()!=null){
rulex.setSubmitTime(functionx.getSubmitTime());
}
if(functionx.getRealDuration()!=null){
rulex.setRealDuration(functionx.getRealDuration());
}
rulex.setManagerUsers(functionx.getManagerUsers());
rulex.setWorkStatus(functionx.getWorkStatus());
rulexService.save(rulex);
RequirementItem requirementItem = requirementItemService.getById(rulex.getModuleId());
requirementItem.setRequirementStatus(2);
requirementItemService.updateById(requirementItem);
RequirementFun requirementFun1 = new RequirementFun();
requirementFun1.setRequirementId(rulex.getModuleId());
requirementFun1.setFunId(rulex.getId());
requirementFun1.setFunLevel(4);
requirementFunService.save(requirementFun1);
return Result.OK("添加成功!");
}
/**
* 编辑
*
@ -244,7 +207,149 @@ public class RulexController extends JeecgController<Rulex, IRulexService> {
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, Rulex.class);
}
public Result<?> preImportAndExcel(HttpServletRequest request) {
//return super.importExcel(request, response, ScTeams.class);
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
System.err.println("----------------------------------------------");
// 获取上传文件对象
MultipartFile file = entity.getValue();
if (file==null){
return Result.error("文件上传失败,请重新上传");
}
ImportParams params = new ImportParams();
params.setTitleRows(2);//表格标题行数,默认0
params.setHeadRows(1);//表头行数,默认1
params.setNeedSave(true);//是否需要保存上传的Excel,默认为false
try {
// List<ScTeamsDr> list = ExcelImportUtil.importExcel(file.getInputStream(), ScTeamsDr.class, params);
List<RuleVo> list = ExcelImportUtil.importExcel(file.getInputStream(), RuleVo.class, params);
if (list == null || list.size() <= 0) {
return Result.error("文件导入失败:模板中暂无数据");
}
System.err.println("----------------------------------------------");
System.out.println("List<ScTeams> 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 &&
list.get(i).getRealDuration() == null&&
list.get(i).getStatus() == null&&
list.get(i).getVerisonStatus() == null&&
list.get(i).getVerison() == null) {
continue;
}
iRuleVoService.save(list.get(i));
if (num == 0) {
return Result.error("文件导入失败:导入模板不匹配");
} else {
return Result.ok("文件导入成功!");
}
}
}catch (Exception e) {
//update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
String msg = e.getMessage();
log.error(msg, e);
//if(msg!=null && msg.contains("Duplicate entry"))
if (msg != null && msg.indexOf("Duplicate entry") >= 0) {
return Result.error("文件导入失败:有重复数据!");
} else {
return Result.error("文件导入失败:" + e.getMessage());
}
//update-end-author:taoyan date:20211124 for: 导入数据重复增加提示
} finally {
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
List<RuleVo> ruleVoList = iRuleVoService.list();
if (ruleVoList.size()<=0||ruleVoList==null){
return Result.error("文件导入失败");
}
for (int i = 0; i < ruleVoList.size(); i++) {
RuleVo ruleVo = ruleVoList.get(i);
//对应字段
String fieldId = ruleVo.getFieldId();
Fieldx byId = iFieldxService.getById(fieldId);
if (byId==null){
return Result.error("字段输入错误,请核对");
}
//对应功能
String functionId = ruleVo.getFunctionId();
Fieldx byId1 = iFieldxService.getById(functionId);
if (byId1==null){
return Result.error("功能输入错误,请核对");
}
//对应模块
String moduleId = ruleVo.getModuleId();
Modulex byId2 = iModulexService.getById(moduleId);
if (byId2==null){
return Result.error("模块输入错误,请核对");
}
//对应实体
String tableId = ruleVo.getTableId();
Tablex byId3 = iTablexService.getById(tableId);
if (byId3==null){
return Result.error("实体输入错误,请核对");
}
try {
Double.valueOf(ruleVo.getDuration());
}catch (Exception e){
return Result.error("任务时长输入错误,请核对");
}
try {
Integer.valueOf(ruleVo.getRealDuration());
}catch (Exception e){
return Result.error("实际时长输入错误,请核对");
}
try {
Integer.valueOf(ruleVo.getWorkLevel());
}catch (Exception e){
return Result.error("任务等级输入错误,请核对");
}
try {
Double.valueOf(ruleVo.getWorkStatus());
}catch (Exception e){
return Result.error("任务状态输入错误,请核对");
}
try {
Integer.valueOf(ruleVo.getStatus());
}catch (Exception e){
return Result.error("规则输入错误,请核对");
}
try {
Double.valueOf(ruleVo.getVerisonStatus());
}catch (Exception e){
return Result.error("版本状态输入错误,请核对");
}
}
return Result.error("文件导入失败!");
}
@GetMapping(value = "/sort")
public Result<?> sort(@RequestParam(name="id",required=true) String id) {
return rulexService.sort(id);

@ -0,0 +1,181 @@
package org.jeecg.modules.demo.rulex.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
//import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 规则管理
* @Author: jeecg-boot
* @Date: 2023-04-10
* @Version: V1.0
*/
@Data
@TableName("rule_vo")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "rulex对象", description = "规则管理")
public class RuleVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**
* 创建日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private String createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**
* 更新日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private String updateTime;
/**
* 对应模块id
*/
@Excel(name = "对应模块id", width = 15)
@ApiModelProperty(value = "对应模块id")
// /*@Dict(dictTable = "modulex", dicCode = "id", dicText = "module_name")*/
private java.lang.String moduleId;
/**
* 对应功能id
*/
@Excel(name = "对应功能id", width = 15)
@ApiModelProperty(value = "对应功能id")
// /*@Dict(dictTable = "functionx", dicCode = "id", dicText = "function_name")*/
private java.lang.String functionId;
/**
* 规则序号
*/
@Excel(name = "规则序号", width = 15)
@ApiModelProperty(value = "规则序号")
private java.lang.String ruleNo;
/**
* 规则编码
*/
@Excel(name = "规则编码", width = 15)
@ApiModelProperty(value = "规则编码")
private java.lang.String ruleCode;
/**
* 规则描述
*/
@Excel(name = "规则描述", width = 15)
@ApiModelProperty(value = "规则描述")
private java.lang.String pmDescribe;
/**
* 分析图
*/
@Excel(name = "分析图", width = 15)
@ApiModelProperty(value = "分析图")
private java.lang.String diagrams;
/**
* 对应实体id
*/
@Excel(name = "对应实体id", width = 15)
@ApiModelProperty(value = "对应实体id")
// @Dict(dictTable = "tablex", dicText = "table_name", dicCode = "id")
private java.lang.String tableId;
/**
* 对应字段
*/
@Excel(name = "对应字段", width = 15)
@ApiModelProperty(value = "对应字段")
// @Dict(dictTable = "fieldx", dicText = "field_name", dicCode = "id")
private java.lang.String fieldId;
/**
* 责任人
*/
@Excel(name = "责任人", width = 15)
@ApiModelProperty(value = "责任人")
private java.lang.String managerUsers;
/**
* 任务等级
*/
@Excel(name = "任务等级", width = 15)
@ApiModelProperty(value = "任务等级")
// @Dict(dicCode = "work_level")
private String workLevel;
/**
* 任务状态
*/
@Excel(name = "任务状态", width = 15)
@ApiModelProperty(value = "任务状态")
// @Dict(dicCode = "work_status")
private String workStatus;
/**
* 开始时间
*/
@Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "开始时间")
private String startTime;
/**
* 任务时长
*/
@Excel(name = "任务时长", width = 15)
@ApiModelProperty(value = "任务时长")
private String duration;
/**
* 提交时间
*/
@Excel(name = "提交时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "提交时间")
private String submitTime;
/**
* 实际时长
*/
@Excel(name = "实际时长", width = 15)
@ApiModelProperty(value = "实际时长")
private String realDuration;
/**
* 规则状态
*/
@Excel(name = "规则状态", width = 15)
@ApiModelProperty(value = "规则状态")
// @Dict(dicCode = "status")
private String status;
/**
* 版本状态
*/
@Excel(name = "版本状态", width = 15)
@ApiModelProperty(value = "版本状态")
// @Dict(dicCode = "verison_status")
private String verisonStatus;
/**
* 版本号
*/
@Excel(name = "版本号", width = 15)
@ApiModelProperty(value = "版本号")
private java.lang.String verison;
}

@ -0,0 +1,16 @@
package org.jeecg.modules.demo.rulex.mapper;
import org.jeecg.modules.demo.rulex.entity.RuleVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author zjh
* @since 2023-07-10
*/
public interface RuleVoMapper extends BaseMapper<RuleVo> {
}

@ -28,4 +28,8 @@ public interface RulexMapper extends BaseMapper<Rulex> {
void upFstatus(String ruleId);
@Update("update modulex set work_status=9 where id=#{ruleId}")
void upMstatus(String ruleId);
//校验rule_no规则序号
@Select("select rule_no from rulex where function_id=#{function_id}")
List<String> checkRuleNo(String function_id);
}

@ -0,0 +1,16 @@
package org.jeecg.modules.demo.rulex.service;
import org.jeecg.modules.demo.rulex.entity.RuleVo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author zjh
* @since 2023-07-10
*/
public interface IRuleVoService extends IService<RuleVo> {
}

@ -19,5 +19,7 @@ public interface IRulexService extends IService<Rulex> {
List<Rulex> queryRuleListByFunctionId(Functionx functionx);
void saveRulex(Functionx functionx);
}

@ -0,0 +1,20 @@
package org.jeecg.modules.demo.rulex.service.impl;
import org.jeecg.modules.demo.rulex.entity.RuleVo;
import org.jeecg.modules.demo.rulex.mapper.RuleVoMapper;
import org.jeecg.modules.demo.rulex.service.IRuleVoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author zjh
* @since 2023-07-10
*/
@Service
public class RuleVoServiceImpl extends ServiceImpl<RuleVoMapper, RuleVo> implements IRuleVoService {
}

@ -0,0 +1,5 @@
package org.jeecg.modules.demo.rulex.util;
public interface DateValidator {
boolean isValid(String dateStr);
}

@ -0,0 +1,27 @@
package org.jeecg.modules.demo.rulex.util;
import org.jeecg.modules.demo.rulex.util.DateValidator;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateValidatorUsingDateFormat implements DateValidator {
private final String dateFormat;
public DateValidatorUsingDateFormat(String dateFormat) {
this.dateFormat = dateFormat;
}
@Override
public boolean isValid(String dateStr) {
final DateFormat sdf = new SimpleDateFormat(this.dateFormat);
sdf.setLenient(false);
try {
sdf.parse(dateStr);
} catch (ParseException e) {
return false;
}
return true;
}
}

@ -489,7 +489,7 @@ public class SysDictController {
params.setHeadRows(2);
params.setNeedSave(true);
try {
//导入Excel格式校验,看匹配的字段文本概率
// 导入Excel格式校验,看匹配的字段文本概率
Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), SysDictPage.class, params);
if(!t){
throw new RuntimeException("导入Excel校验失败 !");

@ -141,6 +141,10 @@ spring:
username: root
password: ycwl2022.
driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://localhost:3306/project_management?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# username: root
# password: "0517"
# driver-class-name: com.mysql.cj.jdbc.Driver
#redis 配置
redis:
database: 2

Loading…
Cancel
Save