diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/job/OtaDataUpdate.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/job/OtaDataUpdate.java new file mode 100644 index 000000000..a8120b94c --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/job/OtaDataUpdate.java @@ -0,0 +1,211 @@ +package com.jero.modules.ota.job; + +import com.jero.modules.ota.entity.OtaManageReceive; +import com.jero.modules.ota.entity.OtaManageReceiveNsdp; +import com.jero.modules.ota.service.IOtaManageReceiveNsdpService; +import com.jero.modules.ota.service.IOtaManageReceiveService; +import com.jero.modules.system.util.StringUtils; +import org.apache.commons.collections4.CollectionUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +@Service +public class OtaDataUpdate implements Job { + + @Autowired + private IOtaManageReceiveService otaManageReceiveService; + @Autowired + private IOtaManageReceiveNsdpService otaManageReceiveNsdpService; + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + /** + * OTA数据更新 + * + * @param jobExecutionContext + * @throws JobExecutionException + */ + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + List omrSyncList = otaManageReceiveService.getReceiveSync(); + List omrList = otaManageReceiveService.queryList(); + + List addList = new ArrayList<>(); + List delList = new ArrayList<>(); + List updateList = new ArrayList<>(); + + for (OtaManageReceive omr : omrList) { + boolean delFlag = true; + for (OtaManageReceive omrSync : omrSyncList) { + if (omr.getId().equals(omrSync.getId())) { + delFlag = false; + if (!compareReceive(omr, omrSync)) { + updateList.add(omrSync); + } + } + } + if (delFlag) { + //同步数据中被删除 + delList.add(omr.getId()); + } + } + + for (OtaManageReceive omrSync : omrSyncList) { + boolean addFlag = true; + for (OtaManageReceive omr : omrList) { + if (omr.getId().equals(omrSync.getId())) { + addFlag = false; + } + } + if (addFlag) { + //同步数据中新增 + 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 omrnSyncList = otaManageReceiveNsdpService.getOtaManageReceiveNsdpSync(); + List omrnList = otaManageReceiveNsdpService.queryList(); + + List addNsdpList = new ArrayList<>(); + List delNsdpList = new ArrayList<>(); + List updateNsdpList = new ArrayList<>(); + + for (OtaManageReceiveNsdp omrn : omrnList) { + boolean delFlag = true; + for (OtaManageReceiveNsdp omrnSync : omrnSyncList) { + if (omrn.getId().equals(omrnSync.getId())) { + delFlag = false; + if (!compareReceive(omrn, omrnSync)) { + updateNsdpList.add(omrnSync); + } + } + } + if (delFlag) { + //同步数据中被删除 + delNsdpList.add(omrn.getId()); + } + } + + Map releaceDateMap = new HashMap<>(); + Date today = new Date(); + + for (OtaManageReceiveNsdp omrnSync : omrnSyncList) { + boolean addFlag = true; + for (OtaManageReceiveNsdp omrn : omrnList) { + if (omrn.getId().equals(omrnSync.getId())) { + addFlag = false; + } + } + if (addFlag) { + //同步数据中新增 + addNsdpList.add(omrnSync); + } + //找到最快来临的发布时间 + Date releaceDate = releaceDateMap.get(omrnSync.getReleaseName()); + try { + Date syncDate = sdf.parse(omrnSync.getReleaseDate()); + if (null == releaceDate) { + releaceDateMap.put(omrnSync.getReleaseName(), syncDate); + } else { + if (syncDate.after(today) && syncDate.before(releaceDate)) { + releaceDateMap.put(omrnSync.getReleaseName(), syncDate); + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + + if (CollectionUtils.isNotEmpty(addNsdpList)) { + otaManageReceiveNsdpService.saveBatch(addNsdpList); + } + if (CollectionUtils.isNotEmpty(delNsdpList)) { + otaManageReceiveNsdpService.deleteByIds(delNsdpList); + } + if (CollectionUtils.isNotEmpty(updateNsdpList)) { + otaManageReceiveNsdpService.updateBatchById(updateNsdpList); + } + + + List dateUpdateList = new ArrayList<>(); + List omrListForDate = otaManageReceiveService.queryList(); + for (OtaManageReceive omr : omrListForDate) { + if(releaceDateMap.containsKey(omr.getPlannedBpLaunchBatch())){ + omr.setReleaseDate(sdf.format(releaceDateMap.get(omr.getPlannedBpLaunchBatch()))); + dateUpdateList.add(omr); + } + } + if (CollectionUtils.isNotEmpty(dateUpdateList)) { + otaManageReceiveService.updateBatchById(dateUpdateList); + } + } + + private boolean compareReceive(OtaManageReceiveNsdp omrn, OtaManageReceiveNsdp omrnSync) { + if (!StringUtils.equals(omrn.getPlatformName(), omrnSync.getPlatformName())) { + return false; + } + if (!StringUtils.equals(omrn.getReleaseName(), omrnSync.getReleaseName())) { + return false; + } + if (!StringUtils.equals(omrn.getReleaseType(), omrnSync.getReleaseType())) { + return false; + } + if (!StringUtils.equals(omrn.getDateName(), omrnSync.getDateName())) { + return false; + } + if (!StringUtils.equals(omrn.getReleaseDate(), omrnSync.getReleaseDate())) { + return false; + } + return true; + } + + private boolean compareReceive(OtaManageReceive omr, OtaManageReceive omrSync) { + if (!StringUtils.equals(omr.getPlannedBpLaunchBatch(), omrSync.getPlannedBpLaunchBatch())) { + return false; + } + if (!StringUtils.equals(omr.getSummary(), omrSync.getSummary())) { + return false; + } + if (!StringUtils.equals(omr.getStatus(), omrSync.getStatus())) { + return false; + } + if (!StringUtils.equals(omr.getHomologationImpact(), omrSync.getHomologationImpact())) { + return false; + } + if (!StringUtils.equals(omr.getHomologation(), omrSync.getHomologation())) { + return false; + } + if (!StringUtils.equals(omr.getImpactCnHomo(), omrSync.getImpactCnHomo())) { + return false; + } + if (!StringUtils.equals(omr.getImpactEuHomo(), omrSync.getImpactEuHomo())) { + return false; + } + if (!StringUtils.equals(omr.getMasterDomain(), omrSync.getMasterDomain())) { + return false; + } + if (!StringUtils.equals(omr.getAppliedVehicleProject(), omrSync.getAppliedVehicleProject())) { + return false; + } + return true; + } + + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveMapper.java index 0e0cc0753..506255e45 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveMapper.java @@ -15,4 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface OtaManageReceiveMapper extends BaseMapper { List getReceiveByVdr(@Param("vdrList") List vdrList); + List getReceiveSync(); + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveNsdpMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveNsdpMapper.java index f0d2f09e6..629945995 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveNsdpMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/OtaManageReceiveNsdpMapper.java @@ -14,4 +14,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface OtaManageReceiveNsdpMapper extends BaseMapper { + List getOtaManageReceiveNsdpSync(); + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveMapper.xml index b584c204f..b25eb5b52 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveMapper.xml @@ -27,4 +27,9 @@ #{item} + + + \ No newline at end of file diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveNsdpMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveNsdpMapper.xml index f851c7c25..56fe71093 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveNsdpMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/mapper/xml/OtaManageReceiveNsdpMapper.xml @@ -15,4 +15,7 @@ + \ No newline at end of file diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveNsdpService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveNsdpService.java index 47c5574b6..1e4ffbc38 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveNsdpService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveNsdpService.java @@ -58,4 +58,7 @@ public interface IOtaManageReceiveNsdpService extends IService queryList(); + + + List getOtaManageReceiveNsdpSync(); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveService.java index 9fb151488..765eb5aed 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaManageReceiveService.java @@ -61,4 +61,10 @@ public interface IOtaManageReceiveService extends IService { List queryList(); List getReceiveByVdr(List vdrList); + + List getReceiveByplanned(String plannedBpLaunchBatch); + + List getReceiveSync(); + + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageApplyEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageApplyEOServiceImpl.java index dc064bfc0..f6fba2f10 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageApplyEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageApplyEOServiceImpl.java @@ -9,6 +9,7 @@ import com.jero.common.util.oConvertUtils; import com.jero.modules.cert.template.entity.CertCategoryParamsInfoEO; import com.jero.modules.dummy.enums.OrderEnum; import com.jero.modules.ota.entity.OtaManageApplyEO; +import com.jero.modules.ota.entity.OtaManagePermission; import com.jero.modules.ota.entity.OtaManageReceive; import com.jero.modules.ota.entity.OtaManageReceiveNsdpEO; import com.jero.modules.ota.enums.OtaCarEnum; @@ -17,6 +18,7 @@ import com.jero.modules.ota.enums.OtaStatusEnum; import com.jero.modules.ota.mapper.OtaManageApplyEOMapper; import com.jero.modules.ota.service.IOtaManageApplyEOService; import com.jero.modules.ota.service.IOtaManageHistoryService; +import com.jero.modules.ota.service.IOtaManagePermissionService; import com.jero.modules.ota.vo.AllCarExportCnVO; import com.jero.modules.ota.vo.AllCarExportEnVO; import com.jero.modules.ota.vo.OneCarExportCnVO; @@ -83,6 +85,10 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl omrList = otaManageReceiveService.getReceiveByplanned(id); + List appliedVehicleProjectList = omrList.stream() + .filter(e -> StringUtils.isNotBlank(e.getAppliedVehicleProject())) + .map(OtaManageReceive::getAppliedVehicleProject).distinct().collect(Collectors.toList()); + Map appMap = new HashMap<>(); + for (String appStr : appliedVehicleProjectList) { + if (StringUtils.isNotEmpty(appStr)) { + String[] appStrs = appStr.split(","); + for (String str : appStrs) { + String[] s = str.split(" "); + if (appStrs.length == 1) { + if (!appMap.containsKey(s[0])) { + appMap.put(s[0], null); + } + } else if (s.length == 2) { + String projectName = s[0].toUpperCase(Locale.ROOT); + Set appSet = appMap.get(projectName); + if (ObjectUtils.isEmpty(appSet)) { + appSet = new HashSet(); + } + if(s[1].equals("CN")){ + appSet.add("China"); + }else if(s[1].equals("RHD")){ + appSet.add("UK"); + }else{ + appSet.add(s[1]); + } + appMap.put(projectName, appSet); + } else if (s.length == 3) { + String projectName = s[0].toUpperCase(Locale.ROOT); + Set appSet = appMap.get(projectName); + if (ObjectUtils.isEmpty(appSet)) { + appSet = new HashSet(); + } + if(s[2].equals("CN")){ + appSet.add("China"); + }else if(s[2].equals("RHD")){ + appSet.add("UK"); + }else{ + appSet.add(s[2]); + } + appMap.put(projectName, appSet); + } + } + } + } + //查询所有NT2平台的项目 + ProjectLibraryBase plbSearch = new ProjectLibraryBase(); + plbSearch.setDigitalPlatform("NT2"); + List plbList = projectLibraryBaseService.getList(plbSearch); + //存储符合条件的项目中Studio的用户ID + Set matchStudioSet = new HashSet(); + for (ProjectLibraryBase plb : plbList) { + boolean flag = false; + if (appMap.containsKey("All")) { + matchStudioSet.add(plb.getStudioEngineer()); + continue; + } + String targetMarket = plb.getTargetMarket(); + String projectName = plb.getProjectName().toUpperCase(Locale.ROOT); + String[] targetMarkets = targetMarket.split(","); + for (String tm : targetMarkets) { + if ((appMap.containsKey("CN") && tm.equals("China")) + || (appMap.containsKey("EU") && tm.equals("EU")) + || (appMap.containsKey("RHD") && tm.equals("UK"))) { + //三个ALL的市场类型 + matchStudioSet.add(plb.getStudioEngineer()); + continue; + } + if(appMap.containsKey(projectName)){ + Set appSet = appMap.get(projectName); + if(appSet.contains(tm)){ + matchStudioSet.add(plb.getStudioEngineer()); + continue; + } + } + } + } + //TODO 给studio发消息 + List ompList = new ArrayList<>(); + for (String studioId : matchStudioSet) { + OtaManagePermission omp = new OtaManagePermission(); + omp.setApplyId(id); + omp.setUserId(studioId); + ompList.add(omp); + } + otaManagePermissionService.saveBatch(ompList); + } } @@ -1032,7 +1127,6 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl matchStatusMap = new HashMap<>(); @@ -1090,7 +1181,6 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl> attestationScheduleMapList = new ArrayList<>(); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveNsdpServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveNsdpServiceImpl.java index 536e516dc..14a33cf93 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveNsdpServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveNsdpServiceImpl.java @@ -86,4 +86,9 @@ public class OtaManageReceiveNsdpServiceImpl extends ServiceImpl queryList() { return list(); } + + @Override + public List getOtaManageReceiveNsdpSync() { + return this.getBaseMapper().getOtaManageReceiveNsdpSync(); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveServiceImpl.java index 3460e8ef2..9bf7730e6 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaManageReceiveServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.ota.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jero.modules.ota.entity.OtaManageReceive; import com.jero.modules.ota.mapper.OtaManageReceiveMapper; import com.jero.modules.ota.service.IOtaManageReceiveService; @@ -91,4 +92,17 @@ public class OtaManageReceiveServiceImpl extends ServiceImpl getReceiveByVdr(List vdrList) { return this.getBaseMapper().getReceiveByVdr(vdrList); } + + @Override + public List getReceiveByplanned(String plannedBpLaunchBatch) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(OtaManageReceive::getPlannedBpLaunchBatch, plannedBpLaunchBatch); + return this.list(queryWrapper); + } + + @Override + public List getReceiveSync() { + return this.getBaseMapper().getReceiveSync(); + } + }