09-25-修复节点完成率

This commit is contained in:
2025-09-25 16:36:24 +08:00
parent f6e18851de
commit 40dc44374b
4 changed files with 49 additions and 11 deletions

View File

@ -111,6 +111,8 @@ public class OpsInspectionPlanVo implements Serializable {
@ExcelProperty(value = "巡检项ID")
private String inspectionItemId;
private List<OpsInspectionItemVo> itemVoList;
/**
* 1启用2停用
*/

View File

@ -223,7 +223,7 @@ public class OpsInspectionOrderServiceImpl implements IOpsInspectionOrderService
//处理进度百分比 完成节点 / 总节点 * 100
if (nodeVoList != null && !nodeVoList.isEmpty()){
//统计完成节点
int finishCount = nodeVoList.stream().filter(nodeVo -> vo.getStatus().equals("1")).toList().size();
int finishCount = nodeVoList.stream().filter(nodeVo -> nodeVo.getStatus().equals("1")).toList().size();
if (finishCount == nodeVoList.size()){
vo.setProgress(new BigDecimal("100"));
}else {

View File

@ -10,10 +10,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.inspection.domain.vo.OpsInspectionItemVo;
import org.dromara.inspection.mapper.OpsInspectionItemMapper;
import org.dromara.personnel.domain.OpsUser;
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.embedded.UndertowWebServerFactoryCustomizer;
import org.springframework.stereotype.Service;
import org.dromara.inspection.domain.bo.OpsInspectionPlanBo;
import org.dromara.inspection.domain.vo.OpsInspectionPlanVo;
@ -21,6 +25,7 @@ import org.dromara.inspection.domain.OpsInspectionPlan;
import org.dromara.inspection.mapper.OpsInspectionPlanMapper;
import org.dromara.inspection.service.IOpsInspectionPlanService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -38,10 +43,9 @@ public class OpsInspectionPlanServiceImpl implements IOpsInspectionPlanService {
@DubboReference
private RemoteUserService remoteUserService;
@Autowired
private OpsUserServiceImpl opsUserService;
private final OpsInspectionPlanMapper baseMapper;
private final OpsInspectionItemMapper itemMapper;
/**
* 查询运维-巡检-计划
@ -155,12 +159,25 @@ public class OpsInspectionPlanServiceImpl implements IOpsInspectionPlanService {
*/
private void setValue(List<OpsInspectionPlanVo> list){
list.forEach(record -> {
OpsUser byId = opsUserService.getById(record.getPerson());
if (byId != null){
record.setNickName(byId.getUserName());
List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(List.of(record.getPerson()));
if (remoteUserVos != null && !remoteUserVos.isEmpty()){
record.setNickName(remoteUserVos.getFirst().getUserName());
}else{
record.setNickName("未知用户");
}
if (record.getInspectionItemId()!=null){
String[] itemIds = record.getInspectionItemId().split(",");
List<OpsInspectionItemVo> itemVos = new ArrayList<>();
for (String itemId : itemIds) {
OpsInspectionItemVo itemVo = itemMapper.selectVoById(itemId);
if (itemVo != null){
itemVos.add(itemVo);
}
}
}
});
}

View File

@ -212,7 +212,7 @@ public class OpsInspectionTestTaskServiceImpl implements IOpsInspectionTestTaskS
//处理进度百分比 完成节点 / 总节点 * 100
if (nodeVoList != null && !nodeVoList.isEmpty()){
//统计完成节点
int finishCount = nodeVoList.stream().filter(nodeVo -> vo.getStatus().equals("1")).toList().size();
int finishCount = nodeVoList.stream().filter(nodeVo -> nodeVo.getStatus().equals("1")).toList().size();
if (finishCount == nodeVoList.size()){
vo.setProgress(new BigDecimal("100"));
}else {
@ -281,7 +281,11 @@ public class OpsInspectionTestTaskServiceImpl implements IOpsInspectionTestTaskS
record.setFinishCount(String.valueOf(finishCount));
record.setFailCount(String.valueOf(failCount));
record.setPassValue(String.valueOf(BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(list.size()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
if (!list.isEmpty()) {
record.setPassValue(String.valueOf(BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(list.size()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
}else {
record.setPassValue("0");
}
record.setAverageTestTime(BigDecimal.valueOf((double) TimeUnit.MILLISECONDS.toMinutes(totalTestTime) / finishCount).toString());
//统计上一月的数据
@ -307,7 +311,12 @@ public class OpsInspectionTestTaskServiceImpl implements IOpsInspectionTestTaskS
}
//完成数增长率
BigDecimal wcszzl = BigDecimal.valueOf(Double.parseDouble(record.getFinishCount())).divide(BigDecimal.valueOf(finishCount), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
BigDecimal wcszzl;
if (BigDecimal.valueOf(finishCount).compareTo(BigDecimal.ZERO) > 0) {
wcszzl = BigDecimal.valueOf(Double.parseDouble(record.getFinishCount())).divide(BigDecimal.valueOf(finishCount), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
}else {
wcszzl = BigDecimal.ZERO;
}
record.setFinishCountAdd(wcszzl.toString());
//上月通过率
@ -315,13 +324,23 @@ public class OpsInspectionTestTaskServiceImpl implements IOpsInspectionTestTaskS
passValue = BigDecimal.valueOf(Double.valueOf(finishCount)).divide(BigDecimal.valueOf(lastMonth.size()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
}
//进行比较 得出通过增长率
BigDecimal tgzzl = BigDecimal.valueOf(Double.parseDouble(record.getPassValue())).divide(passValue, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
BigDecimal tgzzl;
if(passValue.compareTo(BigDecimal.ZERO) > 0) {
tgzzl = BigDecimal.valueOf(Double.parseDouble(record.getPassValue())).divide(passValue, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
}else {
tgzzl = BigDecimal.ZERO;
}
record.setPassValueAdd(tgzzl.toString());
//上月平均实验时间
BigDecimal sypjsj = BigDecimal.valueOf((double) TimeUnit.MILLISECONDS.toMinutes(totalTestTime) / finishCount);
//平均时间增长率
BigDecimal sysjzzl = sypjsj.divide(BigDecimal.valueOf(Double.parseDouble(record.getAverageTestTime())), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
BigDecimal sysjzzl;
if (BigDecimal.valueOf(Double.parseDouble(record.getAverageTestTime())).compareTo(BigDecimal.ZERO) > 0) {
sysjzzl=sypjsj.divide(BigDecimal.valueOf(Double.parseDouble(record.getAverageTestTime())), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
}else {
sysjzzl = BigDecimal.ZERO;
}
record.setAverageTestTimeAdd(sysjzzl.toString());
return R.ok(record);