SceneFileBuildServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.fdkankan.fusion.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5. import com.fdkankan.fusion.entity.SceneFileBuild;
  6. import com.fdkankan.fusion.mapper.ISceneFileBuildMapper;
  7. import com.fdkankan.fusion.service.ISceneFileBuildService;
  8. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.stereotype.Service;
  12. import java.util.Date;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. /**
  16. * <p>
  17. * 场景文件建模表 服务实现类
  18. * </p>
  19. *
  20. * @author
  21. * @since 2025-03-05
  22. */
  23. @Service
  24. @Slf4j
  25. public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper, SceneFileBuild> implements ISceneFileBuildService {
  26. @Override
  27. public String getBuildTimeByScene(String num, Integer isObj) {
  28. LambdaQueryWrapper<SceneFileBuild> wrapper = new LambdaQueryWrapper<>();
  29. wrapper.eq(SceneFileBuild::getSceneNum,num);
  30. wrapper.eq(SceneFileBuild::getBuildType,isObj == 0?"buildScene":"buildObj");
  31. wrapper.orderByDesc(SceneFileBuild::getId);
  32. List<SceneFileBuild> list = this.list(wrapper);
  33. if(list!=null && !list.isEmpty()){
  34. return list.get(0).getEndBuildTime();
  35. }
  36. return null;
  37. }
  38. @Override
  39. public HashMap<String, SceneFileBuild> getBuildTimeByScene(List<String> numList) {
  40. HashMap<String,SceneFileBuild> map = new HashMap<>(numList.size());
  41. if(numList.isEmpty()){
  42. return map;
  43. }
  44. LambdaQueryWrapper<SceneFileBuild> wrapper = new LambdaQueryWrapper<>();
  45. wrapper.in(SceneFileBuild::getSceneNum,numList);
  46. //wrapper.eq(SceneFileBuild::getBuildType,isObj == 0?"buildScene":"buildObj");
  47. List<SceneFileBuild> list = this.list(wrapper);
  48. for (SceneFileBuild sceneFileBuild : list) {
  49. String buildType = sceneFileBuild.getBuildType();
  50. if(map.get(sceneFileBuild.getSceneNum() + buildType) == null){
  51. map.put(sceneFileBuild.getSceneNum() + buildType,sceneFileBuild);
  52. }else {
  53. SceneFileBuild o1 = map.get(sceneFileBuild.getSceneNum() + buildType);
  54. if(o1.getId() >sceneFileBuild.getId()){
  55. continue;
  56. }
  57. map.put(sceneFileBuild.getSceneNum() + buildType,sceneFileBuild);
  58. }
  59. }
  60. return map;
  61. }
  62. @Override
  63. public void updateTimeAndStatus(String sceneCode, int status, Date startTime, Date endTime, String buildType,String path) {
  64. LambdaQueryWrapper<SceneFileBuild> qr = Wrappers.lambdaQuery();
  65. qr.eq(SceneFileBuild::getSceneNum, sceneCode);
  66. qr.eq(SceneFileBuild::getBuildType, buildType);
  67. List<SceneFileBuild> list = this.list(qr);
  68. if(list.isEmpty()){
  69. SceneFileBuild sceneFileBuild = new SceneFileBuild();
  70. sceneFileBuild.setSceneNum(sceneCode);
  71. sceneFileBuild.setBuildType(buildType);
  72. sceneFileBuild.setBuildStatus(status);
  73. sceneFileBuild.setFileId(sceneCode);
  74. sceneFileBuild.setStartBuildTime(new Date());
  75. sceneFileBuild.setResultPath(path);
  76. this.save(sceneFileBuild);
  77. return;
  78. }
  79. LambdaUpdateWrapper<SceneFileBuild> wrapper = Wrappers.lambdaUpdate();
  80. wrapper.eq(SceneFileBuild::getSceneNum, sceneCode);
  81. wrapper.eq(SceneFileBuild::getBuildType, buildType);
  82. wrapper.set(SceneFileBuild::getBuildStatus, status);
  83. if (startTime != null) {
  84. wrapper.set(SceneFileBuild::getStartBuildTime, startTime);
  85. }
  86. if (endTime != null) {
  87. wrapper.set(SceneFileBuild::getEndBuildTime, endTime);
  88. }
  89. wrapper.isNull(SceneFileBuild::getDeleteFlag);
  90. if (StringUtils.isNotBlank(sceneCode)){
  91. boolean rows = update(wrapper); // 检查返回的影响行数
  92. log.info("更新记录数: {}, sceneCode: {}, buildType: {}", rows, sceneCode, buildType);
  93. }
  94. }
  95. }