|
@@ -1,7 +1,9 @@
|
|
|
package com.mooctest.crowd.site.service.impl;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSONArray;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.mooctest.crowd.domain.dao.ApplicationTypeDao;
|
|
|
+import com.mooctest.crowd.domain.dao.FieldDao;
|
|
|
+import com.mooctest.crowd.domain.dao.TestTypeDao;
|
|
|
import com.mooctest.crowd.domain.domainobject.*;
|
|
|
import com.mooctest.crowd.domain.exception.BadRequestException;
|
|
|
import com.mooctest.crowd.domain.exception.BaseException;
|
|
@@ -30,6 +32,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.sql.Timestamp;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
import java.util.List;
|
|
@@ -59,6 +62,15 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
@Autowired
|
|
|
private OperationMediator operationMediator;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private TestTypeDao testTypeDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ApplicationTypeDao applicationTypeDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FieldDao fieldDao;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public List<CrowdTestProjectVO> findAllMoreHotProjects() {
|
|
@@ -173,6 +185,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
public List<ProjectDetailsDTO> importMultiProjectsByExcel(List<CrowdTestProject> projects) {
|
|
|
List<ProjectDetailsDTO> dtos = new ArrayList<>();
|
|
|
projects.forEach(project -> {
|
|
|
+ project.setFieldType(fieldDao.findByName(project.getFieldType()).get().getCode());
|
|
|
+ project.setApplicationType(applicationTypeDao.findByName(project.getApplicationType()).get().getCode());
|
|
|
+ project.setType(testTypeDao.findByName(project.getType()).get().getCode());
|
|
|
projectRepo.saveCrowdTestProject(project);
|
|
|
dtos.add(getProjectDetails(project.getCode(), project.getUserId()));
|
|
|
});
|
|
@@ -186,23 +201,62 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
projects.forEach(project -> {
|
|
|
project.setCode(GenerateFlowCodeUtil.generateProjCode());
|
|
|
project.setUserId(userId);
|
|
|
+ project.setJoinCount(1);
|
|
|
+ project.setRestPrice(0.0);
|
|
|
+ project.setCreateTime(new Timestamp(System.currentTimeMillis() - 1000));
|
|
|
+// project.setProjectDistributionTypeId(0L);
|
|
|
+// project.setRegionalManagerId();
|
|
|
List<CrowdTestTask> tasks = new ArrayList<>();
|
|
|
CrowdTestTask task = CrowdTestProjectFactory.defaultFinishedCrowdTask();
|
|
|
- task.setType(((List<String>) JSONArray.parse(project.getType())).get(0));
|
|
|
- task.setCode(GenerateFlowCodeUtil.generateTaskCode(ProjectType.getCode(task.getType())));
|
|
|
+
|
|
|
+ // 构造任务
|
|
|
+ task.setType(testTypeDao.findByName(project.getType()).get().getCode());
|
|
|
+ task.setCode(GenerateFlowCodeUtil.generateTaskCode(task.getType()));
|
|
|
task.setCrowdTestProjectCode(project.getCode());
|
|
|
- task.setEndTime(project.getEndTime());
|
|
|
task.setDeadTime(project.getDeadTime());
|
|
|
task.setRequirementFile(project.getRequirementFile());
|
|
|
task.setName(project.getName() + "-" + task.getType());
|
|
|
task.setQuotedPrice(project.getQuotedPrice());
|
|
|
task.setFixedPrice(project.getFixedPrice());
|
|
|
task.setDescription(project.getDescription());
|
|
|
+ task.setFixedPrice(project.getFixedPrice());
|
|
|
+ task.setQuotedPrice(project.getQuotedPrice());
|
|
|
+ task.setParticipantCount(1);
|
|
|
+ task.setAcceptedCount(1);
|
|
|
+ task.setParticipantHasCommittedCount(1);
|
|
|
+ task.setCreateTime(project.getCreateTime());
|
|
|
+ task.setEndTime(project.getEndTime());
|
|
|
if (user.getEvaluationAgency() == null)
|
|
|
task.setEvaluationAgencyId(1L);
|
|
|
else
|
|
|
task.setEvaluationAgencyId(user.getEvaluationAgency().getId());
|
|
|
+
|
|
|
+ // 构造taskToUser
|
|
|
+ TaskToUser taskToUser = new TaskToUser();
|
|
|
+ taskToUser.setTaskCode(task.getCode());
|
|
|
+ taskToUser.setUserId(userId);
|
|
|
+ taskToUser.setHasReport(1);
|
|
|
+ taskToUser.setDistributionType(1L);
|
|
|
+ taskToUser.setIsAccepted(1);
|
|
|
+ taskToUser.setAcceptTime(task.getCreateTime());
|
|
|
+ taskToUser.setIsCommitted(1);
|
|
|
+ taskToUser.setCommitTaskTime(task.getDeadTime());
|
|
|
+ taskToUser.setCommitReportTime(task.getDeadTime());
|
|
|
+
|
|
|
+ // 构造任务报告
|
|
|
+ CrowdTestReport crowdTestReport = CrowdTestProjectFactory.defaultTaskReport();
|
|
|
+ crowdTestReport.setCode(GenerateFlowCodeUtil.generateReportCode());
|
|
|
+ crowdTestReport.setUserId(userId);
|
|
|
+ crowdTestReport.setDependencyCode(task.getCode());
|
|
|
+ crowdTestReport.setType("测试报告");
|
|
|
+ crowdTestReport.setName(task.getName() + "测试报告");
|
|
|
+ crowdTestReport.setContent(project.getCrowdTestReportForProject().getContent());
|
|
|
+ crowdTestReport.setConclusion(project.getCrowdTestReportForProject().getConclusion());
|
|
|
+ taskToUser.setCrowdTestReportList(Lists.newArrayList(crowdTestReport));
|
|
|
+ task.setAcceptedUserList(Lists.newArrayList(taskToUser));
|
|
|
tasks.add(task);
|
|
|
+
|
|
|
+ // 构造项目报告
|
|
|
project.setCrowdTestTaskList(tasks);
|
|
|
project.getCrowdTestReportForProject().setCode(GenerateFlowCodeUtil.generateReportCode());
|
|
|
project.getCrowdTestReportForProject().setDependencyCode(project.getCode());
|
|
@@ -346,49 +400,59 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
project.setName(cell.getStringCellValue().trim());
|
|
|
break;
|
|
|
case 1:
|
|
|
- if (!(cell.getStringCellValue().trim().equals("IOS") || cell.getStringCellValue().trim().equals("WEB") || cell.getStringCellValue().trim().equals("ANDROID"))) {
|
|
|
- logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "测试平台数据不合法:" + cell.getStringCellValue());
|
|
|
+ if(fieldDao.findAll().stream().noneMatch(fieldPO -> fieldPO.getName().equals(cell.getStringCellValue().trim()))){
|
|
|
+ logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "领域类型数据不合法:" + cell.getStringCellValue());
|
|
|
break;
|
|
|
}
|
|
|
- List<String> platforms = new ArrayList<>();
|
|
|
- platforms.add(cell.getStringCellValue().trim());
|
|
|
- project.setPlatform(JSONObject.toJSONString(platforms));
|
|
|
+ project.setFieldType(cell.getStringCellValue().trim());
|
|
|
+// project.setFieldType(fieldDao.findByName(cell.getStringCellValue().trim()).get().getCode());
|
|
|
break;
|
|
|
case 2:
|
|
|
- project.setLinkMan(cell.getStringCellValue().trim());
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- if (!isRightPhone(cell.getStringCellValue().trim())) {
|
|
|
- logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "不合法的手机号码:" + cell.getStringCellValue());
|
|
|
+ if(applicationTypeDao.findAll().stream().noneMatch(applicationTypePO -> applicationTypePO.getName().equals(cell.getStringCellValue().trim()))){
|
|
|
+ logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "应用类型数据不合法:" + cell.getStringCellValue());
|
|
|
break;
|
|
|
}
|
|
|
- project.setLinkManMobile(cell.getStringCellValue().trim());
|
|
|
+ project.setApplicationType(cell.getStringCellValue().trim());
|
|
|
+// project.setApplicationType(applicationTypeDao.findByName(cell.getStringCellValue().trim()).get().getCode());
|
|
|
break;
|
|
|
- case 4:
|
|
|
- if (ProjectType.getCode(cell.getStringCellValue().trim()) == null) {
|
|
|
- logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "错误的测试服务类型:" + cell.getStringCellValue());
|
|
|
+ case 3:
|
|
|
+ if(testTypeDao.findAll().stream().noneMatch(testTypePO -> testTypePO.getName().equals(cell.getStringCellValue().trim()))){
|
|
|
+ logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "测试类型数据不合法:" + cell.getStringCellValue());
|
|
|
break;
|
|
|
}
|
|
|
- List<String> types = new ArrayList<>();
|
|
|
- types.add(cell.getStringCellValue().trim());
|
|
|
- project.setType(JSONObject.toJSONString(types));
|
|
|
+ project.setType(cell.getStringCellValue().trim());
|
|
|
+// project.setType(testTypeDao.findByName(cell.getStringCellValue().trim()).get().getCode());
|
|
|
break;
|
|
|
+ case 4:
|
|
|
+ project.setEntrustUnit(cell.getStringCellValue().trim());
|
|
|
case 5:
|
|
|
- project.setDescription(cell.getStringCellValue().trim());
|
|
|
+ project.setLinkMan(cell.getStringCellValue().trim());
|
|
|
break;
|
|
|
case 6:
|
|
|
- project.setFixedPrice(Double.parseDouble(cell.getStringCellValue().trim()));
|
|
|
+ if(!cell.getStringCellValue().trim().contains("*")){
|
|
|
+ if (!isRightPhone(cell.getStringCellValue().trim())) {
|
|
|
+ logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "不合法的手机号码:" + cell.getStringCellValue());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ project.setLinkManMobile(cell.getStringCellValue().trim());
|
|
|
break;
|
|
|
case 7:
|
|
|
- report.setContent(cell.getStringCellValue().trim());
|
|
|
+ project.setDescription(cell.getStringCellValue().trim());
|
|
|
break;
|
|
|
case 8:
|
|
|
+ project.setValuationStandard(cell.getStringCellValue().trim());
|
|
|
+ break;
|
|
|
+ case 9:
|
|
|
+ report.setContent(cell.getStringCellValue().trim());
|
|
|
+ break;
|
|
|
+ case 10:
|
|
|
report.setConclusion(cell.getStringCellValue().trim());
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
project.setCrowdTestReportForProject(report);
|
|
|
- project.setQuotedPrice(project.getFixedPrice());
|
|
|
+// project.setQuotedPrice(project.getFixedPrice());
|
|
|
projects.add(project);
|
|
|
}
|
|
|
projects.forEach(project -> {
|
|
@@ -402,7 +466,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
|
|
|
/**
|
|
|
* 匹配平台类型 0,1,2 任意 ^[0-2](([,][0-2])?([,][0-2])?)$
|
|
|
*/
|
|
|
- private boolean isPlatform(String str) throws PatternSyntaxException {
|
|
|
+ private boolean isApplicationType(String str) throws PatternSyntaxException {
|
|
|
String regExp = "^[0-2](([,][0-2])?([,][0-2])?)$";
|
|
|
Pattern p = Pattern.compile(regExp);
|
|
|
Matcher m = p.matcher(str);
|