[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() {
Boolean result = photovoltaicPanelPartsService
.updatePartsFinishStatus(
"14",
new Date(),
1897160897167638529L,
1927270270872109058L,

View File

@ -77,12 +77,13 @@ public interface IFacPhotovoltaicPanelPartsService {
/**
* 更新光伏板点完成状态
*
* @param workType 类型
* @param finishDate 完成时间
* @param projectId 项目id
* @param matrixId 方阵id
* @param photovoltaicPanelNameList 光伏板名称列表
* @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防止多次操作
redisTemplate.opsForValue().set(operationRedisKey, true);
messageDto.setMessage("桩点、立柱、支架数据上传完毕,等待");
messageDto.setMessage("桩点、立柱、支架数据上传完毕,数据处理");
SseMessageUtils.publishMessage(messageDto);
scheduledExecutorService.execute(() -> {
try {
@ -168,12 +168,40 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
* @param userId 操作用户id
*/
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()
.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()
.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()
.collect(Collectors.toMap(
FacPhotovoltaicPanelPoint::getName,
@ -181,7 +209,13 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
(existing, replacement) -> existing // 如果有重复,保留第一个
));
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()
.collect(Collectors.toMap(
FacPhotovoltaicPanelColumn::getName,
@ -189,108 +223,119 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
(existing, replacement) -> existing // 如果有重复,保留第一个
));
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()
.collect(Collectors.toMap(
FacPhotovoltaicPanelSupport::getName,
Function.identity(),
(existing, replacement) -> existing // 如果有重复,保留第一个
));
// 获取所有点列表
List<List<Double>> pointPositionList = new ArrayList<>
(features.stream().map(featureByPoint -> featureByPoint.getGeometry().getCoordinates()).toList());
List<FacPhotovoltaicPanelPoint> pointList = new ArrayList<>();
List<FacPhotovoltaicPanelColumn> columnList = new ArrayList<>();
List<FacPhotovoltaicPanelSupport> supportList = new ArrayList<>();
// 获取进度类别
List<String> progressCategoryNameList = List.of(FacPhotovoltaicPanelPartsConstant.POINT,
FacPhotovoltaicPanelPartsConstant.COLUMN,
FacPhotovoltaicPanelPartsConstant.SUPPORT);
Map<String, PgsProgressCategory> progressCategoryMap = progressCategoryService.lambdaQuery()
.in(PgsProgressCategory::getName, progressCategoryNameList)
.in(PgsProgressCategory::getProjectId, projectId, PgsProgressCategoryConstant.PUBLIC_PROJECT_ID)
.list()
.stream().collect(Collectors.toMap(
PgsProgressCategory::getName,
Function.identity(),
(existing, replacement) -> existing
));
// 遍历所有光伏板,找到所有匹配的点
for (FacPhotovoltaicPanel photovoltaicPanel : photovoltaicPanelList) {
String positions = photovoltaicPanel.getPositions();
List<List<Double>> positionList = new ArrayList<>();
List<String> arr = JSONUtil.toList(positions, String.class);
for (String s : arr) {
positionList.add(JSONUtil.toList(s, Double.class));
// 线程安全集合
List<FacPhotovoltaicPanelPoint> pointList = Collections.synchronizedList(new ArrayList<>());
List<FacPhotovoltaicPanelColumn> columnList = Collections.synchronizedList(new ArrayList<>());
List<FacPhotovoltaicPanelSupport> supportList = Collections.synchronizedList(new ArrayList<>());
try (ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())) {
// 所有点列表
List<List<Double>> pointPositionList = new ArrayList<>(features.stream()
.map(featureByPoint -> featureByPoint.getGeometry().getCoordinates())
.toList());
// 多线程处理
List<Future<?>> futures = new ArrayList<>();
List<List<Double>> sharedPointList = Collections.synchronizedList(pointPositionList);
for (Map.Entry<String, FacPhotovoltaicPanel> entry : photovoltaicPanelMap.entrySet()) {
FacPhotovoltaicPanel photovoltaicPanel = entry.getValue();
Future<?> future = executor.submit(() -> {
List<List<Double>> positionList = JSONUtil.toList(photovoltaicPanel.getPositions(), String.class)
.stream().map(s -> JSONUtil.toList(s, Double.class)).collect(Collectors.toList());
List<List<Double>> pointInPlaneList = JSTUtil.getPointInPlaneList(positionList, sharedPointList);
if (CollUtil.isNotEmpty(pointInPlaneList)) {
int i = 1;
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);
// 创建 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);
// 删除点在面内的点
pointPositionList.removeAll(pointInPlaneList);
// 判断点在面内的点是否为空
if (CollUtil.isNotEmpty(pointInPlaneList)) {
int i = 1;
// 遍历点在面内的点,添加实体信息
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++;
// 等待所有线程完成
for (Future<?> future : futures) {
try {
future.get();
} catch (Exception e) {
log.error("多线程进行光伏板点位与面匹配异常", e);
throw new ServiceException("进行光伏板点位与面匹配异常", HttpStatus.ERROR);
}
}
}
@ -550,6 +595,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
/**
* 更新光伏板点完成状态
*
* @param workType 类型
* @param finishDate 完成时间
* @param projectId 项目id
* @param matrixId 方阵id
@ -558,69 +604,90 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
*/
@Override
@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)) {
return true;
}
LambdaUpdateWrapper<FacPhotovoltaicPanelPoint> pointWrapper = new LambdaUpdateWrapper<>();
pointWrapper.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId);
pointWrapper.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId);
pointWrapper.and(query -> {
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
String prefix = photovoltaicPanelNameList.get(i) + ".";
if (i == 0) {
query.likeRight(FacPhotovoltaicPanelPoint::getName, prefix);
} else {
query.or().likeRight(FacPhotovoltaicPanelPoint::getName, prefix);
switch (workType) {
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_POINT_WORK_TYPE -> {
LambdaUpdateWrapper<FacPhotovoltaicPanelPoint> pointWrapper = new LambdaUpdateWrapper<>();
pointWrapper.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId);
pointWrapper.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId);
pointWrapper.and(query -> {
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
String prefix = photovoltaicPanelNameList.get(i) + ".";
if (i == 0) {
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);
}
}
});
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);
}
LambdaUpdateWrapper<FacPhotovoltaicPanelColumn> columnWrapper = new LambdaUpdateWrapper<>();
columnWrapper.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId);
columnWrapper.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId);
columnWrapper.and(query -> {
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
String prefix = photovoltaicPanelNameList.get(i) + ".";
if (i == 0) {
query.likeRight(FacPhotovoltaicPanelColumn::getName, prefix);
} else {
query.or().likeRight(FacPhotovoltaicPanelColumn::getName, prefix);
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_COLUMN_WORK_TYPE -> {
LambdaUpdateWrapper<FacPhotovoltaicPanelColumn> columnWrapper = new LambdaUpdateWrapper<>();
columnWrapper.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId);
columnWrapper.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId);
columnWrapper.and(query -> {
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
String prefix = photovoltaicPanelNameList.get(i) + ".";
if (i == 0) {
query.likeRight(FacPhotovoltaicPanelColumn::getName, prefix);
} else {
query.or().likeRight(FacPhotovoltaicPanelColumn::getName, prefix);
}
}
});
long count = photovoltaicPanelColumnService.count(columnWrapper);
if (count <= 0) {
throw new ServiceException("光伏板立柱数据不存在,请导入数据后再进行操作", HttpStatus.NOT_FOUND);
}
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);
}
}
});
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);
}
LambdaUpdateWrapper<FacPhotovoltaicPanelSupport> supportWrapper = new LambdaUpdateWrapper<>();
supportWrapper.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId);
supportWrapper.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId);
supportWrapper.and(query -> {
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
String prefix = photovoltaicPanelNameList.get(i) + ".";
if (i == 0) {
query.likeRight(FacPhotovoltaicPanelSupport::getName, prefix);
} else {
query.or().likeRight(FacPhotovoltaicPanelSupport::getName, prefix);
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_SUPPORT_WORK_TYPE -> {
LambdaUpdateWrapper<FacPhotovoltaicPanelSupport> supportWrapper = new LambdaUpdateWrapper<>();
supportWrapper.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId);
supportWrapper.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId);
supportWrapper.and(query -> {
for (int i = 0; i < photovoltaicPanelNameList.size(); i++) {
String prefix = photovoltaicPanelNameList.get(i) + ".";
if (i == 0) {
query.likeRight(FacPhotovoltaicPanelSupport::getName, prefix);
} else {
query.or().likeRight(FacPhotovoltaicPanelSupport::getName, prefix);
}
}
});
long count = photovoltaicPanelSupportService.count(supportWrapper);
if (count <= 0) {
throw new ServiceException("光伏板支架数据不存在,请导入数据后再进行操作", HttpStatus.NOT_FOUND);
}
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);
}
}
});
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);
}
return true;
}

View File

@ -13,7 +13,20 @@ public interface PgsProgressCategoryConstant {
*/
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();
List<String> nameList = finishedDetailList.stream().map(PgsProgressPlanDetailFinishedVo::getName).toList();
Boolean result = photovoltaicPanelPartsService.updatePartsFinishStatus(
workType,
planDate,
projectId,
matrixId,