|
@@ -2,27 +2,18 @@ package com.mooctest.crowd.domain.controller;
|
|
|
|
|
|
import com.google.gson.Gson;
|
|
|
import com.mooctest.crowd.domain.domainobject.*;
|
|
|
-import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
|
|
|
import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
|
|
|
import com.mooctest.crowd.domain.repository.UserRepo;
|
|
|
-import com.mooctest.crowd.domain.util.Converter;
|
|
|
-import com.mooctest.crowd.domain.util.FileUtil;
|
|
|
-import org.apache.poi.hssf.usermodel.HSSFCell;
|
|
|
-import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
|
-import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
|
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
-import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
-import java.io.FileNotFoundException;
|
|
|
-import java.io.IOException;
|
|
|
import java.sql.Timestamp;
|
|
|
-import java.text.DecimalFormat;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.regex.PatternSyntaxException;
|
|
@@ -155,7 +146,7 @@ public class CrowdTestProjectController {
|
|
|
Gson gson = new Gson();
|
|
|
crowdTestProjectModify = gson.fromJson(gson.toJson(crowdTestProject), CrowdTestProject.class);
|
|
|
crowdTestProjectModify.setLinkMan(linkMan);
|
|
|
- CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestProject(crowdTestProject, crowdTestProjectModify);
|
|
|
+ CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestProject(crowdTestProjectModify);
|
|
|
crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
|
|
|
}
|
|
|
|
|
@@ -174,7 +165,7 @@ public class CrowdTestProjectController {
|
|
|
}
|
|
|
}
|
|
|
crowdTestTaskModify.setName(taskName);
|
|
|
- CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestTask(crowdTestProject, crowdTestTaskCode, crowdTestTaskModify);
|
|
|
+ CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestTask(crowdTestTaskCode, crowdTestTaskModify);
|
|
|
crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
|
|
|
}
|
|
|
|
|
@@ -194,7 +185,7 @@ public class CrowdTestProjectController {
|
|
|
}
|
|
|
}
|
|
|
crowdTestReportModify.setName(reportName);
|
|
|
- CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestReport(crowdTestProject, crowdTestTaskCode, crowdTestReportCode, crowdTestReportModify);
|
|
|
+ CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestReport(crowdTestTaskCode, crowdTestReportCode, crowdTestReportModify);
|
|
|
crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
|
|
|
}
|
|
|
|
|
@@ -464,22 +455,22 @@ public class CrowdTestProjectController {
|
|
|
* @param file
|
|
|
* @return
|
|
|
*/
|
|
|
- @RequestMapping(value = "projectListImportByExcel", method = RequestMethod.POST)
|
|
|
- public String projectListImportByExcel(MultipartFile file){
|
|
|
- //解析excel
|
|
|
- List<CrowdTestProjectPO> crowdTestProjectPOList = FileUtil.importExcel(file,0,1,CrowdTestProjectPO.class);
|
|
|
-
|
|
|
- for(int i = 0; i < crowdTestProjectPOList.size(); i++){
|
|
|
- CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
|
|
|
- CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
|
|
|
- //TODO 保存数据库
|
|
|
- crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
|
|
|
-
|
|
|
- }
|
|
|
- System.out.println("共导入数据【"+crowdTestProjectPOList.size()+"】行");
|
|
|
-
|
|
|
- return "success";
|
|
|
- }
|
|
|
+// @RequestMapping(value = "projectListImportByExcel", method = RequestMethod.POST)
|
|
|
+// public String projectListImportByExcel(MultipartFile file){
|
|
|
+// //解析excel
|
|
|
+// List<CrowdTestProjectPO> crowdTestProjectPOList = FileUtil.importExcel(file,0,1,CrowdTestProjectPO.class);
|
|
|
+//
|
|
|
+// for(int i = 0; i < crowdTestProjectPOList.size(); i++){
|
|
|
+// CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
|
|
|
+// CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
|
|
|
+// //TODO 保存数据库
|
|
|
+// crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
|
|
|
+//
|
|
|
+// }
|
|
|
+// System.out.println("共导入数据【"+crowdTestProjectPOList.size()+"】行");
|
|
|
+//
|
|
|
+// return "success";
|
|
|
+// }
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -487,170 +478,170 @@ public class CrowdTestProjectController {
|
|
|
* @param file
|
|
|
* @return
|
|
|
*/
|
|
|
- @RequestMapping(value = "projectImportByExcel", method = RequestMethod.POST)
|
|
|
- public String projectImportByExcel(MultipartFile file) {
|
|
|
- List<String> logList = new ArrayList<>();
|
|
|
- List<Map<Integer,Object>> recordList = new ArrayList<>();
|
|
|
- HSSFWorkbook workbook=null;
|
|
|
- try {
|
|
|
- workbook = new HSSFWorkbook(file.getInputStream());
|
|
|
- } catch (FileNotFoundException e) {
|
|
|
- e.printStackTrace();
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- //获取指定标签页
|
|
|
- HSSFSheet sheet = workbook.getSheetAt(0);
|
|
|
- if(sheet==null){
|
|
|
- throw new RuntimeException("标签页不存在!");
|
|
|
- }
|
|
|
-
|
|
|
- //总行数
|
|
|
- int rows = sheet.getPhysicalNumberOfRows();
|
|
|
- if (rows < 2) {
|
|
|
- throw new RuntimeException(file.getName()+" 内容为空,请重新编辑!");
|
|
|
- }
|
|
|
-
|
|
|
- //不为空的单元格数 ,第一行是标题列
|
|
|
- HSSFRow keyRow = sheet.getRow(0);
|
|
|
- int cellNumber = keyRow.getPhysicalNumberOfCells();
|
|
|
-
|
|
|
- //循环遍历,第一行是标题,所以从 1 开始遍历(0表示第一行,1表示第二行)
|
|
|
- for (int r = 1; r < rows; r++) {
|
|
|
- Map<Integer,Object> record = new LinkedHashMap<Integer,Object>();//使用HashMap的话,存进去的顺序与取出来的顺序是不一致的,此处需要使用LinkedHashMap
|
|
|
- HSSFRow row = sheet.getRow(r);
|
|
|
- if(row == null){
|
|
|
- logList.add("表中存在错误的单元格,请把与内容无关的单元格置空");
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- for (int c = 0; c < cellNumber; c++){ //共cellNumber列
|
|
|
- HSSFCell cell = row.getCell(c);
|
|
|
- String cellValue = "";
|
|
|
- DecimalFormat df = new DecimalFormat("#");
|
|
|
- //如果单元格不为空
|
|
|
- if (cell != null) {
|
|
|
- if(c == 1){
|
|
|
- String platform =cell.getRichStringCellValue().getString().trim();
|
|
|
- if(platform.length() == 0){
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
|
|
|
- }else{
|
|
|
- if(!isPlatform(platform)){
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
|
|
|
- }else{
|
|
|
- String platformSave = "[" + platform + "]";
|
|
|
- record.put(c,platformSave);
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(c == 4){
|
|
|
- String type =cell.getRichStringCellValue().getString().trim();
|
|
|
- if(type.length() == 0){
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
|
|
|
- }else{
|
|
|
- if(!isType(type)){
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
|
|
|
- }else{
|
|
|
- String typeSave = "[" + type + "]";
|
|
|
- record.put(c,typeSave);
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(c == 3){
|
|
|
- String phone = cell.getRichStringCellValue().getString().trim();
|
|
|
- if(!isRightPhone(phone)){
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列手机号格式不正确");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- switch (cell.getCellType()) {
|
|
|
- case HSSFCell.CELL_TYPE_STRING:
|
|
|
- cellValue =cell.getRichStringCellValue().getString().trim();
|
|
|
- if(cellValue.indexOf(" ") != -1){
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列数据中存在空格");
|
|
|
- }
|
|
|
- break;
|
|
|
- case HSSFCell.CELL_TYPE_NUMERIC:
|
|
|
- cellValue =df.format(cell.getNumericCellValue());
|
|
|
- break;
|
|
|
- case HSSFCell.CELL_TYPE_BOOLEAN:
|
|
|
- cellValue =String.valueOf(cell.getBooleanCellValue()).trim();
|
|
|
- break;
|
|
|
- case HSSFCell.CELL_TYPE_FORMULA:
|
|
|
- cellValue =cell.getCellFormula();
|
|
|
- break;
|
|
|
- case HSSFCell.CELL_TYPE_BLANK:
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
|
|
|
- break;
|
|
|
- default:
|
|
|
- cellValue = "";
|
|
|
- }
|
|
|
- }else{
|
|
|
- logList.add("第"+(r+1)+"行第"+(c+1)+"列为空");
|
|
|
- }
|
|
|
- record.put(c,cellValue);
|
|
|
- }
|
|
|
- recordList.add(record);
|
|
|
- }
|
|
|
-
|
|
|
-// System.out.println("logList.toString() " + logList.toString());
|
|
|
- System.out.println("recordList.toString() " + recordList.toString());
|
|
|
-
|
|
|
- if(logList.size() != 0){
|
|
|
- String mes = "表格中存在问题,导入失败!";
|
|
|
- return mes + logList.toString();
|
|
|
- }else{
|
|
|
- List<CrowdTestProjectPO> crowdTestProjectPOList = new ArrayList<>();
|
|
|
- CrowdTestProjectPO crowdTestProjectPO = new CrowdTestProjectPO();
|
|
|
- for(Map<Integer,Object> map : recordList){
|
|
|
- crowdTestProjectPO.setName(map.get(0).toString());
|
|
|
- crowdTestProjectPO.setPlatform(map.get(1).toString());
|
|
|
- crowdTestProjectPO.setLinkMan(map.get(2).toString());
|
|
|
- crowdTestProjectPO.setLinkManMobile(map.get(3).toString());
|
|
|
- crowdTestProjectPO.setType(map.get(4).toString());
|
|
|
- crowdTestProjectPO.setDescription(map.get(5).toString());
|
|
|
- crowdTestProjectPOList.add(crowdTestProjectPO);
|
|
|
- }
|
|
|
- for(int i = 0; i < crowdTestProjectPOList.size(); i++){
|
|
|
- CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
|
|
|
- CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
|
|
|
- //TODO 保存数据库
|
|
|
-// crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
|
|
|
- }
|
|
|
- return "SUCCESS";
|
|
|
- }
|
|
|
- }
|
|
|
+// @RequestMapping(value = "projectImportByExcel", method = RequestMethod.POST)
|
|
|
+// public String projectImportByExcel(MultipartFile file) {
|
|
|
+// List<String> logList = new ArrayList<>();
|
|
|
+// List<Map<Integer,Object>> recordList = new ArrayList<>();
|
|
|
+// HSSFWorkbook workbook=null;
|
|
|
+// try {
|
|
|
+// workbook = new HSSFWorkbook(file.getInputStream());
|
|
|
+// } catch (FileNotFoundException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// } catch (IOException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+//
|
|
|
+// //获取指定标签页
|
|
|
+// HSSFSheet sheet = workbook.getSheetAt(0);
|
|
|
+// if(sheet==null){
|
|
|
+// throw new RuntimeException("标签页不存在!");
|
|
|
+// }
|
|
|
+//
|
|
|
+// //总行数
|
|
|
+// int rows = sheet.getPhysicalNumberOfRows();
|
|
|
+// if (rows < 2) {
|
|
|
+// throw new RuntimeException(file.getName()+" 内容为空,请重新编辑!");
|
|
|
+// }
|
|
|
+//
|
|
|
+// //不为空的单元格数 ,第一行是标题列
|
|
|
+// HSSFRow keyRow = sheet.getRow(0);
|
|
|
+// int cellNumber = keyRow.getPhysicalNumberOfCells();
|
|
|
+//
|
|
|
+// //循环遍历,第一行是标题,所以从 1 开始遍历(0表示第一行,1表示第二行)
|
|
|
+// for (int r = 1; r < rows; r++) {
|
|
|
+// Map<Integer,Object> record = new LinkedHashMap<Integer,Object>();//使用HashMap的话,存进去的顺序与取出来的顺序是不一致的,此处需要使用LinkedHashMap
|
|
|
+// HSSFRow row = sheet.getRow(r);
|
|
|
+// if(row == null){
|
|
|
+// logList.add("表中存在错误的单元格,请把与内容无关的单元格置空");
|
|
|
+// break;
|
|
|
+// }
|
|
|
+//
|
|
|
+// for (int c = 0; c < cellNumber; c++){ //共cellNumber列
|
|
|
+// HSSFCell cell = row.getCell(c);
|
|
|
+// String cellValue = "";
|
|
|
+// DecimalFormat df = new DecimalFormat("#");
|
|
|
+// //如果单元格不为空
|
|
|
+// if (cell != null) {
|
|
|
+// if(c == 1){
|
|
|
+// String platform =cell.getRichStringCellValue().getString().trim();
|
|
|
+// if(platform.length() == 0){
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
|
|
|
+// }else{
|
|
|
+// if(!isPlatform(platform)){
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
|
|
|
+// }else{
|
|
|
+// String platformSave = "[" + platform + "]";
|
|
|
+// record.put(c,platformSave);
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(c == 4){
|
|
|
+// String type =cell.getRichStringCellValue().getString().trim();
|
|
|
+// if(type.length() == 0){
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
|
|
|
+// }else{
|
|
|
+// if(!isType(type)){
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
|
|
|
+// }else{
|
|
|
+// String typeSave = "[" + type + "]";
|
|
|
+// record.put(c,typeSave);
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(c == 3){
|
|
|
+// String phone = cell.getRichStringCellValue().getString().trim();
|
|
|
+// if(!isRightPhone(phone)){
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列手机号格式不正确");
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// switch (cell.getCellType()) {
|
|
|
+// case HSSFCell.CELL_TYPE_STRING:
|
|
|
+// cellValue =cell.getRichStringCellValue().getString().trim();
|
|
|
+// if(cellValue.indexOf(" ") != -1){
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列数据中存在空格");
|
|
|
+// }
|
|
|
+// break;
|
|
|
+// case HSSFCell.CELL_TYPE_NUMERIC:
|
|
|
+// cellValue =df.format(cell.getNumericCellValue());
|
|
|
+// break;
|
|
|
+// case HSSFCell.CELL_TYPE_BOOLEAN:
|
|
|
+// cellValue =String.valueOf(cell.getBooleanCellValue()).trim();
|
|
|
+// break;
|
|
|
+// case HSSFCell.CELL_TYPE_FORMULA:
|
|
|
+// cellValue =cell.getCellFormula();
|
|
|
+// break;
|
|
|
+// case HSSFCell.CELL_TYPE_BLANK:
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// cellValue = "";
|
|
|
+// }
|
|
|
+// }else{
|
|
|
+// logList.add("第"+(r+1)+"行第"+(c+1)+"列为空");
|
|
|
+// }
|
|
|
+// record.put(c,cellValue);
|
|
|
+// }
|
|
|
+// recordList.add(record);
|
|
|
+// }
|
|
|
+//
|
|
|
+//// System.out.println("logList.toString() " + logList.toString());
|
|
|
+// System.out.println("recordList.toString() " + recordList.toString());
|
|
|
+//
|
|
|
+// if(logList.size() != 0){
|
|
|
+// String mes = "表格中存在问题,导入失败!";
|
|
|
+// return mes + logList.toString();
|
|
|
+// }else{
|
|
|
+// List<CrowdTestProjectPO> crowdTestProjectPOList = new ArrayList<>();
|
|
|
+// CrowdTestProjectPO crowdTestProjectPO = new CrowdTestProjectPO();
|
|
|
+// for(Map<Integer,Object> map : recordList){
|
|
|
+// crowdTestProjectPO.setName(map.get(0).toString());
|
|
|
+// crowdTestProjectPO.setPlatform(map.get(1).toString());
|
|
|
+// crowdTestProjectPO.setLinkMan(map.get(2).toString());
|
|
|
+// crowdTestProjectPO.setLinkManMobile(map.get(3).toString());
|
|
|
+// crowdTestProjectPO.setType(map.get(4).toString());
|
|
|
+// crowdTestProjectPO.setDescription(map.get(5).toString());
|
|
|
+// crowdTestProjectPOList.add(crowdTestProjectPO);
|
|
|
+// }
|
|
|
+// for(int i = 0; i < crowdTestProjectPOList.size(); i++){
|
|
|
+// CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
|
|
|
+// CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
|
|
|
+// //TODO 保存数据库
|
|
|
+//// crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
|
|
|
+// }
|
|
|
+// return "SUCCESS";
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 通过表单向数据库中导入众包项目文件,并补全项目中任务和报告的数据
|
|
|
* @return
|
|
|
*/
|
|
|
- @RequestMapping(value = "projectListImportByForm", method = RequestMethod.GET)
|
|
|
- public String projectListImportByForm(){
|
|
|
-
|
|
|
- //数据准备
|
|
|
- CrowdTestProject crowdTestProject = new CrowdTestProject();
|
|
|
- crowdTestProject.setName("百度APP");
|
|
|
- crowdTestProject.setPlatform("[1,2]");
|
|
|
- crowdTestProject.setLinkMan("薛晓波");
|
|
|
- crowdTestProject.setLinkManMobile("13567908766");
|
|
|
- crowdTestProject.setType("[1]");
|
|
|
- crowdTestProject.setDescription("测试项目中存在的bug");
|
|
|
-
|
|
|
- //具体操作
|
|
|
- CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
|
|
|
- //TODO 保存数据库
|
|
|
- crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
|
|
|
- return "success";
|
|
|
- }
|
|
|
+// @RequestMapping(value = "projectListImportByForm", method = RequestMethod.GET)
|
|
|
+// public String projectListImportByForm(){
|
|
|
+//
|
|
|
+// //数据准备
|
|
|
+// CrowdTestProject crowdTestProject = new CrowdTestProject();
|
|
|
+// crowdTestProject.setName("百度APP");
|
|
|
+// crowdTestProject.setPlatform("[1,2]");
|
|
|
+// crowdTestProject.setLinkMan("薛晓波");
|
|
|
+// crowdTestProject.setLinkManMobile("13567908766");
|
|
|
+// crowdTestProject.setType("[1]");
|
|
|
+// crowdTestProject.setDescription("测试项目中存在的bug");
|
|
|
+//
|
|
|
+// //具体操作
|
|
|
+// CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
|
|
|
+// //TODO 保存数据库
|
|
|
+// crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
|
|
|
+// return "success";
|
|
|
+// }
|
|
|
|
|
|
|
|
|
|