|
@@ -4,20 +4,26 @@ import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
|
|
import cn.com.qmth.stmms.ms.core.domain.Level;
|
|
import cn.com.qmth.stmms.ms.core.domain.Level;
|
|
import cn.com.qmth.stmms.ms.core.domain.MarkLogOperType;
|
|
import cn.com.qmth.stmms.ms.core.domain.MarkLogOperType;
|
|
import cn.com.qmth.stmms.ms.core.domain.MarkStage;
|
|
import cn.com.qmth.stmms.ms.core.domain.MarkStage;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.Paper;
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
|
|
import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
|
|
import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.user.MarkerGroupLeader;
|
|
import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
|
|
import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
|
|
import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
|
|
import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
|
|
import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
|
|
import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
|
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.MarkerGroupLeaderRepo;
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
|
|
+import cn.com.qmth.stmms.ms.marking.service.MarkerGroupLeaderService;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
import javax.persistence.criteria.Predicate;
|
|
import javax.persistence.criteria.Predicate;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
@@ -48,6 +54,9 @@ public class QualityAnalyseController {
|
|
@Autowired
|
|
@Autowired
|
|
MarkUserRepo markUserRepo;
|
|
MarkUserRepo markUserRepo;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ MarkerGroupLeaderService markerGroupLeaderService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 档位占比报表
|
|
* 档位占比报表
|
|
*
|
|
*
|
|
@@ -57,21 +66,22 @@ public class QualityAnalyseController {
|
|
* @param startTime
|
|
* @param startTime
|
|
* @param endTime
|
|
* @param endTime
|
|
*/
|
|
*/
|
|
-// @ApiOperation(value = "档位占比报表接口")
|
|
|
|
@RequestMapping(value = "levelsPropReport", method = RequestMethod.GET)
|
|
@RequestMapping(value = "levelsPropReport", method = RequestMethod.GET)
|
|
public Object levelsPropReport(
|
|
public Object levelsPropReport(
|
|
-// @ApiParam(value = "workId", required = true)
|
|
|
|
@RequestParam Long workId,
|
|
@RequestParam Long workId,
|
|
-// @ApiParam(value = "科目", required = false)
|
|
|
|
@RequestParam(required = false) Subject subject,
|
|
@RequestParam(required = false) Subject subject,
|
|
-// @ApiParam(value = "考点", required = false)
|
|
|
|
@RequestParam(required = false) String areaCode,
|
|
@RequestParam(required = false) String areaCode,
|
|
-// @ApiParam(value = "开始时间", required = false)
|
|
|
|
|
|
+ @RequestParam(required = false) Long groupId,
|
|
@RequestParam(required = false) String startTime,
|
|
@RequestParam(required = false) String startTime,
|
|
-// @ApiParam(value = "结束时间", required = false)
|
|
|
|
@RequestParam(required = false) String endTime) {
|
|
@RequestParam(required = false) String endTime) {
|
|
List fList = new ArrayList();
|
|
List fList = new ArrayList();
|
|
List<Level> levels = levelRepo.findByWorkId(workId);
|
|
List<Level> levels = levelRepo.findByWorkId(workId);
|
|
|
|
+ List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);
|
|
|
|
+ String markerId = null;
|
|
|
|
+ if (!CollectionUtils.isEmpty(markerIds)) {
|
|
|
|
+ markerId = markerIds.stream().map(m -> String.valueOf(m)).collect(Collectors.joining(","));
|
|
|
|
+ }
|
|
|
|
+ String finalMarkerId = markerId;
|
|
levels.forEach(l -> {
|
|
levels.forEach(l -> {
|
|
StringBuffer sql = new StringBuffer();
|
|
StringBuffer sql = new StringBuffer();
|
|
sql.append(" SELECT ");
|
|
sql.append(" SELECT ");
|
|
@@ -81,7 +91,7 @@ public class QualityAnalyseController {
|
|
sql.append(" COUNT(1) total ");
|
|
sql.append(" COUNT(1) total ");
|
|
sql.append(" FROM ");
|
|
sql.append(" FROM ");
|
|
sql.append(" mark_user mu ");
|
|
sql.append(" mark_user mu ");
|
|
- sql.append(" LEFT JOIN ");
|
|
|
|
|
|
+ sql.append(" JOIN ");
|
|
sql.append(" (SELECT ");
|
|
sql.append(" (SELECT ");
|
|
sql.append(" m.* ");
|
|
sql.append(" m.* ");
|
|
sql.append(" FROM ");
|
|
sql.append(" FROM ");
|
|
@@ -92,6 +102,9 @@ public class QualityAnalyseController {
|
|
if (!Objects.isNull(areaCode)) {
|
|
if (!Objects.isNull(areaCode)) {
|
|
sql.append(" and p.area_code = " + areaCode);
|
|
sql.append(" and p.area_code = " + areaCode);
|
|
}
|
|
}
|
|
|
|
+ if (StringUtils.isNotBlank(finalMarkerId)) {
|
|
|
|
+ sql.append(" and m.marker_id in (" + finalMarkerId + ")");
|
|
|
|
+ }
|
|
if (!Objects.isNull(startTime)) {
|
|
if (!Objects.isNull(startTime)) {
|
|
sql.append(" and m.updated_on >= '" + startTime + "'");
|
|
sql.append(" and m.updated_on >= '" + startTime + "'");
|
|
}
|
|
}
|
|
@@ -147,20 +160,16 @@ public class QualityAnalyseController {
|
|
* @param endTime
|
|
* @param endTime
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
-// @ApiOperation(value = "打回次数报表接口")
|
|
|
|
@RequestMapping(value = "callbackReport", method = RequestMethod.GET)
|
|
@RequestMapping(value = "callbackReport", method = RequestMethod.GET)
|
|
public List callbackReport(
|
|
public List callbackReport(
|
|
-// @ApiParam(value = "workId", required = true)
|
|
|
|
@RequestParam Long workId,
|
|
@RequestParam Long workId,
|
|
-// @ApiParam(value = "科目", required = false)
|
|
|
|
@RequestParam(required = false) Subject subject,
|
|
@RequestParam(required = false) Subject subject,
|
|
-// @ApiParam(value = "考点", required = false)
|
|
|
|
@RequestParam(required = false) String areaCode,
|
|
@RequestParam(required = false) String areaCode,
|
|
-// @ApiParam(value = "开始时间", required = false)
|
|
|
|
|
|
+ @RequestParam(required = false) Long groupId,
|
|
@RequestParam(required = false) String startTime,
|
|
@RequestParam(required = false) String startTime,
|
|
-// @ApiParam(value = "结束时间", required = false)
|
|
|
|
@RequestParam(required = false) String endTime) {
|
|
@RequestParam(required = false) String endTime) {
|
|
List list = new ArrayList();
|
|
List list = new ArrayList();
|
|
|
|
+ List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);;
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
@@ -170,6 +179,13 @@ public class QualityAnalyseController {
|
|
if (Objects.nonNull(areaCode)) {
|
|
if (Objects.nonNull(areaCode)) {
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
}
|
|
}
|
|
|
|
+ if(!CollectionUtils.isEmpty(markerIds)){
|
|
|
|
+ CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
|
|
|
|
+ for (Long id : markerIds) {
|
|
|
|
+ in.value(id);
|
|
|
|
+ }
|
|
|
|
+ predicates.add(builder.and(builder.and(in)));
|
|
|
|
+ }
|
|
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
};
|
|
};
|
|
List<MarkTask> markTasks = markTaskRepo.findAll(specification);
|
|
List<MarkTask> markTasks = markTaskRepo.findAll(specification);
|
|
@@ -200,20 +216,16 @@ public class QualityAnalyseController {
|
|
* @param startTime
|
|
* @param startTime
|
|
* @param endTime
|
|
* @param endTime
|
|
*/
|
|
*/
|
|
-// @ApiOperation(value = "差值和报表接口")
|
|
|
|
@RequestMapping(value = "distanceReport", method = RequestMethod.GET)
|
|
@RequestMapping(value = "distanceReport", method = RequestMethod.GET)
|
|
public List distanceReport(
|
|
public List distanceReport(
|
|
-// @ApiParam(value = "workId", required = true)
|
|
|
|
@RequestParam Long workId,
|
|
@RequestParam Long workId,
|
|
-// @ApiParam(value = "科目", required = true)
|
|
|
|
@RequestParam(required = false) Subject subject,
|
|
@RequestParam(required = false) Subject subject,
|
|
-// @ApiParam(value = "考点", required = true)
|
|
|
|
@RequestParam(required = false) String areaCode,
|
|
@RequestParam(required = false) String areaCode,
|
|
-// @ApiParam(value = "开始时间", required = false)
|
|
|
|
|
|
+ @RequestParam(required = false) Long groupId,
|
|
@RequestParam(required = false) String startTime,
|
|
@RequestParam(required = false) String startTime,
|
|
-// @ApiParam(value = "结束时间", required = false)
|
|
|
|
@RequestParam(required = false) String endTime) {
|
|
@RequestParam(required = false) String endTime) {
|
|
List list = new ArrayList();
|
|
List list = new ArrayList();
|
|
|
|
+ List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);;
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
@@ -223,6 +235,13 @@ public class QualityAnalyseController {
|
|
if (Objects.nonNull(areaCode)) {
|
|
if (Objects.nonNull(areaCode)) {
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
}
|
|
}
|
|
|
|
+ if(!CollectionUtils.isEmpty(markerIds)){
|
|
|
|
+ CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
|
|
|
|
+ for (Long id : markerIds) {
|
|
|
|
+ in.value(id);
|
|
|
|
+ }
|
|
|
|
+ predicates.add(builder.and(builder.and(in)));
|
|
|
|
+ }
|
|
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
};
|
|
};
|
|
List<MarkTask> markTasks = markTaskRepo.findAll(specification);
|
|
List<MarkTask> markTasks = markTaskRepo.findAll(specification);
|
|
@@ -258,9 +277,11 @@ public class QualityAnalyseController {
|
|
@RequestParam Long workId,
|
|
@RequestParam Long workId,
|
|
@RequestParam(required = false) Subject subject,
|
|
@RequestParam(required = false) Subject subject,
|
|
@RequestParam(required = false) String areaCode,
|
|
@RequestParam(required = false) String areaCode,
|
|
|
|
+ @RequestParam(required = false) Long groupId,
|
|
@RequestParam(required = false) String startTime,
|
|
@RequestParam(required = false) String startTime,
|
|
@RequestParam(required = false) String endTime) {
|
|
@RequestParam(required = false) String endTime) {
|
|
List list = new ArrayList();
|
|
List list = new ArrayList();
|
|
|
|
+ List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);;
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
Specification<MarkTask> specification = (root, query, builder) -> {
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
predicates.add(builder.equal(root.get("workId"), workId));
|
|
@@ -270,6 +291,13 @@ public class QualityAnalyseController {
|
|
if (Objects.nonNull(areaCode)) {
|
|
if (Objects.nonNull(areaCode)) {
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
|
|
}
|
|
}
|
|
|
|
+ if(!CollectionUtils.isEmpty(markerIds)){
|
|
|
|
+ CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
|
|
|
|
+ for (Long id : markerIds) {
|
|
|
|
+ in.value(id);
|
|
|
|
+ }
|
|
|
|
+ predicates.add(builder.and(builder.and(in)));
|
|
|
|
+ }
|
|
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
};
|
|
};
|
|
List<MarkTask> markTasks = markTaskRepo.findAll(specification);
|
|
List<MarkTask> markTasks = markTaskRepo.findAll(specification);
|
|
@@ -312,7 +340,6 @@ public class QualityAnalyseController {
|
|
for (Long l : distinctIdList) {
|
|
for (Long l : distinctIdList) {
|
|
Map map = new HashMap();
|
|
Map map = new HashMap();
|
|
MarkUser markUser = markUserRepo.findOne(markerMap.get(l).getMarkerId());
|
|
MarkUser markUser = markUserRepo.findOne(markerMap.get(l).getMarkerId());
|
|
-// map.put("userName", markerMap.get(l).getMarkerName());
|
|
|
|
map.put("userName", markUser.getLoginName());
|
|
map.put("userName", markUser.getLoginName());
|
|
map.put("sumCount", 0);
|
|
map.put("sumCount", 0);
|
|
map.put("userId", l);
|
|
map.put("userId", l);
|
|
@@ -321,13 +348,10 @@ public class QualityAnalyseController {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//排序
|
|
//排序
|
|
- Collections.sort(list, new Comparator<Map<String, Object>>() {
|
|
|
|
- @Override
|
|
|
|
- public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
|
- String o1Value = String.valueOf(o1.get("userName"));
|
|
|
|
- String o2Value = String.valueOf(o2.get("userName"));
|
|
|
|
- return o1Value.compareTo(o2Value);
|
|
|
|
- }
|
|
|
|
|
|
+ Collections.sort(list, (Comparator<Map<String, Object>>) (o1, o2) -> {
|
|
|
|
+ String o1Value = String.valueOf(o1.get("userName"));
|
|
|
|
+ String o2Value = String.valueOf(o2.get("userName"));
|
|
|
|
+ return o1Value.compareTo(o2Value);
|
|
});
|
|
});
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|