[add] 新增查看设施坐标接口 [update] 修改进度计划相关逻辑
This commit is contained in:
@ -0,0 +1,31 @@
|
||||
package org.dromara.test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lcj
|
||||
* @date 2025/5/30 9:48
|
||||
*/
|
||||
@SpringBootTest
|
||||
public class DemoTest {
|
||||
|
||||
@Resource
|
||||
private IFacPhotovoltaicPanelPartsService photovoltaicPanelPartsService;
|
||||
|
||||
@Test
|
||||
void test() {
|
||||
Boolean result = photovoltaicPanelPartsService
|
||||
.updatePartsFinishStatus(
|
||||
new Date(),
|
||||
1897160897167638529L,
|
||||
1927270270872109058L,
|
||||
List.of("G01.01.01", "G01.08.06")
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -7,6 +7,7 @@ import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPan
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPanelPartsCreateReq;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -73,6 +74,15 @@ public interface IFacPhotovoltaicPanelPartsService {
|
||||
*/
|
||||
Boolean validPartsExistByPhotovoltaicPanel(Long projectId, Collection<String> photovoltaicPanelNames);
|
||||
|
||||
|
||||
/**
|
||||
* 更新光伏板点完成状态
|
||||
*
|
||||
* @param finishDate 完成时间
|
||||
* @param projectId 项目id
|
||||
* @param matrixId 方阵id
|
||||
* @param photovoltaicPanelNameList 光伏板名称列表
|
||||
* @return 是否更新成功
|
||||
*/
|
||||
Boolean updatePartsFinishStatus(Date finishDate, Long projectId, Long matrixId, List<String> photovoltaicPanelNameList);
|
||||
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package org.dromara.facility.service.impl;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
@ -20,6 +21,8 @@ import org.dromara.facility.domain.FacPhotovoltaicPanelSupport;
|
||||
import org.dromara.facility.domain.dto.geojson.FacFeatureByPoint;
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPanelPartsCreateByGeoJsonReq;
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPanelPartsCreateReq;
|
||||
import org.dromara.facility.domain.enums.FacFinishStatusEnum;
|
||||
import org.dromara.facility.domain.enums.FacFinishTypeEnum;
|
||||
import org.dromara.facility.service.*;
|
||||
import org.dromara.progress.constant.PgsProgressCategoryConstant;
|
||||
import org.dromara.progress.domain.PgsProgressCategory;
|
||||
@ -34,10 +37,7 @@ import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@ -547,6 +547,84 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
|
||||
return photovoltaicPanelSupportService.count(supportWrapper) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新光伏板点完成状态
|
||||
*
|
||||
* @param finishDate 完成时间
|
||||
* @param projectId 项目id
|
||||
* @param matrixId 方阵id
|
||||
* @param photovoltaicPanelNameList 光伏板名称列表
|
||||
* @return 是否更新成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updatePartsFinishStatus(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);
|
||||
}
|
||||
}
|
||||
});
|
||||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验名称是否重复
|
||||
*
|
||||
|
||||
@ -16,6 +16,7 @@ import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryCreateReq;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryQueryReq;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryUpdateReq;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryCoordinateVo;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryLastTimeVo;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryVo;
|
||||
import org.dromara.progress.service.IPgsProgressCategoryService;
|
||||
@ -71,6 +72,18 @@ public class PgsProgressCategoryController extends BaseController {
|
||||
return R.ok(pgsProgressCategoryService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取进度类别坐标信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("progress:progressCategory:query")
|
||||
@GetMapping("/coordinate/{id}")
|
||||
public R<PgsProgressCategoryCoordinateVo> getCoordinate(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(pgsProgressCategoryService.getCoordinate(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取进度类别最后一次进度信息
|
||||
*
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
package org.dromara.progress.domain.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author lcj
|
||||
* @date 2025/5/30 14:59
|
||||
*/
|
||||
@Getter
|
||||
public enum PgsCoordinateTypeEnum {
|
||||
|
||||
POINT("Point", 1),
|
||||
POLYGON("Polygon", 2);
|
||||
|
||||
private final String text;
|
||||
|
||||
private final int value;
|
||||
|
||||
PgsCoordinateTypeEnum(String text, int value) {
|
||||
this.text = text;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
// 根据 value 获取对应的 text
|
||||
public static String getTextByValue(int value) {
|
||||
for (PgsCoordinateTypeEnum type : values()) {
|
||||
if (type.getValue() == value) {
|
||||
return type.getText();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package org.dromara.progress.domain.vo.progresscategory;
|
||||
|
||||
import lombok.Data;
|
||||
import org.dromara.progress.domain.vo.progressplandetail.PgsProgressPlanDetailDateVo;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lcj
|
||||
* @date 2025/5/30 10:53
|
||||
*/
|
||||
@Data
|
||||
public class PgsProgressCategoryCoordinateVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 9161894407675118073L;
|
||||
|
||||
/**
|
||||
* 设施列表
|
||||
*/
|
||||
private List<PgsProgressCategoryFacilityVo> facilityList;
|
||||
|
||||
/**
|
||||
* 进度计划列表
|
||||
*/
|
||||
private List<PgsProgressPlanDetailDateVo> detailList;
|
||||
|
||||
}
|
||||
@ -0,0 +1,49 @@
|
||||
package org.dromara.progress.domain.vo.progresscategory;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @author lcj
|
||||
* @date 2025/5/30 11:26
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PgsProgressCategoryFacilityVo {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 光伏板名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 位置
|
||||
*/
|
||||
private JSONArray positions;
|
||||
|
||||
/**
|
||||
* 坐标类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 完成状态(0未开始 1进行中 2完成)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 完成时间
|
||||
*/
|
||||
private LocalDate finishDate;
|
||||
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package org.dromara.progress.domain.vo.progressplandetail;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author lcj
|
||||
* @date 2025/5/30 11:01
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PgsProgressPlanDetailDateVo {
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 计划时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date date;
|
||||
|
||||
}
|
||||
@ -6,6 +6,7 @@ import org.dromara.progress.domain.PgsProgressCategory;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryCreateReq;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryQueryReq;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryUpdateReq;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryCoordinateVo;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryLastTimeVo;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryVo;
|
||||
|
||||
@ -102,4 +103,12 @@ public interface IPgsProgressCategoryService extends IService<PgsProgressCategor
|
||||
*/
|
||||
Boolean insertByTemplate(Long projectId, List<Long> matrixIds);
|
||||
|
||||
/**
|
||||
* 根据id获取进度类别坐标信息
|
||||
*
|
||||
* @param id 进度类别id
|
||||
* @return 进度类别坐标信息
|
||||
*/
|
||||
PgsProgressCategoryCoordinateVo getCoordinate(Long id);
|
||||
|
||||
}
|
||||
|
||||
@ -1,33 +1,47 @@
|
||||
package org.dromara.progress.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.DateUtils;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.facility.domain.FacBoxTransformer;
|
||||
import org.dromara.facility.domain.FacInverter;
|
||||
import org.dromara.facility.domain.FacPercentageFacility;
|
||||
import org.dromara.facility.domain.FacPhotovoltaicPanel;
|
||||
import org.dromara.facility.service.IFacBoxTransformerService;
|
||||
import org.dromara.facility.service.IFacInverterService;
|
||||
import org.dromara.facility.service.IFacPercentageFacilityService;
|
||||
import org.dromara.facility.service.IFacPhotovoltaicPanelService;
|
||||
import org.dromara.progress.constant.PgsProgressCategoryConstant;
|
||||
import org.dromara.progress.domain.PgsProgressCategory;
|
||||
import org.dromara.progress.domain.PgsProgressCategoryTemplate;
|
||||
import org.dromara.progress.domain.PgsProgressPlan;
|
||||
import org.dromara.progress.domain.PgsProgressPlanDetail;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryCreateReq;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryQueryReq;
|
||||
import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryUpdateReq;
|
||||
import org.dromara.progress.domain.enums.PgsCoordinateTypeEnum;
|
||||
import org.dromara.progress.domain.enums.PgsFinishStatusEnum;
|
||||
import org.dromara.progress.domain.enums.PgsProgressUnitTypeEnum;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryCoordinateVo;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryFacilityVo;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryLastTimeVo;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryVo;
|
||||
import org.dromara.progress.domain.vo.progressplandetail.PgsProgressPlanDetailDateVo;
|
||||
import org.dromara.progress.mapper.PgsProgressCategoryMapper;
|
||||
import org.dromara.progress.service.IPgsProgressCategoryService;
|
||||
import org.dromara.progress.service.IPgsProgressCategoryTemplateService;
|
||||
import org.dromara.progress.service.IPgsProgressPlanDetailService;
|
||||
import org.dromara.progress.service.IPgsProgressPlanService;
|
||||
import org.dromara.utils.BigDecimalUtil;
|
||||
import org.dromara.utils.JsonDimensionUtil;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -58,6 +72,22 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
||||
@Resource
|
||||
private IPgsProgressPlanService progressPlanService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IPgsProgressPlanDetailService progressPlanDetailService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IFacPhotovoltaicPanelService photovoltaicPanelService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IFacBoxTransformerService boxTransformerService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IFacInverterService inverterService;
|
||||
|
||||
/**
|
||||
* 查询进度类别
|
||||
*
|
||||
@ -236,7 +266,7 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryWrapper<PgsProgressCategory> buildQueryWrapper(PgsProgressCategoryQueryReq req) {
|
||||
LambdaQueryWrapper<PgsProgressCategory> lqw = Wrappers.lambdaQuery();
|
||||
LambdaQueryWrapper<PgsProgressCategory> lqw = new LambdaQueryWrapper<>();
|
||||
if (req == null) {
|
||||
return lqw;
|
||||
}
|
||||
@ -362,6 +392,91 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id获取进度类别坐标信息
|
||||
*
|
||||
* @param id 进度类别id
|
||||
* @return 进度类别坐标信息
|
||||
*/
|
||||
@Override
|
||||
public PgsProgressCategoryCoordinateVo getCoordinate(Long id) {
|
||||
PgsProgressCategory progressCategory = this.getById(id);
|
||||
if (progressCategory == null) {
|
||||
throw new ServiceException("进度类别信息不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
String workType = progressCategory.getWorkType();
|
||||
List<PgsProgressCategoryFacilityVo> facilityList;
|
||||
PgsProgressCategoryCoordinateVo coordinateVo = new PgsProgressCategoryCoordinateVo();
|
||||
if (PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) {
|
||||
List<FacPhotovoltaicPanel> list = photovoltaicPanelService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanel::getProjectId, progressCategory.getProjectId())
|
||||
.eq(FacPhotovoltaicPanel::getMatrixId, progressCategory.getMatrixId())
|
||||
.eq(FacPhotovoltaicPanel::getProgressCategoryId, progressCategory.getId())
|
||||
.list();
|
||||
facilityList = list.stream().map(fac -> {
|
||||
JSONArray jsonArray = JSONUtil.parseArray(fac.getPositions());
|
||||
int depth = JsonDimensionUtil.getJsonArrayDepth(jsonArray);
|
||||
return new PgsProgressCategoryFacilityVo(
|
||||
fac.getId(),
|
||||
fac.getName(),
|
||||
jsonArray,
|
||||
PgsCoordinateTypeEnum.getTextByValue(depth),
|
||||
fac.getStatus(),
|
||||
fac.getFinishDate()
|
||||
);
|
||||
}).toList();
|
||||
} else if (PgsProgressCategoryConstant.INVERTER_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) {
|
||||
List<FacInverter> list = inverterService.lambdaQuery()
|
||||
.eq(FacInverter::getProjectId, progressCategory.getProjectId())
|
||||
.eq(FacInverter::getMatrixId, progressCategory.getMatrixId())
|
||||
.eq(FacInverter::getProgressCategoryId, progressCategory.getId())
|
||||
.list();
|
||||
facilityList = list.stream().map(fac -> {
|
||||
JSONArray jsonArray = JSONUtil.parseArray(fac.getPositions());
|
||||
int depth = JsonDimensionUtil.getJsonArrayDepth(jsonArray);
|
||||
return new PgsProgressCategoryFacilityVo(
|
||||
fac.getId(),
|
||||
fac.getName(),
|
||||
jsonArray,
|
||||
PgsCoordinateTypeEnum.getTextByValue(depth),
|
||||
fac.getStatus(),
|
||||
fac.getFinishDate()
|
||||
);
|
||||
}).toList();
|
||||
} else if (PgsProgressCategoryConstant.BOX_TRANSFORMER_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) {
|
||||
List<FacBoxTransformer> list = boxTransformerService.lambdaQuery()
|
||||
.eq(FacBoxTransformer::getProjectId, progressCategory.getProjectId())
|
||||
.eq(FacBoxTransformer::getMatrixId, progressCategory.getMatrixId())
|
||||
.eq(FacBoxTransformer::getProgressCategoryId, progressCategory.getId())
|
||||
.list();
|
||||
facilityList = list.stream().map(fac -> {
|
||||
JSONArray jsonArray = JSONUtil.parseArray(fac.getPositions());
|
||||
int depth = JsonDimensionUtil.getJsonArrayDepth(jsonArray);
|
||||
return new PgsProgressCategoryFacilityVo(
|
||||
fac.getId(),
|
||||
fac.getName(),
|
||||
jsonArray,
|
||||
PgsCoordinateTypeEnum.getTextByValue(depth),
|
||||
fac.getStatus(),
|
||||
fac.getFinishDate()
|
||||
);
|
||||
}).toList();
|
||||
} else {
|
||||
return coordinateVo;
|
||||
}
|
||||
List<PgsProgressPlanDetailDateVo> detailList = progressPlanDetailService.lambdaQuery()
|
||||
.select(PgsProgressPlanDetail::getId, PgsProgressPlanDetail::getDate)
|
||||
.eq(PgsProgressPlanDetail::getProgressCategoryId, id)
|
||||
.orderByAsc(PgsProgressPlanDetail::getDate)
|
||||
.list()
|
||||
.stream().map(detail ->
|
||||
new PgsProgressPlanDetailDateVo(detail.getId(), detail.getDate()))
|
||||
.toList();
|
||||
coordinateVo.setDetailList(detailList);
|
||||
coordinateVo.setFacilityList(facilityList);
|
||||
return coordinateVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据子节点完成状态获取父节点完成状态
|
||||
*
|
||||
|
||||
@ -21,6 +21,7 @@ import org.dromara.facility.domain.enums.FacFinishStatusEnum;
|
||||
import org.dromara.facility.domain.enums.FacFinishTypeEnum;
|
||||
import org.dromara.facility.service.IFacBoxTransformerService;
|
||||
import org.dromara.facility.service.IFacInverterService;
|
||||
import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService;
|
||||
import org.dromara.facility.service.IFacPhotovoltaicPanelService;
|
||||
import org.dromara.progress.constant.PgsProgressCategoryConstant;
|
||||
import org.dromara.progress.domain.PgsProgressCategory;
|
||||
@ -47,7 +48,6 @@ import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 进度计划详情Service业务层处理
|
||||
@ -75,6 +75,9 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
@Resource
|
||||
private IPgsProgressCategoryService progressCategoryService;
|
||||
|
||||
@Resource
|
||||
private IFacPhotovoltaicPanelPartsService photovoltaicPanelPartsService;
|
||||
|
||||
/**
|
||||
* 插入进度计划详情设施
|
||||
*
|
||||
@ -94,6 +97,11 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
if (progressPlanDetail == null) {
|
||||
throw new ServiceException("进度计划详情信息不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// todo 判断完成时间是否大于当前时间
|
||||
Date planDate = progressPlanDetail.getDate();
|
||||
/* if (planDate.after(new Date())) {
|
||||
throw new ServiceException("完成时间不能大于当前时间", HttpStatus.BAD_REQUEST);
|
||||
}*/
|
||||
Long projectId = progressPlanDetail.getProjectId();
|
||||
Long progressCategoryId = progressPlanDetail.getProgressCategoryId();
|
||||
PgsProgressCategory progressCategory = progressCategoryService.getById(progressCategoryId);
|
||||
@ -115,7 +123,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
projectId,
|
||||
progressCategoryId,
|
||||
finishedDetailIdList,
|
||||
progressPlanDetail.getDate(),
|
||||
planDate,
|
||||
photovoltaicPanelService,
|
||||
FacPhotovoltaicPanel::getId,
|
||||
FacPhotovoltaicPanel::getName,
|
||||
@ -127,32 +135,17 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
FacPhotovoltaicPanel::getStatus
|
||||
);
|
||||
finishedDetailList.addAll(finishedVoList);
|
||||
// 更新光伏板时,更新关联的钻孔、桩基、支架信息
|
||||
if (PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_WORK_TYPE.equals(workType)) {
|
||||
List<FacPhotovoltaicPanel> photovoltaicPanelList = photovoltaicPanelService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanel::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanel::getMatrixId, progressCategory.getMatrixId())
|
||||
.in(FacPhotovoltaicPanel::getProgressCategoryId, PgsProgressCategoryConstant.RELEVANCE_PHOTOVOLTAIC_PANEL_WORK_TYPE)
|
||||
.list();
|
||||
Map<Long, List<FacPhotovoltaicPanel>> map = photovoltaicPanelList
|
||||
.stream().collect(Collectors.groupingBy(FacPhotovoltaicPanel::getProgressCategoryId));
|
||||
// 批量更新关联的光伏板信息
|
||||
boolean update = photovoltaicPanelService.lambdaUpdate()
|
||||
.eq(FacPhotovoltaicPanel::getProjectId, projectId)
|
||||
.in(FacPhotovoltaicPanel::getProgressCategoryId, PgsProgressCategoryConstant.RELEVANCE_PHOTOVOLTAIC_PANEL_WORK_TYPE)
|
||||
.eq(FacPhotovoltaicPanel::getMatrixId, progressCategory.getMatrixId())
|
||||
.set(FacPhotovoltaicPanel::getStatus, FacFinishStatusEnum.FINISH.getValue())
|
||||
.set(FacPhotovoltaicPanel::getFinishType, FacFinishTypeEnum.HAND.getValue())
|
||||
.set(FacPhotovoltaicPanel::getFinishDate, progressPlanDetail.getDate())
|
||||
.update();
|
||||
if (!update) {
|
||||
throw new ServiceException("更新设施信息异常", HttpStatus.ERROR);
|
||||
}
|
||||
// todo
|
||||
for (Map.Entry<Long, List<FacPhotovoltaicPanel>> entry : map.entrySet()) {
|
||||
Long key = entry.getKey();
|
||||
List<FacPhotovoltaicPanel> value = entry.getValue();
|
||||
// 封装计划详情
|
||||
// 如果是桩点、支柱、立架,则同步更新
|
||||
if (PgsProgressCategoryConstant.RELEVANCE_PHOTOVOLTAIC_PANEL_WORK_TYPE.contains(workType)) {
|
||||
Long matrixId = progressCategory.getMatrixId();
|
||||
List<String> nameList = finishedDetailList.stream().map(PgsProgressPlanDetailFinishedVo::getName).toList();
|
||||
Boolean result = photovoltaicPanelPartsService.updatePartsFinishStatus(
|
||||
planDate,
|
||||
projectId,
|
||||
matrixId,
|
||||
nameList);
|
||||
if (!result) {
|
||||
throw new ServiceException("同步更新设施失败", HttpStatus.ERROR);
|
||||
}
|
||||
}
|
||||
} else if (PgsProgressCategoryConstant.INVERTER_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) {
|
||||
@ -160,7 +153,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
projectId,
|
||||
progressCategoryId,
|
||||
finishedDetailIdList,
|
||||
progressPlanDetail.getDate(),
|
||||
planDate,
|
||||
inverterService,
|
||||
FacInverter::getId,
|
||||
FacInverter::getName,
|
||||
@ -177,7 +170,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
projectId,
|
||||
progressCategoryId,
|
||||
finishedDetailIdList,
|
||||
progressPlanDetail.getDate(),
|
||||
planDate,
|
||||
boxTransformerService,
|
||||
FacBoxTransformer::getId,
|
||||
FacBoxTransformer::getName,
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
package org.dromara.utils;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
|
||||
/**
|
||||
* @author lcj
|
||||
* @date 2025/5/30 14:55
|
||||
*/
|
||||
public class JsonDimensionUtil {
|
||||
|
||||
/**
|
||||
* 判断 JSONArray 的嵌套维度
|
||||
*
|
||||
* @param array 需要判断的 JSONArray
|
||||
* @return 返回维度层级:1 表示一维,2 表示二维,3 表示三维 ...
|
||||
*/
|
||||
public static int getJsonArrayDepth(Object array) {
|
||||
if (array instanceof JSONArray jsonArray && !jsonArray.isEmpty()) {
|
||||
return 1 + getJsonArrayDepth(jsonArray.getFirst());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user