Commit a7603471 authored by 盖献康's avatar 盖献康

Merge branch 'dev' into 'master'

dev - master 4.0

See merge request !275
parents 74622346 78e4a2e4
...@@ -84,7 +84,7 @@ public class ReviewEnterpriseArchive implements Serializable { ...@@ -84,7 +84,7 @@ public class ReviewEnterpriseArchive implements Serializable {
private String createBy; private String createBy;
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
} }
\ No newline at end of file
package com.ruoyi.domain; package com.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
...@@ -19,6 +20,10 @@ import lombok.experimental.Accessors; ...@@ -19,6 +20,10 @@ import lombok.experimental.Accessors;
@Data @Data
public class TaskUserRelation { public class TaskUserRelation {
// 用户状态禁用
@TableField(exist = false)
public static final String USER_STATUS_PROHIBIT = "1";
/** /**
* 任务id * 任务id
*/ */
...@@ -52,4 +57,8 @@ public class TaskUserRelation { ...@@ -52,4 +57,8 @@ public class TaskUserRelation {
@ApiModelProperty("部门名称") @ApiModelProperty("部门名称")
private String deptName; private String deptName;
@TableField(exist = false)
@ApiModelProperty("用户状态")
private String status;
} }
package com.ruoyi.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("平均检验通过率")
public class AverageInspectionRateVO {
@ApiModelProperty("检验项目")
private String inspectionItems;
@ApiModelProperty("通过率")
private Integer passingRate;
@ApiModelProperty("标准号")
private String standardNumber;
}
package com.ruoyi.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "首页任务保密等级占比")
public class ConfidentialityLevelProportionVO {
@ApiModelProperty("任务等级数量")
private Long value;
@ApiModelProperty("任务等级")
private String name;
}
package com.ruoyi.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("三个子项目检验通过个数")
public class InspectionItemPassedNumVO {
@ApiModelProperty("体系审查已完成个数")
private Integer sysReviewcompletedNum;
@ApiModelProperty("体系审查已通过个数")
private Integer sysReviewPassedNum;
@ApiModelProperty("车型审查已完成个数")
private Integer carReviewcompletedNum;
@ApiModelProperty("车型审查已通过个数")
private Integer carReviewPassedNum;
@ApiModelProperty("车型实验已完成个数")
private Integer modelTestCompletedNum;
@ApiModelProperty("车型实验已通过个数")
private Integer modelTestPassedNum;
}
package com.ruoyi.domain.vo; package com.ruoyi.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/** /**
* 检验报告PDF VO类 * 检验报告PDF VO类
...@@ -165,4 +169,23 @@ public class InspectionReportPdfVO { ...@@ -165,4 +169,23 @@ public class InspectionReportPdfVO {
*/ */
private String brandImage; private String brandImage;
/**
* 样品照片
*/
private String samplePhotos;
/**
* 任务开始时间
*/
private String taskBeginTime;
/**
* 任务结束时间
*/
private String taskEndTime;
/**
* 检验时间和地点
*/
private String inspectionTimeAndLocation;
} }
package com.ruoyi.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("首页参与任务情况")
public class TaskParticipationStatisticsVO {
@ApiModelProperty("用户名称")
private String userName;
@ApiModelProperty("项目数量")
private Integer taskNum;
}
...@@ -3,6 +3,7 @@ package com.ruoyi.mapper; ...@@ -3,6 +3,7 @@ package com.ruoyi.mapper;
import com.ruoyi.domain.ReviewDetails; import com.ruoyi.domain.ReviewDetails;
import com.ruoyi.domain.ReviewDetailsResult; import com.ruoyi.domain.ReviewDetailsResult;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.web.response.UserNameResponse;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -33,6 +34,8 @@ public interface ReviewDetailsResultMapper extends BaseMapper<ReviewDetailsResul ...@@ -33,6 +34,8 @@ public interface ReviewDetailsResultMapper extends BaseMapper<ReviewDetailsResul
// 根据细则id查询结果 // 根据细则id查询结果
List<ReviewDetailsResult> findByDetailsId(@Param("detailsId") Long detailsId); List<ReviewDetailsResult> findByDetailsId(@Param("detailsId") Long detailsId);
List<UserNameResponse> findByResultList(@Param("resultList") List<ReviewDetailsResult> resultList);
} }
......
...@@ -16,4 +16,7 @@ public interface StandardMapper extends BaseMapper<Standard> { ...@@ -16,4 +16,7 @@ public interface StandardMapper extends BaseMapper<Standard> {
// 根据id查询 // 根据id查询
Standard findListById(@Param("id") Long Id); Standard findListById(@Param("id") Long Id);
//查询全部
List<Standard> selectListAll();
} }
package com.ruoyi.mapper; package com.ruoyi.mapper;
import com.ruoyi.domain.vo.QuantityStatisticsVO; import com.ruoyi.domain.vo.*;
import com.ruoyi.domain.vo.StandardCategoryStatisticsVO;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -14,4 +13,13 @@ public interface StatisticsHomeMapper { ...@@ -14,4 +13,13 @@ public interface StatisticsHomeMapper {
// 标准类别统计 // 标准类别统计
public List<StandardCategoryStatisticsVO> selectStandardCategoryStatistics(); public List<StandardCategoryStatisticsVO> selectStandardCategoryStatistics();
// 任务保密等级统计
public List<ConfidentialityLevelProportionVO> selectConfidentialityLevelStatistics();
// 体系审查任务通过数量
public InspectionItemPassedNumVO selectInspectionItemPassedNum();
// 参与任务情况统计
public List<TaskParticipationStatisticsVO> selectTaskParticipationStatistics();
} }
...@@ -2,6 +2,7 @@ package com.ruoyi.mapper; ...@@ -2,6 +2,7 @@ package com.ruoyi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.domain.Task; import com.ruoyi.domain.Task;
import com.ruoyi.domain.TaskUserRelation;
import com.ruoyi.domain.vo.EnterpriseFilePdfVO; import com.ruoyi.domain.vo.EnterpriseFilePdfVO;
import com.ruoyi.domain.vo.InspectionReportPdfVO; import com.ruoyi.domain.vo.InspectionReportPdfVO;
import com.ruoyi.web.request.TaskFindFinishRequest; import com.ruoyi.web.request.TaskFindFinishRequest;
...@@ -9,6 +10,8 @@ import com.ruoyi.web.request.TaskFindPendingRequest; ...@@ -9,6 +10,8 @@ import com.ruoyi.web.request.TaskFindPendingRequest;
import com.ruoyi.web.request.TaskFindRequest; import com.ruoyi.web.request.TaskFindRequest;
import com.ruoyi.web.request.TaskListRequest; import com.ruoyi.web.request.TaskListRequest;
import com.ruoyi.web.response.TaskFindResponse; import com.ruoyi.web.response.TaskFindResponse;
import com.ruoyi.web.response.TaskScenarioResponse;
import com.ruoyi.web.response.UserNameResponse;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -52,4 +55,15 @@ public interface TaskMapper extends BaseMapper<Task> { ...@@ -52,4 +55,15 @@ public interface TaskMapper extends BaseMapper<Task> {
* @return * @return
*/ */
InspectionReportPdfVO selectInspectionReportData(Long taskId); InspectionReportPdfVO selectInspectionReportData(Long taskId);
// 根据任务列表查询对应的场景数量
List<TaskScenarioResponse> findByTaskList(@Param("responses") List<TaskFindResponse> responses);
// 任务列表查询小组成员名称、部门
List<UserNameResponse> findByUserIdList(@Param("responses") List<TaskFindResponse> responses);
// 任务小组关系列表查询小组成员名称、部门
List<UserNameResponse> findByRelation(@Param("relation") List<TaskUserRelation> relation);
List<UserNameResponse> findByFinishTaskList(@Param("taskList") List<Task> taskList);
} }
...@@ -23,6 +23,9 @@ public interface TaskUserRelationMapper extends BaseMapper<TaskUserRelation> { ...@@ -23,6 +23,9 @@ public interface TaskUserRelationMapper extends BaseMapper<TaskUserRelation> {
*/ */
List<TaskUserRelation> selectQTeamMembers(@Param("taskId") Long taskId); List<TaskUserRelation> selectQTeamMembers(@Param("taskId") Long taskId);
// 根据小组成员id列表查询状态
List<TaskUserRelation> findByIdList(@Param("idList") List<TaskUserRelation> idList);
} }
......
...@@ -11,4 +11,6 @@ import java.util.List; ...@@ -11,4 +11,6 @@ import java.util.List;
public interface TestRecordsMapper extends BaseMapper<TestRecords> { public interface TestRecordsMapper extends BaseMapper<TestRecords> {
List<TestRecords> findByTaskId(@Param("id") String id); List<TestRecords> findByTaskId(@Param("id") String id);
Long countResult(@Param("projectId") String projectId);
} }
...@@ -2,7 +2,6 @@ package com.ruoyi.service; ...@@ -2,7 +2,6 @@ package com.ruoyi.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.domain.TestScenario; import com.ruoyi.domain.TestScenario;
import com.ruoyi.domain.TestType;
import com.ruoyi.web.request.TestScenarioRequest; import com.ruoyi.web.request.TestScenarioRequest;
import java.util.List; import java.util.List;
...@@ -16,4 +15,10 @@ public interface ITestScenarioService extends IService<TestScenario> { ...@@ -16,4 +15,10 @@ public interface ITestScenarioService extends IService<TestScenario> {
* @return 测试场景库集合 * @return 测试场景库集合
*/ */
public List<TestScenario> selectTestScenarioList(TestScenarioRequest testScenarioRequest); public List<TestScenario> selectTestScenarioList(TestScenarioRequest testScenarioRequest);
/**
* 获取测试场景列表(科恩)
* @return
*/
public List<String> selectScenarioList();
} }
...@@ -3,9 +3,7 @@ package com.ruoyi.service; ...@@ -3,9 +3,7 @@ package com.ruoyi.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.domain.ModelTestTask; import com.ruoyi.domain.ModelTestTask;
import com.ruoyi.web.request.ModelTestTaskSubmitRequest; import com.ruoyi.web.request.ModelTestTaskSubmitRequest;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestResponse;
import java.util.List;
/** /**
* 车型试验任务Service接口 * 车型试验任务Service接口
...@@ -19,7 +17,7 @@ public interface ModelTestTaskService extends IService<ModelTestTask> { ...@@ -19,7 +17,7 @@ public interface ModelTestTaskService extends IService<ModelTestTask> {
* @param taskId * @param taskId
* @return * @return
*/ */
List<ModelTestTaskViewResponse> viewModelTestTask(Long taskId); ModelTestResponse viewModelTestTask(Long taskId);
/** /**
* 开始车型试验任务 * 开始车型试验任务
......
package com.ruoyi.service; package com.ruoyi.service;
import com.ruoyi.domain.vo.QuantityStatisticsVO; import com.ruoyi.domain.vo.*;
import com.ruoyi.domain.vo.StandardCategoryStatisticsVO;
import java.util.List; import java.util.List;
...@@ -11,4 +10,13 @@ public interface StatisticsHomeService { ...@@ -11,4 +10,13 @@ public interface StatisticsHomeService {
// 标准类别统计 // 标准类别统计
public List<StandardCategoryStatisticsVO> selectStandardCategoryStatistics(); public List<StandardCategoryStatisticsVO> selectStandardCategoryStatistics();
// 任务保密等级统计
public List<ConfidentialityLevelProportionVO> selectConfidentialityLevelStatistics();
//平均检验通过率
public List<AverageInspectionRateVO> selectAverageInspectionRate();
// 参与任务情况统计
public List<TaskParticipationStatisticsVO> selectTaskParticipationStatistics();
} }
package com.ruoyi.service; package com.ruoyi.service;
import com.ruoyi.domain.ModelTestTask; import com.ruoyi.domain.ModelTestTask;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestResponse;
import java.util.List; import java.util.List;
...@@ -15,7 +15,7 @@ public interface StrategyModelTestTask { ...@@ -15,7 +15,7 @@ public interface StrategyModelTestTask {
* @param modelTestTask * @param modelTestTask
* @return * @return
*/ */
List<ModelTestTaskViewResponse> doView(ModelTestTask modelTestTask); ModelTestResponse doView(ModelTestTask modelTestTask);
/** /**
* 开始测试 * 开始测试
......
package com.ruoyi.service; package com.ruoyi.service;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.domain.TestUseCase; import com.ruoyi.domain.TestUseCase;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.web.request.TestUseCaseByScenarioRequest;
import com.ruoyi.web.request.TestUseCaseIdListRequest; import com.ruoyi.web.request.TestUseCaseIdListRequest;
import com.ruoyi.web.request.TestUserCaseRequest; import com.ruoyi.web.request.TestUserCaseRequest;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author wangfei * @author wangfei
...@@ -27,4 +30,19 @@ public interface TestUseCaseService extends IService<TestUseCase> { ...@@ -27,4 +30,19 @@ public interface TestUseCaseService extends IService<TestUseCase> {
* @return * @return
*/ */
List<String> selectCaseIdList(TestUseCaseIdListRequest request); List<String> selectCaseIdList(TestUseCaseIdListRequest request);
/**
* 通过测试场景获取所绑定的测试用例
* @param request
* @return
*/
List<String> selectCaseByScenario(TestUseCaseByScenarioRequest request);
/**
* 调用第三方接口
* @param url
* @param map
* @return
*/
JSONObject callThirdPartyInterface(String url, Map<String, Object> map);
} }
...@@ -5,13 +5,11 @@ import com.ruoyi.domain.ModelTestTask; ...@@ -5,13 +5,11 @@ import com.ruoyi.domain.ModelTestTask;
import com.ruoyi.mapper.ModelTestTaskMapper; import com.ruoyi.mapper.ModelTestTaskMapper;
import com.ruoyi.service.ModelTestTaskService; import com.ruoyi.service.ModelTestTaskService;
import com.ruoyi.web.request.ModelTestTaskSubmitRequest; import com.ruoyi.web.request.ModelTestTaskSubmitRequest;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* 车型试验Service业务层处理 * 车型试验Service业务层处理
* @author gxk * @author gxk
...@@ -33,7 +31,7 @@ public class ModelTestTaskServiceImpl extends ServiceImpl<ModelTestTaskMapper, M ...@@ -33,7 +31,7 @@ public class ModelTestTaskServiceImpl extends ServiceImpl<ModelTestTaskMapper, M
* @return * @return
*/ */
@Override @Override
public List<ModelTestTaskViewResponse> viewModelTestTask(Long taskId) { public ModelTestResponse viewModelTestTask(Long taskId) {
ModelTestTask modelTestTask = modelTestTaskMapper.selectById(taskId); ModelTestTask modelTestTask = modelTestTaskMapper.selectById(taskId);
return strategyModelTestTaskContext.getResource(modelTestTask.getTaskStatus()).doView(modelTestTask); return strategyModelTestTaskContext.getResource(modelTestTask.getTaskStatus()).doView(modelTestTask);
} }
......
package com.ruoyi.service.impl; package com.ruoyi.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -156,9 +157,9 @@ public class ReviewStandardServiceImpl extends ServiceImpl<ReviewStandardMapper, ...@@ -156,9 +157,9 @@ public class ReviewStandardServiceImpl extends ServiceImpl<ReviewStandardMapper,
// 查看此标准下所有的测试用例 // 查看此标准下所有的测试用例
List<TestUseCase> usecaseRelationList = testUseCaseMapper.selectList(new QueryWrapper<TestUseCase>().eq("review_standard_id", standardId)); List<TestUseCase> usecaseRelationList = testUseCaseMapper.selectList(new QueryWrapper<TestUseCase>().eq("review_standard_id", standardId));
// 此标准还可以选择的用例 // 此标准还可以选择的用例
List<OptionalUseCasesVO> optionalUseCasesVOList = testUseCases.stream().filter(a -> !a.getStandardId().equals(standardId)).collect(Collectors.toList()); // List<OptionalUseCasesVO> optionalUseCasesVOList = testUseCases.stream().filter(a -> !a.getStandardId().equals(standardId)).collect(Collectors.toList());
optionalUseCasesVOList.stream().forEach(obj -> obj.setDisabled(false)); testUseCases.stream().forEach(obj -> obj.setDisabled(false));
response.setOptionalUseCasesList(optionalUseCasesVOList); response.setOptionalUseCasesList(testUseCases);
response.setSelectedUseCaseList(usecaseRelationList.stream().map(TestUseCase::getId).collect(Collectors.toList())); response.setSelectedUseCaseList(usecaseRelationList.stream().map(TestUseCase::getId).collect(Collectors.toList()));
return response; return response;
} }
...@@ -169,10 +170,19 @@ public class ReviewStandardServiceImpl extends ServiceImpl<ReviewStandardMapper, ...@@ -169,10 +170,19 @@ public class ReviewStandardServiceImpl extends ServiceImpl<ReviewStandardMapper,
*/ */
@Override @Override
public void saveStandardUsecase(ReviewStandardSaveStandardUsecaseRequest request) { public void saveStandardUsecase(ReviewStandardSaveStandardUsecaseRequest request) {
// 删除之前绑定关系
testUseCaseMapper.update(
null,
new UpdateWrapper<TestUseCase>()
.set("review_standard_id", null)
.in("review_standard_id", request.getStandardId()));
if (CollUtil.isNotEmpty(request.getUsecaseIdList())) {
// 绑定现在的
testUseCaseMapper.update( testUseCaseMapper.update(
TestUseCase.builder().reviewStandardId(request.getStandardId()).build(), TestUseCase.builder().reviewStandardId(request.getStandardId()).build(),
new UpdateWrapper<TestUseCase>().in("id", request.getUsecaseIdList())); new UpdateWrapper<TestUseCase>().in("id", request.getUsecaseIdList()));
} }
}
/** /**
* 将审查 标准、要点、细则、场景 按照父子关系拆分写入到各自的表中 * 将审查 标准、要点、细则、场景 按照父子关系拆分写入到各自的表中
......
package com.ruoyi.service.impl; package com.ruoyi.service.impl;
import com.ruoyi.domain.vo.QuantityStatisticsVO; import com.ruoyi.domain.Standard;
import com.ruoyi.domain.vo.StandardCategoryStatisticsVO; import com.ruoyi.domain.vo.*;
import com.ruoyi.mapper.StandardMapper;
import com.ruoyi.mapper.StatisticsHomeMapper; import com.ruoyi.mapper.StatisticsHomeMapper;
import com.ruoyi.service.StatisticsHomeService; import com.ruoyi.service.StatisticsHomeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
...@@ -16,6 +18,9 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService { ...@@ -16,6 +18,9 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService {
@Autowired @Autowired
private StatisticsHomeMapper statisticsHomeMapper; private StatisticsHomeMapper statisticsHomeMapper;
@Autowired
private StandardMapper standardMapper;
@Override @Override
public QuantityStatisticsVO selectQuantityStatistics(QuantityStatisticsVO quantityStatisticsHome){ public QuantityStatisticsVO selectQuantityStatistics(QuantityStatisticsVO quantityStatisticsHome){
...@@ -30,7 +35,44 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService { ...@@ -30,7 +35,44 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService {
return statisticsHomeMapper.selectStandardCategoryStatistics(); return statisticsHomeMapper.selectStandardCategoryStatistics();
} }
// 计算百分比 @Override
public List<ConfidentialityLevelProportionVO> selectConfidentialityLevelStatistics(){
return statisticsHomeMapper.selectConfidentialityLevelStatistics();
}
@Override
public List<AverageInspectionRateVO> selectAverageInspectionRate(){
List<Standard> standards = standardMapper.selectListAll();
String standardNo = null;
if(!standards.isEmpty()){
standardNo = standards.get(0).getStandardNo();
}
InspectionItemPassedNumVO inspectionItemPassedNumVO = statisticsHomeMapper.selectInspectionItemPassedNum();
List<AverageInspectionRateVO> list = new ArrayList<>();
AverageInspectionRateVO averageInspectionRateOne = new AverageInspectionRateVO();
averageInspectionRateOne.setInspectionItems("汽车信息安全管理体系要求");
averageInspectionRateOne.setPassingRate(proportionCalculation(inspectionItemPassedNumVO.getSysReviewPassedNum(), inspectionItemPassedNumVO.getSysReviewcompletedNum()));
list.add(averageInspectionRateOne);
AverageInspectionRateVO averageInspectionRateTwo = new AverageInspectionRateVO();
averageInspectionRateTwo.setInspectionItems("信息安全一般要求");
averageInspectionRateTwo.setPassingRate(proportionCalculation(inspectionItemPassedNumVO.getCarReviewPassedNum(),inspectionItemPassedNumVO.getCarReviewcompletedNum()));
list.add(averageInspectionRateTwo);
AverageInspectionRateVO averageInspectionRateThree = new AverageInspectionRateVO();
averageInspectionRateThree.setInspectionItems("信息安全技术要求");
averageInspectionRateThree.setPassingRate(proportionCalculation(inspectionItemPassedNumVO.getModelTestPassedNum(),inspectionItemPassedNumVO.getModelTestCompletedNum()));
list.add(averageInspectionRateThree);
for(AverageInspectionRateVO averageInspectionRate:list){
averageInspectionRate.setStandardNumber(standardNo);
}
return list;
}
@Override
public List<TaskParticipationStatisticsVO> selectTaskParticipationStatistics(){
return statisticsHomeMapper.selectTaskParticipationStatistics();
}
// 计算两个数各占比
public int percentageCalculation(Integer a, Integer b){ public int percentageCalculation(Integer a, Integer b){
int total = a+b; int total = a+b;
if(total == 0){ if(total == 0){
...@@ -40,4 +82,14 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService { ...@@ -40,4 +82,14 @@ public class StatisticsHomeServiceImpl implements StatisticsHomeService {
return Math.round(c*100); return Math.round(c*100);
} }
} }
// 计算百分比
public int proportionCalculation(Integer a, Integer b){
if(b == 0){
return 0;
}else {
float c = (float)a/b;
return Math.round(c*100);
}
}
} }
...@@ -8,6 +8,7 @@ import com.ruoyi.domain.vo.ReviewEnterpriseArchiveFileVO; ...@@ -8,6 +8,7 @@ import com.ruoyi.domain.vo.ReviewEnterpriseArchiveFileVO;
import com.ruoyi.mapper.*; import com.ruoyi.mapper.*;
import com.ruoyi.service.*; import com.ruoyi.service.*;
import com.ruoyi.web.response.CarReviewTaskViewResponse; import com.ruoyi.web.response.CarReviewTaskViewResponse;
import com.ruoyi.web.response.UserNameResponse;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
...@@ -127,9 +128,9 @@ public class StrategyCarReviewTaskPending implements StrategyCarReviewTask, Init ...@@ -127,9 +128,9 @@ public class StrategyCarReviewTaskPending implements StrategyCarReviewTask, Init
public void doConfirmReview(CarReviewTask carReviewTask) { public void doConfirmReview(CarReviewTask carReviewTask) {
List<ReviewDetails> detailsList = reviewDetailsMapper.findNoResult(carReviewTask.getId(),CarReviewTask.TYPE); List<ReviewDetails> detailsList = reviewDetailsMapper.findNoResult(carReviewTask.getId(),CarReviewTask.TYPE);
List<ReviewTaskInbox> inboxList = reviewTaskInboxMapper.findConfirmListByTaskId(carReviewTask.getId()); List<ReviewTaskInbox> inboxList = reviewTaskInboxMapper.findConfirmListByTaskId(carReviewTask.getId());
if (detailsList.size() != 0 && detailsList != null) { if (detailsList != null && detailsList.size() != 0) {
throw new ServiceException("存在未填写的表单,请填写完整", HttpStatus.ERROR, detailsList); throw new ServiceException("存在未填写的表单,请填写完整", HttpStatus.ERROR, detailsList);
} else if (inboxList.size() != 0 && inboxList != null){ } else if (inboxList != null && inboxList.size() != 0){
throw new ServiceException("存在未确认的场景变更信息,请确认", HttpStatus.ERROR); throw new ServiceException("存在未确认的场景变更信息,请确认", HttpStatus.ERROR);
}else { }else {
// 1. 获取最新问卷 // 1. 获取最新问卷
...@@ -164,6 +165,21 @@ public class StrategyCarReviewTaskPending implements StrategyCarReviewTask, Init ...@@ -164,6 +165,21 @@ public class StrategyCarReviewTaskPending implements StrategyCarReviewTask, Init
private void setDetailsResult(List<ReviewStandard> standards, List<ReviewDetailsResult> results, CarReviewTask carReviewTask) { private void setDetailsResult(List<ReviewStandard> standards, List<ReviewDetailsResult> results, CarReviewTask carReviewTask) {
if (results != null && results.size() != 0) {
// 小组成员姓名、部门
List<UserNameResponse> userList = reviewDetailsResultMapper.findByResultList(results);
for (UserNameResponse response : userList) {
for (ReviewDetailsResult result : results) {
if (Objects.equals(result.getUserId(), response.getUserId())) {
result.setUserName(response.getName());
}
}
}
reviewDetailsResultService.updateBatchById(results);
}
Map<Long, ReviewDetailsResult> resultMap = results.stream().collect(Collectors.toMap(ReviewDetailsResult::getReviewDetailsId, Function.identity(), (v1, v2) -> v1)); Map<Long, ReviewDetailsResult> resultMap = results.stream().collect(Collectors.toMap(ReviewDetailsResult::getReviewDetailsId, Function.identity(), (v1, v2) -> v1));
for(ReviewStandard standard : standards) { for(ReviewStandard standard : standards) {
......
...@@ -4,7 +4,7 @@ import com.ruoyi.common.constant.HttpStatus; ...@@ -4,7 +4,7 @@ import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.domain.ModelTestTask; import com.ruoyi.domain.ModelTestTask;
import com.ruoyi.service.StrategyModelTestTask; import com.ruoyi.service.StrategyModelTestTask;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestResponse;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
...@@ -24,7 +24,7 @@ public class StrategyModelTestTaskFinish implements StrategyModelTestTask, Initi ...@@ -24,7 +24,7 @@ public class StrategyModelTestTaskFinish implements StrategyModelTestTask, Initi
private StrategyModelTestTaskContext strategyModelTestTaskContext; private StrategyModelTestTaskContext strategyModelTestTaskContext;
@Override @Override
public List<ModelTestTaskViewResponse> doView(ModelTestTask modelTestTask) { public ModelTestResponse doView(ModelTestTask modelTestTask) {
throw new ServiceException("不能开始一个结束的任务", HttpStatus.ERROR); throw new ServiceException("不能开始一个结束的任务", HttpStatus.ERROR);
} }
......
package com.ruoyi.service.impl; package com.ruoyi.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
...@@ -7,8 +9,10 @@ import com.ruoyi.domain.*; ...@@ -7,8 +9,10 @@ import com.ruoyi.domain.*;
import com.ruoyi.domain.vo.TestCaseVO; import com.ruoyi.domain.vo.TestCaseVO;
import com.ruoyi.domain.vo.TestUsecaseVO; import com.ruoyi.domain.vo.TestUsecaseVO;
import com.ruoyi.mapper.ModelTestTaskMapper; import com.ruoyi.mapper.ModelTestTaskMapper;
import com.ruoyi.mapper.TaskMapper;
import com.ruoyi.mapper.TestUseCaseMapper; import com.ruoyi.mapper.TestUseCaseMapper;
import com.ruoyi.service.StrategyModelTestTask; import com.ruoyi.service.StrategyModelTestTask;
import com.ruoyi.web.response.ModelTestResponse;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestTaskViewResponse;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
...@@ -40,15 +44,18 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali ...@@ -40,15 +44,18 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali
@Autowired @Autowired
private ModelTestTaskMapper modelTestTaskMapper; private ModelTestTaskMapper modelTestTaskMapper;
@Autowired
private TaskMapper taskMapper;
/** /**
* 状态为NEW时的查看车型试验任务 * 状态为NEW时的查看车型试验任务
* @param modelTestTask * @param modelTestTask
* @return * @return
*/ */
@Override @Override
public List<ModelTestTaskViewResponse> doView(ModelTestTask modelTestTask) { public ModelTestResponse doView(ModelTestTask modelTestTask) {
List<ModelTestTaskViewResponse> list = getTestScheme(modelTestTask.getId()); ModelTestResponse response = getTestScheme(modelTestTask);
return list; return response;
} }
/** /**
...@@ -56,14 +63,15 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali ...@@ -56,14 +63,15 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali
* @param taskId * @param taskId
* @return * @return
*/ */
public List<ModelTestTaskViewResponse> getTestScheme(Long taskId) { public ModelTestResponse getTestScheme(ModelTestTask modelTestTask) {
// 查询出本子任务所包含的测试场景集合 // 查询出本子任务所包含的测试场景集合
List<TestUsecaseVO> testCaseList = testUseCaseMapper.selectListByTaskId(taskId); List<TestUsecaseVO> testCaseList = testUseCaseMapper.selectListByTaskId(modelTestTask.getId());
// 创建一个空List, 用于返回数据 // 创建一个空List, 用于返回数据
List<ModelTestTaskViewResponse> list = new ArrayList<>(); List<ModelTestTaskViewResponse> list = new ArrayList<>();
// 创建一个HashMap, 用于存放数据。用例条款ID作为key // 创建一个HashMap, 用于存放数据。用例条款ID作为key
HashMap<Long, List<TestCaseVO>> map = new HashMap<>(); HashMap<Long, List<TestCaseVO>> map = new HashMap<>();
for (TestUsecaseVO testUsecaseVO : testCaseList) { for (TestUsecaseVO testUsecaseVO : testCaseList) {
if (ObjectUtil.isNotEmpty(testUsecaseVO.getReviewStandardId())) {
// map不存在此key,添加; 则,存数据 // map不存在此key,添加; 则,存数据
if (!map.containsKey(testUsecaseVO.getReviewStandardId())) { if (!map.containsKey(testUsecaseVO.getReviewStandardId())) {
TestCaseVO caseVO = new TestCaseVO(); TestCaseVO caseVO = new TestCaseVO();
...@@ -77,6 +85,7 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali ...@@ -77,6 +85,7 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali
map.get(testUsecaseVO.getReviewStandardId()).add(caseVO); map.get(testUsecaseVO.getReviewStandardId()).add(caseVO);
} }
} }
}
// 循环map, 给list赋值 // 循环map, 给list赋值
for (Map.Entry<Long, List<TestCaseVO>> entry : map.entrySet()) { for (Map.Entry<Long, List<TestCaseVO>> entry : map.entrySet()) {
List<TestUsecaseVO> collect = testCaseList.stream().filter(testCaseVO -> entry.getKey().equals(testCaseVO.getReviewStandardId())).collect(Collectors.toList()); List<TestUsecaseVO> collect = testCaseList.stream().filter(testCaseVO -> entry.getKey().equals(testCaseVO.getReviewStandardId())).collect(Collectors.toList());
...@@ -93,7 +102,16 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali ...@@ -93,7 +102,16 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali
} }
// 最后按章节号升序 // 最后按章节号升序
list.sort(Comparator.comparing(ModelTestTaskViewResponse::getChapter)); list.sort(Comparator.comparing(ModelTestTaskViewResponse::getChapter));
return list; // 构造
Task task = taskMapper.selectOne(new QueryWrapper<Task>().lambda().eq(Task::getModelTestTaskId, modelTestTask.getId()));
ModelTestResponse response = ModelTestResponse.builder()
.taskNo(task.getTaskNo())
.taskName(task.getTaskName())
.entrustedUnit(task.getEntrustedUnit())
.taskStatus(modelTestTask.getTaskStatus())
.modelTestTaskViewResponseList(list)
.build();
return response;
} }
/** /**
...@@ -104,6 +122,7 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali ...@@ -104,6 +122,7 @@ public class StrategyModelTestTaskNew implements StrategyModelTestTask, Initiali
public void doStartTest(ModelTestTask modelTestTask) { public void doStartTest(ModelTestTask modelTestTask) {
modelTestTaskMapper.update(new ModelTestTask(), modelTestTaskMapper.update(new ModelTestTask(),
new LambdaUpdateWrapper<ModelTestTask>() new LambdaUpdateWrapper<ModelTestTask>()
.set(ModelTestTask::getTaskBeginTime, new Date())
.set(ModelTestTask::getTaskStatus, ModelTestTask.TASK_STATUS_PENDING) .set(ModelTestTask::getTaskStatus, ModelTestTask.TASK_STATUS_PENDING)
.eq(ModelTestTask::getId, modelTestTask.getId())); .eq(ModelTestTask::getId, modelTestTask.getId()));
} }
......
...@@ -6,13 +6,14 @@ import com.ruoyi.common.exception.ServiceException; ...@@ -6,13 +6,14 @@ import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.domain.ModelTestTask; import com.ruoyi.domain.ModelTestTask;
import com.ruoyi.mapper.ModelTestTaskMapper; import com.ruoyi.mapper.ModelTestTaskMapper;
import com.ruoyi.service.StrategyModelTestTask; import com.ruoyi.service.StrategyModelTestTask;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestResponse;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List; import java.util.List;
@Service @Service
...@@ -32,9 +33,9 @@ public class StrategyModelTestTaskPending implements StrategyModelTestTask, Init ...@@ -32,9 +33,9 @@ public class StrategyModelTestTaskPending implements StrategyModelTestTask, Init
private StrategyModelTestTaskNew strategyModelTestTaskNew; private StrategyModelTestTaskNew strategyModelTestTaskNew;
@Override @Override
public List<ModelTestTaskViewResponse> doView(ModelTestTask modelTestTask) { public ModelTestResponse doView(ModelTestTask modelTestTask) {
List<ModelTestTaskViewResponse> list = strategyModelTestTaskNew.getTestScheme(modelTestTask.getId()); ModelTestResponse response = strategyModelTestTaskNew.getTestScheme(modelTestTask);
return list; return response;
} }
@Override @Override
...@@ -47,6 +48,7 @@ public class StrategyModelTestTaskPending implements StrategyModelTestTask, Init ...@@ -47,6 +48,7 @@ public class StrategyModelTestTaskPending implements StrategyModelTestTask, Init
// 进行中的任务, 点击确认后, 状态改为待签字 // 进行中的任务, 点击确认后, 状态改为待签字
modelTestTaskMapper.update(new ModelTestTask(), modelTestTaskMapper.update(new ModelTestTask(),
new LambdaUpdateWrapper<ModelTestTask>() new LambdaUpdateWrapper<ModelTestTask>()
.set(ModelTestTask::getTaskEndTime, new Date())
.set(ModelTestTask::getTaskStatus, ModelTestTask.TASK_STATUS_SIGNED) .set(ModelTestTask::getTaskStatus, ModelTestTask.TASK_STATUS_SIGNED)
.eq(ModelTestTask::getId, modelTestTask.getId())); .eq(ModelTestTask::getId, modelTestTask.getId()));
} }
......
...@@ -13,7 +13,7 @@ import com.ruoyi.domain.Task; ...@@ -13,7 +13,7 @@ import com.ruoyi.domain.Task;
import com.ruoyi.mapper.ModelTestTaskMapper; import com.ruoyi.mapper.ModelTestTaskMapper;
import com.ruoyi.mapper.TaskMapper; import com.ruoyi.mapper.TaskMapper;
import com.ruoyi.service.StrategyModelTestTask; import com.ruoyi.service.StrategyModelTestTask;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestResponse;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
...@@ -46,9 +46,9 @@ public class StrategyModelTestTaskSigned implements StrategyModelTestTask, Initi ...@@ -46,9 +46,9 @@ public class StrategyModelTestTaskSigned implements StrategyModelTestTask, Initi
private StrategyModelTestTaskNew strategyModelTestTaskNew; private StrategyModelTestTaskNew strategyModelTestTaskNew;
@Override @Override
public List<ModelTestTaskViewResponse> doView(ModelTestTask modelTestTask) { public ModelTestResponse doView(ModelTestTask modelTestTask) {
List<ModelTestTaskViewResponse> list = strategyModelTestTaskNew.getTestScheme(modelTestTask.getId()); ModelTestResponse response = strategyModelTestTaskNew.getTestScheme(modelTestTask);
return list; return response;
} }
@Override @Override
......
...@@ -8,6 +8,7 @@ import com.ruoyi.domain.vo.ReviewEnterpriseArchiveFileVO; ...@@ -8,6 +8,7 @@ import com.ruoyi.domain.vo.ReviewEnterpriseArchiveFileVO;
import com.ruoyi.mapper.*; import com.ruoyi.mapper.*;
import com.ruoyi.service.*; import com.ruoyi.service.*;
import com.ruoyi.web.response.SystemReviewTaskViewResponse; import com.ruoyi.web.response.SystemReviewTaskViewResponse;
import com.ruoyi.web.response.UserNameResponse;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
...@@ -88,9 +89,9 @@ public class StrategySystemReviewTaskPending implements StrategySystemReviewTask ...@@ -88,9 +89,9 @@ public class StrategySystemReviewTaskPending implements StrategySystemReviewTask
public void doConfirm(SystemReviewTask systemReviewTask) { public void doConfirm(SystemReviewTask systemReviewTask) {
List<ReviewDetails> detailsList = reviewDetailsMapper.findNoResult(systemReviewTask.getId(),SystemReviewTask.TYPE); List<ReviewDetails> detailsList = reviewDetailsMapper.findNoResult(systemReviewTask.getId(),SystemReviewTask.TYPE);
List<ReviewTaskInbox> inboxList = reviewTaskInboxMapper.findConfirmListByTaskId(systemReviewTask.getId()); List<ReviewTaskInbox> inboxList = reviewTaskInboxMapper.findConfirmListByTaskId(systemReviewTask.getId());
if (detailsList.size() != 0 && detailsList != null) { if (detailsList != null && detailsList.size() != 0) {
throw new ServiceException("存在未填写的表单,请填写完整", HttpStatus.ERROR, detailsList); throw new ServiceException("存在未填写的表单,请填写完整", HttpStatus.ERROR, detailsList);
} else if (inboxList.size() != 0 && inboxList != null){ } else if (inboxList != null && inboxList.size() != 0){
throw new ServiceException("存在未确认的场景变更信息,请确认", HttpStatus.ERROR); throw new ServiceException("存在未确认的场景变更信息,请确认", HttpStatus.ERROR);
} else { } else {
// 1. 获取最新问卷 // 1. 获取最新问卷
...@@ -160,6 +161,21 @@ public class StrategySystemReviewTaskPending implements StrategySystemReviewTask ...@@ -160,6 +161,21 @@ public class StrategySystemReviewTaskPending implements StrategySystemReviewTask
private void setDetailsResult(List<ReviewStandard> standards, List<ReviewDetailsResult> results,SystemReviewTask systemReviewTask) { private void setDetailsResult(List<ReviewStandard> standards, List<ReviewDetailsResult> results,SystemReviewTask systemReviewTask) {
if (results != null && results.size() != 0) {
// 小组成员姓名、部门
List<UserNameResponse> userList = reviewDetailsResultMapper.findByResultList(results);
for (UserNameResponse response : userList) {
for (ReviewDetailsResult result : results) {
if (Objects.equals(result.getUserId(), response.getUserId())) {
result.setUserName(response.getName());
}
}
}
reviewDetailsResultService.updateBatchById(results);
}
Map<Long, ReviewDetailsResult> resultMap = results.stream().collect(Collectors.toMap(ReviewDetailsResult::getReviewDetailsId, Function.identity(), (v1, v2) -> v1)); Map<Long, ReviewDetailsResult> resultMap = results.stream().collect(Collectors.toMap(ReviewDetailsResult::getReviewDetailsId, Function.identity(), (v1, v2) -> v1));
for(ReviewStandard standard : standards) { for(ReviewStandard standard : standards) {
......
package com.ruoyi.service.impl; package com.ruoyi.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.domain.TestScenario; import com.ruoyi.domain.TestScenario;
import com.ruoyi.mapper.TestScenarioMapper; import com.ruoyi.mapper.TestScenarioMapper;
import com.ruoyi.service.ITestScenarioService; import com.ruoyi.service.ITestScenarioService;
import com.ruoyi.service.TestUseCaseService;
import com.ruoyi.web.request.TestScenarioRequest; import com.ruoyi.web.request.TestScenarioRequest;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
@Transactional @Transactional
...@@ -18,6 +22,11 @@ public class TestScenarioServiceImpl extends ServiceImpl<TestScenarioMapper, Tes ...@@ -18,6 +22,11 @@ public class TestScenarioServiceImpl extends ServiceImpl<TestScenarioMapper, Tes
@Autowired @Autowired
private TestScenarioMapper testScenarioMapper; private TestScenarioMapper testScenarioMapper;
@Autowired
private TestUseCaseService testUseCaseService;
private static String url = "https://10.12.48.78:8090/DescribeScenarioTestTypeList";
@Override @Override
public List<TestScenario> selectTestScenarioList(TestScenarioRequest testScenarioRequest){ public List<TestScenario> selectTestScenarioList(TestScenarioRequest testScenarioRequest){
if(testScenarioRequest.getTestScenario() != null && (testScenarioRequest.getTestScenario().contains("%") ||testScenarioRequest.getTestScenario().contains("_") )){ if(testScenarioRequest.getTestScenario() != null && (testScenarioRequest.getTestScenario().contains("%") ||testScenarioRequest.getTestScenario().contains("_") )){
...@@ -25,4 +34,25 @@ public class TestScenarioServiceImpl extends ServiceImpl<TestScenarioMapper, Tes ...@@ -25,4 +34,25 @@ public class TestScenarioServiceImpl extends ServiceImpl<TestScenarioMapper, Tes
} }
return testScenarioMapper.selectTestScenarioList(testScenarioRequest); return testScenarioMapper.selectTestScenarioList(testScenarioRequest);
} }
/**
* 获取测试场景列表(科恩)
* @return
*/
@Override
public List<String> selectScenarioList() {
JSONObject jsonObject = testUseCaseService.callThirdPartyInterface(url, null);
List<String> scenarioList = jsonObject.getList("scenario_list", Scenario.class)
.stream()
.map(Scenario::getName)
.collect(Collectors.toList());
return scenarioList;
}
@Data
public class Scenario {
private String name;
}
} }
package com.ruoyi.service.impl; package com.ruoyi.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.domain.TestUseCase; import com.ruoyi.domain.TestUseCase;
import com.ruoyi.domain.vo.CaseResultVO;
import com.ruoyi.domain.vo.TestUsecaseVO; import com.ruoyi.domain.vo.TestUsecaseVO;
import com.ruoyi.service.TestUseCaseService; import com.ruoyi.service.TestUseCaseService;
import com.ruoyi.mapper.TestUseCaseMapper; import com.ruoyi.mapper.TestUseCaseMapper;
import com.ruoyi.web.request.TestUseCaseByScenarioRequest;
import com.ruoyi.web.request.TestUseCaseIdListRequest; import com.ruoyi.web.request.TestUseCaseIdListRequest;
import com.ruoyi.web.request.TestUserCaseRequest; import com.ruoyi.web.request.TestUserCaseRequest;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -23,6 +30,8 @@ import java.util.stream.Collectors; ...@@ -23,6 +30,8 @@ import java.util.stream.Collectors;
@Transactional @Transactional
public class TestUseCaseServiceImpl extends ServiceImpl<TestUseCaseMapper, TestUseCase> implements TestUseCaseService{ public class TestUseCaseServiceImpl extends ServiceImpl<TestUseCaseMapper, TestUseCase> implements TestUseCaseService{
private String describeCaseList = "https://10.12.48.78:8090/DescribeCaseList";
@Autowired @Autowired
private TestUseCaseMapper testUseCaseMapper; private TestUseCaseMapper testUseCaseMapper;
...@@ -46,6 +55,39 @@ public class TestUseCaseServiceImpl extends ServiceImpl<TestUseCaseMapper, TestU ...@@ -46,6 +55,39 @@ public class TestUseCaseServiceImpl extends ServiceImpl<TestUseCaseMapper, TestU
return list.stream().map(TestUsecaseVO::getCaseId).collect(Collectors.toList()); return list.stream().map(TestUsecaseVO::getCaseId).collect(Collectors.toList());
} }
/**
* 通过测试场景获取所绑定的测试用例
* @param request
* @return
*/
@Override
public List<String> selectCaseByScenario(TestUseCaseByScenarioRequest request) {
// 根据场景名遍历查询所绑定用例
List<String> resultList = new ArrayList<>();
request.getScenarioNameList()
.forEach(scenarioName -> {
Map<String, Object> map = new HashMap<>();
map.put("scenario", scenarioName);
JSONObject jsonObject = callThirdPartyInterface(describeCaseList, map);
List<String> list = jsonObject.getList("case_list", CaseResultVO.class)
.stream().map(CaseResultVO::getId).collect(Collectors.toList());
resultList.addAll(list);
});
return resultList;
}
/**
* 调用第三方接口
* @param url
* @param map
* @return
*/
@Override
public JSONObject callThirdPartyInterface(String url, Map<String, Object> map) {
String result = HttpUtil.post(url, JSONObject.toJSONString(map));
return JSONObject.parseObject(result);
}
} }
......
...@@ -6,15 +6,13 @@ import com.ruoyi.service.ModelTestTaskService; ...@@ -6,15 +6,13 @@ import com.ruoyi.service.ModelTestTaskService;
import com.ruoyi.web.request.CarReviewTaskViewRequest; import com.ruoyi.web.request.CarReviewTaskViewRequest;
import com.ruoyi.web.request.ModelTestTaskConfirmRequest; import com.ruoyi.web.request.ModelTestTaskConfirmRequest;
import com.ruoyi.web.request.ModelTestTaskSubmitRequest; import com.ruoyi.web.request.ModelTestTaskSubmitRequest;
import com.ruoyi.web.response.ModelTestTaskViewResponse; import com.ruoyi.web.response.ModelTestResponse;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 车型试验任务Controller * 车型试验任务Controller
* 总任务包含 (后)-> NEW (可以)-> 查看、开始 * 总任务包含 (后)-> NEW (可以)-> 查看、开始
...@@ -38,8 +36,8 @@ public class ModelTestTaskController extends BaseController { ...@@ -38,8 +36,8 @@ public class ModelTestTaskController extends BaseController {
*/ */
@ApiOperation("查看车型试验任务详情") @ApiOperation("查看车型试验任务详情")
@PostMapping("/getById") @PostMapping("/getById")
public R<List<ModelTestTaskViewResponse>> view(@Validated @RequestBody CarReviewTaskViewRequest request) { public R<ModelTestResponse> view(@Validated @RequestBody CarReviewTaskViewRequest request) {
List<ModelTestTaskViewResponse> modelTestTaskList = modelTestTaskService.viewModelTestTask(request.getTaskId()); ModelTestResponse modelTestTaskList = modelTestTaskService.viewModelTestTask(request.getTaskId());
return R.ok(modelTestTaskList); return R.ok(modelTestTaskList);
} }
......
package com.ruoyi.web; package com.ruoyi.web;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.domain.vo.QuantityStatisticsVO; import com.ruoyi.domain.vo.*;
import com.ruoyi.domain.vo.StandardCategoryStatisticsVO;
import com.ruoyi.service.StatisticsHomeService; import com.ruoyi.service.StatisticsHomeService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -32,4 +31,19 @@ public class StatisticsHomeController { ...@@ -32,4 +31,19 @@ public class StatisticsHomeController {
public R<List<StandardCategoryStatisticsVO>> selectStandardCategoryStatistics(){ public R<List<StandardCategoryStatisticsVO>> selectStandardCategoryStatistics(){
return R.ok(statisticsHomeService.selectStandardCategoryStatistics()); return R.ok(statisticsHomeService.selectStandardCategoryStatistics());
} }
@ApiOperation("首页任务保密等级占比")
@PostMapping("/confidentialityLevel")
public R<List<ConfidentialityLevelProportionVO>> selectConfidentialityLevelStatistics(){
return R.ok(statisticsHomeService.selectConfidentialityLevelStatistics());
}
@ApiOperation("首页平均检验通过率")
@PostMapping("/averageInspectionRate")
public R<List<AverageInspectionRateVO>> selectAverageInspectionRate(){
return R.ok(statisticsHomeService.selectAverageInspectionRate());
}
@ApiOperation("首页任务情况安排")
@PostMapping("/taskParticipation")
public R<List<TaskParticipationStatisticsVO>> selectTaskParticipationStatistics(){
return R.ok(statisticsHomeService.selectTaskParticipationStatistics());
}
} }
...@@ -3,7 +3,6 @@ package com.ruoyi.web; ...@@ -3,7 +3,6 @@ package com.ruoyi.web;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.domain.Sample;
import com.ruoyi.domain.TestScenario; import com.ruoyi.domain.TestScenario;
import com.ruoyi.service.ITestScenarioService; import com.ruoyi.service.ITestScenarioService;
import com.ruoyi.web.request.TestScenarioRequest; import com.ruoyi.web.request.TestScenarioRequest;
...@@ -14,10 +13,7 @@ import org.apache.skywalking.apm.toolkit.trace.Tags; ...@@ -14,10 +13,7 @@ import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace; import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
...@@ -54,4 +50,13 @@ public class TestScenarioController extends BaseController { ...@@ -54,4 +50,13 @@ public class TestScenarioController extends BaseController {
return R.ok(testScenarioService.selectTestScenarioList(testScenarioRequest)); return R.ok(testScenarioService.selectTestScenarioList(testScenarioRequest));
} }
/**
* 获取测试场景列表(科恩)
*/
@ApiOperation("查询测试场景(科恩)")
@PostMapping("/getScenarioList")
public R<List<String>> getScenarioList(){
return R.ok(testScenarioService.selectScenarioList());
}
} }
package com.ruoyi.web; package com.ruoyi.web;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.domain.TestUseCase; import com.ruoyi.domain.TestUseCase;
import com.ruoyi.service.TestUseCaseService; import com.ruoyi.service.TestUseCaseService;
import com.ruoyi.web.request.TestUseCaseByScenarioRequest;
import com.ruoyi.web.request.TestUseCaseIdListRequest; import com.ruoyi.web.request.TestUseCaseIdListRequest;
import com.ruoyi.web.request.TestUserCaseRequest; import com.ruoyi.web.request.TestUserCaseRequest;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -41,10 +41,20 @@ public class TestUserCaseController extends BaseController{ ...@@ -41,10 +41,20 @@ public class TestUserCaseController extends BaseController{
* @param request * @param request
* @return * @return
*/ */
@Anonymous
@ApiOperation("根据场景查询用例ID集合") @ApiOperation("根据场景查询用例ID集合")
@PostMapping("/getCaseIdList") @PostMapping("/getCaseIdList")
public R<List<String>> getCaseIdList(@Validated @RequestBody TestUseCaseIdListRequest request) { public R<List<String>> getCaseIdList(@Validated @RequestBody TestUseCaseIdListRequest request) {
return R.ok(testUseCaseService.selectCaseIdList(request)); return R.ok(testUseCaseService.selectCaseIdList(request));
} }
/**
* 通过测试场景获取所绑定的测试用例
* @param request
* @return
*/
@ApiOperation("根据场景查询用例ID集合(科恩)")
@PostMapping("/getCaseByScenario")
public R<List<String>> getCaseByScenario(@Validated @RequestBody TestUseCaseByScenarioRequest request) {
return R.ok(testUseCaseService.selectCaseByScenario(request));
}
} }
...@@ -42,4 +42,7 @@ public class ReviewStandardListByPageRequest extends PageDomain { ...@@ -42,4 +42,7 @@ public class ReviewStandardListByPageRequest extends PageDomain {
*/ */
@ApiModelProperty("文本内容") @ApiModelProperty("文本内容")
private String text; private String text;
@ApiModelProperty("测试方法")
private String testMethod;
} }
package com.ruoyi.web.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 通过测试场景获取测试用例ID集合 DTO
* @author gxk
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("通过测试场景获取测试用例ID集合 DTO")
public class TestUseCaseByScenarioRequest {
@ApiModelProperty("测试场景名称集合")
private List<String> scenarioNameList;
}
...@@ -8,6 +8,9 @@ import lombok.Data; ...@@ -8,6 +8,9 @@ import lombok.Data;
@Data @Data
public class DataStatisticsResponse { public class DataStatisticsResponse {
@ApiModelProperty("是否存在体系审查")
private Boolean systemExist;
@ApiModelProperty("体系用例审查通过率") @ApiModelProperty("体系用例审查通过率")
private Double systemDetailsPass; private Double systemDetailsPass;
...@@ -38,6 +41,9 @@ public class DataStatisticsResponse { ...@@ -38,6 +41,9 @@ public class DataStatisticsResponse {
@ApiModelProperty("体系标准审查中") @ApiModelProperty("体系标准审查中")
private Integer systemStandardsUnderNum; private Integer systemStandardsUnderNum;
@ApiModelProperty("是否存在车型审查")
private Boolean carExist;
@ApiModelProperty(" 车型审查用例审查通过率") @ApiModelProperty(" 车型审查用例审查通过率")
private Double carDetailsPass; private Double carDetailsPass;
...@@ -68,6 +74,9 @@ public class DataStatisticsResponse { ...@@ -68,6 +74,9 @@ public class DataStatisticsResponse {
@ApiModelProperty(" 车型审查标准审查中") @ApiModelProperty(" 车型审查标准审查中")
private Integer carStandardsUnderNum; private Integer carStandardsUnderNum;
@ApiModelProperty("是否存在车型试验")
private Boolean testExist;
@ApiModelProperty(" 车型试验用例审查通过率") @ApiModelProperty(" 车型试验用例审查通过率")
private Double testDetailsPass; private Double testDetailsPass;
......
package com.ruoyi.web.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 车型试验查看VO类
* @author gxk
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("车型试验查看VO类")
public class ModelTestResponse {
@ApiModelProperty("任务编号")
private String taskNo;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("委托单位")
private String entrustedUnit;
@ApiModelProperty("子任务状态")
private String taskStatus;
@ApiModelProperty("审查表单概要")
private List<ModelTestTaskViewResponse> modelTestTaskViewResponseList;
}
...@@ -121,4 +121,7 @@ public class TaskFindResponse { ...@@ -121,4 +121,7 @@ public class TaskFindResponse {
@ApiModelProperty("试验方案ID") @ApiModelProperty("试验方案ID")
private String testSchemeId; private String testSchemeId;
@ApiModelProperty("是否选择场景")
private Boolean taskScenario;
} }
package com.ruoyi.web.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("任务场景VO")
public class TaskScenarioResponse {
@ApiModelProperty("任务id")
private Long taskId;
@ApiModelProperty("场景数量")
private Long num;
}
package com.ruoyi.web.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("检验员VO")
public class UserNameResponse {
@ApiModelProperty("检验员id")
private Long userId;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("部门名称")
private String deptName;
}
...@@ -54,5 +54,14 @@ ...@@ -54,5 +54,14 @@
SELECT id, passed, comment, images_url, review_details_id, task_id, user_id, user_name, last_modify_time, catalogue, review_enterprise_archive_id, file_name SELECT id, passed, comment, images_url, review_details_id, task_id, user_id, user_name, last_modify_time, catalogue, review_enterprise_archive_id, file_name
FROM t_review_details_result WHERE review_details_id = #{detailsId} FROM t_review_details_result WHERE review_details_id = #{detailsId}
</select> </select>
<select id="findByResultList" resultType="com.ruoyi.web.response.UserNameResponse">
SELECT s.user_id userId, s.nick_name name, sd.dept_name deptName
FROM sys_user s
LEFT JOIN sys_dept sd ON s.dept_id = sd.dept_id
WHERE s.user_id IN
<foreach item="item" collection="resultList" open="(" separator="," close=")">
#{item.userId}
</foreach>
</select>
</mapper> </mapper>
...@@ -41,7 +41,10 @@ ...@@ -41,7 +41,10 @@
<select id="selectReviewStandardList" parameterType="com.ruoyi.web.request.ReviewStandardListByPageRequest" resultType="com.ruoyi.web.response.ReviewStandardResponse"> <select id="selectReviewStandardList" parameterType="com.ruoyi.web.request.ReviewStandardListByPageRequest" resultType="com.ruoyi.web.response.ReviewStandardResponse">
select select
id, chapter, text id,
chapter,
text,
test_method AS testMethod
from from
t_review_standard t_review_standard
<where> <where>
...@@ -49,6 +52,7 @@ ...@@ -49,6 +52,7 @@
<if test="type != null and type != ''"> and `type` = #{type} </if> <if test="type != null and type != ''"> and `type` = #{type} </if>
<if test="chapter != null and chapter != ''"> and chapter like concat('%', #{chapter}, '%') </if> <if test="chapter != null and chapter != ''"> and chapter like concat('%', #{chapter}, '%') </if>
<if test="text != null and text != ''"> and text like concat('%', #{text}, '%') </if> <if test="text != null and text != ''"> and text like concat('%', #{text}, '%') </if>
<if test="testMethod != null and testMethod != ''"> and test_method like concat('%', #{testMethod}, '%') </if>
</where> </where>
ORDER BY ORDER BY
chapter chapter
......
...@@ -30,4 +30,7 @@ ...@@ -30,4 +30,7 @@
FROM t_standard WHERE id = #{id} FROM t_standard WHERE id = #{id}
</select> </select>
<select id="selectListAll" resultMap="BaseResultMap">
SELECT id, name, standard_no, file,standard_type,standard_status,release_date,implementation_date FROM t_standard
</select>
</mapper> </mapper>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
SELECT SELECT
( SELECT count( id ) FROM t_standard ) AS standardQuantity, ( SELECT count( id ) FROM t_standard ) AS standardQuantity,
( SELECT count( id ) FROM t_test_usecase ) AS numberUseCases, ( SELECT count( id ) FROM t_test_usecase ) AS numberUseCases,
( SELECT count( id ) FROM t_task ) AS numberTasks, ( SELECT count( id ) FROM t_task WHERE task_status != 'TEMPORARILY' ) AS numberTasks,
( SELECT count( id ) FROM t_automobile_enterprise WHERE deleted = 0 ) AS numberCompanies, ( SELECT count( id ) FROM t_automobile_enterprise WHERE deleted = 0 ) AS numberCompanies,
( (
SELECT SELECT
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
( SELECT count( id ) FROM t_test_type ) AS numberMethods, ( SELECT count( id ) FROM t_test_type ) AS numberMethods,
( SELECT count( id ) FROM t_task WHERE vehicle_information_url IS NOT NULL ) AS numberReports, ( SELECT count( id ) FROM t_task WHERE vehicle_information_url IS NOT NULL ) AS numberReports,
( SELECT count( id ) FROM t_task WHERE task_status = 'FINISH' ) AS completedTaskNumber, ( SELECT count( id ) FROM t_task WHERE task_status = 'FINISH' ) AS completedTaskNumber,
( SELECT count( id ) FROM t_task WHERE task_status = 'NEW' OR task_status = 'PENDING' ) AS executeTasksNumber ( SELECT count( id ) FROM t_task WHERE task_status = 'NEW' OR task_status = 'PENDING' OR task_status = 'SIGNED') AS executeTasksNumber
</select> </select>
<select id="selectStandardCategoryStatistics" resultType="com.ruoyi.domain.vo.StandardCategoryStatisticsVO"> <select id="selectStandardCategoryStatistics" resultType="com.ruoyi.domain.vo.StandardCategoryStatisticsVO">
...@@ -38,4 +38,36 @@ ...@@ -38,4 +38,36 @@
GROUP BY GROUP BY
standard_type standard_type
</select> </select>
<select id="selectConfidentialityLevelStatistics" resultType="com.ruoyi.domain.vo.ConfidentialityLevelProportionVO">
SELECT
count( id ) AS value,
confidentiality_level AS name
FROM
t_task
GROUP BY
confidentiality_level
</select>
<select id="selectInspectionItemPassedNum" resultType="com.ruoyi.domain.vo.InspectionItemPassedNumVO">
SELECT
( SELECT COUNT( id ) FROM t_system_review_task WHERE task_status = 'FINISH' ) AS sysReviewcompletedNum,
( SELECT COUNT( id ) FROM t_system_review_task WHERE task_status = 'FINISH' AND task_result = 'PASS' ) AS sysReviewPassedNum,
( SELECT COUNT( id ) FROM t_car_review_task WHERE task_status = 'FINISH' ) AS carReviewcompletedNum,
( SELECT COUNT( id ) FROM t_car_review_task WHERE task_status = 'FINISH' AND task_result = 'PASS' ) AS carReviewPassedNum,
( SELECT COUNT( id ) FROM t_model_test_task WHERE task_status = 'FINISH' ) AS modelTestCompletedNum,
( SELECT COUNT( id ) FROM t_model_test_task WHERE task_status = 'FINISH' AND task_result = 'PASS' ) AS modelTestPassedNum
</select>
<select id="selectTaskParticipationStatistics" resultType="com.ruoyi.domain.vo.TaskParticipationStatisticsVO">
SELECT
count( task_id ) AS taskNum,
tur.user_id,
su.nick_name AS userName
FROM
t_task_user_relation tur
LEFT JOIN sys_user su ON su.user_id = tur.user_id
GROUP BY
tur.user_id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -182,6 +182,8 @@ ...@@ -182,6 +182,8 @@
t.task_begin_time, t.task_begin_time,
t.task_end_time, t.task_end_time,
t.standard_no, t.standard_no,
t.task_list,
t.pointer,
srt.task_begin_time system_task_begin_time, srt.task_begin_time system_task_begin_time,
srt.task_end_time system_task_end_time, srt.task_end_time system_task_end_time,
srt.task_status review_status, srt.task_status review_status,
...@@ -190,7 +192,8 @@ ...@@ -190,7 +192,8 @@
crt.task_status car_review_status, crt.task_status car_review_status,
mtt.task_begin_time test_begin_time, mtt.task_begin_time test_begin_time,
mtt.task_end_time test_end_time, mtt.task_end_time test_end_time,
mtt.task_status test_status mtt.task_status test_status,
mtt.test_scheme_id testSchemeId
FROM t_task t FROM t_task t
left join t_system_review_task srt on t.system_review_task_id = srt.id left join t_system_review_task srt on t.system_review_task_id = srt.id
left join t_car_review_task crt on t.car_review_task_id = crt.id left join t_car_review_task crt on t.car_review_task_id = crt.id
...@@ -304,11 +307,13 @@ ...@@ -304,11 +307,13 @@
t.entrusted_unit_address AS clientAddress, t.entrusted_unit_address AS clientAddress,
t.entrusted_unit_phone AS entrustedUnitTelephone, t.entrusted_unit_phone AS entrustedUnitTelephone,
t.entrusted_unit_code AS clientPostalCode, t.entrusted_unit_code AS clientPostalCode,
GROUP_CONCAT(distinct s.sample_name) AS sampleName, GROUP_CONCAT(s.sample_name) AS sampleName,
t.product_model AS typeSpecification, t.product_model AS typeSpecification,
DATE_FORMAT(t.task_begin_time, '%Y年%m月%d日') AS taskBeginTime,
DATE_FORMAT(t.task_end_time, '%Y年%m月%d日') AS taskEndTime,
concat(st.standard_no, ' ', st.name) AS inspectionBasis, concat(st.standard_no, ' ', st.name) AS inspectionBasis,
GROUP_CONCAT(distinct ae.enterprise_name) AS productionEnterprise, GROUP_CONCAT(distinct ae.enterprise_name) AS productionEnterprise,
GROUP_CONCAT(distinct s.sample_sender) AS sampleSender, GROUP_CONCAT(s.sample_sender) AS sampleSender,
GROUP_CONCAT(distinct DATE_FORMAT(s.delivery_date, '%Y-%m-%d')) AS sampleDeliveryDate, GROUP_CONCAT(distinct DATE_FORMAT(s.delivery_date, '%Y-%m-%d')) AS sampleDeliveryDate,
count(s.id) AS sampleQuantity, count(s.id) AS sampleQuantity,
CONVERT(sum(s.number_of_samples), UNSIGNED) AS sampleSum, CONVERT(sum(s.number_of_samples), UNSIGNED) AS sampleSum,
...@@ -319,13 +324,20 @@ ...@@ -319,13 +324,20 @@
GROUP_CONCAT(distinct s.identification_code) AS vehicleIdentificationNumber, GROUP_CONCAT(distinct s.identification_code) AS vehicleIdentificationNumber,
t.task_list AS inspectionItem, t.task_list AS inspectionItem,
DATE_FORMAT(t.create_time, '%Y-%m-%d') AS productionDate, DATE_FORMAT(t.create_time, '%Y-%m-%d') AS productionDate,
GROUP_CONCAT(distinct s.trademark) AS brandImage GROUP_CONCAT(distinct s.trademark) AS brandImage,
GROUP_CONCAT(s.sample_photos) AS samplePhotos,
d.address AS inspectionCenterAddress,
d.phone AS inspectionCenterTelephone,
d.postcode AS inspectionCenterPostcode,
d.dept_name AS inspectionCenterName
from from
t_task t t_task t
left join t_task_sample_relation tsr on t.id = tsr.task_id left join t_task_sample_relation tsr on t.id = tsr.task_id
left join t_sample s on tsr.sample_id = s.id left join t_sample s on tsr.sample_id = s.id
left join t_automobile_enterprise ae on s.manufacturing_enterprise_id = ae.id left join t_automobile_enterprise ae on s.manufacturing_enterprise_id = ae.id
left join t_standard st on t.standard_id = st.id left join t_standard st on t.standard_id = st.id
left join sys_user u on t.task_initiator_id = u.user_id
left join sys_dept d on u.dept_id = d.dept_id
where t.id = #{taskId} where t.id = #{taskId}
group by t.id group by t.id
</select> </select>
...@@ -342,6 +354,41 @@ ...@@ -342,6 +354,41 @@
FROM t_task FROM t_task
WHERE task_name = #{taskName} WHERE task_name = #{taskName}
</select> </select>
<select id="findByTaskList" resultType="com.ruoyi.web.response.TaskScenarioResponse">
SELECT COUNT(*) num, task_id as taskId FROM t_task_scenario_relation
WHERE task_id IN
<foreach item="item" collection="responses" open="(" separator="," close=")">
#{item.id}
</foreach>
GROUP BY task_id
</select>
<select id="findByUserIdList" resultType="com.ruoyi.web.response.UserNameResponse">
SELECT s.user_id userId, s.nick_name name, sd.dept_name deptName
FROM sys_user s
LEFT JOIN sys_dept sd ON s.dept_id = sd.dept_id
WHERE s.user_id IN
<foreach item="item" collection="responses" open="(" separator="," close=")">
#{item.leaderId}
</foreach>
</select>
<select id="findByRelation" resultType="com.ruoyi.web.response.UserNameResponse">
SELECT s.user_id userId, s.nick_name name, sd.dept_name deptName
FROM sys_user s
LEFT JOIN sys_dept sd ON s.dept_id = sd.dept_id
WHERE s.user_id IN
<foreach item="item" collection="relation" open="(" separator="," close=")">
#{item.userId}
</foreach>
</select>
<select id="findByFinishTaskList" resultType="com.ruoyi.web.response.UserNameResponse">
SELECT s.user_id userId, s.nick_name name, sd.dept_name deptName
FROM sys_user s
LEFT JOIN sys_dept sd ON s.dept_id = sd.dept_id
WHERE s.user_id IN
<foreach item="item" collection="taskList" open="(" separator="," close=")">
#{item.leaderId}
</foreach>
</select>
</mapper> </mapper>
...@@ -23,4 +23,13 @@ ...@@ -23,4 +23,13 @@
task_id = #{taskId} task_id = #{taskId}
</if> </if>
</select> </select>
<select id="findByIdList" resultType="com.ruoyi.domain.TaskUserRelation">
select user_id as userId,
status
from sys_user
WHERE sys_user.user_id IN
<foreach item="item" collection="idList" open="(" separator="," close=")">
#{item.userId}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -23,6 +23,11 @@ ...@@ -23,6 +23,11 @@
FROM t_test_records FROM t_test_records
WHERE project_id = #{id} WHERE project_id = #{id}
</select> </select>
<select id="countResult" resultType="java.lang.Long">
SELECT COUNT(*) FROM t_test_records
WHERE project_id = #{projectId}
GROUP BY project_id
</select>
</mapper> </mapper>
...@@ -49,8 +49,7 @@ ...@@ -49,8 +49,7 @@
</select> </select>
<select id="selectListByTaskId" resultType="com.ruoyi.domain.vo.TestUsecaseVO"> <select id="selectListByTaskId" resultType="com.ruoyi.domain.vo.TestUsecaseVO">
select select tu.id,
tu.id,
tu.case_id caseId, tu.case_id caseId,
ts.test_scenario testScenario, ts.test_scenario testScenario,
tt.test_type testType, tt.test_type testType,
...@@ -64,8 +63,7 @@ ...@@ -64,8 +63,7 @@
rs.text, rs.text,
rs.test_method testMethod, rs.test_method testMethod,
tr.test_result testResult tr.test_result testResult
from from t_test_usecase tu
t_test_usecase tu
left join t_test_scenario ts on tu.test_scenario_id = ts.id left join t_test_scenario ts on tu.test_scenario_id = ts.id
left join t_test_type tt on tu.test_type_id = tt.id left join t_test_type tt on tu.test_type_id = tt.id
left join t_review_standard rs on tu.review_standard_id = rs.id left join t_review_standard rs on tu.review_standard_id = rs.id
...@@ -73,8 +71,9 @@ ...@@ -73,8 +71,9 @@
left join t_task t on tsr.task_id = t.id left join t_task t on tsr.task_id = t.id
left join t_model_test_task mtt on mtt.id = t.model_test_task_id left join t_model_test_task mtt on mtt.id = t.model_test_task_id
left join t_test_records tr on tu.case_id = tr.usecase_id left join t_test_records tr on tu.case_id = tr.usecase_id
where where mtt.id = #{id}
mtt.id = #{id} group by tu.id, tu.case_id, ts.test_scenario, tt.test_type, tu.usecase_no, tu.name, tu.tools, tu.input,
tu.description, tu.review_standard_id, rs.chapter, rs.text, rs.test_method, tr.test_result
</select> </select>
<select id="selectOptionalUsecase" resultType="com.ruoyi.domain.vo.OptionalUseCasesVO"> <select id="selectOptionalUsecase" resultType="com.ruoyi.domain.vo.OptionalUseCasesVO">
......
...@@ -20,6 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -20,6 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserPhotoStorageList" parameterType="com.ruoyi.domain.UserPhotoStorage" resultMap="UserPhotoStorageResult"> <select id="selectUserPhotoStorageList" parameterType="com.ruoyi.domain.UserPhotoStorage" resultMap="UserPhotoStorageResult">
<include refid="selectUserPhotoStorageVo"/> <include refid="selectUserPhotoStorageVo"/>
<where> <where>
deleted = 0
<if test="userId != null "> and user_id = #{userId}</if> <if test="userId != null "> and user_id = #{userId}</if>
<if test="username != null and username != ''"> and username like concat('%', #{username}, '%')</if> <if test="username != null and username != ''"> and username like concat('%', #{username}, '%')</if>
</where> </where>
......
...@@ -35,7 +35,6 @@ public class SysLogininforController extends BaseController ...@@ -35,7 +35,6 @@ public class SysLogininforController extends BaseController
@Autowired @Autowired
private SysPasswordService passwordService; private SysPasswordService passwordService;
@PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysLogininfor logininfor) public TableDataInfo list(SysLogininfor logininfor)
{ {
...@@ -45,7 +44,6 @@ public class SysLogininforController extends BaseController ...@@ -45,7 +44,6 @@ public class SysLogininforController extends BaseController
} }
@Log(title = "登录日志", businessType = BusinessType.EXPORT) @Log(title = "登录日志", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('monitor:logininfor:export')")
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, SysLogininfor logininfor) public void export(HttpServletResponse response, SysLogininfor logininfor)
{ {
...@@ -54,7 +52,6 @@ public class SysLogininforController extends BaseController ...@@ -54,7 +52,6 @@ public class SysLogininforController extends BaseController
util.exportExcel(response, list, "登录日志"); util.exportExcel(response, list, "登录日志");
} }
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
@Log(title = "登录日志", businessType = BusinessType.DELETE) @Log(title = "登录日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{infoIds}") @DeleteMapping("/{infoIds}")
public AjaxResult remove(@PathVariable Long[] infoIds) public AjaxResult remove(@PathVariable Long[] infoIds)
...@@ -62,7 +59,6 @@ public class SysLogininforController extends BaseController ...@@ -62,7 +59,6 @@ public class SysLogininforController extends BaseController
return toAjax(logininforService.deleteLogininforByIds(infoIds)); return toAjax(logininforService.deleteLogininforByIds(infoIds));
} }
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
@Log(title = "登录日志", businessType = BusinessType.CLEAN) @Log(title = "登录日志", businessType = BusinessType.CLEAN)
@DeleteMapping("/clean") @DeleteMapping("/clean")
public AjaxResult clean() public AjaxResult clean()
...@@ -71,7 +67,6 @@ public class SysLogininforController extends BaseController ...@@ -71,7 +67,6 @@ public class SysLogininforController extends BaseController
return success(); return success();
} }
@PreAuthorize("@ss.hasPermi('monitor:logininfor:unlock')")
@Log(title = "账户解锁", businessType = BusinessType.OTHER) @Log(title = "账户解锁", businessType = BusinessType.OTHER)
@GetMapping("/unlock/{userName}") @GetMapping("/unlock/{userName}")
public AjaxResult unlock(@PathVariable("userName") String userName) public AjaxResult unlock(@PathVariable("userName") String userName)
......
...@@ -31,7 +31,6 @@ public class SysOperlogController extends BaseController ...@@ -31,7 +31,6 @@ public class SysOperlogController extends BaseController
@Autowired @Autowired
private ISysOperLogService operLogService; private ISysOperLogService operLogService;
@PreAuthorize("@ss.hasPermi('monitor:operlog:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysOperLog operLog) public TableDataInfo list(SysOperLog operLog)
{ {
...@@ -41,7 +40,6 @@ public class SysOperlogController extends BaseController ...@@ -41,7 +40,6 @@ public class SysOperlogController extends BaseController
} }
@Log(title = "操作日志", businessType = BusinessType.EXPORT) @Log(title = "操作日志", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('monitor:operlog:export')")
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, SysOperLog operLog) public void export(HttpServletResponse response, SysOperLog operLog)
{ {
...@@ -51,7 +49,6 @@ public class SysOperlogController extends BaseController ...@@ -51,7 +49,6 @@ public class SysOperlogController extends BaseController
} }
@Log(title = "操作日志", businessType = BusinessType.DELETE) @Log(title = "操作日志", businessType = BusinessType.DELETE)
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/{operIds}") @DeleteMapping("/{operIds}")
public AjaxResult remove(@PathVariable Long[] operIds) public AjaxResult remove(@PathVariable Long[] operIds)
{ {
...@@ -59,7 +56,6 @@ public class SysOperlogController extends BaseController ...@@ -59,7 +56,6 @@ public class SysOperlogController extends BaseController
} }
@Log(title = "操作日志", businessType = BusinessType.CLEAN) @Log(title = "操作日志", businessType = BusinessType.CLEAN)
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/clean") @DeleteMapping("/clean")
public AjaxResult clean() public AjaxResult clean()
{ {
......
...@@ -35,7 +35,6 @@ public class SysNoticeController extends BaseController ...@@ -35,7 +35,6 @@ public class SysNoticeController extends BaseController
/** /**
* 获取通知公告列表 * 获取通知公告列表
*/ */
@PreAuthorize("@ss.hasPermi('system:notice:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysNotice notice) public TableDataInfo list(SysNotice notice)
{ {
...@@ -47,7 +46,6 @@ public class SysNoticeController extends BaseController ...@@ -47,7 +46,6 @@ public class SysNoticeController extends BaseController
/** /**
* 根据通知公告编号获取详细信息 * 根据通知公告编号获取详细信息
*/ */
@PreAuthorize("@ss.hasPermi('system:notice:query')")
@GetMapping(value = "/{noticeId}") @GetMapping(value = "/{noticeId}")
public AjaxResult getInfo(@PathVariable Long noticeId) public AjaxResult getInfo(@PathVariable Long noticeId)
{ {
...@@ -57,7 +55,6 @@ public class SysNoticeController extends BaseController ...@@ -57,7 +55,6 @@ public class SysNoticeController extends BaseController
/** /**
* 新增通知公告 * 新增通知公告
*/ */
@PreAuthorize("@ss.hasPermi('system:notice:add')")
@Log(title = "通知公告", businessType = BusinessType.INSERT) @Log(title = "通知公告", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@Validated @RequestBody SysNotice notice) public AjaxResult add(@Validated @RequestBody SysNotice notice)
...@@ -69,7 +66,6 @@ public class SysNoticeController extends BaseController ...@@ -69,7 +66,6 @@ public class SysNoticeController extends BaseController
/** /**
* 修改通知公告 * 修改通知公告
*/ */
@PreAuthorize("@ss.hasPermi('system:notice:edit')")
@Log(title = "通知公告", businessType = BusinessType.UPDATE) @Log(title = "通知公告", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@Validated @RequestBody SysNotice notice) public AjaxResult edit(@Validated @RequestBody SysNotice notice)
...@@ -81,7 +77,6 @@ public class SysNoticeController extends BaseController ...@@ -81,7 +77,6 @@ public class SysNoticeController extends BaseController
/** /**
* 删除通知公告 * 删除通知公告
*/ */
@PreAuthorize("@ss.hasPermi('system:notice:remove')")
@Log(title = "通知公告", businessType = BusinessType.DELETE) @Log(title = "通知公告", businessType = BusinessType.DELETE)
@DeleteMapping("/{noticeIds}") @DeleteMapping("/{noticeIds}")
public AjaxResult remove(@PathVariable Long[] noticeIds) public AjaxResult remove(@PathVariable Long[] noticeIds)
......
...@@ -90,7 +90,7 @@ public class SysUserController extends BaseController ...@@ -90,7 +90,7 @@ public class SysUserController extends BaseController
role.setRoleName(request.getRoleName()); role.setRoleName(request.getRoleName());
List<SysRole> roleList = roleService.selectRoleList(role); List<SysRole> roleList = roleService.selectRoleList(role);
if (CollUtil.isNotEmpty(roleList)) { if (CollUtil.isNotEmpty(roleList)) {
List<SysUser> list = userService.selectUserListByRoleId(roleList.get(0).getRoleId()); List<SysUser> list = userService.selectUserByRoleInDept(roleList.get(0).getRoleId());
return R.ok(list); return R.ok(list);
} else { } else {
return R.fail("角色不存在"); return R.fail("角色不存在");
......
...@@ -52,6 +52,12 @@ public class SysDept extends BaseEntity ...@@ -52,6 +52,12 @@ public class SysDept extends BaseEntity
/** 父部门名称 */ /** 父部门名称 */
private String parentName; private String parentName;
/** 地址 */
private String address;
/** 邮编 */
private String postcode;
/** 子部门 */ /** 子部门 */
private List<SysDept> children = new ArrayList<SysDept>(); private List<SysDept> children = new ArrayList<SysDept>();
...@@ -181,6 +187,22 @@ public class SysDept extends BaseEntity ...@@ -181,6 +187,22 @@ public class SysDept extends BaseEntity
this.children = children; this.children = children;
} }
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPostcode() {
return postcode;
}
public void setPostcode(String postcode) {
this.postcode = postcode;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
...@@ -198,6 +220,8 @@ public class SysDept extends BaseEntity ...@@ -198,6 +220,8 @@ public class SysDept extends BaseEntity
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("address",getAddress())
.append("postcode",getPostcode())
.toString(); .toString();
} }
} }
...@@ -20,14 +20,19 @@ import java.util.regex.Pattern; ...@@ -20,14 +20,19 @@ import java.util.regex.Pattern;
public class PdfBaseWriter extends Document{ public class PdfBaseWriter extends Document{
// ---------------------------------默认参数--------------------------------- // ---------------------------------默认参数---------------------------------
// public final String FONT_NAME_ST_SONG_LIGHT = "STSongStd-Light";
// public final String FONT_ENCODING_UNI_GB_UCS2_H = "UniGB-UCS2-H";
/** /**
* 中文字体 * 中文字体
*/ */
public final String FONT_NAME_ST_SONG_LIGHT = "STSongStd-Light"; public final String FONT_NAME_ST_SONG_LIGHT = "/fonts/STSong.TTF";
/** /**
* 中文字体编码 * 中文字体编码
*/ */
public final String FONT_ENCODING_UNI_GB_UCS2_H = "UniGB-UCS2-H"; public final String FONT_ENCODING_UNI_GB_UCS2_H = BaseFont.IDENTITY_H;
//---------------------------------常用字体/颜色--------------------------------- //---------------------------------常用字体/颜色---------------------------------
/** /**
......
...@@ -219,4 +219,10 @@ public interface ISysUserService ...@@ -219,4 +219,10 @@ public interface ISysUserService
*/ */
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName); public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
/**
* 通过角色ID查询在同部门下的所有用户
* @param roleId
* @return
*/
List<SysUser> selectUserByRoleInDept(Long roleId);
} }
...@@ -4,6 +4,9 @@ import java.util.ArrayList; ...@@ -4,6 +4,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.validation.Validator; import javax.validation.Validator;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.system.mapper.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -22,11 +25,6 @@ import com.ruoyi.common.utils.spring.SpringUtils; ...@@ -22,11 +25,6 @@ import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysPostMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserPostMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
...@@ -61,6 +59,9 @@ public class SysUserServiceImpl implements ISysUserService ...@@ -61,6 +59,9 @@ public class SysUserServiceImpl implements ISysUserService
@Autowired @Autowired
protected Validator validator; protected Validator validator;
@Autowired
private SysDeptMapper sysDeptMapper;
@Override @Override
public List<SysUser> selectUserListByRoleId(Long roleId) { public List<SysUser> selectUserListByRoleId(Long roleId) {
return userMapper.selectUserListByRoleId(roleId); return userMapper.selectUserListByRoleId(roleId);
...@@ -552,4 +553,46 @@ public class SysUserServiceImpl implements ISysUserService ...@@ -552,4 +553,46 @@ public class SysUserServiceImpl implements ISysUserService
} }
return successMsg.toString(); return successMsg.toString();
} }
/**
* 通过角色ID查询在同部门下的所有用户
* @param roleId
* @return
*/
@Override
public List<SysUser> selectUserByRoleInDept(Long roleId) {
List<SysUser> list = new ArrayList<>();
// 获取当前登陆用户的部门
Long deptId = SecurityUtils.getDeptId();
// 获取当前角色下的所有用户
List<SysUser> userList = selectUserListByRoleId(roleId);
// 查询出当前用户所在部门以及所有子部门
List<SysDept> deptList = sysDeptMapper.selectDeptList(new SysDept());
List<Long> userListInDept = new ArrayList<>();
userListInDept.add(deptId);
getAllDeptId(deptList, deptId, userListInDept);
for (SysUser user : userList) {
if (userListInDept.contains(user.getDeptId())) {
list.add(user);
}
}
return list;
}
/**
* 递归
* 查询出当前用户所在部门以及所有子部门
* @param deptList 传入的部门集合
* @param deptId 查询需要的部门ID
* @param userListInDept 存入的指定部门集合
*/
private void getAllDeptId(List<SysDept> deptList, Long deptId, List<Long> userListInDept) {
deptList.stream()
.filter(dept -> dept.getParentId().equals(deptId))
.forEach(dept -> {
userListInDept.add(dept.getDeptId());
getAllDeptId(deptList, dept.getDeptId(), userListInDept);
});
}
} }
...@@ -20,10 +20,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -20,10 +20,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="address" column="address" />
<result property="postcode" column="postcode" />
</resultMap> </resultMap>
<sql id="selectDeptVo"> <sql id="selectDeptVo">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time, d.address, d.postcode
from sys_dept d from sys_dept d
</sql> </sql>
...@@ -60,7 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -60,7 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult"> <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
(select dept_name from sys_dept where dept_id = d.parent_id) parent_name (select dept_name from sys_dept where dept_id = d.parent_id) parent_name, d.address, d.postcode
from sys_dept d from sys_dept d
where d.dept_id = #{deptId} where d.dept_id = #{deptId}
</select> </select>
...@@ -99,6 +101,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -99,6 +101,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null and email != ''">email,</if> <if test="email != null and email != ''">email,</if>
<if test="status != null">status,</if> <if test="status != null">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if> <if test="createBy != null and createBy != ''">create_by,</if>
<if test="address != null and address != ''">address,</if>
<if test="postcode != null and postcode != ''">postcode,</if>
create_time create_time
)values( )values(
<if test="deptId != null and deptId != 0">#{deptId},</if> <if test="deptId != null and deptId != 0">#{deptId},</if>
...@@ -111,6 +115,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -111,6 +115,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null and email != ''">#{email},</if> <if test="email != null and email != ''">#{email},</if>
<if test="status != null">#{status},</if> <if test="status != null">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if> <if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="address != null and address != ''">#{address},</if>
<if test="postcode != null and postcode != ''">#{postcode},</if>
sysdate() sysdate()
) )
</insert> </insert>
...@@ -127,6 +133,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -127,6 +133,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null">email = #{email},</if> <if test="email != null">email = #{email},</if>
<if test="status != null and status != ''">status = #{status},</if> <if test="status != null and status != ''">status = #{status},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="address != null and address != ''">address = #{address},</if>
<if test="postcode != null and postcode != ''">postcode = #{postcode},</if>
update_time = sysdate() update_time = sysdate()
</set> </set>
where dept_id = #{deptId} where dept_id = #{deptId}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment