package com.fdkankan.fusion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fdkankan.fusion.entity.SceneFileBuild; import com.fdkankan.fusion.mapper.ISceneFileBuildMapper; import com.fdkankan.fusion.service.ISceneFileBuildService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.Date; import java.util.HashMap; import java.util.List; /** *

* 场景文件建模表 服务实现类 *

* * @author * @since 2025-03-05 */ @Service @Slf4j public class SceneFileBuildServiceImpl extends ServiceImpl implements ISceneFileBuildService { @Override public String getBuildTimeByScene(String num, Integer isObj) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SceneFileBuild::getSceneNum,num); wrapper.eq(SceneFileBuild::getBuildType,isObj == 0?"buildScene":"buildObj"); wrapper.orderByDesc(SceneFileBuild::getId); List list = this.list(wrapper); if(list!=null && !list.isEmpty()){ return list.get(0).getEndBuildTime(); } return null; } @Override public HashMap getBuildTimeByScene(List numList) { HashMap map = new HashMap<>(numList.size()); if(numList.isEmpty()){ return map; } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(SceneFileBuild::getSceneNum,numList); //wrapper.eq(SceneFileBuild::getBuildType,isObj == 0?"buildScene":"buildObj"); List list = this.list(wrapper); for (SceneFileBuild sceneFileBuild : list) { String buildType = sceneFileBuild.getBuildType(); if(map.get(sceneFileBuild.getSceneNum() + buildType) == null){ map.put(sceneFileBuild.getSceneNum() + buildType,sceneFileBuild); }else { SceneFileBuild o1 = map.get(sceneFileBuild.getSceneNum() + buildType); if(o1.getId() >sceneFileBuild.getId()){ continue; } map.put(sceneFileBuild.getSceneNum() + buildType,sceneFileBuild); } } return map; } @Override public void updateTimeAndStatus(String sceneCode, int status, Date startTime, Date endTime, String buildType,String path) { LambdaQueryWrapper qr = Wrappers.lambdaQuery(); qr.eq(SceneFileBuild::getSceneNum, sceneCode); qr.eq(SceneFileBuild::getBuildType, buildType); List list = this.list(qr); if(list.isEmpty()){ SceneFileBuild sceneFileBuild = new SceneFileBuild(); sceneFileBuild.setSceneNum(sceneCode); sceneFileBuild.setBuildType(buildType); sceneFileBuild.setBuildStatus(status); sceneFileBuild.setFileId(sceneCode); sceneFileBuild.setStartBuildTime(new Date()); sceneFileBuild.setResultPath(path); this.save(sceneFileBuild); return; } LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(); wrapper.eq(SceneFileBuild::getSceneNum, sceneCode); wrapper.eq(SceneFileBuild::getBuildType, buildType); wrapper.set(SceneFileBuild::getBuildStatus, status); if (startTime != null) { wrapper.set(SceneFileBuild::getStartBuildTime, startTime); } if (endTime != null) { wrapper.set(SceneFileBuild::getEndBuildTime, endTime); } wrapper.isNull(SceneFileBuild::getDeleteFlag); if (StringUtils.isNotBlank(sceneCode)){ boolean rows = update(wrapper); // 检查返回的影响行数 log.info("更新记录数: {}, sceneCode: {}, buildType: {}", rows, sceneCode, buildType); } } }