Merge branch 'dev_20240116_OTA' into 'master'
Dev 20240116 ota See merge request laws-nio/laws-weilai!368
This commit is contained in:
+11
-4
@@ -293,17 +293,24 @@ public class OtaManageApplyEOController extends JeroController<OtaManageApplyEO,
|
|||||||
@AutoLog(value = "查询项目涉及的VDR版本")
|
@AutoLog(value = "查询项目涉及的VDR版本")
|
||||||
@ApiOperation(value = "查询项目涉及的VDR版本", notes = "查询项目涉及的VDR版本")
|
@ApiOperation(value = "查询项目涉及的VDR版本", notes = "查询项目涉及的VDR版本")
|
||||||
@GetMapping(value = "/getVdrListByProject")
|
@GetMapping(value = "/getVdrListByProject")
|
||||||
public Result<?> getVdrListByProject(String projectId, String cut) {
|
public Result<?> getVdrListByProjectId(String projectId, String cut) {
|
||||||
List<OtaManageApplyEO> resList = otaManageApplyEOService.getVdrListByProject(projectId, cut);
|
List<OtaManageApplyEO> resList = otaManageApplyEOService.getVdrListByProjectId(projectId, cut);
|
||||||
return Result.OK("操作成功!", resList);
|
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查询状态")
|
@AutoLog(value = "通过软件版本和项目ID查询状态")
|
||||||
@ApiOperation(value = "通过软件版本和项目ID查询状态", notes = "通过软件版本和项目ID查询状态")
|
@ApiOperation(value = "通过软件版本和项目ID查询状态", notes = "通过软件版本和项目ID查询状态")
|
||||||
@GetMapping(value = "/getStatisticalStatus")
|
@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<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()){
|
if(!res.isEmpty()){
|
||||||
return Result.OK("操作成功!", res.get(0));
|
return Result.OK("操作成功!", res.get(0));
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
+2
-4
@@ -1,14 +1,12 @@
|
|||||||
package com.jero.modules.ota.enums;
|
package com.jero.modules.ota.enums;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public enum OtaHomoImpactEnum {
|
public enum OtaHomoImpactEnum {
|
||||||
|
|
||||||
YES("Yes", "Yes"),
|
YES("Yes", "Yes"),
|
||||||
INTER_VALID("Internal Validation", "Internal Validation"),
|
INTER_VALID("Internal Validation", "Internal Validation"),
|
||||||
HOMOEX_RETEST("Homo Extension - Retest", "Homo Extension - Retest"),
|
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 name;
|
||||||
String value;
|
String value;
|
||||||
|
|||||||
+4
-4
@@ -1,13 +1,11 @@
|
|||||||
package com.jero.modules.ota.mapper;
|
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.entity.OtaManageReceiveNsdpEO;
|
||||||
import com.jero.modules.ota.vo.VersionVO;
|
import com.jero.modules.ota.vo.VersionVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -29,6 +27,8 @@ public interface OtaManageApplyEOMapper extends BaseMapper<OtaManageApplyEO> {
|
|||||||
*/
|
*/
|
||||||
List<OtaManageApplyEO> getOtaCarPage(@Param("otaManageApplyEO") OtaManageApplyEO otaManageApplyEO);
|
List<OtaManageApplyEO> getOtaCarPage(@Param("otaManageApplyEO") OtaManageApplyEO otaManageApplyEO);
|
||||||
|
|
||||||
|
List<OtaManageApplyEO> getOtaCarInfoList(@Param("otaManageApplyEO") OtaManageApplyEO otaManageApplyEO);
|
||||||
|
|
||||||
List<VersionVO> getByAppliedVehicleProject(@Param("appliedVehicleProject") String appliedVehicleProject);
|
List<VersionVO> getByAppliedVehicleProject(@Param("appliedVehicleProject") String appliedVehicleProject);
|
||||||
|
|
||||||
List<OtaManageApplyEO> getOtaCarList(@Param("plannedBpLaunchBatch") String plannedBpLaunchBatch);
|
List<OtaManageApplyEO> getOtaCarList(@Param("plannedBpLaunchBatch") String plannedBpLaunchBatch);
|
||||||
|
|||||||
+35
@@ -101,6 +101,41 @@
|
|||||||
</where>
|
</where>
|
||||||
order by omr.id desc
|
order by omr.id desc
|
||||||
</select>
|
</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">
|
<select id="getByAppliedVehicleProject" resultType="com.jero.modules.ota.vo.VersionVO">
|
||||||
|
|||||||
+5
-1
@@ -126,9 +126,13 @@ public interface IOtaManageApplyEOService extends IService<OtaManageApplyEO> {
|
|||||||
|
|
||||||
List<String> reject(String ids, String rejectReason,String cut);
|
List<String> reject(String ids, String rejectReason,String cut);
|
||||||
|
|
||||||
|
List<OtaManageApplyEO> getVdrListByProjectId(String projectId, String cut);
|
||||||
|
|
||||||
List<OtaManageApplyEO> getVdrListByProject(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);
|
ModelAndView otaExportXls(HttpServletRequest request, OtaManageApplyEO otaManageApplyEO);
|
||||||
|
|
||||||
|
|||||||
+400
-33
@@ -792,27 +792,191 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
|
|||||||
if (StringUtils.isNotBlank(appliedVehicleProject)) {
|
if (StringUtils.isNotBlank(appliedVehicleProject)) {
|
||||||
String[] appliedVehicleProjectArr = appliedVehicleProject.split(",");
|
String[] appliedVehicleProjectArr = appliedVehicleProject.split(",");
|
||||||
for (String appliedVehicleProjectTemp : appliedVehicleProjectArr) {
|
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);
|
omaMap.put(manageApplyEO.getVdr(), manageApplyEO);
|
||||||
break;
|
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;
|
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
|
@Override
|
||||||
public List<OtaManageApplyEO> getVdrListByProject(String projectId, String cut) {
|
public List<OtaManageApplyEO> getVdrListByProject(String projectId, String cut) {
|
||||||
List<OtaManageApplyEO> receiveList = this.getBaseMapper().getListByProjectId(projectId, "");
|
List<OtaManageApplyEO> receiveList = this.getBaseMapper().getListByProjectId(projectId, "");
|
||||||
@@ -2033,15 +2251,22 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
|
|||||||
}
|
}
|
||||||
return receiveList;
|
return receiveList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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<Map<String, Object>> result = new ArrayList<>();
|
||||||
List<ProjectLibraryBase> projectLibraryBaseList = new ArrayList<>();
|
List<ProjectLibraryBase> projectLibraryBaseList = new ArrayList<>();
|
||||||
if (ObjectUtils.isNotEmpty(plbEoList)) {
|
if (ObjectUtils.isNotEmpty(plbEoList)) {
|
||||||
projectLibraryBaseList = plbEoList.stream().filter(e -> e.getId().equals(projectId)).collect(Collectors.toList());
|
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()) {
|
if (!receiveList.isEmpty()) {
|
||||||
List<String> plannedBpLaunchBatchList = receiveList.stream()
|
List<String> plannedBpLaunchBatchList = receiveList.stream()
|
||||||
@@ -2068,7 +2293,9 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
|
|||||||
int stored = 0;//部件报告已入库
|
int stored = 0;//部件报告已入库
|
||||||
|
|
||||||
for (OtaManageApplyEO oma : otaManageApplyEOList) {
|
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++;
|
toBeMatched++;
|
||||||
} else if (oma.getMatchStatus().equals(OtaStatusEnum.TO_BE_APPROVED.getKey())) {
|
} else if (oma.getMatchStatus().equals(OtaStatusEnum.TO_BE_APPROVED.getKey())) {
|
||||||
toBeApproved++;
|
toBeApproved++;
|
||||||
@@ -2076,26 +2303,57 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
|
|||||||
locked++;
|
locked++;
|
||||||
} else if (oma.getMatchStatus().equals(OtaStatusEnum.REJECTED.getKey())) {
|
} else if (oma.getMatchStatus().equals(OtaStatusEnum.REJECTED.getKey())) {
|
||||||
rejected++;
|
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++;
|
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++;
|
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++;
|
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++;
|
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++;
|
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++;
|
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++;
|
stored++;
|
||||||
} else {
|
|
||||||
notStart++;
|
|
||||||
}
|
}
|
||||||
|
// else {
|
||||||
|
// notStart++;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> statisticalMap = new HashMap<>();
|
Map<String, Object> statisticalMap = new HashMap<>();
|
||||||
@@ -2143,6 +2401,115 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
|
|||||||
}
|
}
|
||||||
return result;
|
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) {
|
private Map<String, Object> wrapStatMap(String key, String val, String keyStr, Object valObj) {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
|||||||
+1
-1
@@ -3295,7 +3295,7 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
|
|||||||
}
|
}
|
||||||
|
|
||||||
String projectLibraryId = (String) params.get("projectLibraryId");
|
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)){
|
if(ObjectUtils.isNotEmpty(mapList)){
|
||||||
int dataIndex = 2;
|
int dataIndex = 2;
|
||||||
|
|||||||
+3
@@ -269,6 +269,9 @@ public class ProjectLibraryBase implements Comparable<ProjectLibraryBase> {
|
|||||||
@ApiModelProperty(value = "平台件类型")
|
@ApiModelProperty(value = "平台件类型")
|
||||||
private String platformType;
|
private String platformType;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String appliedVehicleProject;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(ProjectLibraryBase o) {
|
public int compareTo(ProjectLibraryBase o) {
|
||||||
|
|||||||
+55
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
-12
@@ -22,6 +22,7 @@ import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO;
|
|||||||
import com.jero.modules.project.enums.ColourEnum;
|
import com.jero.modules.project.enums.ColourEnum;
|
||||||
import com.jero.modules.project.enums.ComplianceFlowStatusEnum;
|
import com.jero.modules.project.enums.ComplianceFlowStatusEnum;
|
||||||
import com.jero.modules.project.enums.DataEnum;
|
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.enums.ReviewResultEnum;
|
||||||
import com.jero.modules.project.mapper.NcrTrackMapper;
|
import com.jero.modules.project.mapper.NcrTrackMapper;
|
||||||
import com.jero.modules.project.mapper.ProblemManagementEOMapper;
|
import com.jero.modules.project.mapper.ProblemManagementEOMapper;
|
||||||
@@ -73,6 +74,7 @@ import java.util.Collections;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -382,7 +384,7 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
|
|||||||
//条件查询
|
//条件查询
|
||||||
trackVOList = parameterQuery(ncrTrackVO, trackVOList);
|
trackVOList = parameterQuery(ncrTrackVO, trackVOList);
|
||||||
//表头排序
|
//表头排序
|
||||||
heartSort(ncrTrackVO, trackVOList,problemPriorityList,ncrTrackVO.getCut());
|
trackVOList = heartSort(ncrTrackVO, trackVOList,problemPriorityList,ncrTrackVO.getCut());
|
||||||
if(StringUtils.isBlank(ncrTrackVO.getOrderByField())){
|
if(StringUtils.isBlank(ncrTrackVO.getOrderByField())){
|
||||||
Collections.sort(trackVOList, new Comparator<NcrTrackVO>() {
|
Collections.sort(trackVOList, new Comparator<NcrTrackVO>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -405,9 +407,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
|
|||||||
return problemManagement;
|
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);
|
Collator comparator = Collator.getInstance(Locale.CHINESE);
|
||||||
if("problemPriority".equals(ncrTrackVO.getOrderByField())){
|
if("problemPriority".equals(ncrTrackVO.getOrderByField())){
|
||||||
|
List<String> valueList = ProblemPriorityEnum.getValueAll(cut);
|
||||||
//优先级数据字典转换
|
//优先级数据字典转换
|
||||||
for (NcrTrackVO trackVO : trackVOList) {
|
for (NcrTrackVO trackVO : trackVOList) {
|
||||||
String problemPriority = trackVO.getProblemPriority();
|
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())) {
|
if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) {
|
||||||
Collections.sort(trackVOList, (e1, e2) -> {
|
for (String s : valueList) {
|
||||||
String e1Field = StringUtils.isNotBlank(e1.getProblemPriorityName()) ? e1.getProblemPriorityName() : "";
|
List<NcrTrackVO> collect = trackVOList.stream().filter(e -> s.equals(e.getProblemPriorityName())).collect(Collectors.toList());
|
||||||
String e2Field = StringUtils.isNotBlank(e2.getProblemPriorityName()) ? e2.getProblemPriorityName() : "";
|
if(ObjectUtils.isNotEmpty(collect)){
|
||||||
return comparator.compare(e1Field, e2Field);
|
ncrTrackVOList.addAll(collect);
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
if(ObjectUtils.isNotEmpty(dataNoList)){
|
||||||
|
ncrTrackVOList.addAll(dataNoList);
|
||||||
|
}
|
||||||
|
if(ObjectUtils.isNotEmpty(ncrTrackVOList)){
|
||||||
|
trackVOList = ncrTrackVOList;
|
||||||
|
}
|
||||||
|
|
||||||
} else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) {
|
} else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) {
|
||||||
Collections.sort(trackVOList, (e1, e2) -> {
|
for (int i = valueList.size()-1; i >= 0; i--) {
|
||||||
String e1Field = StringUtils.isNotBlank(e1.getProblemPriorityName()) ? e1.getProblemPriorityName() : "";
|
int finalI = i;
|
||||||
String e2Field = StringUtils.isNotBlank(e2.getProblemPriorityName()) ? e2.getProblemPriorityName() : "";
|
List<NcrTrackVO> collect = trackVOList.stream().filter(e -> valueList.get(finalI).equals(e.getProblemPriorityName())).collect(Collectors.toList());
|
||||||
return comparator.compare(e2Field, e1Field);
|
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())) {
|
if ("title".equals(ncrTrackVO.getOrderByField())) {
|
||||||
@@ -587,6 +610,7 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return trackVOList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+25
-1
@@ -1288,6 +1288,29 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
|||||||
//目标市场数据字典
|
//目标市场数据字典
|
||||||
List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
|
List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
|
||||||
for(ProjectLibraryBase projectLibraryBase: records){
|
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
|
//历史数据的主版本没有版本号,所以默认给00
|
||||||
if(StringUtils.isBlank(projectLibraryBase.getParentId()) && StringUtils.isBlank(projectLibraryBase.getProjectVersion())){
|
if(StringUtils.isBlank(projectLibraryBase.getParentId()) && StringUtils.isBlank(projectLibraryBase.getProjectVersion())){
|
||||||
projectLibraryBase.setProjectVersion("00");
|
projectLibraryBase.setProjectVersion("00");
|
||||||
@@ -3970,6 +3993,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
|||||||
}
|
}
|
||||||
private void exportOtaCollecting(HSSFWorkbook workbook, Map<String, Object> params) {
|
private void exportOtaCollecting(HSSFWorkbook workbook, Map<String, Object> params) {
|
||||||
String cut = (String) params.get("cut");
|
String cut = (String) params.get("cut");
|
||||||
|
String appliedVehicleProject = (String) params.get("appliedVehicleProject");
|
||||||
String sheetName = "OTA状态";
|
String sheetName = "OTA状态";
|
||||||
String firstTitle = "匹配状态统计,OTA认证进度统计";
|
String firstTitle = "匹配状态统计,OTA认证进度统计";
|
||||||
String secondTitle = "软件版本,待匹配,待审批,锁定,退回,未开始,进行中,实验通过,实验失败,部件报告未提交,部件报告已提交,部件报告已入库";
|
String secondTitle = "软件版本,待匹配,待审批,锁定,退回,未开始,进行中,实验通过,实验失败,部件报告未提交,部件报告已提交,部件报告已入库";
|
||||||
@@ -4017,7 +4041,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
|||||||
}
|
}
|
||||||
|
|
||||||
String projectLibraryId = (String) params.get("projectLibraryId");
|
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)){
|
if(ObjectUtils.isNotEmpty(mapList)){
|
||||||
int dataIndex = 2;
|
int dataIndex = 2;
|
||||||
|
|||||||
+1
-1
@@ -686,7 +686,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
for (String projectId : projectIdListTemp) {
|
for (String projectId : projectIdListTemp) {
|
||||||
List<Map<String, Object>> statisticalStatus = otaManageApplyEOService.getStatisticalStatus(projectId,
|
List<Map<String, Object>> statisticalStatus = otaManageApplyEOService.getStatisticalStatus(projectId,
|
||||||
"",
|
"",
|
||||||
projectLibraryBase.getCut(),plbEoList);
|
projectLibraryBase.getCut(),plbEoList,null);
|
||||||
mapList.addAll(statisticalStatus);
|
mapList.addAll(statisticalStatus);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,6 +73,8 @@
|
|||||||
<a-select
|
<a-select
|
||||||
class="box-input"
|
class="box-input"
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
|
optionFilterProp="children"
|
||||||
|
:filterOption="filterOption"
|
||||||
v-model="formInline.dutyTerritory"
|
v-model="formInline.dutyTerritory"
|
||||||
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')">
|
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')">
|
||||||
<a-select-option
|
<a-select-option
|
||||||
@@ -2237,6 +2239,9 @@
|
|||||||
this.selectedValue = this.checkedList
|
this.selectedValue = this.checkedList
|
||||||
this.indeterminate = false
|
this.indeterminate = false
|
||||||
},
|
},
|
||||||
|
filterOption(input, option) {
|
||||||
|
return option.componentOptions.children[0].children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
|
},
|
||||||
getcustomizeList(item) {
|
getcustomizeList(item) {
|
||||||
let params = {
|
let params = {
|
||||||
paramsManifestId: this.$route.query.id,
|
paramsManifestId: this.$route.query.id,
|
||||||
|
|||||||
@@ -281,7 +281,8 @@
|
|||||||
},
|
},
|
||||||
stateExportClick() {
|
stateExportClick() {
|
||||||
let query = {
|
let query = {
|
||||||
projectLibraryId: this.$route.query.id
|
projectLibraryId: this.$route.query.id,
|
||||||
|
appliedVehicleProject:this.queryForm.appliedVehicleProject
|
||||||
}
|
}
|
||||||
downloadFile('/project/projectLibraryBase/exportProjectProgressStatisticsXls',
|
downloadFile('/project/projectLibraryBase/exportProjectProgressStatisticsXls',
|
||||||
this.queryForm.projectName+'-'+this.queryForm.projectVersion+'-'+this.$t('projectProgressStatistics') + '.xls', query)
|
this.queryForm.projectName+'-'+this.queryForm.projectVersion+'-'+this.$t('projectProgressStatistics') + '.xls', query)
|
||||||
|
|||||||
@@ -105,7 +105,11 @@
|
|||||||
idList: {
|
idList: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: []
|
default: []
|
||||||
}
|
},
|
||||||
|
queryForm:{
|
||||||
|
type: Object,
|
||||||
|
default: {}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -149,7 +153,8 @@
|
|||||||
getData() {
|
getData() {
|
||||||
let query = {
|
let query = {
|
||||||
...this.queryParam,
|
...this.queryParam,
|
||||||
projectId:this.$route.query.id
|
projectId:this.$route.query.id,
|
||||||
|
appliedVehicleProject:this.queryForm.appliedVehicleProject
|
||||||
}
|
}
|
||||||
getAction('ota/otaManageApplyEO/getStatisticalStatus', query).then((res) => {
|
getAction('ota/otaManageApplyEO/getStatisticalStatus', query).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
v-if="activeKey == $t('parameterCollectionProgressManagement')"/>
|
v-if="activeKey == $t('parameterCollectionProgressManagement')"/>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane :key="$t('otastatus')" :tab="$t('otastatus')">
|
<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>
|
||||||
<a-tab-pane :key="$t('Problemanagement')" :tab="$t('Problemanagement')">
|
<a-tab-pane :key="$t('Problemanagement')" :tab="$t('Problemanagement')">
|
||||||
<nonConformance ref="nonConformanceRef" @currentStatus="currentStatus"
|
<nonConformance ref="nonConformanceRef" @currentStatus="currentStatus"
|
||||||
|
|||||||
Reference in New Issue
Block a user