Merge branch 'dev_20240116_OTA' into 'master'

Dev 20240116 ota

See merge request laws-nio/laws-weilai!368
This commit is contained in:
高嵩
2024-01-22 01:34:22 +00:00
16 changed files with 593 additions and 65 deletions
@@ -293,17 +293,24 @@ public class OtaManageApplyEOController extends JeroController<OtaManageApplyEO,
@AutoLog(value = "查询项目涉及的VDR版本")
@ApiOperation(value = "查询项目涉及的VDR版本", notes = "查询项目涉及的VDR版本")
@GetMapping(value = "/getVdrListByProject")
public Result<?> getVdrListByProject(String projectId, String cut) {
List<OtaManageApplyEO> resList = otaManageApplyEOService.getVdrListByProject(projectId, cut);
public Result<?> getVdrListByProjectId(String projectId, String cut) {
List<OtaManageApplyEO> resList = otaManageApplyEOService.getVdrListByProjectId(projectId, cut);
return Result.OK("操作成功!", resList);
}
// @AutoLog(value = "查询项目涉及的VDR版本")
// @ApiOperation(value = "查询项目涉及的VDR版本", notes = "查询项目涉及的VDR版本")
// @GetMapping(value = "/getVdrListByProject")
// public Result<?> getVdrListByProject(String projectId, String cut) {
// List<OtaManageApplyEO> resList = otaManageApplyEOService.getVdrListByProject(projectId, cut);
// return Result.OK("操作成功!", resList);
// }
@AutoLog(value = "通过软件版本和项目ID查询状态")
@ApiOperation(value = "通过软件版本和项目ID查询状态", notes = "通过软件版本和项目ID查询状态")
@GetMapping(value = "/getStatisticalStatus")
public Result<?> getStatisticalStatus(String projectId, String plannedBpLaunchBatch, String cut) {
public Result<?> getStatisticalStatus(String projectId, String plannedBpLaunchBatch, String cut,String appliedVehicleProject) {
List<ProjectLibraryBase> projectLibraryBaseList = new ArrayList<>();
List<Map<String, Object>> res = otaManageApplyEOService.getStatisticalStatus(projectId, plannedBpLaunchBatch, cut,projectLibraryBaseList);
List<Map<String, Object>> res = otaManageApplyEOService.getStatisticalStatus(projectId, plannedBpLaunchBatch, cut,projectLibraryBaseList,appliedVehicleProject);
if(!res.isEmpty()){
return Result.OK("操作成功!", res.get(0));
}else{
@@ -1,14 +1,12 @@
package com.jero.modules.ota.enums;
import java.util.ArrayList;
import java.util.List;
public enum OtaHomoImpactEnum {
YES("Yes", "Yes"),
INTER_VALID("Internal Validation", "Internal Validation"),
HOMOEX_RETEST("Homo Extension - Retest", "Homo Extension - Retest"),
HOMOEX_PAPERWORK("Homo Extension - Paperwork", "Homo Extension - Paperwork");
HOMOEX_PAPERWORK("Homo Extension - Paperwork", "Homo Extension - Paperwork"),
STATUS("Discard", "Discard");
String name;
String value;
@@ -1,13 +1,11 @@
package com.jero.modules.ota.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.ota.entity.OtaManageApplyEO;
import com.jero.modules.ota.entity.OtaManageReceiveNsdpEO;
import com.jero.modules.ota.vo.VersionVO;
import org.apache.ibatis.annotations.Param;
import com.jero.modules.ota.entity.OtaManageApplyEO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.pptx4j.pml.STTLTriggerRuntimeNode;
import java.util.List;
@@ -29,6 +27,8 @@ public interface OtaManageApplyEOMapper extends BaseMapper<OtaManageApplyEO> {
*/
List<OtaManageApplyEO> getOtaCarPage(@Param("otaManageApplyEO") OtaManageApplyEO otaManageApplyEO);
List<OtaManageApplyEO> getOtaCarInfoList(@Param("otaManageApplyEO") OtaManageApplyEO otaManageApplyEO);
List<VersionVO> getByAppliedVehicleProject(@Param("appliedVehicleProject") String appliedVehicleProject);
List<OtaManageApplyEO> getOtaCarList(@Param("plannedBpLaunchBatch") String plannedBpLaunchBatch);
@@ -101,6 +101,41 @@
</where>
order by omr.id desc
</select>
<select id="getOtaCarInfoList" resultType="com.jero.modules.ota.entity.OtaManageApplyEO">
select omr.vdr_id,omr.id as vdr,omr.planned_bp_launch_batch,omr.update_date,
omr.summary,omr.status,
omr.homologation_impact,omr.homologation,
omr.impact_cn_homo,omr.impact_eu_homo,
omr.master_domain,omr.applied_vehicle_project,omr.vehicle_match,omr.is_del,
oma.id,oma.project_version,oma.attestation_schedule,oma.match_status,oma.remark,oma.vehicle_type
from ota_manage_receive omr
left join ota_manage_apply oma on oma.vdr_id = omr.vdr_id
<where>
1=1
<if test="otaManageApplyEO.plannedBpLaunchBatch != null and otaManageApplyEO.plannedBpLaunchBatch != ''">
and omr.planned_bp_launch_batch =#{otaManageApplyEO.plannedBpLaunchBatch}
</if>
<if test="otaManageApplyEO.vdr != null and otaManageApplyEO.vdr != ''">
and omr.id LIKE CONCAT(CONCAT('%',#{otaManageApplyEO.vdr}),'%')
</if>
<if test="otaManageApplyEO.summary != null and otaManageApplyEO.summary != ''">
and omr.summary LIKE CONCAT(CONCAT('%',#{otaManageApplyEO.summary}),'%')
</if>
<if test="otaManageApplyEO.impactHomo != null and otaManageApplyEO.impactHomo != ''">
and (omr.impact_cn_homo LIKE CONCAT(CONCAT('%',#{otaManageApplyEO.impactHomo}),'%')
and omr.impact_eu_homo LIKE CONCAT(CONCAT('%',#{otaManageApplyEO.impactHomo}),'%'))
</if>
<if test="otaManageApplyEO.homologationImpact != null and otaManageApplyEO.homologationImpact != ''">
and omr.homologation_impact LIKE CONCAT(CONCAT('%',#{otaManageApplyEO.homologationImpact}),'%')
</if>
<if test="otaManageApplyEO.homologation != null and otaManageApplyEO.homologation != ''">
and omr.homologation LIKE CONCAT(CONCAT('%',#{otaManageApplyEO.homologation}),'%')
</if>
and omr.is_del is null and omr.status !='Discard'
</where>
order by omr.id desc
</select>
<select id="getByAppliedVehicleProject" resultType="com.jero.modules.ota.vo.VersionVO">
@@ -126,9 +126,13 @@ public interface IOtaManageApplyEOService extends IService<OtaManageApplyEO> {
List<String> reject(String ids, String rejectReason,String cut);
List<OtaManageApplyEO> getVdrListByProjectId(String projectId, String cut);
List<OtaManageApplyEO> getVdrListByProject(String projectId, String cut);
List<Map<String, Object>> getStatisticalStatus(String projectId, String plannedBpLaunchBatch, String cut,List<ProjectLibraryBase> projectLibraryBaseList);
List<Map<String, Object>> getStatisticalStatus(String projectId, String plannedBpLaunchBatch,
String cut,List<ProjectLibraryBase> projectLibraryBaseList,
String appliedVehicleProject);
ModelAndView otaExportXls(HttpServletRequest request, OtaManageApplyEO otaManageApplyEO);
@@ -792,27 +792,191 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
if (StringUtils.isNotBlank(appliedVehicleProject)) {
String[] appliedVehicleProjectArr = appliedVehicleProject.split(",");
for (String appliedVehicleProjectTemp : appliedVehicleProjectArr) {
if(carMarket.equals(appliedVehicleProjectTemp)){
if(carMarket.contains(appliedVehicleProjectTemp)){
omaMap.put(manageApplyEO.getVdr(), manageApplyEO);
break;
}
}
}
}
}
List<SysDictItem> regionDictList = sysDictItemServiceImpl.selectItemsByDictCode(DicCodeEnum.CERTIFICATION_PROGRESS.getCode());
list = new ArrayList<>(omaMap.values());
if (!list.isEmpty()) {
List<VersionVO> vprojectVersionList = getProjectVersionList(otaManageApplyEO.getAppliedVehicleProject(), null);
//项目版本id
List<String> projectVersionList = list.stream()
.map(OtaManageApplyEO::getProjectVersion).distinct().collect(Collectors.toList());
//studio
List<ProjectLibraryBase> projectList = projectLibraryBaseService.queryList(projectVersionList);
List<String> studioEngineerUserIdList = projectList.stream().map(ProjectLibraryBase::getStudioEngineer).distinct().collect(Collectors.toList());
List<SysUser> studioEngineerUserInfo = this.sysUserService.querySysUserListByIdList(studioEngineerUserIdList);
String allStudioName = "";
List<String> allStudioIdList = vprojectVersionList.stream()
.map(VersionVO::getStudio).distinct().collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(allStudioIdList)){
List<SysUser> allStudioList = this.sysUserService.querySysUserListByIdList(allStudioIdList);
List<String> allStudioNameList = allStudioList.stream()
.map(SysUser::getUsername).distinct().collect(Collectors.toList());
allStudioName = StringUtils.listToString(allStudioNameList);
}
List<ProjectTaskPlanning> projectTaskPlanningList = projectTaskPlanningService.queryList(StringUtils.join(projectVersionList, ","));
boolean isDisabled = isDisabled();
for (OtaManageApplyEO manageApplyEO : list) {
if (StringUtils.isBlank(manageApplyEO.getVehicleType())) {
manageApplyEO.setVehicleType(otaManageApplyEO.getAppliedVehicleProject());
manageApplyEO.setId(UUID.randomUUID().toString().replace("-", ""));
manageApplyEO.setProjectVersion(null);
manageApplyEO.setAttestationSchedule(null);
manageApplyEO.setMatchStatus(null);
manageApplyEO.setRemark("--");
}
if (StringUtils.isNotBlank(manageApplyEO.getProjectVersion())) {
List<ProjectTaskPlanning> taskPlanningList = projectTaskPlanningList.stream()
.filter(e -> manageApplyEO.getProjectVersion().equals(e.getProjectId())).collect(Collectors.toList());
//设置认证开始,认证批准,认证申报
if (!taskPlanningList.isEmpty()) {
Date attestationStartTime = taskPlanningList.get(0).getAttestationStartTime();//认证开始
Date attestationEndTime = taskPlanningList.get(0).getAttestationEndTime();//认证批准
Date certificationSubmission = taskPlanningList.get(0).getCertificationSubmission();//认证申报
manageApplyEO.setAttestationStartTime(attestationStartTime);
manageApplyEO.setAttestationEndTime(attestationEndTime);
manageApplyEO.setCertificationSubmission(certificationSubmission);
}
//设置studio
boolean havePro = false;
for (ProjectLibraryBase pro : projectList) {
if (pro.getId().equals(manageApplyEO.getProjectVersion())) {
manageApplyEO.setStudio(pro.getStudioEngineer());
havePro = true;
break;
}
}
if (!havePro && !ComplianceFlowStatusEnum.UNINVOLVED.getValue().equals(manageApplyEO.getProjectVersion())) {
//找不到项目的话
manageApplyEO.setProjectVersion(null);
manageApplyEO.setStudio(null);
manageApplyEO.setAttestationEndTime(null);
manageApplyEO.setAttestationStartTime(null);
manageApplyEO.setCertificationSubmission(null);
}
if (StringUtils.isNotEmpty(manageApplyEO.getStudio())) {
if (CollectionUtils.isNotEmpty(studioEngineerUserInfo)) {
String studioEngineerUserName = studioEngineerUserInfo.stream().filter(studioEngineerUser -> {
boolean flag = false;
if (StringUtils.equals(manageApplyEO.getStudio(), studioEngineerUser.getId())) {
flag = true;
}
return flag;
}).map(SysUser::getUsername).collect(Collectors.joining(","));
manageApplyEO.setStudioText(studioEngineerUserName);
}
}
//项目版本
List<VersionVO> collect = vprojectVersionList.stream().filter(e -> e.getProjectId().equals(manageApplyEO.getProjectVersion())).distinct().collect(Collectors.toList());
if (!collect.isEmpty()) {
if("NA".equals(collect.get(0).getProjectId())){
if (CutEnum.CN.getValue().equals(cut)) {
manageApplyEO.setProjectVersionText("不涉及");
} else {
manageApplyEO.setProjectVersionText("NA");
}
}else{
manageApplyEO.setProjectVersionText(collect.get(0).getCar() + "-" + collect.get(0).getYearName() + "-" + collect.get(0).getMarket()+"-"+collect.get(0).getVersionNumber() );
}
}
}else{
//没有设置项目版本的情况
manageApplyEO.setStudioText(allStudioName);
}
manageApplyEO.setDisabled(isDisabled || OtaStatusEnum.LOCKED.getKey().equals(manageApplyEO.getMatchStatus()));
if (StringUtils.isBlank(manageApplyEO.getRemark())) {
manageApplyEO.setRemark("--");
}
if (OtaHomoImpactEnum.YES.getValue().equals(manageApplyEO.getHomologationImpact())
|| OtaHomoImpactEnum.INTER_VALID.getValue().equals(manageApplyEO.getHomologationImpact())) {
manageApplyEO.setMatchStatus(OtaStatusEnum.NA.getKey());
manageApplyEO.setDisabled(true);
}
if(isRegulationOwner && !isStudio){
manageApplyEO.setDisabled(true);
}
if ((StringUtils.isNotBlank(manageApplyEO.getIsDel()) && manageApplyEO.getIsDel().equals("1"))
|| (StringUtils.isNotBlank(manageApplyEO.getStatus()) && manageApplyEO.getStatus().equals(OtaHomoImpactEnum.STATUS.getValue()))) {
manageApplyEO.setDiscard(true);
manageApplyEO.setDisabled(true);
}
if (StringUtils.isNotBlank(manageApplyEO.getAttestationSchedule())) {
List<SysDictItem> collect = regionDictList.stream()
.filter(e -> e.getItemValue().equals(manageApplyEO.getAttestationSchedule())).collect(Collectors.toList());
if (CutEnum.CN.getValue().equals(cut)) {
manageApplyEO.setAttestationScheduleText(collect.get(0).getItemText());
} else {
manageApplyEO.setAttestationScheduleText(collect.get(0).getEnName());
}
}
if (StringUtils.isBlank(manageApplyEO.getMatchStatus())) {
manageApplyEO.setMatchStatus(OtaStatusEnum.TO_BE_MATCHED.getKey());
if (CutEnum.CN.getValue().equals(cut)) {
manageApplyEO.setMatchStatusText(OtaStatusEnum.TO_BE_MATCHED.getNameCN());
} else {
manageApplyEO.setMatchStatusText(OtaStatusEnum.TO_BE_MATCHED.getNameEN());
}
} else {
OtaStatusEnum osEnum = OtaStatusEnum.getByKey(manageApplyEO.getMatchStatus());
if (CutEnum.CN.getValue().equals(cut)) {
manageApplyEO.setMatchStatusText(osEnum.getNameCN());
} else {
manageApplyEO.setMatchStatusText(osEnum.getNameEN());
}
}
}
}
if (!list.isEmpty()) {
//表头排序
heartSort(otaManageApplyEO, list);
}
return list;
}
public List<OtaManageApplyEO> getOtaCarInfoList(OtaManageApplyEO otaManageApplyEO, String cut) {
if(!hasPermission(otaManageApplyEO.getPlannedBpLaunchBatch())){
return new ArrayList<>();
}
boolean isStudio = isStudio();
boolean isRegulationOwner = isRegulationOwner();
List<OtaManageApplyEO> otaManageApplyEOList = this.getBaseMapper().getOtaCarInfoList(otaManageApplyEO);
List<OtaManageApplyEO> list = new ArrayList<>();
Map<String, OtaManageApplyEO> omaMap = new HashMap<>();
String carMarket = otaManageApplyEO.getAppliedVehicleProject();
if (StringUtils.isNotBlank(carMarket) && !"全部".equals(carMarket) && !"All".equals(carMarket) && !otaManageApplyEOList.isEmpty()) {
String[] conditionSplit = carMarket.split(" ");
for (OtaManageApplyEO manageApplyEO : otaManageApplyEOList) {
if (omaMap.containsKey(manageApplyEO.getVdr())
&& StringUtils.isNotEmpty(omaMap.get(manageApplyEO.getVdr()).getVehicleType())
&& omaMap.get(manageApplyEO.getVdr()).getVehicleType().equals(otaManageApplyEO.getAppliedVehicleProject())) {
continue;
} else {
if (!otaManageApplyEO.getAppliedVehicleProject().equals(manageApplyEO.getVehicleType())) {
manageApplyEO.setId(UUID.randomUUID().toString().replace("-", ""));
manageApplyEO.setProjectVersion(null);
manageApplyEO.setAttestationSchedule(null);
manageApplyEO.setMatchStatus(null);
manageApplyEO.setRemark("--");
manageApplyEO.setVehicleType("");
}
}
String appliedVehicleProject = manageApplyEO.getVehicleMatch();
if (StringUtils.isNotBlank(appliedVehicleProject)) {
String[] appliedVehicleProjectArr = appliedVehicleProject.split(",");
for (String appliedVehicleProjectTemp : appliedVehicleProjectArr) {
if(carMarket.contains(appliedVehicleProjectTemp)){
omaMap.put(manageApplyEO.getVdr(), manageApplyEO);
break;
}
// String[] split = appliedVehicleProjectTemp.split(" ");
// if (split.length == 1) {
// omaMap.put(manageApplyEO.getVdr(), manageApplyEO);
// break;
// } else if (split.length == 2) {
// if (Arrays.equals(conditionSplit, split)) {
// omaMap.put(manageApplyEO.getVdr(), manageApplyEO);
// break;
// }
// } else if (split.length == 3) {
// List<String> listTemp = Arrays.asList(split);
// List<String> conditionList = Arrays.asList(conditionSplit);
// if (listTemp.containsAll(conditionList)) {
// omaMap.put(manageApplyEO.getVdr(), manageApplyEO);
// break;
// }
// }
}
}
}
@@ -2000,6 +2164,60 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
return msgList;
}
@Override
public List<OtaManageApplyEO> getVdrListByProjectId(String projectId, String cut) {
ProjectLibraryBase plb = projectLibraryBaseService.selectById(projectId);
String name ="";
if (StringUtils.isNotEmpty(plb.getProjectName()) && plb.getProjectName().equals("FORCE")) {
name = "Force";
} else {
name = plb.getProjectName();
}
List<String> projectNameAndTargetMarketList = new ArrayList<>();
if (StringUtils.isNotEmpty(plb.getTargetMarket())) {
String[] marketStrs = plb.getTargetMarket().split(",");
for (String marketStr : marketStrs) {
if(marketStr.equals("China")){
projectNameAndTargetMarketList.add(name+" China");
}else if(marketStr.equals("UK")){
projectNameAndTargetMarketList.add(name+" RHD");
}else{
projectNameAndTargetMarketList.add(name+" "+marketStr);
}
}
}
LambdaQueryWrapper<OtaManageReceive> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(OtaManageReceive::getIsDel);
wrapper.ne(OtaManageReceive::getStatus,OtaHomoImpactEnum.STATUS.getValue());
List<OtaManageReceive> otaManageReceiveList = otaManageReceiveService.list(wrapper);
List<String> plannedBpLaunchBatchList = new ArrayList<>();
List<OtaManageApplyEO> otaManageApplyEOList = new ArrayList<>();
if(ObjectUtils.isNotEmpty(otaManageReceiveList)){
for (String s : projectNameAndTargetMarketList) {
List<String> collect = otaManageReceiveList.stream()
.filter(e -> StringUtils.isNotBlank(e.getPlannedBpLaunchBatch())
&& StringUtils.isNotBlank(e.getVehicleMatch())
&& e.getVehicleMatch().contains(s))
.map(OtaManageReceive::getPlannedBpLaunchBatch).distinct().collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
plannedBpLaunchBatchList.addAll(collect);
}
}
if(ObjectUtils.isNotEmpty(plannedBpLaunchBatchList)){
Collator comparator = Collator.getInstance(Locale.CHINESE);
//排序
Collections.sort(plannedBpLaunchBatchList, (e1, e2) -> {
return comparator.compare(e1, e2);
});
for (String s : plannedBpLaunchBatchList) {
OtaManageApplyEO otaManageApplyEO = new OtaManageApplyEO();
otaManageApplyEO.setPlannedBpLaunchBatch(s);
otaManageApplyEOList.add(otaManageApplyEO);
}
}
}
return otaManageApplyEOList;
}
@Override
public List<OtaManageApplyEO> getVdrListByProject(String projectId, String cut) {
List<OtaManageApplyEO> receiveList = this.getBaseMapper().getListByProjectId(projectId, "");
@@ -2033,15 +2251,22 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
return receiveList;
}
@Override
public List<Map<String, Object>> getStatisticalStatus(String projectId, String plannedBpLaunchBatch, String cut, List<ProjectLibraryBase> plbEoList) {
public List<Map<String, Object>> getStatisticalStatus(String projectId,
String plannedBpLaunchBatch,
String cut,
List<ProjectLibraryBase> plbEoList,
String appliedVehicleProject) {
List<Map<String, Object>> result = new ArrayList<>();
List<ProjectLibraryBase> projectLibraryBaseList = new ArrayList<>();
if (ObjectUtils.isNotEmpty(plbEoList)) {
projectLibraryBaseList = plbEoList.stream().filter(e -> e.getId().equals(projectId)).collect(Collectors.toList());
}
List<OtaManageApplyEO> receiveList = this.getBaseMapper().getListByProjectId(projectId, plannedBpLaunchBatch);
// List<OtaManageApplyEO> receiveList = this.getBaseMapper().getListByProjectId(projectId, plannedBpLaunchBatch);
OtaManageApplyEO otaManageApplyEO = new OtaManageApplyEO();
otaManageApplyEO.setPlannedBpLaunchBatch(plannedBpLaunchBatch);
otaManageApplyEO.setAppliedVehicleProject(appliedVehicleProject);
List<OtaManageApplyEO> receiveList = getOtaCarInfoList(otaManageApplyEO,cut);
if (!receiveList.isEmpty()) {
List<String> plannedBpLaunchBatchList = receiveList.stream()
@@ -2068,7 +2293,9 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
int stored = 0;//部件报告已入库
for (OtaManageApplyEO oma : otaManageApplyEOList) {
if (StringUtils.isBlank(oma.getMatchStatus()) || oma.getMatchStatus().equals(OtaStatusEnum.TO_BE_MATCHED.getKey())) {
// if (StringUtils.isBlank(oma.getMatchStatus()) || oma.getMatchStatus().equals(OtaStatusEnum.TO_BE_MATCHED.getKey())) {
if ((OtaStatusEnum.TO_BE_MATCHED.getKey().equals(oma.getMatchStatus())
&& (StringUtils.isBlank(oma.getProjectVersion()) || projectId.equals(oma.getProjectVersion())))) {
toBeMatched++;
} else if (oma.getMatchStatus().equals(OtaStatusEnum.TO_BE_APPROVED.getKey())) {
toBeApproved++;
@@ -2076,26 +2303,57 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
locked++;
} else if (oma.getMatchStatus().equals(OtaStatusEnum.REJECTED.getKey())) {
rejected++;
} else {
toBeMatched++;
}
if (StringUtils.isBlank(oma.getAttestationSchedule()) || oma.getAttestationSchedule().equals(CertificationProgressEnum.NOT_START.getValue())) {
// else {
// toBeMatched++;
// }
// if (StringUtils.isBlank(oma.getAttestationSchedule()) || oma.getAttestationSchedule().equals(CertificationProgressEnum.NOT_START.getValue())) {
if (StringUtils.isNotBlank(oma.getAttestationSchedule())
&& oma.getAttestationSchedule().equals(CertificationProgressEnum.NOT_START.getValue())
&& !OtaHomoImpactEnum.STATUS.getValue().equals(oma.getStatus())
&& (OtaHomoImpactEnum.HOMOEX_RETEST.getValue().equals(oma.getHomologationImpact())
|| OtaHomoImpactEnum.HOMOEX_PAPERWORK.getValue().equals(oma.getHomologationImpact()))) {
notStart++;
} else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.IN_PROGRESS.getValue())) {
} else if (StringUtils.isNotBlank(oma.getAttestationSchedule())
&& oma.getAttestationSchedule().equals(CertificationProgressEnum.IN_PROGRESS.getValue())
&& !OtaHomoImpactEnum.STATUS.getValue().equals(oma.getStatus())
&& (OtaHomoImpactEnum.HOMOEX_RETEST.getValue().equals(oma.getHomologationImpact())
|| OtaHomoImpactEnum.HOMOEX_PAPERWORK.getValue().equals(oma.getHomologationImpact()))) {
inProgress++;
} else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.TEST_PASSED.getValue())) {
} else if (StringUtils.isNotBlank(oma.getAttestationSchedule())
&& oma.getAttestationSchedule().equals(CertificationProgressEnum.TEST_PASSED.getValue())
&& !OtaHomoImpactEnum.STATUS.getValue().equals(oma.getStatus())
&& (OtaHomoImpactEnum.HOMOEX_RETEST.getValue().equals(oma.getHomologationImpact())
|| OtaHomoImpactEnum.HOMOEX_PAPERWORK.getValue().equals(oma.getHomologationImpact()))) {
testPassed++;
} else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.TEST_FAILED.getValue())) {
} else if (StringUtils.isNotBlank(oma.getAttestationSchedule())
&& oma.getAttestationSchedule().equals(CertificationProgressEnum.TEST_FAILED.getValue())
&& !OtaHomoImpactEnum.STATUS.getValue().equals(oma.getStatus())
&& (OtaHomoImpactEnum.HOMOEX_RETEST.getValue().equals(oma.getHomologationImpact())
|| OtaHomoImpactEnum.HOMOEX_PAPERWORK.getValue().equals(oma.getHomologationImpact()))) {
testFailed++;
} else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_NOT_SUBMITTED.getValue())) {
} else if (StringUtils.isNotBlank(oma.getAttestationSchedule())
&& oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_NOT_SUBMITTED.getValue())
&& !OtaHomoImpactEnum.STATUS.getValue().equals(oma.getStatus())
&& (OtaHomoImpactEnum.HOMOEX_RETEST.getValue().equals(oma.getHomologationImpact())
|| OtaHomoImpactEnum.HOMOEX_PAPERWORK.getValue().equals(oma.getHomologationImpact()))) {
notSubmitted++;
} else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_SUBMITTED.getValue())) {
} else if (StringUtils.isNotBlank(oma.getAttestationSchedule())
&& oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_SUBMITTED.getValue())
&& !OtaHomoImpactEnum.STATUS.getValue().equals(oma.getStatus())
&& (OtaHomoImpactEnum.HOMOEX_RETEST.getValue().equals(oma.getHomologationImpact())
|| OtaHomoImpactEnum.HOMOEX_PAPERWORK.getValue().equals(oma.getHomologationImpact()))) {
submitted++;
} else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_HAS_BEEN_STORED.getValue())) {
} else if (StringUtils.isNotBlank(oma.getAttestationSchedule())
&& oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_HAS_BEEN_STORED.getValue())
&& !OtaHomoImpactEnum.STATUS.getValue().equals(oma.getStatus())
&& (OtaHomoImpactEnum.HOMOEX_RETEST.getValue().equals(oma.getHomologationImpact())
|| OtaHomoImpactEnum.HOMOEX_PAPERWORK.getValue().equals(oma.getHomologationImpact()))) {
stored++;
} else {
notStart++;
}
// else {
// notStart++;
// }
}
Map<String, Object> statisticalMap = new HashMap<>();
@@ -2143,6 +2401,115 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
return result;
}
// @Override
// public List<Map<String, Object>> getStatisticalStatus(String projectId, String plannedBpLaunchBatch, String cut, List<ProjectLibraryBase> plbEoList) {
// List<Map<String, Object>> result = new ArrayList<>();
// List<ProjectLibraryBase> projectLibraryBaseList = new ArrayList<>();
// if (ObjectUtils.isNotEmpty(plbEoList)) {
// projectLibraryBaseList = plbEoList.stream().filter(e -> e.getId().equals(projectId)).collect(Collectors.toList());
// }
// List<OtaManageApplyEO> receiveList = this.getBaseMapper().getListByProjectId(projectId, plannedBpLaunchBatch);
//
// if (!receiveList.isEmpty()) {
// List<String> plannedBpLaunchBatchList = receiveList.stream()
// .filter(e -> StringUtils.isNotBlank(e.getPlannedBpLaunchBatch()))
// .map(OtaManageApplyEO::getPlannedBpLaunchBatch).distinct().collect(Collectors.toList());
//
// for (String s : plannedBpLaunchBatchList) {
// List<OtaManageApplyEO> otaManageApplyEOList = receiveList.stream()
// .filter(e -> s.equals(e.getPlannedBpLaunchBatch())).collect(Collectors.toList());
//
// int total = otaManageApplyEOList.size();
// //匹配状态
// int toBeMatched = 0;//待匹配
// int toBeApproved = 0;//待审批
// int locked = 0;//锁定
// int rejected = 0;//退回
// //认证进度
// int notStart = 0;//未开始
// int inProgress = 0;//进行中
// int testPassed = 0;//实验通过
// int testFailed = 0;//实验失败
// int notSubmitted = 0;//部件报告未提交
// int submitted = 0;//部件报告已提交
// int stored = 0;//部件报告已入库
//
// for (OtaManageApplyEO oma : otaManageApplyEOList) {
// if (StringUtils.isBlank(oma.getMatchStatus()) || oma.getMatchStatus().equals(OtaStatusEnum.TO_BE_MATCHED.getKey())) {
// toBeMatched++;
// } else if (oma.getMatchStatus().equals(OtaStatusEnum.TO_BE_APPROVED.getKey())) {
// toBeApproved++;
// } else if (oma.getMatchStatus().equals(OtaStatusEnum.LOCKED.getKey())) {
// locked++;
// } else if (oma.getMatchStatus().equals(OtaStatusEnum.REJECTED.getKey())) {
// rejected++;
// } else {
// toBeMatched++;
// }
// if (StringUtils.isBlank(oma.getAttestationSchedule()) || oma.getAttestationSchedule().equals(CertificationProgressEnum.NOT_START.getValue())) {
// notStart++;
// } else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.IN_PROGRESS.getValue())) {
// inProgress++;
// } else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.TEST_PASSED.getValue())) {
// testPassed++;
// } else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.TEST_FAILED.getValue())) {
// testFailed++;
// } else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_NOT_SUBMITTED.getValue())) {
// notSubmitted++;
// } else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_SUBMITTED.getValue())) {
// submitted++;
// } else if (oma.getAttestationSchedule().equals(CertificationProgressEnum.COMPONENT_REPORT_HAS_BEEN_STORED.getValue())) {
// stored++;
// } else {
// notStart++;
// }
// }
//
// Map<String, Object> statisticalMap = new HashMap<>();
// statisticalMap.put("plannedBpLaunchBatch", s);
// statisticalMap.put("allCount", total);
// List<Map<String, Object>> matchStatusMapList = new ArrayList<>();
// matchStatusMapList.add(wrapStatMap("matchStatus", "matchStatusCount", OtaStatusEnum.TO_BE_MATCHED.getKey(), toBeMatched));
// matchStatusMapList.add(wrapStatMap("matchStatus", "matchStatusCount", OtaStatusEnum.TO_BE_APPROVED.getKey(), toBeApproved));
// matchStatusMapList.add(wrapStatMap("matchStatus", "matchStatusCount", OtaStatusEnum.LOCKED.getKey(), locked));
// matchStatusMapList.add(wrapStatMap("matchStatus", "matchStatusCount", OtaStatusEnum.REJECTED.getKey(), rejected));
// statisticalMap.put("matchStatusMapList", matchStatusMapList);
//
// Map<String, Object> matchStatusMap = new HashMap<>();
// matchStatusMap.put(OtaStatusEnum.TO_BE_MATCHED.getKey(), toBeMatched);
// matchStatusMap.put(OtaStatusEnum.TO_BE_APPROVED.getKey(), toBeApproved);
// matchStatusMap.put(OtaStatusEnum.LOCKED.getKey(), locked);
// matchStatusMap.put(OtaStatusEnum.REJECTED.getKey(), rejected);
// statisticalMap.put("matchStatusMap", matchStatusMap);
//
// List<Map<String, Object>> attestationScheduleMapList = new ArrayList<>();
// attestationScheduleMapList.add(wrapStatMap("attestationSchedule", "attestationScheduleCount", CertificationProgressEnum.NOT_START.getValue(), notStart));
// attestationScheduleMapList.add(wrapStatMap("attestationSchedule", "attestationScheduleCount", CertificationProgressEnum.IN_PROGRESS.getValue(), inProgress));
// attestationScheduleMapList.add(wrapStatMap("attestationSchedule", "attestationScheduleCount", CertificationProgressEnum.TEST_PASSED.getValue(), testPassed));
// attestationScheduleMapList.add(wrapStatMap("attestationSchedule", "attestationScheduleCount", CertificationProgressEnum.TEST_FAILED.getValue(), testFailed));
// attestationScheduleMapList.add(wrapStatMap("attestationSchedule", "attestationScheduleCount", CertificationProgressEnum.COMPONENT_REPORT_NOT_SUBMITTED.getValue(), notSubmitted));
// attestationScheduleMapList.add(wrapStatMap("attestationSchedule", "attestationScheduleCount", CertificationProgressEnum.COMPONENT_REPORT_SUBMITTED.getValue(), submitted));
// attestationScheduleMapList.add(wrapStatMap("attestationSchedule", "attestationScheduleCount", CertificationProgressEnum.COMPONENT_REPORT_HAS_BEEN_STORED.getValue(), stored));
// statisticalMap.put("attestationScheduleMapList", attestationScheduleMapList);
//
// Map<String, Object> attestationScheduleMap = new HashMap<>();
// attestationScheduleMap.put(CertificationProgressEnum.NOT_START.getValue().replace(" ", "_"), notStart);
// attestationScheduleMap.put(CertificationProgressEnum.IN_PROGRESS.getValue().replace(" ", "_"), inProgress);
// attestationScheduleMap.put(CertificationProgressEnum.TEST_PASSED.getValue().replace(" ", "_"), testPassed);
// attestationScheduleMap.put(CertificationProgressEnum.TEST_FAILED.getValue().replace(" ", "_"), testFailed);
// attestationScheduleMap.put(CertificationProgressEnum.COMPONENT_REPORT_NOT_SUBMITTED.getValue().replace(" ", "_"), notSubmitted);
// attestationScheduleMap.put(CertificationProgressEnum.COMPONENT_REPORT_SUBMITTED.getValue().replace(" ", "_"), submitted);
// attestationScheduleMap.put(CertificationProgressEnum.COMPONENT_REPORT_HAS_BEEN_STORED.getValue().replace(" ", "_"), stored);
// statisticalMap.put("attestationScheduleMap", attestationScheduleMap);
//
// if (!projectLibraryBaseList.isEmpty()) {
// statisticalMap.put("showName", projectLibraryBaseList.get(0).getShowName());
// }
// result.add(statisticalMap);
// }
// }
// return result;
// }
private Map<String, Object> wrapStatMap(String key, String val, String keyStr, Object valObj) {
Map<String, Object> map = new HashMap<>();
@@ -3295,7 +3295,7 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
}
String projectLibraryId = (String) params.get("projectLibraryId");
List<Map<String, Object>> mapList = otaManageApplyEOService.getStatisticalStatus(projectLibraryId, null, cut,null);
List<Map<String, Object>> mapList = otaManageApplyEOService.getStatisticalStatus(projectLibraryId, null, cut,null,null);
if(ObjectUtils.isNotEmpty(mapList)){
int dataIndex = 2;
@@ -269,6 +269,9 @@ public class ProjectLibraryBase implements Comparable<ProjectLibraryBase> {
@ApiModelProperty(value = "平台件类型")
private String platformType;
@TableField(exist = false)
private String appliedVehicleProject;
@Override
public int compareTo(ProjectLibraryBase o) {
@@ -0,0 +1,55 @@
package com.jero.modules.project.enums;
import com.jero.common.constant.enums.CutEnum;
import java.util.ArrayList;
import java.util.List;
/**
* 问题优先级枚举类
*/
public enum ProblemPriorityEnum {
LOW("","Low"),
MIDDLE("","Middle"),
HIGH("","High"),
;
String valueCn;
String valueEn;
private ProblemPriorityEnum(String valueCn, String valueEn) {
this.valueCn = valueCn;
this.valueEn = valueEn;
}
public String getValueCn() {
return valueCn;
}
public void setValueCn(String valueCn) {
this.valueCn = valueCn;
}
public String getValueEn() {
return valueEn;
}
public void setValueEn(String valueEn) {
this.valueEn = valueEn;
}
public static List<String> getValueAll(String cut) {
ProblemPriorityEnum[] values = values();
List<String> result = new ArrayList<>();
for (ProblemPriorityEnum taskStatusEnum : values) {
if(CutEnum.CN.getValue().equals(cut)){
result.add(taskStatusEnum.getValueCn());
}else{
result.add(taskStatusEnum.getValueEn());
}
}
return result;
}
}
@@ -22,6 +22,7 @@ import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO;
import com.jero.modules.project.enums.ColourEnum;
import com.jero.modules.project.enums.ComplianceFlowStatusEnum;
import com.jero.modules.project.enums.DataEnum;
import com.jero.modules.project.enums.ProblemPriorityEnum;
import com.jero.modules.project.enums.ReviewResultEnum;
import com.jero.modules.project.mapper.NcrTrackMapper;
import com.jero.modules.project.mapper.ProblemManagementEOMapper;
@@ -73,6 +74,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -382,7 +384,7 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
//条件查询
trackVOList = parameterQuery(ncrTrackVO, trackVOList);
//表头排序
heartSort(ncrTrackVO, trackVOList,problemPriorityList,ncrTrackVO.getCut());
trackVOList = heartSort(ncrTrackVO, trackVOList,problemPriorityList,ncrTrackVO.getCut());
if(StringUtils.isBlank(ncrTrackVO.getOrderByField())){
Collections.sort(trackVOList, new Comparator<NcrTrackVO>() {
@Override
@@ -405,9 +407,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
return problemManagement;
}
private void heartSort(NcrTrackVO ncrTrackVO, List<NcrTrackVO> trackVOList,List<DictModel> problemPriorityList,String cut) {
private List<NcrTrackVO> heartSort(NcrTrackVO ncrTrackVO, List<NcrTrackVO> trackVOList,List<DictModel> problemPriorityList,String cut) {
Collator comparator = Collator.getInstance(Locale.CHINESE);
if("problemPriority".equals(ncrTrackVO.getOrderByField())){
List<String> valueList = ProblemPriorityEnum.getValueAll(cut);
//优先级数据字典转换
for (NcrTrackVO trackVO : trackVOList) {
String problemPriority = trackVO.getProblemPriority();
@@ -422,18 +425,38 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
}
}
}
List<NcrTrackVO> ncrTrackVOList = new LinkedList<>();
//优先级没有值的数据
List<NcrTrackVO> dataNoList = trackVOList.stream().filter(e -> !valueList.contains(e.getProblemPriorityName())).collect(Collectors.toList());
if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) {
Collections.sort(trackVOList, (e1, e2) -> {
String e1Field = StringUtils.isNotBlank(e1.getProblemPriorityName()) ? e1.getProblemPriorityName() : "";
String e2Field = StringUtils.isNotBlank(e2.getProblemPriorityName()) ? e2.getProblemPriorityName() : "";
return comparator.compare(e1Field, e2Field);
});
for (String s : valueList) {
List<NcrTrackVO> collect = trackVOList.stream().filter(e -> s.equals(e.getProblemPriorityName())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
ncrTrackVOList.addAll(collect);
}
}
if(ObjectUtils.isNotEmpty(dataNoList)){
ncrTrackVOList.addAll(dataNoList);
}
if(ObjectUtils.isNotEmpty(ncrTrackVOList)){
trackVOList = ncrTrackVOList;
}
} else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) {
Collections.sort(trackVOList, (e1, e2) -> {
String e1Field = StringUtils.isNotBlank(e1.getProblemPriorityName()) ? e1.getProblemPriorityName() : "";
String e2Field = StringUtils.isNotBlank(e2.getProblemPriorityName()) ? e2.getProblemPriorityName() : "";
return comparator.compare(e2Field, e1Field);
});
for (int i = valueList.size()-1; i >= 0; i--) {
int finalI = i;
List<NcrTrackVO> collect = trackVOList.stream().filter(e -> valueList.get(finalI).equals(e.getProblemPriorityName())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
ncrTrackVOList.addAll(collect);
}
}
if(ObjectUtils.isNotEmpty(dataNoList)){
ncrTrackVOList.addAll(dataNoList);
}
if(ObjectUtils.isNotEmpty(ncrTrackVOList)){
trackVOList = ncrTrackVOList;
}
}
}
if ("title".equals(ncrTrackVO.getOrderByField())) {
@@ -587,6 +610,7 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
});
}
}
return trackVOList;
}
@NotNull
@@ -1288,6 +1288,29 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
//目标市场数据字典
List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
for(ProjectLibraryBase projectLibraryBase: records){
//setOtaProjectName ota状态统计传参使用
String projectName = projectLibraryBase.getProjectName();
if("FORCE".equals(projectName)){
projectName = "Force";
}
String market = projectLibraryBase.getTargetMarket();
List<String> projectNameAndTargetMarketList = new ArrayList<>();
if(StringUtils.isNotBlank(market)){
for (String marketStr : market.split(",")) {
if(marketStr.equals("China")){
projectNameAndTargetMarketList.add(projectName+" China");
}else if(marketStr.equals("UK")){
projectNameAndTargetMarketList.add(projectName+" RHD");
}else{
projectNameAndTargetMarketList.add(projectName+" "+marketStr);
}
}
}
if(ObjectUtils.isNotEmpty(projectNameAndTargetMarketList)){
projectLibraryBase.setAppliedVehicleProject(StringUtils.join(projectNameAndTargetMarketList,","));
}
//历史数据的主版本没有版本号,所以默认给00
if(StringUtils.isBlank(projectLibraryBase.getParentId()) && StringUtils.isBlank(projectLibraryBase.getProjectVersion())){
projectLibraryBase.setProjectVersion("00");
@@ -3970,6 +3993,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
}
private void exportOtaCollecting(HSSFWorkbook workbook, Map<String, Object> params) {
String cut = (String) params.get("cut");
String appliedVehicleProject = (String) params.get("appliedVehicleProject");
String sheetName = "OTA状态";
String firstTitle = "匹配状态统计,OTA认证进度统计";
String secondTitle = "软件版本,待匹配,待审批,锁定,退回,未开始,进行中,实验通过,实验失败,部件报告未提交,部件报告已提交,部件报告已入库";
@@ -4017,7 +4041,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
}
String projectLibraryId = (String) params.get("projectLibraryId");
List<Map<String, Object>> mapList = otaManageApplyEOService.getStatisticalStatus(projectLibraryId, null, cut,null);
List<Map<String, Object>> mapList = otaManageApplyEOService.getStatisticalStatus(projectLibraryId, null, cut,null,appliedVehicleProject);
if(ObjectUtils.isNotEmpty(mapList)){
int dataIndex = 2;
@@ -686,7 +686,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
for (String projectId : projectIdListTemp) {
List<Map<String, Object>> statisticalStatus = otaManageApplyEOService.getStatisticalStatus(projectId,
"",
projectLibraryBase.getCut(),plbEoList);
projectLibraryBase.getCut(),plbEoList,null);
mapList.addAll(statisticalStatus);
}
}
@@ -73,6 +73,8 @@
<a-select
class="box-input"
mode="multiple"
optionFilterProp="children"
:filterOption="filterOption"
v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')">
<a-select-option
@@ -2237,6 +2239,9 @@
this.selectedValue = this.checkedList
this.indeterminate = false
},
filterOption(input, option) {
return option.componentOptions.children[0].children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
getcustomizeList(item) {
let params = {
paramsManifestId: this.$route.query.id,
@@ -281,7 +281,8 @@
},
stateExportClick() {
let query = {
projectLibraryId: this.$route.query.id
projectLibraryId: this.$route.query.id,
appliedVehicleProject:this.queryForm.appliedVehicleProject
}
downloadFile('/project/projectLibraryBase/exportProjectProgressStatisticsXls',
this.queryForm.projectName+'-'+this.queryForm.projectVersion+'-'+this.$t('projectProgressStatistics') + '.xls', query)
@@ -105,7 +105,11 @@
idList: {
type: Array,
default: []
}
},
queryForm:{
type: Object,
default: {}
},
},
data() {
return {
@@ -149,7 +153,8 @@
getData() {
let query = {
...this.queryParam,
projectId:this.$route.query.id
projectId:this.$route.query.id,
appliedVehicleProject:this.queryForm.appliedVehicleProject
}
getAction('ota/otaManageApplyEO/getStatisticalStatus', query).then((res) => {
if (res.success) {
@@ -26,7 +26,7 @@
v-if="activeKey == $t('parameterCollectionProgressManagement')"/>
</a-tab-pane>
<a-tab-pane :key="$t('otastatus')" :tab="$t('otastatus')">
<otastatus @currentStatus="currentStatus" :idList="idList" v-if="activeKey == $t('otastatus')"/>
<otastatus :queryForm="queryForm" ref="otastatusRef" @currentStatus="currentStatus" :idList="idList" v-if="activeKey == $t('otastatus')"/>
</a-tab-pane>
<a-tab-pane :key="$t('Problemanagement')" :tab="$t('Problemanagement')">
<nonConformance ref="nonConformanceRef" @currentStatus="currentStatus"