diff --git a/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfileDepartController.java b/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfileDepartController.java index 13b503e..7a945c3 100644 --- a/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfileDepartController.java +++ b/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfileDepartController.java @@ -58,7 +58,8 @@ public class ProfileDepartController { beginTime = param.getCrtTime().get(0); endTime = param.getCrtTime().get(1); } - Page page = profileDepartMapper.queryDepartNegative(Page.of(param.getCurrent(), param.getSize()), beginTime, endTime, param.getDepartName(), param.getDepartId()); + Page page = profileDepartMapper.queryDepartNegative(Page.of(param.getCurrent(), param.getSize()), beginTime, endTime, + param.getDepartName(), param.getDepartId(), param.getDepartGroupId()); long l = System.currentTimeMillis(); for (DepartNegativeModel item : page.getRecords()) { List result = negativeScoreService.calculateDepartScore(beginTime, endTime, item.getDepartId()); diff --git a/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfilePoliceController.java b/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfilePoliceController.java index 948fd91..1d9a0b8 100644 --- a/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfilePoliceController.java +++ b/src/main/java/com/biutag/supervision/controller/sensitivePerception/ProfilePoliceController.java @@ -62,7 +62,8 @@ public class ProfilePoliceController { beginTime = param.getCrtTime().get(0); endTime = param.getCrtTime().get(1); } - Page page = profilePoliceMapper.queryPoliceNegative(Page.of(param.getCurrent(), param.getSize()), beginTime, endTime, param.getName(),param.getEmpNo(), param.getDepartId()); + Page page = profilePoliceMapper.queryPoliceNegative(Page.of(param.getCurrent(), param.getSize()), beginTime, endTime, + param.getName(),param.getEmpNo(), param.getDepartId(), param.getDepartGroupId()); long l = System.currentTimeMillis(); for (PoliceNegativeModel item : page.getRecords()) { List result = negativeScoreService.calculatePoliceScore(beginTime, endTime, item.getIdCode()); diff --git a/src/main/java/com/biutag/supervision/mapper/ProfileDepartMapper.java b/src/main/java/com/biutag/supervision/mapper/ProfileDepartMapper.java index 9a6b103..367d4c3 100644 --- a/src/main/java/com/biutag/supervision/mapper/ProfileDepartMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/ProfileDepartMapper.java @@ -14,7 +14,7 @@ import java.util.List; */ public interface ProfileDepartMapper { - Page queryDepartNegative(Page page, Date beginTime, Date endTime, String departName, String departId); + Page queryDepartNegative(Page page, Date beginTime, Date endTime, String departName, String departId, String departGroupId); List selectPoliceNegativeCount(String departId, Date beginTime, Date endTime); diff --git a/src/main/java/com/biutag/supervision/mapper/ProfilePoliceMapper.java b/src/main/java/com/biutag/supervision/mapper/ProfilePoliceMapper.java index c843269..fb8b32b 100644 --- a/src/main/java/com/biutag/supervision/mapper/ProfilePoliceMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/ProfilePoliceMapper.java @@ -14,7 +14,7 @@ import java.util.List; */ public interface ProfilePoliceMapper { - Page queryPoliceNegative(Page page, Date beginTime, Date endTime, String name, String empNo, String departId); + Page queryPoliceNegative(Page page, Date beginTime, Date endTime, String name, String empNo, String departId, String departGroupId); List selectProblemType(String idCode, Date beginTime, Date endTime); diff --git a/src/main/java/com/biutag/supervision/pojo/entity/NegativeScoreDepart.java b/src/main/java/com/biutag/supervision/pojo/entity/NegativeScoreDepart.java index 77dd90f..74877c0 100644 --- a/src/main/java/com/biutag/supervision/pojo/entity/NegativeScoreDepart.java +++ b/src/main/java/com/biutag/supervision/pojo/entity/NegativeScoreDepart.java @@ -37,4 +37,6 @@ public class NegativeScoreDepart { @TableField("expression") private String expression; + private String departGroupId; + } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/entity/NegativeScorePolice.java b/src/main/java/com/biutag/supervision/pojo/entity/NegativeScorePolice.java index ba0f49e..face3e3 100644 --- a/src/main/java/com/biutag/supervision/pojo/entity/NegativeScorePolice.java +++ b/src/main/java/com/biutag/supervision/pojo/entity/NegativeScorePolice.java @@ -33,4 +33,6 @@ public class NegativeScorePolice { private String businessTypeCode; + private String departGroupId; + } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/param/DepartNegativeQueryParam.java b/src/main/java/com/biutag/supervision/pojo/param/DepartNegativeQueryParam.java index 1743c4d..94d438f 100644 --- a/src/main/java/com/biutag/supervision/pojo/param/DepartNegativeQueryParam.java +++ b/src/main/java/com/biutag/supervision/pojo/param/DepartNegativeQueryParam.java @@ -20,4 +20,6 @@ public class DepartNegativeQueryParam extends BasePage { private List crtTime = new ArrayList<>(); private String departName; private String departId; + + private String departGroupId; } diff --git a/src/main/java/com/biutag/supervision/pojo/param/DepartPoliceQueryParam.java b/src/main/java/com/biutag/supervision/pojo/param/DepartPoliceQueryParam.java index 0b37ad8..cb104fa 100644 --- a/src/main/java/com/biutag/supervision/pojo/param/DepartPoliceQueryParam.java +++ b/src/main/java/com/biutag/supervision/pojo/param/DepartPoliceQueryParam.java @@ -21,4 +21,6 @@ public class DepartPoliceQueryParam extends BasePage { private String name; private String empNo; private String departId; + private String departGroupId; + } diff --git a/src/main/java/com/biutag/supervision/service/NegativeProblemRelationService.java b/src/main/java/com/biutag/supervision/service/NegativeProblemRelationService.java index 3ae8855..453ace7 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeProblemRelationService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeProblemRelationService.java @@ -7,11 +7,15 @@ import com.biutag.supervision.pojo.entity.NegativeProblemRelation; import com.biutag.supervision.mapper.NegativeProblemRelationMapper; import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; @Service public class NegativeProblemRelationService extends ServiceImpl { + public List list(Collection negativeIds) { + return list(new LambdaQueryWrapper().in(NegativeProblemRelation::getNegativeId, negativeIds)); + } public List list(String negativeId, String blameId) { return list(new LambdaQueryWrapper().eq(NegativeProblemRelation::getNegativeId, negativeId).eq(NegativeProblemRelation::getBlameId, blameId)); } diff --git a/src/main/java/com/biutag/supervision/service/NegativeScoreDepartService.java b/src/main/java/com/biutag/supervision/service/NegativeScoreDepartService.java index 211fdaa..20c5475 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeScoreDepartService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeScoreDepartService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.biutag.supervision.mapper.NegativeScoreDepartMapper; import com.biutag.supervision.pojo.entity.NegativeScoreDepart; +import com.biutag.supervision.pojo.entity.NegativeScorePolice; import org.springframework.stereotype.Service; import java.util.Date; @@ -12,8 +13,9 @@ import java.util.List; @Service public class NegativeScoreDepartService extends ServiceImpl { - public List list(Date beginTime, Date endTime) { + public List list(Date beginTime, Date endTime, String departGroupId) { return list(new LambdaQueryWrapper() + .eq(NegativeScoreDepart::getDepartGroupId, departGroupId) .between(NegativeScoreDepart::getDiscoveryTime, beginTime, endTime)); } diff --git a/src/main/java/com/biutag/supervision/service/NegativeScorePoliceService.java b/src/main/java/com/biutag/supervision/service/NegativeScorePoliceService.java index 9eaa46e..2fd1198 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeScorePoliceService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeScorePoliceService.java @@ -16,9 +16,9 @@ public class NegativeScorePoliceService extends ServiceImpl().eq(NegativeScorePolice::getNegativeId, negativeId)); } - - public List list(Date beginTime, Date endTime) { + public List list(Date beginTime, Date endTime, String departGroupId) { return list(new LambdaQueryWrapper() + .eq(NegativeScorePolice::getDepartGroupId, departGroupId) .between(NegativeScorePolice::getDiscoveryTime, beginTime, endTime)); } diff --git a/src/main/java/com/biutag/supervision/service/NegativeScoreService.java b/src/main/java/com/biutag/supervision/service/NegativeScoreService.java index 94577d1..9178e01 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeScoreService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeScoreService.java @@ -50,20 +50,30 @@ public class NegativeScoreService { flag.set(true); System.out.println("calculateScore-------------------------------------------------"); List negativeBlames = blameMapper.selectVerifyTrue(); + if (negativeBlames.isEmpty()) { + flag.set(false); + return; + } String formula = "%s + (%s * %s) + (%s * %s)"; List scoreDeparts = new ArrayList<>(); negativeScorePoliceService.remove(new LambdaQueryWrapper<>()); negativeScoreDepartService.remove(new LambdaQueryWrapper<>()); + Set negativeIds = negativeBlames.stream().map(NegativeBlame::getNegativeId).collect(Collectors.toSet()); + List problemsAll = problemRelationService.list(negativeIds); + List negatives = negativeService.listByIds(negativeIds); negativeBlames.forEach(blame -> { - Negative negative = negativeService.getById(blame.getNegativeId()); + Negative negative = negatives.stream().filter(item -> item.getId().equals(blame.getNegativeId())).findFirst().get(); + SupDepart depart = departService.getById(negative.getInvolveDepartId()); NegativeScorePolice negativeScorePolice = new NegativeScorePolice() .setNegativeId(blame.getNegativeId()) .setIdCode(blame.getBlameIdCode()) .setDiscoveryTime(negative.getDiscoveryTime()) .setIdCode(blame.getBlameIdCode()) .setBusinessTypeCode(negative.getBusinessTypeCode()) + .setDepartGroupId(depart.getStatisticsGroupId()) .setCreateTime(LocalDateTime.now()); - List problems = problemRelationService.list(blame.getNegativeId(), blame.getBlameId()); + List problems = problemsAll.stream().filter(item -> item.getNegativeId().equals(blame.getNegativeId()) && + item.getBlameId().equals(blame.getBlameId())).toList(); List codes = problems.stream().map(NegativeProblemRelation::getThreeLevelCode).toList(); if (codes.isEmpty()) { return; @@ -83,6 +93,7 @@ public class NegativeScoreService { double score = NumberUtil.roundHalfEven(calculate, 2).doubleValue(); negativeScorePolice.setScore(score) .setExpression(expression); + negativeScorePoliceService.save(negativeScorePolice); NegativeScoreDepart scoreDepart = scoreDeparts.stream().filter(item -> item.getNegativeId().equals(negative.getId())).findFirst().orElse(null); if (Objects.isNull(scoreDepart)) { @@ -187,6 +198,8 @@ public class NegativeScoreService { return 50 + (diff * 15); } + private final SupDepartService departService; + // 平均问题数 = 单个业务问题数 / 业务涉及人数 // 业务标准差 = sum((个人问题数 - 平均问题数)²) / 业务涉及人数 // 业务差异值1 = (问题发生率 - 平均问题发生率) / 业务标准差 @@ -203,9 +216,11 @@ public class NegativeScoreService { * @return */ public List calculatePoliceScore(Date beginTime, Date endTime, String idCode) { - List scorePolices = negativeScorePoliceService.list(beginTime, endTime); - Double totalScore = scorePolices.stream().mapToDouble(NegativeScorePolice::getScore).sum(); SupPolice police = policeService.getByIdCode(idCode); + SupDepart depart = departService.getById(police.getOrgId()); + + List scorePolices = negativeScorePoliceService.list(beginTime, endTime, depart.getStatisticsGroupId()); + Double totalScore = scorePolices.stream().mapToDouble(NegativeScorePolice::getScore).sum(); List expressionArr = new ArrayList<>(); double policeScore = Arrays.stream(BusinessTypeEnum.values()).mapToDouble(businessTypeEnum -> { List businessScorePolice = scorePolices.stream().filter(item -> item.getBusinessTypeCode().equals(businessTypeEnum.getValue())).toList(); @@ -251,7 +266,8 @@ public class NegativeScoreService { */ public List calculateDepartScore(Date beginTime, Date endTime, String departId) { - List scoreDeparts = negativeScoreDepartService.list(beginTime, endTime); + SupDepart depart = departService.getById(departId); + List scoreDeparts = negativeScoreDepartService.list(beginTime, endTime, depart.getStatisticsGroupId()); Double totalScore = scoreDeparts.stream().mapToDouble(NegativeScoreDepart::getScore).sum(); List expressionArr = new ArrayList<>(); double policeScore = Arrays.stream(BusinessTypeEnum.values()).mapToDouble(businessTypeEnum -> { diff --git a/src/main/resources/mapper/ProfileDepartMapper.xml b/src/main/resources/mapper/ProfileDepartMapper.xml index 643aa35..367add0 100644 --- a/src/main/resources/mapper/ProfileDepartMapper.xml +++ b/src/main/resources/mapper/ProfileDepartMapper.xml @@ -29,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND n.discoveryTime BETWEEN #{beginTime} AND #{endTime} LEFT JOIN negative_blame nb ON n.id = nb.negativeId WHERE - 1 = 1 + d.statistics_group_id = #{departGroupId} AND d.short_name like concat('%', #{departName}, '%') diff --git a/src/main/resources/mapper/ProfilePoliceMapper.xml b/src/main/resources/mapper/ProfilePoliceMapper.xml index bb76403..67f733c 100644 --- a/src/main/resources/mapper/ProfilePoliceMapper.xml +++ b/src/main/resources/mapper/ProfilePoliceMapper.xml @@ -23,6 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE n.id_code is not null AND n.discovery_time BETWEEN #{beginTime} AND #{endTime} + AND d.statistics_group_id = #{departGroupId} AND p.name like concat('%', #{name}, '%')