[update] 修改进度计划相关逻辑

This commit is contained in:
lcj
2025-06-03 19:45:52 +08:00
parent 034e5b87a7
commit e67d555685
5 changed files with 238 additions and 155 deletions

View File

@ -22,6 +22,7 @@ public class DemoTest {
void test() { void test() {
Boolean result = photovoltaicPanelPartsService Boolean result = photovoltaicPanelPartsService
.updatePartsFinishStatus( .updatePartsFinishStatus(
"14",
new Date(), new Date(),
1897160897167638529L, 1897160897167638529L,
1927270270872109058L, 1927270270872109058L,

View File

@ -77,12 +77,13 @@ public interface IFacPhotovoltaicPanelPartsService {
/** /**
* 更新光伏板点完成状态 * 更新光伏板点完成状态
* *
* @param workType 类型
* @param finishDate 完成时间 * @param finishDate 完成时间
* @param projectId 项目id * @param projectId 项目id
* @param matrixId 方阵id * @param matrixId 方阵id
* @param photovoltaicPanelNameList 光伏板名称列表 * @param photovoltaicPanelNameList 光伏板名称列表
* @return 是否更新成功 * @return 是否更新成功
*/ */
Boolean updatePartsFinishStatus(Date finishDate, Long projectId, Long matrixId, List<String> photovoltaicPanelNameList); Boolean updatePartsFinishStatus(String workType, Date finishDate, Long projectId, Long matrixId, List<String> photovoltaicPanelNameList);
} }

View File

@ -133,7 +133,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
} }
// 设置 redis key防止多次操作 // 设置 redis key防止多次操作
redisTemplate.opsForValue().set(operationRedisKey, true); redisTemplate.opsForValue().set(operationRedisKey, true);
messageDto.setMessage("桩点、立柱、支架数据上传完毕,等待"); messageDto.setMessage("桩点、立柱、支架数据上传完毕,数据处理");
SseMessageUtils.publishMessage(messageDto); SseMessageUtils.publishMessage(messageDto);
scheduledExecutorService.execute(() -> { scheduledExecutorService.execute(() -> {
try { try {
@ -168,12 +168,40 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
* @param userId 操作用户id * @param userId 操作用户id
*/ */
private void saveBatch(Long projectId, List<FacFeatureByPoint> features, Long userId) { private void saveBatch(Long projectId, List<FacFeatureByPoint> features, Long userId) {
// 获取进度类别 Map
List<String> progressCategoryNameList = List.of(
FacPhotovoltaicPanelPartsConstant.POINT,
FacPhotovoltaicPanelPartsConstant.COLUMN,
FacPhotovoltaicPanelPartsConstant.SUPPORT
);
List<PgsProgressCategory> progressCategoryList = progressCategoryService.lambdaQuery()
.select(PgsProgressCategory::getId, PgsProgressCategory::getName, PgsProgressCategory::getMatrixId)
.in(PgsProgressCategory::getName, progressCategoryNameList)
.in(PgsProgressCategory::getProjectId, projectId, PgsProgressCategoryConstant.PUBLIC_PROJECT_ID)
.list();
Map<String, List<PgsProgressCategory>> progressCategoryMap = progressCategoryList.stream()
.collect(Collectors.groupingBy(
progressCategory -> progressCategory.getMatrixId() + "_" + progressCategory.getName()
));
// 查询项目下光伏板 // 查询项目下光伏板
List<FacPhotovoltaicPanel> photovoltaicPanelList = photovoltaicPanelService.lambdaQuery() List<FacPhotovoltaicPanel> photovoltaicPanelList = photovoltaicPanelService.lambdaQuery()
.eq(FacPhotovoltaicPanel::getProjectId, projectId).list(); .eq(FacPhotovoltaicPanel::getProjectId, projectId)
.list();
Map<String, FacPhotovoltaicPanel> photovoltaicPanelMap = photovoltaicPanelList.stream()
.collect(Collectors.toMap(
FacPhotovoltaicPanel::getName,
Function.identity(),
(existing, replacement) -> existing // 如果有重复,保留第一个
));
// 获取数据库中所有点的列表 // 获取数据库中所有点的列表
List<FacPhotovoltaicPanelPoint> oldPointList = photovoltaicPanelPointService.lambdaQuery() List<FacPhotovoltaicPanelPoint> oldPointList = photovoltaicPanelPointService.lambdaQuery()
.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId).list(); .select(FacPhotovoltaicPanelPoint::getId,
FacPhotovoltaicPanelPoint::getName,
FacPhotovoltaicPanelPoint::getFinishType,
FacPhotovoltaicPanelPoint::getFinishDate,
FacPhotovoltaicPanelPoint::getStatus)
.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId)
.list();
Map<String, FacPhotovoltaicPanelPoint> oldPointMap = oldPointList.stream() Map<String, FacPhotovoltaicPanelPoint> oldPointMap = oldPointList.stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
FacPhotovoltaicPanelPoint::getName, FacPhotovoltaicPanelPoint::getName,
@ -181,7 +209,13 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
(existing, replacement) -> existing // 如果有重复,保留第一个 (existing, replacement) -> existing // 如果有重复,保留第一个
)); ));
List<FacPhotovoltaicPanelColumn> oldColumnList = photovoltaicPanelColumnService.lambdaQuery() List<FacPhotovoltaicPanelColumn> oldColumnList = photovoltaicPanelColumnService.lambdaQuery()
.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId).list(); .select(FacPhotovoltaicPanelColumn::getId,
FacPhotovoltaicPanelColumn::getName,
FacPhotovoltaicPanelColumn::getFinishType,
FacPhotovoltaicPanelColumn::getFinishDate,
FacPhotovoltaicPanelColumn::getStatus)
.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId)
.list();
Map<String, FacPhotovoltaicPanelColumn> oldColumnMap = oldColumnList.stream() Map<String, FacPhotovoltaicPanelColumn> oldColumnMap = oldColumnList.stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
FacPhotovoltaicPanelColumn::getName, FacPhotovoltaicPanelColumn::getName,
@ -189,108 +223,119 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
(existing, replacement) -> existing // 如果有重复,保留第一个 (existing, replacement) -> existing // 如果有重复,保留第一个
)); ));
List<FacPhotovoltaicPanelSupport> oldSupportList = photovoltaicPanelSupportService.lambdaQuery() List<FacPhotovoltaicPanelSupport> oldSupportList = photovoltaicPanelSupportService.lambdaQuery()
.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId).list(); .select(FacPhotovoltaicPanelSupport::getId,
FacPhotovoltaicPanelSupport::getName,
FacPhotovoltaicPanelSupport::getFinishType,
FacPhotovoltaicPanelSupport::getFinishDate,
FacPhotovoltaicPanelSupport::getStatus)
.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId)
.list();
Map<String, FacPhotovoltaicPanelSupport> oldSupportMap = oldSupportList.stream() Map<String, FacPhotovoltaicPanelSupport> oldSupportMap = oldSupportList.stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
FacPhotovoltaicPanelSupport::getName, FacPhotovoltaicPanelSupport::getName,
Function.identity(), Function.identity(),
(existing, replacement) -> existing // 如果有重复,保留第一个 (existing, replacement) -> existing // 如果有重复,保留第一个
)); ));
// 获取所有点列表 // 线程安全集合
List<List<Double>> pointPositionList = new ArrayList<> List<FacPhotovoltaicPanelPoint> pointList = Collections.synchronizedList(new ArrayList<>());
(features.stream().map(featureByPoint -> featureByPoint.getGeometry().getCoordinates()).toList()); List<FacPhotovoltaicPanelColumn> columnList = Collections.synchronizedList(new ArrayList<>());
List<FacPhotovoltaicPanelPoint> pointList = new ArrayList<>(); List<FacPhotovoltaicPanelSupport> supportList = Collections.synchronizedList(new ArrayList<>());
List<FacPhotovoltaicPanelColumn> columnList = new ArrayList<>(); try (ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())) {
List<FacPhotovoltaicPanelSupport> supportList = new ArrayList<>(); // 所有点列表
// 获取进度类别 List<List<Double>> pointPositionList = new ArrayList<>(features.stream()
List<String> progressCategoryNameList = List.of(FacPhotovoltaicPanelPartsConstant.POINT, .map(featureByPoint -> featureByPoint.getGeometry().getCoordinates())
FacPhotovoltaicPanelPartsConstant.COLUMN, .toList());
FacPhotovoltaicPanelPartsConstant.SUPPORT); // 多线程处理
Map<String, PgsProgressCategory> progressCategoryMap = progressCategoryService.lambdaQuery() List<Future<?>> futures = new ArrayList<>();
.in(PgsProgressCategory::getName, progressCategoryNameList) List<List<Double>> sharedPointList = Collections.synchronizedList(pointPositionList);
.in(PgsProgressCategory::getProjectId, projectId, PgsProgressCategoryConstant.PUBLIC_PROJECT_ID) for (Map.Entry<String, FacPhotovoltaicPanel> entry : photovoltaicPanelMap.entrySet()) {
.list() FacPhotovoltaicPanel photovoltaicPanel = entry.getValue();
.stream().collect(Collectors.toMap( Future<?> future = executor.submit(() -> {
PgsProgressCategory::getName, List<List<Double>> positionList = JSONUtil.toList(photovoltaicPanel.getPositions(), String.class)
Function.identity(), .stream().map(s -> JSONUtil.toList(s, Double.class)).collect(Collectors.toList());
(existing, replacement) -> existing List<List<Double>> pointInPlaneList = JSTUtil.getPointInPlaneList(positionList, sharedPointList);
)); if (CollUtil.isNotEmpty(pointInPlaneList)) {
// 遍历所有光伏板,找到所有匹配的点 int i = 1;
for (FacPhotovoltaicPanel photovoltaicPanel : photovoltaicPanelList) { for (List<Double> list : pointInPlaneList) {
String positions = photovoltaicPanel.getPositions(); String str = String.format("%02d", i++);
List<List<Double>> positionList = new ArrayList<>(); String name = photovoltaicPanel.getName() + "." + str;
List<String> arr = JSONUtil.toList(positions, String.class); Long matrixId = photovoltaicPanel.getMatrixId();
for (String s : arr) { String jsonStr = JSONUtil.toJsonStr(list);
positionList.add(JSONUtil.toList(s, Double.class)); // 创建 Point
FacPhotovoltaicPanelPoint point = new FacPhotovoltaicPanelPoint();
point.setProjectId(projectId);
point.setMatrixId(matrixId);
point.setName(name);
point.setPositions(jsonStr);
point.setCreateBy(userId);
point.setUpdateBy(userId);
if (oldPointMap.containsKey(name)) {
FacPhotovoltaicPanelPoint oldPoint = oldPointMap.get(name);
point.setFinishType(oldPoint.getFinishType());
point.setFinishDate(oldPoint.getFinishDate());
point.setStatus(oldPoint.getStatus());
}
String pointMapKey = matrixId + "_" + FacPhotovoltaicPanelPartsConstant.POINT;
if (progressCategoryMap.containsKey(pointMapKey)) {
PgsProgressCategory cat = progressCategoryMap.get(pointMapKey).getFirst();
point.setProgressCategoryId(cat.getId());
point.setProgressCategoryName(cat.getName());
}
pointList.add(point);
// 创建 Column
FacPhotovoltaicPanelColumn column = new FacPhotovoltaicPanelColumn();
column.setProjectId(projectId);
column.setMatrixId(matrixId);
column.setName(name);
column.setPositions(jsonStr);
column.setCreateBy(userId);
column.setUpdateBy(userId);
if (oldColumnMap.containsKey(name)) {
FacPhotovoltaicPanelColumn oldColumn = oldColumnMap.get(name);
column.setFinishType(oldColumn.getFinishType());
column.setFinishDate(oldColumn.getFinishDate());
column.setStatus(oldColumn.getStatus());
}
String columnMapKey = matrixId + "_" + FacPhotovoltaicPanelPartsConstant.COLUMN;
if (progressCategoryMap.containsKey(columnMapKey)) {
PgsProgressCategory cat = progressCategoryMap.get(columnMapKey).getFirst();
column.setProgressCategoryId(cat.getId());
column.setProgressCategoryName(cat.getName());
}
columnList.add(column);
// 创建 Support
FacPhotovoltaicPanelSupport support = new FacPhotovoltaicPanelSupport();
support.setProjectId(projectId);
support.setMatrixId(matrixId);
support.setName(name);
support.setPositions(jsonStr);
support.setCreateBy(userId);
support.setUpdateBy(userId);
if (oldSupportMap.containsKey(name)) {
FacPhotovoltaicPanelSupport oldSupport = oldSupportMap.get(name);
support.setFinishType(oldSupport.getFinishType());
support.setFinishDate(oldSupport.getFinishDate());
support.setStatus(oldSupport.getStatus());
}
String supportMapKey = matrixId + "_" + FacPhotovoltaicPanelPartsConstant.SUPPORT;
if (progressCategoryMap.containsKey(supportMapKey)) {
PgsProgressCategory cat = progressCategoryMap.get(supportMapKey).getFirst();
support.setProgressCategoryId(cat.getId());
support.setProgressCategoryName(cat.getName());
}
supportList.add(support);
}
}
});
futures.add(future);
} }
// 获取点在面内的点 // 等待所有线程完成
List<List<Double>> pointInPlaneList = JSTUtil.getPointInPlaneList(positionList, pointPositionList); for (Future<?> future : futures) {
// 删除点在面内的点 try {
pointPositionList.removeAll(pointInPlaneList); future.get();
// 判断点在面内的点是否为空 } catch (Exception e) {
if (CollUtil.isNotEmpty(pointInPlaneList)) { log.error("多线程进行光伏板点位与面匹配异常", e);
int i = 1; throw new ServiceException("进行光伏板点位与面匹配异常", HttpStatus.ERROR);
// 遍历点在面内的点,添加实体信息
for (List<Double> list : pointInPlaneList) {
String str = String.format("%02d", i);
String name = photovoltaicPanel.getName() + "." + str;
Long matrixId = photovoltaicPanel.getMatrixId();
String jsonStr = JSONUtil.toJsonStr(list);
FacPhotovoltaicPanelPoint photovoltaicPanelPoint = new FacPhotovoltaicPanelPoint();
photovoltaicPanelPoint.setProjectId(projectId);
photovoltaicPanelPoint.setMatrixId(matrixId);
photovoltaicPanelPoint.setName(name);
photovoltaicPanelPoint.setPositions(jsonStr);
photovoltaicPanelPoint.setCreateBy(userId);
photovoltaicPanelPoint.setUpdateBy(userId);
if (CollUtil.isNotEmpty(oldPointMap) && oldPointMap.containsKey(name)) {
FacPhotovoltaicPanelPoint oldPoint = oldPointMap.get(name);
photovoltaicPanelPoint.setFinishType(oldPoint.getFinishType());
photovoltaicPanelPoint.setStatus(oldPoint.getStatus());
}
if (CollUtil.isNotEmpty(progressCategoryMap) && progressCategoryMap.containsKey(FacPhotovoltaicPanelPartsConstant.POINT)) {
PgsProgressCategory progressCategory = progressCategoryMap.get(FacPhotovoltaicPanelPartsConstant.POINT);
photovoltaicPanelPoint.setProgressCategoryId(progressCategory.getId());
photovoltaicPanelPoint.setProgressCategoryName(progressCategory.getName());
}
pointList.add(photovoltaicPanelPoint);
FacPhotovoltaicPanelColumn photovoltaicPanelColumn = new FacPhotovoltaicPanelColumn();
photovoltaicPanelColumn.setProjectId(projectId);
photovoltaicPanelColumn.setMatrixId(matrixId);
photovoltaicPanelColumn.setName(name);
photovoltaicPanelColumn.setPositions(jsonStr);
photovoltaicPanelColumn.setCreateBy(userId);
photovoltaicPanelColumn.setUpdateBy(userId);
if (CollUtil.isNotEmpty(oldColumnMap) && oldColumnMap.containsKey(name)) {
FacPhotovoltaicPanelColumn oldColumn = oldColumnMap.get(name);
photovoltaicPanelColumn.setFinishType(oldColumn.getFinishType());
photovoltaicPanelColumn.setStatus(oldColumn.getStatus());
}
if (CollUtil.isNotEmpty(progressCategoryMap) && progressCategoryMap.containsKey(FacPhotovoltaicPanelPartsConstant.COLUMN)) {
PgsProgressCategory progressCategory = progressCategoryMap.get(FacPhotovoltaicPanelPartsConstant.COLUMN);
photovoltaicPanelColumn.setProgressCategoryId(progressCategory.getId());
photovoltaicPanelColumn.setProgressCategoryName(progressCategory.getName());
}
columnList.add(photovoltaicPanelColumn);
FacPhotovoltaicPanelSupport photovoltaicPanelSupport = new FacPhotovoltaicPanelSupport();
photovoltaicPanelSupport.setProjectId(projectId);
photovoltaicPanelSupport.setMatrixId(matrixId);
photovoltaicPanelSupport.setName(name);
photovoltaicPanelSupport.setPositions(jsonStr);
photovoltaicPanelSupport.setCreateBy(userId);
photovoltaicPanelSupport.setUpdateBy(userId);
if (CollUtil.isNotEmpty(oldSupportMap) && oldSupportMap.containsKey(name)) {
FacPhotovoltaicPanelSupport oldSupport = oldSupportMap.get(name);
photovoltaicPanelSupport.setFinishType(oldSupport.getFinishType());
photovoltaicPanelSupport.setStatus(oldSupport.getStatus());
}
if (CollUtil.isNotEmpty(progressCategoryMap) && progressCategoryMap.containsKey(FacPhotovoltaicPanelPartsConstant.SUPPORT)) {
PgsProgressCategory progressCategory = progressCategoryMap.get(FacPhotovoltaicPanelPartsConstant.SUPPORT);
photovoltaicPanelSupport.setProgressCategoryId(progressCategory.getId());
photovoltaicPanelSupport.setProgressCategoryName(progressCategory.getName());
}
supportList.add(photovoltaicPanelSupport);
i++;
} }
} }
} }
@ -550,6 +595,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
/** /**
* 更新光伏板点完成状态 * 更新光伏板点完成状态
* *
* @param workType 类型
* @param finishDate 完成时间 * @param finishDate 完成时间
* @param projectId 项目id * @param projectId 项目id
* @param matrixId 方阵id * @param matrixId 方阵id
@ -558,69 +604,90 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean updatePartsFinishStatus(Date finishDate, Long projectId, Long matrixId, List<String> photovoltaicPanelNameList) { public Boolean updatePartsFinishStatus(String workType, Date finishDate, Long projectId, Long matrixId, List<String> photovoltaicPanelNameList) {
if (CollUtil.isEmpty(photovoltaicPanelNameList)) { if (CollUtil.isEmpty(photovoltaicPanelNameList)) {
return true; return true;
} }
LambdaUpdateWrapper<FacPhotovoltaicPanelPoint> pointWrapper = new LambdaUpdateWrapper<>(); switch (workType) {
pointWrapper.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId); case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_POINT_WORK_TYPE -> {
pointWrapper.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId); LambdaUpdateWrapper<FacPhotovoltaicPanelPoint> pointWrapper = new LambdaUpdateWrapper<>();
pointWrapper.and(query -> { pointWrapper.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId);
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { pointWrapper.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId);
String prefix = photovoltaicPanelNameList.get(i) + "."; pointWrapper.and(query -> {
if (i == 0) { for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
query.likeRight(FacPhotovoltaicPanelPoint::getName, prefix); String prefix = photovoltaicPanelNameList.get(i) + ".";
} else { if (i == 0) {
query.or().likeRight(FacPhotovoltaicPanelPoint::getName, prefix); query.likeRight(FacPhotovoltaicPanelPoint::getName, prefix);
} else {
query.or().likeRight(FacPhotovoltaicPanelPoint::getName, prefix);
}
}
});
long count = photovoltaicPanelPointService.count(pointWrapper);
if (count <= 0) {
throw new ServiceException("光伏板桩点数据不存在,请导入数据后再进行操作`", HttpStatus.NOT_FOUND);
}
pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishDate, finishDate);
pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishType, FacFinishTypeEnum.HAND.getValue());
pointWrapper.set(FacPhotovoltaicPanelPoint::getStatus, FacFinishStatusEnum.FINISH.getValue());
boolean updatePoint = photovoltaicPanelPointService.update(pointWrapper);
if (!updatePoint) {
throw new ServiceException("桩点信息更新失败", HttpStatus.ERROR);
} }
} }
}); case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_COLUMN_WORK_TYPE -> {
pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishDate, finishDate); LambdaUpdateWrapper<FacPhotovoltaicPanelColumn> columnWrapper = new LambdaUpdateWrapper<>();
pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishType, FacFinishTypeEnum.HAND.getValue()); columnWrapper.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId);
pointWrapper.set(FacPhotovoltaicPanelPoint::getStatus, FacFinishStatusEnum.FINISH.getValue()); columnWrapper.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId);
boolean updatePoint = photovoltaicPanelPointService.update(pointWrapper); columnWrapper.and(query -> {
if (!updatePoint) { for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
throw new ServiceException("桩点信息更新失败", HttpStatus.ERROR); String prefix = photovoltaicPanelNameList.get(i) + ".";
} if (i == 0) {
LambdaUpdateWrapper<FacPhotovoltaicPanelColumn> columnWrapper = new LambdaUpdateWrapper<>(); query.likeRight(FacPhotovoltaicPanelColumn::getName, prefix);
columnWrapper.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId); } else {
columnWrapper.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId); query.or().likeRight(FacPhotovoltaicPanelColumn::getName, prefix);
columnWrapper.and(query -> { }
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { }
String prefix = photovoltaicPanelNameList.get(i) + "."; });
if (i == 0) { long count = photovoltaicPanelColumnService.count(columnWrapper);
query.likeRight(FacPhotovoltaicPanelColumn::getName, prefix); if (count <= 0) {
} else { throw new ServiceException("光伏板立柱数据不存在,请导入数据后再进行操作", HttpStatus.NOT_FOUND);
query.or().likeRight(FacPhotovoltaicPanelColumn::getName, prefix); }
columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishDate, finishDate);
columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishType, FacFinishTypeEnum.HAND.getValue());
columnWrapper.set(FacPhotovoltaicPanelColumn::getStatus, FacFinishStatusEnum.FINISH.getValue());
boolean updateColumn = photovoltaicPanelColumnService.update(columnWrapper);
if (!updateColumn) {
throw new ServiceException("立柱信息更新失败", HttpStatus.ERROR);
} }
} }
}); case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_SUPPORT_WORK_TYPE -> {
columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishDate, finishDate); LambdaUpdateWrapper<FacPhotovoltaicPanelSupport> supportWrapper = new LambdaUpdateWrapper<>();
columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishType, FacFinishTypeEnum.HAND.getValue()); supportWrapper.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId);
columnWrapper.set(FacPhotovoltaicPanelColumn::getStatus, FacFinishStatusEnum.FINISH.getValue()); supportWrapper.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId);
boolean updateColumn = photovoltaicPanelColumnService.update(columnWrapper); supportWrapper.and(query -> {
if (!updateColumn) { for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
throw new ServiceException("立柱信息更新失败", HttpStatus.ERROR); String prefix = photovoltaicPanelNameList.get(i) + ".";
} if (i == 0) {
LambdaUpdateWrapper<FacPhotovoltaicPanelSupport> supportWrapper = new LambdaUpdateWrapper<>(); query.likeRight(FacPhotovoltaicPanelSupport::getName, prefix);
supportWrapper.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId); } else {
supportWrapper.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId); query.or().likeRight(FacPhotovoltaicPanelSupport::getName, prefix);
supportWrapper.and(query -> { }
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { }
String prefix = photovoltaicPanelNameList.get(i) + "."; });
if (i == 0) { long count = photovoltaicPanelSupportService.count(supportWrapper);
query.likeRight(FacPhotovoltaicPanelSupport::getName, prefix); if (count <= 0) {
} else { throw new ServiceException("光伏板支架数据不存在,请导入数据后再进行操作", HttpStatus.NOT_FOUND);
query.or().likeRight(FacPhotovoltaicPanelSupport::getName, prefix); }
supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishDate, finishDate);
supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishType, FacFinishTypeEnum.HAND.getValue());
supportWrapper.set(FacPhotovoltaicPanelSupport::getStatus, FacFinishStatusEnum.FINISH.getValue());
boolean updateSupport = photovoltaicPanelSupportService.update(supportWrapper);
if (!updateSupport) {
throw new ServiceException("支架信息更新失败", HttpStatus.ERROR);
} }
} }
}); case null, default -> throw new ServiceException("未知设施类型", HttpStatus.ERROR);
supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishDate, finishDate);
supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishType, FacFinishTypeEnum.HAND.getValue());
supportWrapper.set(FacPhotovoltaicPanelSupport::getStatus, FacFinishStatusEnum.FINISH.getValue());
boolean updateSupport = photovoltaicPanelSupportService.update(supportWrapper);
if (!updateSupport) {
throw new ServiceException("支架信息更新失败", HttpStatus.ERROR);
} }
return true; return true;
} }

View File

@ -13,7 +13,20 @@ public interface PgsProgressCategoryConstant {
*/ */
Long PUBLIC_PROJECT_ID = 0L; Long PUBLIC_PROJECT_ID = 0L;
String PHOTOVOLTAIC_PANEL_WORK_TYPE = "15"; /**
* 光伏板钻孔进度类别
*/
String PHOTOVOLTAIC_PANEL_POINT_WORK_TYPE = "12";
/**
* 光伏板桩基进度类别
*/
String PHOTOVOLTAIC_PANEL_COLUMN_WORK_TYPE = "13";
/**
* 光伏板支架进度类别
*/
String PHOTOVOLTAIC_PANEL_SUPPORT_WORK_TYPE = "14";
/** /**
* 光伏板进度类别名称 * 光伏板进度类别名称

View File

@ -140,6 +140,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
Long matrixId = progressCategory.getMatrixId(); Long matrixId = progressCategory.getMatrixId();
List<String> nameList = finishedDetailList.stream().map(PgsProgressPlanDetailFinishedVo::getName).toList(); List<String> nameList = finishedDetailList.stream().map(PgsProgressPlanDetailFinishedVo::getName).toList();
Boolean result = photovoltaicPanelPartsService.updatePartsFinishStatus( Boolean result = photovoltaicPanelPartsService.updatePartsFinishStatus(
workType,
planDate, planDate,
projectId, projectId,
matrixId, matrixId,