修改OTA问题

This commit is contained in:
高嵩
2023-10-22 14:46:51 +08:00
parent 59c4b632f8
commit 0c5cbb19d5
9 changed files with 215 additions and 91 deletions
@@ -62,6 +62,9 @@ public class OtaManageApplyEO implements Serializable {
@ApiModelProperty(value = "所属部门")
private java.lang.String sysOrgCode;
@ApiModelProperty(value = "VDR_ID")
private java.lang.String vdrId;
@ApiModelProperty(value = "VDR")
private java.lang.String vdr;
@@ -199,6 +202,10 @@ public class OtaManageApplyEO implements Serializable {
@TableField(exist = false)
private boolean disabled;
@ApiModelProperty(value = "是否丢弃置灰")
@TableField(exist = false)
private boolean discard;
@TableField(exist = false)
@ApiModelProperty(value = "表头排序字段")
private java.lang.String orderByField;
@@ -233,5 +240,12 @@ public class OtaManageApplyEO implements Serializable {
@ApiModelProperty(value = "扩展任务数量")
private Integer extensionItemCount;
@TableField(exist = false)
@ApiModelProperty(value = "是否被删除(0:否;1:是)")
private String isDel;
@TableField(exist = false)
private String attestationScheduleText;
}
@@ -32,9 +32,14 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
public class OtaManageReceive implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String vdrId;
/**VDR*/
@ApiModelProperty(value = "VDR")
private String id;
/**创建人*/
@@ -126,6 +131,9 @@ public class OtaManageReceive implements Serializable {
@ApiModelProperty(value = "发布类型")
private String releaseType;
/**是否被删除(0:否;1:是)*/
@Excel(name = "是否被删除(0:否;1:是)", width = 15)
@ApiModelProperty(value = "是否被删除(0:否;1:是)")
private String isDel;
}
@@ -45,26 +45,48 @@ public class OtaDataUpdate implements Job {
List<OtaManageReceive> omrSyncList = otaManageReceiveService.getReceiveSync();
for (OtaManageReceive omrSync : omrSyncList) {
String plannedBpLaunchBatch = omrSync.getPlannedBpLaunchBatch();
if (StringUtils.isNotEmpty(plannedBpLaunchBatch)) {
Matcher matcher = pattern.matcher(plannedBpLaunchBatch);
if (matcher.find()) {
omrSync.setPlannedBpLaunchBatch(matcher.group());
}
}
}
List<OtaManageReceive> omrList = otaManageReceiveService.queryList();
List<OtaManageReceive> addList = new ArrayList<>();
List<String> delList = new ArrayList<>();
List<OtaManageReceive> updateList = new ArrayList<>();
for (OtaManageReceive omr : omrList) {
boolean delFlag = true;
for (OtaManageReceive omrSync : omrSyncList) {
if(StringUtils.isBlank(omrSync.getPlannedBpLaunchBatch())){
continue;
}
if (omr.getId().equals(omrSync.getId())) {
delFlag = false;
if (!compareReceive(omr, omrSync)) {
if (1 == compareReceive(omr, omrSync)) {
updateList.add(omrSync);
} else if (2 == compareReceive(omr, omrSync)) {
boolean have = false;
for (OtaManageReceive omr1 : omrList) {
if(omrSync.getPlannedBpLaunchBatch().equals(omr1.getPlannedBpLaunchBatch())){
have = true;
break;
}
}
if(!have){
//逻辑删除 但保留在原软件版本列表中
omr.setIsDel("1");
updateList.add(omr);
//同步数据中新增
omrSync.setVdrId(UUID.randomUUID().toString().replace("-",""));
addList.add(omrSync);
}
}
}
}
if (delFlag) {
//同步数据中被删除
delList.add(omr.getId());
}
}
for (OtaManageReceive omrSync : omrSyncList) {
@@ -76,27 +98,28 @@ public class OtaDataUpdate implements Job {
}
if (addFlag) {
//同步数据中新增
String plannedBpLaunchBatch = omrSync.getPlannedBpLaunchBatch();
if (StringUtils.isNotEmpty(plannedBpLaunchBatch)) {
Matcher matcher = pattern.matcher(plannedBpLaunchBatch);
if (matcher.find()) {
omrSync.setPlannedBpLaunchBatch(matcher.group());
}
}
omrSync.setVdrId(UUID.randomUUID().toString().replace("-",""));
addList.add(omrSync);
}
}
if (CollectionUtils.isNotEmpty(addList)) {
otaManageReceiveService.saveBatch(addList);
}
if (CollectionUtils.isNotEmpty(addList)) {
otaManageReceiveService.deleteByIds(delList);
}
if (CollectionUtils.isNotEmpty(updateList)) {
otaManageReceiveService.updateBatchById(updateList);
}
List<OtaManageReceiveNsdp> omrnSyncList = otaManageReceiveNsdpService.getOtaManageReceiveNsdpSync();
for (OtaManageReceiveNsdp omrnSync : omrnSyncList) {
String plannedBpLaunchBatch = omrnSync.getReleaseName();
if (StringUtils.isNotEmpty(plannedBpLaunchBatch)) {
Matcher matcher = pattern.matcher(plannedBpLaunchBatch);
if (matcher.find()) {
omrnSync.setReleaseName(matcher.group());
}
}
}
List<OtaManageReceiveNsdp> omrnList = otaManageReceiveNsdpService.queryList();
List<OtaManageReceiveNsdp> addNsdpList = new ArrayList<>();
@@ -128,13 +151,7 @@ public class OtaDataUpdate implements Job {
}
if (addFlag) {
//同步数据中新增
String releaseName = omrnSync.getReleaseName();
if (StringUtils.isNotEmpty(releaseName)) {
Matcher matcher = pattern.matcher(releaseName);
if (matcher.find()) {
omrnSync.setReleaseName(matcher.group());
}
}
addNsdpList.add(omrnSync);
}
@@ -154,26 +171,24 @@ public class OtaDataUpdate implements Job {
Map<String, Date> releaceDateMap = new HashMap<>();
//记录车型列表
Map<String ,Set<String>> omrnVehicleMap = new HashMap<>();
Map<String ,String> releaceTypeMap = new HashMap<>();
Date today = new Date();
List<OtaManageReceiveNsdp> omrnLastList = otaManageReceiveNsdpService.queryList();
for (OtaManageReceiveNsdp omrn : omrnLastList) {
//找到最快来临的发布时间
Date releaceDate = releaceDateMap.get(omrn.getReleaseName());
try {
Date syncDate = sdf.parse(omrn.getReleaseDate());
if (null == releaceDate) {
releaceDateMap.put(omrn.getReleaseName(), syncDate);
} else {
if (syncDate.after(today) && syncDate.before(releaceDate)) {
if (StringUtils.isNotBlank(omrn.getDateName()) && omrn.getDateName().equals("PLM")) {
try {
Date syncDate = sdf.parse(omrn.getReleaseDate());
if (null == releaceDate) {
releaceDateMap.put(omrn.getReleaseName(), syncDate);
} else {
if (syncDate.before(releaceDate)) {
releaceDateMap.put(omrn.getReleaseName(), syncDate);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
} catch (ParseException e) {
e.printStackTrace();
}
//处理车型字符串
Set<String> vehicleSet = omrnVehicleMap.get(omrn.getReleaseName());
@@ -288,35 +303,49 @@ public class OtaDataUpdate implements Job {
if (!StringUtils.equals(omrn.getVehicle(), omrnSync.getVehicle())) {
return false;
}
if (!StringUtils.equals(omrn.getReleaseName(), omrnSync.getReleaseName())) {
return false;
}
return true;
}
private boolean compareReceive(OtaManageReceive omr, OtaManageReceive omrSync) {
/**
* 对比VDR数据
* 返回状态
* 0:无变化
* 1:有变化
* 2:改变版本号
*/
private int compareReceive(OtaManageReceive omr, OtaManageReceive omrSync) {
int res = 0;
if (!StringUtils.equals(omr.getSummary(), omrSync.getSummary())) {
return false;
res = 1;
}
if (!StringUtils.equals(omr.getStatus(), omrSync.getStatus())) {
return false;
res = 1;
}
if (!StringUtils.equals(omr.getHomologationImpact(), omrSync.getHomologationImpact())) {
return false;
res = 1;
}
if (!StringUtils.equals(omr.getHomologation(), omrSync.getHomologation())) {
return false;
res = 1;
}
if (!StringUtils.equals(omr.getImpactCnHomo(), omrSync.getImpactCnHomo())) {
return false;
res = 1;
}
if (!StringUtils.equals(omr.getImpactEuHomo(), omrSync.getImpactEuHomo())) {
return false;
res = 1;
}
if (!StringUtils.equals(omr.getMasterDomain(), omrSync.getMasterDomain())) {
return false;
res = 1;
}
if (!StringUtils.equals(omr.getAppliedVehicleProject(), omrSync.getAppliedVehicleProject())) {
return false;
res = 1;
}
return true;
if (!StringUtils.equals(omr.getPlannedBpLaunchBatch(), omrSync.getPlannedBpLaunchBatch())) {
res = 2;
}
return res;
}
@@ -68,14 +68,14 @@
</select>
<select id="getOtaCarPage" resultType="com.jero.modules.ota.entity.OtaManageApplyEO">
select omr.id as vdr,omr.planned_bp_launch_batch,omr.update_date,
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.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 = omr.id
left join ota_manage_apply oma on oma.vdr_id = omr.vdr_id
<where>
1=1
<if test="otaManageApplyEO.plannedBpLaunchBatch != null and otaManageApplyEO.plannedBpLaunchBatch != ''">
@@ -158,7 +158,7 @@
LEFT JOIN ota_manage_apply oma ON oma.project_version = plb.id
LEFT JOIN project_name_info pni ON pni.id = plb.project_name_id
LEFT JOIN project_year_name_info pyni ON pyni.project_name_id = pni.id
WHERE oma.vdr = #{vdr}
WHERE oma.vdr_id = #{vdr}
GROUP BY plb.id
</select>
@@ -203,7 +203,6 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
public List<OtaManageApplyEO> getNsdpList(OtaManageApplyEO otaManageApplyEO) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date today = new Date();
List<OtaManageApplyEO> resList = new ArrayList<>();
List<OtaManageReceiveNsdp> dataList = otaManageReceiveNsdpService.queryList();
Map<String, List<OtaManageReceiveNsdp>> dataMap = dataList.stream().collect(Collectors.groupingBy(OtaManageReceiveNsdp::getReleaseName));
@@ -228,13 +227,15 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
//找到最快来临的发布时间
try {
if(StringUtils.isNotBlank(omrn.getReleaseDate())){
Date syncDate = sdf.parse(omrn.getReleaseDate());
if (null == releaseDate) {
releaseDate = syncDate;
} else {
if (syncDate.after(today) && syncDate.before(releaseDate)) {
if(StringUtils.isNotBlank(omrn.getDateName())&&omrn.getDateName().equals("PLM")){
if(StringUtils.isNotBlank(omrn.getReleaseDate())){
Date syncDate = sdf.parse(omrn.getReleaseDate());
if (null == releaseDate) {
releaseDate = syncDate;
} else {
if (syncDate.before(releaseDate)) {
releaseDate = syncDate;
}
}
}
}
@@ -299,11 +300,13 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
public List<OtaManageApplyEO> getOtaPage(OtaManageApplyEO otaManageApplyEO) {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
boolean otaManager = isOtaManager();
boolean regulationOwner = isRegulationOwner();
List<OtaManageApplyEO> otaManageApplyEOList = this.getNsdpList(otaManageApplyEO);
List<OtaManageApplyEO> dataList = new ArrayList<>();
//去跟manager和studio权限
if (otaManager) {
if (otaManager || regulationOwner) {
dataList = otaManageApplyEOList;
} else {
List<OtaManagePermission> managePermissionList = otaManagePermissionService.queryByUserId(currentUser.getId());
@@ -333,7 +336,7 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
List<OtaManageApplyEO> otaManageApplyEOList = this.getBaseMapper().getOtaList(otaManageApplyEO);
//studio数据权限
if (isOtaManager()) {
if (isOtaManager() || isRegulationOwner()) {
otaManageApplyEOList = this.getBaseMapper().getOtaList(otaManageApplyEO);
} else {
otaManageApplyEOList = getStudioData(otaManageApplyEO, otaManageApplyEOList);
@@ -724,15 +727,15 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
if(StringUtils.isEmpty(otaManageApplyEO.getOrderByField())){
Collections.sort(otaManageApplyEOList, (e1, e2) -> {
Date e1CreatedAt = ObjectUtils.isNotEmpty(e1.getCreatedAt()) ? e1.getCreatedAt() : new Date(0);
Date e2CreatedAt = ObjectUtils.isNotEmpty(e2.getCreatedAt()) ? e2.getCreatedAt() : new Date(0);
return e2CreatedAt.compareTo(e1CreatedAt);
String e1ReleaseName = StringUtils.isNotBlank(e1.getReleaseDate()) ? e1.getReleaseDate() : "";
String e2ReleaseName = StringUtils.isNotBlank(e2.getReleaseDate()) ? e2.getReleaseDate() : "";
return comparator.compare(e2ReleaseName, e1ReleaseName);
});
}
}
private boolean hasPermission(String plannedBpLaunchBatch){
if(isOtaManager()){
if(isOtaManager()||isRegulationOwner()){
return true;
}
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -757,6 +760,9 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
if(!hasPermission(otaManageApplyEO.getPlannedBpLaunchBatch())){
return new ArrayList<>();
}
boolean isStudio = isStudio();
boolean isRegulationOwner = isRegulationOwner();
List<OtaManageApplyEO> otaManageApplyEOList = this.getBaseMapper().getOtaCarPage(otaManageApplyEO);
List<OtaManageApplyEO> list = new ArrayList<>();
Map<String, OtaManageApplyEO> omaMap = new HashMap<>();
@@ -807,6 +813,7 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
}
}
List<SysDictItem> regionDictList = sysDictItemServiceImpl.selectItemsByDictCode(DicCodeEnum.CERTIFICATION_PROGRESS.getCode());
list = new ArrayList<>(omaMap.values());
if (!list.isEmpty()) {
List<VersionVO> vprojectVersionList = getProjectVersionList(otaManageApplyEO.getAppliedVehicleProject(), null);
@@ -899,6 +906,23 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
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("Discard"))) {
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)) {
@@ -1273,7 +1297,7 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
//认证进度数据字典 certification_progress
List<SysDictItem> regionDictList = sysDictItemServiceImpl.selectItemsByDictCode("certification_progress");
List<SysDictItem> regionDictList = sysDictItemServiceImpl.selectItemsByDictCode(DicCodeEnum.CERTIFICATION_PROGRESS.getCode());
List<DictModel> regionList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
@@ -1517,6 +1541,22 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
return false;
}
/**
* 是否为法规工程师
*/
private boolean isRegulationOwner() {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<SysUserRole> userRoleList = this.sysUserRoleMapper.selectList(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, currentUser.getId())); // 查询用户所有角色
if (CollectionUtils.isNotEmpty(userRoleList)) {
for (SysUserRole role : userRoleList) {
if (role.getRoleId().equals(RoleEnum.REGULATION_OWNER.getId())) {
return true;
}
}
}
return false;
}
private boolean isStudio() {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<SysUserRole> userRoleList = this.sysUserRoleMapper.selectList(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, currentUser.getId())); // 查询用户所有角色
@@ -1579,6 +1619,9 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
}
public void temporarySave(List<OtaManageApplyEO> list, boolean isSubmit, String cut) {
if (!isOtaManager() || !isStudio()) {
return;
}
LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (CollectionUtils.isNotEmpty(list)) {
List<String> idList = list.stream()