进度计划,施工产值
This commit is contained in:
@ -23,7 +23,7 @@ public class RecognizerTest {
|
||||
|
||||
@Test
|
||||
void test() {
|
||||
RecognizeVo recognize = recognizerManager.recognize("http://xny.yj-3d.com:7363/file/tif/20250625160218orthophoto.png", List.of(RecognizerTypeEnum.PHO));
|
||||
RecognizeVo recognize = recognizerManager.recognize("http://xny.yj-3d.com:7363/file/tif/20250625160218orthophoto.png", List.of(RecognizerTypeEnum.SOLAR));
|
||||
log.info("recognize: {}", recognize);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,14 +2,11 @@ package org.dromara.bigscreen.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.bigscreen.domain.dto.WurenjiQueryReq;
|
||||
import org.dromara.bigscreen.domain.dto.Ys7DeviceUpdateReq;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectImageProgressVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectLandVo;
|
||||
@ -22,12 +19,8 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.redis.utils.RedisUtils;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.drone.service.IDroProjectDroneService;
|
||||
import org.dromara.gps.domain.bo.GpsEquipmentBo;
|
||||
import org.dromara.gps.domain.vo.GpsEquipmentSonVo;
|
||||
import org.dromara.gps.service.IGpsEquipmentService;
|
||||
import org.dromara.land.domain.BusLandBlock;
|
||||
import org.dromara.land.domain.BusLandTransferLedger;
|
||||
import org.dromara.land.domain.BusLandTransferLedgerSon;
|
||||
@ -54,10 +47,8 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -103,10 +94,10 @@ public class ProjectBigScreenController extends BaseController {
|
||||
List<BusLandTransferLedger> levelList = busLandTransferLedgerService.list(Wrappers.lambdaQuery(BusLandTransferLedger.class)
|
||||
.eq(BusLandTransferLedger::getProjectId, projectId));
|
||||
|
||||
if(CollectionUtil.isNotEmpty(levelList)){
|
||||
if (CollectionUtil.isNotEmpty(levelList)) {
|
||||
List<Long> list1 = levelList.stream().map(BusLandTransferLedger::getId).toList();
|
||||
LambdaQueryWrapper<BusLandTransferLedgerSon> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(BusLandTransferLedgerSon::getParentId,list1);
|
||||
lambdaQueryWrapper.in(BusLandTransferLedgerSon::getParentId, list1);
|
||||
List<BusLandTransferLedgerSon> sonList = busLandTransferLedgerSonService.list(lambdaQueryWrapper);
|
||||
Map<Long, BigDecimal> collect = sonList.stream().filter(vo -> "1".equals(vo.getTransferStatus()))
|
||||
.collect(Collectors.toMap(BusLandTransferLedgerSon::getParentId, BusLandTransferLedgerSon::getAreaValue));
|
||||
@ -283,7 +274,7 @@ public class ProjectBigScreenController extends BaseController {
|
||||
*/
|
||||
@SaCheckPermission("project:bigScreen:imageProgress")
|
||||
@GetMapping("/imageProgress/{projectId}")
|
||||
public R<ProjectImageProgressVo> getProjectImageProgress(@NotNull(message = "主键不能为空")
|
||||
public R<List<ProjectImageProgressVo>> getProjectImageProgress(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long projectId) {
|
||||
return R.ok(projectBigScreenService.getProjectImageProgress(projectId));
|
||||
}
|
||||
|
||||
@ -16,39 +16,49 @@ public class ProjectImageProgressVo implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 7963637133004484891L;
|
||||
|
||||
/**
|
||||
* 类别名称
|
||||
*/
|
||||
private String progressName;
|
||||
|
||||
/**
|
||||
* 进度百分比
|
||||
*/
|
||||
private BigDecimal progressTotal;
|
||||
|
||||
/**
|
||||
* 场区百分比
|
||||
*/
|
||||
private BigDecimal areaPercentage;
|
||||
// private BigDecimal areaPercentage;
|
||||
|
||||
/**
|
||||
* 道路百分比
|
||||
*/
|
||||
private BigDecimal roadPercentage;
|
||||
// private BigDecimal roadPercentage;
|
||||
|
||||
/**
|
||||
* 集电线路百分比
|
||||
*/
|
||||
private BigDecimal collectorLinePercentage;
|
||||
// private BigDecimal collectorLinePercentage;
|
||||
|
||||
/**
|
||||
* 送出线路百分比
|
||||
*/
|
||||
private BigDecimal exportLinePercentage;
|
||||
// private BigDecimal exportLinePercentage;
|
||||
|
||||
/**
|
||||
* 升压站百分比
|
||||
*/
|
||||
private BigDecimal substationPercentage;
|
||||
// private BigDecimal substationPercentage;
|
||||
|
||||
/**
|
||||
* 箱变百分比
|
||||
*/
|
||||
private BigDecimal boxTransformerPercentage;
|
||||
// private BigDecimal boxTransformerPercentage;
|
||||
|
||||
/**
|
||||
* 总百分比
|
||||
*/
|
||||
private BigDecimal totalPercentage;
|
||||
// private BigDecimal totalPercentage;
|
||||
|
||||
}
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
package org.dromara.bigscreen.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectImageProgressVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectPeopleVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectSafetyInspectionVo;
|
||||
import org.dromara.manager.weathermanager.vo.WeatherVo;
|
||||
import org.dromara.gps.domain.bo.GpsEquipmentBo;
|
||||
import org.dromara.manager.weathermanager.vo.WeatherVo;
|
||||
import org.dromara.project.domain.vo.project.BusProjectSafetyDayVo;
|
||||
import org.dromara.project.domain.vo.projectnews.BusProjectNewsVo;
|
||||
|
||||
@ -64,7 +63,7 @@ public interface ProjectBigScreenService {
|
||||
* @param projectId 项目id
|
||||
* @return 项目形象进度
|
||||
*/
|
||||
ProjectImageProgressVo getProjectImageProgress(Long projectId);
|
||||
List<ProjectImageProgressVo> getProjectImageProgress(Long projectId);
|
||||
|
||||
/**
|
||||
* 获取项目概括
|
||||
|
||||
@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectImageProgressVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectPeopleVo;
|
||||
@ -15,8 +14,6 @@ import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.redis.utils.RedisUtils;
|
||||
import org.dromara.common.utils.BigDecimalUtil;
|
||||
import org.dromara.common.websocket.dto.WebSocketMessageDto;
|
||||
import org.dromara.common.websocket.utils.WebSocketUtils;
|
||||
import org.dromara.contractor.domain.SubConstructionUser;
|
||||
import org.dromara.contractor.service.ISubConstructionUserService;
|
||||
import org.dromara.drone.service.IDroProjectDroneService;
|
||||
@ -26,8 +23,8 @@ import org.dromara.gps.service.IGpsEquipmentService;
|
||||
import org.dromara.manager.weathermanager.vo.WeatherVo;
|
||||
import org.dromara.other.domain.OthYs7Device;
|
||||
import org.dromara.other.service.IOthYs7DeviceService;
|
||||
import org.dromara.progress.constant.PgsProgressCategoryConstant;
|
||||
import org.dromara.progress.domain.PgsProgressCategory;
|
||||
import org.dromara.progress.domain.enums.PgsProgressUnitTypeEnum;
|
||||
import org.dromara.progress.service.IPgsProgressCategoryService;
|
||||
import org.dromara.project.domain.BusProject;
|
||||
import org.dromara.project.domain.BusProjectTeam;
|
||||
@ -37,16 +34,12 @@ import org.dromara.project.domain.vo.projectnews.BusProjectNewsVo;
|
||||
import org.dromara.project.service.*;
|
||||
import org.dromara.safety.domain.HseRecognizeRecord;
|
||||
import org.dromara.safety.service.IHseRecognizeRecordService;
|
||||
import org.redisson.api.RTopic;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.redisson.api.listener.MessageListener;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
@ -241,9 +234,59 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
* @return 项目形象进度
|
||||
*/
|
||||
@Override
|
||||
public ProjectImageProgressVo getProjectImageProgress(Long projectId) {
|
||||
public List<ProjectImageProgressVo> getProjectImageProgress(Long projectId) {
|
||||
checkProject(projectId);
|
||||
ProjectImageProgressVo vo = new ProjectImageProgressVo();
|
||||
// 获取当前项目的所有子项目
|
||||
List<Long> projectIds = new ArrayList<>(projectService.lambdaQuery()
|
||||
.select(BusProject::getId)
|
||||
.eq(BusProject::getPId, projectId)
|
||||
.list()
|
||||
.stream()
|
||||
.map(BusProject::getId)
|
||||
.toList());
|
||||
projectIds.add(projectId);
|
||||
// 查询该子项目下的顶级进度类别(父ID为0)
|
||||
List<PgsProgressCategory> list = progressCategoryService.lambdaQuery()
|
||||
.in(PgsProgressCategory::getProjectId, projectIds)
|
||||
.eq(PgsProgressCategory::getParentId, PgsProgressCategoryConstant.TOP_PARENT_ID)
|
||||
.list();
|
||||
// 如果没有查询到顶级进度类别,直接返回空集合
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return List.of();
|
||||
}
|
||||
List<ProjectImageProgressVo> topList = new ArrayList<>();
|
||||
// 获取这些顶级类别的所有子节点
|
||||
List<Long> ids = list.stream().map(PgsProgressCategory::getId).distinct().toList();
|
||||
List<PgsProgressCategory> childrenNodes = progressCategoryService.getChildrenNodeByTopIds(ids);
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
// 按名称分组(同名的放在一起)
|
||||
Map<String, List<PgsProgressCategory>> subMap = list.stream()
|
||||
.collect(Collectors.groupingBy(PgsProgressCategory::getName));
|
||||
for (Map.Entry<String, List<PgsProgressCategory>> entry : subMap.entrySet()) {
|
||||
ProjectImageProgressVo topVo = new ProjectImageProgressVo();
|
||||
topVo.setProgressName(entry.getKey());
|
||||
List<PgsProgressCategory> value = entry.getValue();
|
||||
// 获取这些类别下的所有叶子节点
|
||||
List<Long> topIds = value.stream().map(PgsProgressCategory::getId).distinct().toList();
|
||||
List<PgsProgressCategory> leafNodesByTopIds = childrenNodes.stream()
|
||||
.filter(node -> {
|
||||
Set<Long> ancestorSet = Arrays.stream(node.getAncestors().split(","))
|
||||
.map(Long::parseLong)
|
||||
.collect(Collectors.toSet());
|
||||
return topIds.stream().anyMatch(ancestorSet::contains);
|
||||
}).toList();
|
||||
// 如果有叶子节点,统计进度和状态;否则初始化为未完成
|
||||
if (CollUtil.isNotEmpty(leafNodesByTopIds)) {
|
||||
topVo.setProgressTotal(progressCategoryService.getCompletedPercentage(leafNodesByTopIds));
|
||||
} else {
|
||||
topVo.setProgressTotal(BigDecimal.ZERO);
|
||||
}
|
||||
// 加入结果集
|
||||
topList.add(topVo);
|
||||
}
|
||||
}
|
||||
return topList;
|
||||
/* ProjectImageProgressVo vo = new ProjectImageProgressVo();
|
||||
// 获取所有子项目列表
|
||||
List<BusProject> subProjectList = projectService.lambdaQuery()
|
||||
.eq(BusProject::getPId, projectId)
|
||||
@ -368,7 +411,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
.add(vo.getBoxTransformerPercentage())
|
||||
.divide(BigDecimal.valueOf(6), 2, RoundingMode.HALF_UP) // 保留两位小数
|
||||
);
|
||||
return vo;
|
||||
return vo;*/
|
||||
}
|
||||
|
||||
/**
|
||||
@ -400,7 +443,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
|
||||
@Override
|
||||
public List<String> getList(Long projectId) {
|
||||
if (projectId == null){
|
||||
if (projectId == null) {
|
||||
throw new ServiceException("项目id不能为空!!!");
|
||||
}
|
||||
Object object = RedisUtils.getCacheObject("xmjdp:" + projectId);
|
||||
@ -414,10 +457,10 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
|
||||
@Override
|
||||
public void setList(GpsEquipmentBo bo) {
|
||||
if (bo.getProjectId() == null){
|
||||
if (bo.getProjectId() == null) {
|
||||
throw new ServiceException("项目id不能为空!!!");
|
||||
}
|
||||
RedisUtils.setCacheObject("xmjdp:"+bo.getProjectId(), bo.getIdList());
|
||||
RedisUtils.setCacheObject("xmjdp:" + bo.getProjectId(), bo.getIdList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -427,8 +470,8 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<GpsEquipmentSonVo> voList = gpsEquipmentService.getClientList(projectId,startOfDay,now);
|
||||
List<GpsEquipmentSonVo> appList = gpsEquipmentService.getUserListByProjectId(projectId,startOfDay,now);
|
||||
List<GpsEquipmentSonVo> voList = gpsEquipmentService.getClientList(projectId, startOfDay, now);
|
||||
List<GpsEquipmentSonVo> appList = gpsEquipmentService.getUserListByProjectId(projectId, startOfDay, now);
|
||||
List<OthYs7Device> othYs7DeviceList = othYs7DeviceService.lambdaQuery()
|
||||
.eq(OthYs7Device::getProjectId, projectId)
|
||||
.between(OthYs7Device::getUpdateTime, startOfDay, now)
|
||||
@ -533,10 +576,10 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
sxtMap1.put("children", sxtChildrenMap1);
|
||||
wrjMap.put("id", 3);
|
||||
wrjMap.put("label", "无人机");
|
||||
wrjMap.put("children",wrjChildrenMap);
|
||||
wrjMap.put("children", wrjChildrenMap);
|
||||
wrjMap1.put("id", 8);
|
||||
wrjMap1.put("label", "无人机");
|
||||
wrjMap1.put("children",wrjChildrenMap1);
|
||||
wrjMap1.put("children", wrjChildrenMap1);
|
||||
|
||||
|
||||
maps.add(gpsMap);
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
package org.dromara.drone.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
@ -27,11 +28,6 @@ public class DroDroneConfig extends BaseEntity {
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 无人机服务地址
|
||||
*/
|
||||
|
||||
@ -32,12 +32,6 @@ public class DroDroneConfigBo extends BaseEntity {
|
||||
@NotNull(message = "主键id不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@NotNull(message = "项目id不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 无人机服务地址
|
||||
*/
|
||||
|
||||
@ -71,7 +71,6 @@ public class DroDroneConfigServiceImpl implements IDroDroneConfigService {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<DroDroneConfig> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(DroDroneConfig::getId);
|
||||
lqw.eq(bo.getProjectId() != null, DroDroneConfig::getProjectId, bo.getProjectId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
|
||||
@ -6,8 +6,6 @@ import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
@ -79,7 +77,7 @@ public class FacPhotovoltaicPanelController extends BaseController {
|
||||
@Log(title = "设施-光伏板", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody FacPhotovoltaicPanelCreateReq req) {
|
||||
public R<Long> add(@Validated @RequestBody FacPhotovoltaicPanelCreateReq req) {
|
||||
return R.ok(facPhotovoltaicPanelService.insertByBo(req));
|
||||
}
|
||||
|
||||
@ -101,7 +99,7 @@ public class FacPhotovoltaicPanelController extends BaseController {
|
||||
@Log(title = "设施-光伏板", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody FacPhotovoltaicPanelUpdateReq req) {
|
||||
public R<Void> edit(@Validated @RequestBody FacPhotovoltaicPanelUpdateReq req) {
|
||||
return toAjax(facPhotovoltaicPanelService.updateByBo(req));
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package org.dromara.facility.domain.dto.photovoltaicpanel;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
@ -26,9 +28,16 @@ public class FacPhotovoltaicPanelCreateReq implements Serializable {
|
||||
*/
|
||||
private Long matrixId;
|
||||
|
||||
/**
|
||||
* 进度类别id
|
||||
*/
|
||||
@NotNull(message = "进度类别id不能为空")
|
||||
private Long progressCategoryId;
|
||||
|
||||
/**
|
||||
* 光伏板名称
|
||||
*/
|
||||
@NotBlank(message = "光伏板名称不能为空")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
@ -36,19 +45,4 @@ public class FacPhotovoltaicPanelCreateReq implements Serializable {
|
||||
*/
|
||||
private List<List<String>> positionList;
|
||||
|
||||
/**
|
||||
* 完成状态(0未开始 1进行中 2完成)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 完成类型(1手动填报 2AI填报)
|
||||
*/
|
||||
private String finishType;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
|
||||
@ -849,7 +849,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
|
||||
photovoltaicPanelPointService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
||||
} else if (type.equals(RecognizerTypeEnum.PILE.getValue())) {
|
||||
photovoltaicPanelColumnService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
||||
} else if (type.equals(RecognizerTypeEnum.SHELVES.getValue())) {
|
||||
} else if (type.equals(RecognizerTypeEnum.BRACKET.getValue())) {
|
||||
photovoltaicPanelSupportService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
||||
}
|
||||
}
|
||||
@ -880,7 +880,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
|
||||
return list.stream().map(column ->
|
||||
new IdCoordinatePoint(column.getId(), column.getPositions())).toList();
|
||||
}
|
||||
} else if (type.equals(RecognizerTypeEnum.SHELVES.getValue())) {
|
||||
} else if (type.equals(RecognizerTypeEnum.BRACKET.getValue())) {
|
||||
List<FacPhotovoltaicPanelSupport> list = photovoltaicPanelSupportService.lambdaQuery()
|
||||
.in(FacPhotovoltaicPanelSupport::getProjectId, projectIds)
|
||||
.ne(FacPhotovoltaicPanelSupport::getStatus, FacFinishStatusEnum.FINISH.getValue())
|
||||
|
||||
@ -23,10 +23,7 @@ import org.dromara.facility.constant.FacRedisKeyConstant;
|
||||
import org.dromara.facility.domain.FacMatrix;
|
||||
import org.dromara.facility.domain.FacPhotovoltaicPanel;
|
||||
import org.dromara.facility.domain.dto.geojson.*;
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanel.FacPhotovoltaicPanelCreateByGeoJsonReq;
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanel.FacPhotovoltaicPanelCreateReq;
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanel.FacPhotovoltaicPanelQueryReq;
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanel.FacPhotovoltaicPanelUpdateReq;
|
||||
import org.dromara.facility.domain.dto.photovoltaicpanel.*;
|
||||
import org.dromara.facility.domain.enums.FacFinishStatusEnum;
|
||||
import org.dromara.facility.domain.enums.FacFinishTypeEnum;
|
||||
import org.dromara.facility.domain.vo.photovoltaicpanel.FacPhotovoltaicPanelVo;
|
||||
@ -152,6 +149,7 @@ public class FacPhotovoltaicPanelServiceImpl extends ServiceImpl<FacPhotovoltaic
|
||||
* @return 新增光伏板id
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long insertByBo(FacPhotovoltaicPanelCreateReq req) {
|
||||
// 将实体类和 DTO 进行转换
|
||||
FacPhotovoltaicPanel photovoltaicPanel = new FacPhotovoltaicPanel();
|
||||
@ -162,8 +160,19 @@ public class FacPhotovoltaicPanelServiceImpl extends ServiceImpl<FacPhotovoltaic
|
||||
String positionStr = JSONUtil.toJsonStr(positionList);
|
||||
photovoltaicPanel.setPositions(positionStr);
|
||||
}
|
||||
Long progressCategoryId = req.getProgressCategoryId();
|
||||
PgsProgressCategory category = progressCategoryService.getById(progressCategoryId);
|
||||
if (category == null) {
|
||||
throw new ServiceException("对应进度类别不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// 填入默认值
|
||||
photovoltaicPanel.setProjectId(category.getProjectId());
|
||||
photovoltaicPanel.setMatrixId(category.getMatrixId());
|
||||
photovoltaicPanel.setProgressCategoryId(progressCategoryId);
|
||||
photovoltaicPanel.setProgressCategoryName(category.getName());
|
||||
photovoltaicPanel.setRemark("手动添加");
|
||||
// 数据校验
|
||||
validEntityBeforeSave(photovoltaicPanel, true);
|
||||
validEntityBeforeSave(photovoltaicPanel);
|
||||
// 判断是否存在同名光伏板
|
||||
Long count = this.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanel::getProjectId, photovoltaicPanel.getProjectId())
|
||||
@ -177,6 +186,14 @@ public class FacPhotovoltaicPanelServiceImpl extends ServiceImpl<FacPhotovoltaic
|
||||
if (!save) {
|
||||
throw new ServiceException("新增光伏板失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
// 修改进度类别数量
|
||||
PgsProgressCategory updateCategory = new PgsProgressCategory();
|
||||
updateCategory.setId(progressCategoryId);
|
||||
updateCategory.setTotal(category.getTotal().add(BigDecimal.ONE));
|
||||
boolean update = progressCategoryService.updateById(updateCategory);
|
||||
if (!update) {
|
||||
throw new ServiceException("修改进度类别数量失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
return photovoltaicPanel.getId();
|
||||
}
|
||||
|
||||
@ -599,7 +616,7 @@ public class FacPhotovoltaicPanelServiceImpl extends ServiceImpl<FacPhotovoltaic
|
||||
photovoltaicPanel.setPositions(positionStr);
|
||||
}
|
||||
// 数据校验
|
||||
validEntityBeforeSave(photovoltaicPanel, false);
|
||||
validEntityBeforeSave(photovoltaicPanel);
|
||||
// 判断是否存在
|
||||
FacPhotovoltaicPanel oldPhotovoltaicPanel = this.getById(photovoltaicPanel.getId());
|
||||
if (oldPhotovoltaicPanel == null) {
|
||||
@ -626,24 +643,8 @@ public class FacPhotovoltaicPanelServiceImpl extends ServiceImpl<FacPhotovoltaic
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(FacPhotovoltaicPanel entity, Boolean create) {
|
||||
private void validEntityBeforeSave(FacPhotovoltaicPanel entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
Long projectId = entity.getProjectId();
|
||||
Long matrixId = entity.getMatrixId();
|
||||
if (create) {
|
||||
if (projectId == null) {
|
||||
throw new ServiceException("项目id不能为空", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
if (matrixId == null) {
|
||||
throw new ServiceException("方阵id不能为空", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
if (projectId != null && projectService.getById(projectId) == null) {
|
||||
throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
if (matrixId != null && matrixService.getById(matrixId) == null) {
|
||||
throw new ServiceException("对应方阵不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -16,8 +16,9 @@ public enum RecognizerTypeEnum {
|
||||
VEST("反光背心识别", "novest", ""),
|
||||
SMOKING("吸烟识别", "smoking", "3"),
|
||||
FIRE("火焰识别", "fire", "16"),
|
||||
PHO("光伏板识别", "pho", ""),
|
||||
SHELVES("光伏板支架识别", "shelves", ""),
|
||||
SMOKE("烟雾识别","smoke",""),
|
||||
SOLAR("光伏板识别", "solar", ""),
|
||||
BRACKET("光伏板支架识别", "bracket", ""),
|
||||
PILE("光伏板立柱识别", "pile", ""),
|
||||
HOLE("洞", "hole", "");
|
||||
|
||||
|
||||
@ -1,26 +1,28 @@
|
||||
package org.dromara.out.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.out.domain.vo.OutConstructionValueVo;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueBo;
|
||||
import org.dromara.out.service.IOutConstructionValueService;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueBo;
|
||||
import org.dromara.out.domain.vo.OutConstructionAllValueVo;
|
||||
import org.dromara.out.domain.vo.OutConstructionValueVo;
|
||||
import org.dromara.out.service.IOutConstructionValueService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 施工产值
|
||||
@ -68,6 +70,15 @@ public class OutConstructionValueController extends BaseController {
|
||||
return R.ok(outConstructionValueService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有施工产值
|
||||
*/
|
||||
@SaCheckPermission("out:constructionValue:query")
|
||||
@GetMapping("/allValue")
|
||||
public R<OutConstructionAllValueVo> getAllValue(OutConstructionValueBo bo) {
|
||||
return R.ok(outConstructionValueService.getAllValue(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增施工产值
|
||||
*/
|
||||
|
||||
@ -16,6 +16,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueRangeBo;
|
||||
import org.dromara.out.domain.vo.OutConstructionAllValueRangeVo;
|
||||
import org.dromara.out.domain.vo.OutConstructionValueRangeVo;
|
||||
import org.dromara.out.service.IOutConstructionValueRangeService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -81,6 +82,15 @@ public class OutConstructionValueRangeController extends BaseController {
|
||||
return R.ok(outConstructionValueRangeService.queryById(id, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有施工产值范围
|
||||
*/
|
||||
@SaCheckPermission("out:constructionValueRange:query")
|
||||
@GetMapping("/allValue")
|
||||
public R<OutConstructionAllValueRangeVo> getAllValue(OutConstructionValueRangeBo bo) {
|
||||
return R.ok(outConstructionValueRangeService.getAllValue(bo));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增施工产值范围
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
package org.dromara.out.domain.bo;
|
||||
|
||||
import org.dromara.out.domain.OutConstructionValue;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.out.domain.OutConstructionValue;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
@ -26,7 +26,7 @@ public class OutConstructionValueBo extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
@ -37,7 +37,7 @@ public class OutConstructionValueBo extends BaseEntity {
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
@NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "项目ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
@ -53,13 +53,13 @@ public class OutConstructionValueBo extends BaseEntity {
|
||||
/**
|
||||
* 人工填报数量
|
||||
*/
|
||||
@NotNull(message = "人工填报数量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "人工填报数量不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Integer artificialNum;
|
||||
|
||||
/**
|
||||
* 无人机识别数量
|
||||
*/
|
||||
@NotNull(message = "无人机识别数量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "无人机识别数量不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Integer uavNum;
|
||||
|
||||
/**
|
||||
@ -70,7 +70,7 @@ public class OutConstructionValueBo extends BaseEntity {
|
||||
/**
|
||||
* 确认数量
|
||||
*/
|
||||
@NotNull(message = "确认数量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "确认数量不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Integer confirmNum;
|
||||
|
||||
/**
|
||||
@ -86,7 +86,7 @@ public class OutConstructionValueBo extends BaseEntity {
|
||||
/**
|
||||
* 上报日期
|
||||
*/
|
||||
@NotNull(message = "上报日期不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "上报日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private LocalDate reportDate;
|
||||
|
||||
/**
|
||||
@ -94,5 +94,20 @@ public class OutConstructionValueBo extends BaseEntity {
|
||||
*/
|
||||
private String auditStatus;
|
||||
|
||||
/**
|
||||
* 计量方式(0无 1数量 2百分比)
|
||||
*/
|
||||
private String unitType;
|
||||
|
||||
/**
|
||||
* 开始日期
|
||||
*/
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 结束日期
|
||||
*/
|
||||
private LocalDate endDate;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package org.dromara.out.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-10-11 15:10
|
||||
*/
|
||||
@Data
|
||||
public class OutConstructionAllValueRangeVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1258889254649279094L;
|
||||
|
||||
/**
|
||||
* 対乙产值
|
||||
*/
|
||||
private BigDecimal outValue;
|
||||
|
||||
/**
|
||||
* 对甲产值
|
||||
*/
|
||||
private BigDecimal ownerValue;
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
package org.dromara.out.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-10-11 15:20
|
||||
*/
|
||||
@Data
|
||||
public class OutConstructionAllValueVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 250916682355050142L;
|
||||
|
||||
/**
|
||||
* 対乙产值
|
||||
*/
|
||||
private BigDecimal outValue;
|
||||
|
||||
/**
|
||||
* 对甲产值
|
||||
*/
|
||||
private BigDecimal ownerValue;
|
||||
}
|
||||
@ -5,6 +5,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.out.domain.OutConstructionValueRange;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueRangeBo;
|
||||
import org.dromara.out.domain.vo.OutConstructionAllValueRangeVo;
|
||||
import org.dromara.out.domain.vo.OutConstructionValueRangeVo;
|
||||
|
||||
import java.util.Collection;
|
||||
@ -68,4 +69,12 @@ public interface IOutConstructionValueRangeService extends IService<OutConstruct
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 获取所有施工范围产值
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 所有施工范围产值
|
||||
*/
|
||||
OutConstructionAllValueRangeVo getAllValue(OutConstructionValueRangeBo bo);
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
package org.dromara.out.service;
|
||||
|
||||
import org.dromara.out.domain.vo.OutConstructionValueVo;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueBo;
|
||||
import org.dromara.out.domain.OutConstructionValue;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.out.domain.OutConstructionValue;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueBo;
|
||||
import org.dromara.out.domain.vo.OutConstructionAllValueVo;
|
||||
import org.dromara.out.domain.vo.OutConstructionValueVo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
@ -18,7 +18,7 @@ import java.util.List;
|
||||
* @author Lion Li
|
||||
* @date 2025-07-30
|
||||
*/
|
||||
public interface IOutConstructionValueService extends IService<OutConstructionValue>{
|
||||
public interface IOutConstructionValueService extends IService<OutConstructionValue> {
|
||||
|
||||
/**
|
||||
* 查询施工产值
|
||||
@ -77,5 +77,13 @@ public interface IOutConstructionValueService extends IService<OutConstructionVa
|
||||
* @param projectId 项目id
|
||||
* @return 项目施工完成值
|
||||
*/
|
||||
BigDecimal getCompleteValue(Long projectId,String month,String type);
|
||||
BigDecimal getCompleteValue(Long projectId, String month, String type);
|
||||
|
||||
/**
|
||||
* 获取施工所有产值
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 施工所有产值
|
||||
*/
|
||||
OutConstructionAllValueVo getAllValue(OutConstructionValueBo bo);
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ import org.dromara.out.domain.OutConstructionValue;
|
||||
import org.dromara.out.domain.OutConstructionValueRange;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueBo;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueRangeBo;
|
||||
import org.dromara.out.domain.vo.OutConstructionAllValueRangeVo;
|
||||
import org.dromara.out.domain.vo.OutConstructionValueRangeVo;
|
||||
import org.dromara.out.mapper.OutConstructionValueRangeMapper;
|
||||
import org.dromara.out.service.IOutConstructionValueRangeService;
|
||||
@ -31,6 +32,11 @@ import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -102,9 +108,15 @@ public class OutConstructionValueRangeServiceImpl extends ServiceImpl<OutConstru
|
||||
lqw.orderByDesc(OutConstructionValueRange::getId);
|
||||
lqw.eq(bo.getProjectId() != null, OutConstructionValueRange::getProjectId, bo.getProjectId());
|
||||
// 日期范围过滤
|
||||
if (bo.getDate() != null) {
|
||||
lqw.le(OutConstructionValueRange::getStartDate, bo.getDate()) // 开始时间 <= date
|
||||
.ge(OutConstructionValueRange::getEndDate, bo.getDate()); // 结束时间 >= date
|
||||
if (bo.getStartDate() != null) {
|
||||
// 获取本周的星期一
|
||||
LocalDate monday = bo.getStartDate().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
|
||||
lqw.ge(OutConstructionValueRange::getStartDate, monday); // 开始时间 <= date
|
||||
}
|
||||
if (bo.getEndDate() != null) {
|
||||
// 获取本周的星期日
|
||||
LocalDate sunday = bo.getEndDate().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
|
||||
lqw.le(OutConstructionValueRange::getEndDate, sunday); // 结束时间 >= date
|
||||
}
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), OutConstructionValueRange::getAuditStatus, bo.getAuditStatus());
|
||||
return lqw;
|
||||
@ -162,6 +174,31 @@ public class OutConstructionValueRangeServiceImpl extends ServiceImpl<OutConstru
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有施工范围产值
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 所有施工范围产值
|
||||
*/
|
||||
@Override
|
||||
public OutConstructionAllValueRangeVo getAllValue(OutConstructionValueRangeBo bo) {
|
||||
// 根据查询条件获取对应施工产值
|
||||
LambdaQueryWrapper<OutConstructionValueRange> lqw = buildQueryWrapper(bo);
|
||||
List<OutConstructionValueRangeVo> list = baseMapper.selectVoList(lqw);
|
||||
OutConstructionAllValueRangeVo vo = new OutConstructionAllValueRangeVo();
|
||||
// 统计对乙产值
|
||||
BigDecimal outValue = list.stream().map(OutConstructionValueRangeVo::getOutValue)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(4, RoundingMode.HALF_UP);
|
||||
vo.setOutValue(outValue);
|
||||
// 统计对甲产值
|
||||
BigDecimal ownerValue = list.stream().map(OutConstructionValueRangeVo::getOwnerValue)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(4, RoundingMode.HALF_UP);
|
||||
vo.setOwnerValue(ownerValue);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
|
||||
* 正常使用只需#processEvent.flowCode=='leave1'
|
||||
|
||||
@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.facility.domain.FacMatrix;
|
||||
@ -17,13 +18,16 @@ import org.dromara.facility.service.IFacMatrixService;
|
||||
import org.dromara.out.domain.OutConstructionValue;
|
||||
import org.dromara.out.domain.OutConstructionValueRange;
|
||||
import org.dromara.out.domain.bo.OutConstructionValueBo;
|
||||
import org.dromara.out.domain.vo.OutConstructionAllValueVo;
|
||||
import org.dromara.out.domain.vo.OutConstructionValueVo;
|
||||
import org.dromara.out.mapper.OutConstructionValueMapper;
|
||||
import org.dromara.out.service.IOutConstructionValueRangeService;
|
||||
import org.dromara.out.service.IOutConstructionValueService;
|
||||
import org.dromara.progress.domain.PgsProgressCategory;
|
||||
import org.dromara.progress.domain.dto.progressplandetail.PgsProgressPlanDetailCreateReq;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryVo;
|
||||
import org.dromara.progress.service.IPgsProgressCategoryService;
|
||||
import org.dromara.progress.service.IPgsProgressPlanDetailService;
|
||||
import org.dromara.project.domain.BusProject;
|
||||
import org.dromara.project.domain.vo.project.BusProjectVo;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
@ -31,10 +35,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 施工产值Service业务层处理
|
||||
@ -54,6 +55,8 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
|
||||
private final IPgsProgressCategoryService pgsProgressCategoryService;
|
||||
|
||||
private final IPgsProgressPlanDetailService pgsProgressPlanDetailService;
|
||||
|
||||
private final IBusProjectService projectService;
|
||||
|
||||
private final IOutConstructionValueRangeService constructionValueRangeService;
|
||||
@ -105,18 +108,17 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
LambdaQueryWrapper<OutConstructionValue> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(OutConstructionValue::getId);
|
||||
Long projectId = bo.getProjectId();
|
||||
List<Long> ids = new ArrayList<>();
|
||||
if (projectId != null) {
|
||||
// 获取子项目列表
|
||||
List<BusProject> subProjectIds = projectService.lambdaQuery()
|
||||
.eq(BusProject::getPId, projectId)
|
||||
.list();
|
||||
if (CollUtil.isNotEmpty(subProjectIds)) {
|
||||
List<Long> ids = new ArrayList<>(subProjectIds.stream().map(BusProject::getId).toList());
|
||||
ids = new ArrayList<>(subProjectIds.stream().map(BusProject::getId).toList());
|
||||
ids.add(projectId);
|
||||
lqw.in(OutConstructionValue::getProjectId, ids);
|
||||
} else {
|
||||
lqw.eq(OutConstructionValue::getProjectId, projectId);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(ids)) {
|
||||
lqw.in(OutConstructionValue::getProjectId, ids);
|
||||
}
|
||||
lqw.eq(bo.getMatrixId() != null, OutConstructionValue::getMatrixId, bo.getMatrixId());
|
||||
lqw.eq(bo.getRangeId() != null, OutConstructionValue::getRangeId, bo.getRangeId());
|
||||
@ -126,7 +128,24 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
lqw.eq(bo.getConfirmNum() != null, OutConstructionValue::getConfirmNum, bo.getConfirmNum());
|
||||
lqw.eq(bo.getOutValue() != null, OutConstructionValue::getOutValue, bo.getOutValue());
|
||||
lqw.eq(bo.getReportDate() != null, OutConstructionValue::getReportDate, bo.getReportDate());
|
||||
lqw.ge(bo.getStartDate() != null, OutConstructionValue::getReportDate, bo.getStartDate());
|
||||
lqw.le(bo.getEndDate() != null, OutConstructionValue::getReportDate, bo.getEndDate());
|
||||
lqw.eq(bo.getCreateBy() != null, OutConstructionValue::getCreateBy, bo.getCreateBy());
|
||||
// 新增根据 unit_type 查询的条件
|
||||
if (StringUtils.isNotBlank(bo.getUnitType())) {
|
||||
LambdaQueryWrapper<PgsProgressCategory> categoryLqw = new LambdaQueryWrapper<>();
|
||||
categoryLqw.select(PgsProgressCategory::getId);
|
||||
categoryLqw.eq(PgsProgressCategory::getUnitType, bo.getUnitType());
|
||||
categoryLqw.eq(bo.getMatrixId() != null, PgsProgressCategory::getMatrixId, bo.getMatrixId());
|
||||
if (CollUtil.isNotEmpty(ids)) {
|
||||
categoryLqw.in(PgsProgressCategory::getProjectId, ids);
|
||||
}
|
||||
List<PgsProgressCategory> progressCategories = pgsProgressCategoryService.list(categoryLqw);
|
||||
if (CollUtil.isNotEmpty(progressCategories)) {
|
||||
List<Long> categoryIds = progressCategories.stream().map(PgsProgressCategory::getId).toList();
|
||||
lqw.in(OutConstructionValue::getProgressCategoryId, categoryIds);
|
||||
}
|
||||
}
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@ -169,20 +188,27 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
}
|
||||
OutConstructionValue update = MapstructUtils.convert(bo, OutConstructionValue.class);
|
||||
validEntityBeforeSave(update);
|
||||
//计算产值
|
||||
PgsProgressCategory progressCategory = pgsProgressCategoryService.getById(bo.getProgressCategoryId());
|
||||
if (progressCategory != null) {
|
||||
BigDecimal outValue = progressCategory.getConstructionPrice().multiply(BigDecimal.valueOf(bo.getConfirmNum())).setScale(4, RoundingMode.HALF_UP);
|
||||
// 同步确认数量
|
||||
BigDecimal confirmNum = BigDecimal.valueOf(bo.getConfirmNum());
|
||||
if (StringUtils.isBlank(progressCategory.getWorkType())) {
|
||||
if (confirmNum.compareTo(BigDecimal.valueOf(old.getArtificialNum())) != 0) {
|
||||
PgsProgressPlanDetailCreateReq req = new PgsProgressPlanDetailCreateReq();
|
||||
req.setId(old.getDetailId());
|
||||
req.setFinishedNumber(confirmNum);
|
||||
pgsProgressPlanDetailService.insertPercentageNumberDetail(req, false);
|
||||
}
|
||||
}
|
||||
//计算产值
|
||||
BigDecimal outValue = progressCategory.getConstructionPrice().multiply(confirmNum).setScale(4, RoundingMode.HALF_UP);
|
||||
update.setOutValue(outValue);
|
||||
BigDecimal ownerValue = progressCategory.getOwnerPrice().multiply(BigDecimal.valueOf(bo.getConfirmNum())).setScale(4, RoundingMode.HALF_UP);
|
||||
BigDecimal ownerValue = progressCategory.getOwnerPrice().multiply(confirmNum).setScale(4, RoundingMode.HALF_UP);
|
||||
update.setOwnerValue(ownerValue);
|
||||
OutConstructionValueRange range = constructionValueRangeService.getById(old.getRangeId());
|
||||
BigDecimal allOutValue = range.getOutValue();
|
||||
BigDecimal allOwnerValue = range.getOwnerValue();
|
||||
range.setOutValue(allOutValue.subtract(old.getOutValue()).add(outValue).setScale(4, RoundingMode.HALF_UP));
|
||||
range.setOwnerValue(allOwnerValue.subtract(old.getOwnerValue()).add(ownerValue).setScale(4, RoundingMode.HALF_UP));
|
||||
}
|
||||
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
@ -223,6 +249,31 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
return completeValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取施工所有产值
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 施工所有产值
|
||||
*/
|
||||
@Override
|
||||
public OutConstructionAllValueVo getAllValue(OutConstructionValueBo bo) {
|
||||
// 根据查询条件获取对应施工产值
|
||||
LambdaQueryWrapper<OutConstructionValue> lqw = buildQueryWrapper(bo);
|
||||
List<OutConstructionValueVo> list = baseMapper.selectVoList(lqw);
|
||||
OutConstructionAllValueVo vo = new OutConstructionAllValueVo();
|
||||
// 统计对乙产值
|
||||
BigDecimal outValue = list.stream().map(OutConstructionValueVo::getOutValue)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(4, RoundingMode.HALF_UP);
|
||||
vo.setOutValue(outValue);
|
||||
// 统计对甲产值
|
||||
BigDecimal ownerValue = list.stream().map(OutConstructionValueVo::getOwnerValue)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(4, RoundingMode.HALF_UP);
|
||||
vo.setOwnerValue(ownerValue);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 补充数据
|
||||
*/
|
||||
@ -230,7 +281,7 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
for (OutConstructionValueVo vo : list) {
|
||||
getName(vo);
|
||||
}
|
||||
|
||||
list.sort(Comparator.comparing(OutConstructionValueVo::getProgressCategoryName, Comparator.nullsLast(String::compareTo)));
|
||||
}
|
||||
|
||||
public void getName(OutConstructionValueVo vo) {
|
||||
|
||||
@ -367,6 +367,28 @@ public class PgsProgressCategoryController extends BaseController {
|
||||
return toAjax(pgsProgressCategoryService.insertByReq(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增设施进度类别
|
||||
*/
|
||||
@SaCheckPermission("progress:progressCategory:add")
|
||||
@Log(title = "进度类别", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/facility")
|
||||
public R<Void> insertFacility(@Validated @RequestBody PgsProgressCategoryCreateFacilityReq req) {
|
||||
return toAjax(pgsProgressCategoryService.insertFacility(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增设施进度类别
|
||||
*/
|
||||
@SaCheckPermission("progress:progressCategory:add")
|
||||
@Log(title = "进度类别", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/batch/facility")
|
||||
public R<Void> insertFacility(@Validated @RequestBody PgsProgressCategoryCreateBatchFacilityReq req) {
|
||||
return toAjax(pgsProgressCategoryService.insertBatchFacility(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改进度类别
|
||||
*/
|
||||
|
||||
@ -56,7 +56,7 @@ public class PgsProgressPlanDetailController extends BaseController {
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/insert/percentage")
|
||||
public R<Void> insertPercentageDetail(@Validated @RequestBody PgsProgressPlanDetailCreateReq req) {
|
||||
return toAjax(pgsProgressPlanDetailService.insertPercentageNumberDetail(req));
|
||||
return toAjax(pgsProgressPlanDetailService.insertPercentageNumberDetail(req, true));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -57,7 +57,7 @@ public class PgsProgressPlanDetailAppController extends BaseController {
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/insert")
|
||||
public R<Void> insertDetail(@Validated @RequestBody PgsProgressPlanDetailCreateReq req) {
|
||||
return toAjax(progressPlanDetailService.insertPercentageNumberDetail(req));
|
||||
return toAjax(progressPlanDetailService.insertPercentageNumberDetail(req, true));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
package org.dromara.progress.domain.dto.progresscategory;
|
||||
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-10-11 14:25
|
||||
*/
|
||||
@Data
|
||||
public class PgsProgressCategoryCreateBatchFacilityReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -1134967798239895738L;
|
||||
|
||||
/**
|
||||
* 进度类别id
|
||||
*/
|
||||
@NotNull(message = "进度类别id不能为空")
|
||||
private Long progressCategoryId;
|
||||
|
||||
/**
|
||||
* 设施数量
|
||||
*/
|
||||
@NotNull(message = "设施数量不能为空")
|
||||
@Min(value = 1, message = "设施数量不能小于1")
|
||||
private Integer number;
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package org.dromara.progress.domain.dto.progresscategory;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-10-11 11:32
|
||||
*/
|
||||
@Data
|
||||
public class PgsProgressCategoryCreateFacilityReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -89082568070992741L;
|
||||
|
||||
/**
|
||||
* 进度类别id
|
||||
*/
|
||||
@NotNull(message = "进度类别id不能为空")
|
||||
private Long progressCategoryId;
|
||||
|
||||
/**
|
||||
* 设施名称
|
||||
*/
|
||||
@NotBlank(message = "设施名称不能为空")
|
||||
private String name;
|
||||
}
|
||||
@ -196,4 +196,20 @@ public interface IPgsProgressCategoryService extends IService<PgsProgressCategor
|
||||
* @return 未完成数量
|
||||
*/
|
||||
BigDecimal getUnFinishNumber(Long id);
|
||||
|
||||
/**
|
||||
* 新增设施
|
||||
*
|
||||
* @param req 设施信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertFacility(PgsProgressCategoryCreateFacilityReq req);
|
||||
|
||||
/**
|
||||
* 批量新增设施批量
|
||||
*
|
||||
* @param req 设施信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertBatchFacility(PgsProgressCategoryCreateBatchFacilityReq req);
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@ public interface IPgsProgressPlanDetailService extends IService<PgsProgressPlanD
|
||||
* @param req 插入进度计划详情设施参数
|
||||
* @return 是否插入成功
|
||||
*/
|
||||
Boolean insertPercentageNumberDetail(PgsProgressPlanDetailCreateReq req);
|
||||
Boolean insertPercentageNumberDetail(PgsProgressPlanDetailCreateReq req, Boolean isCheckout);
|
||||
|
||||
/**
|
||||
* 分页查询进度计划详情已完成设施列表
|
||||
|
||||
@ -46,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
@ -1497,4 +1498,329 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
||||
return total.subtract(completed);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增设施
|
||||
*
|
||||
* @param req 设施信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertFacility(PgsProgressCategoryCreateFacilityReq req) {
|
||||
Long progressCategoryId = req.getProgressCategoryId();
|
||||
PgsProgressCategory category = this.getById(progressCategoryId);
|
||||
if (category == null) {
|
||||
throw new ServiceException("对应进度类别不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// 根据类别,新增对应的设施
|
||||
String workType = category.getWorkType();
|
||||
String type = workType.split("_")[0];
|
||||
// 获取当前日期
|
||||
LocalDate today = LocalDate.now();
|
||||
// 定义格式化器:yyyyMMdd
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
// 格式化日期
|
||||
String formattedDate = today.format(formatter);
|
||||
Long projectId = category.getProjectId();
|
||||
Long matrixId = category.getMatrixId();
|
||||
String name = category.getName();
|
||||
boolean isSave;
|
||||
switch (type) {
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanel::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanel::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanel::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanel::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
FacPhotovoltaicPanel panel = new FacPhotovoltaicPanel();
|
||||
panel.setProjectId(projectId);
|
||||
panel.setMatrixId(matrixId);
|
||||
panel.setName(formattedDate + "." + (count + 1));
|
||||
panel.setProgressCategoryId(progressCategoryId);
|
||||
panel.setProgressCategoryName(name);
|
||||
panel.setRemark("手动添加");
|
||||
isSave = photovoltaicPanelService.save(panel);
|
||||
}
|
||||
case PgsProgressCategoryConstant.INVERTER_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = inverterService.lambdaQuery()
|
||||
.eq(FacInverter::getProjectId, projectId)
|
||||
.eq(FacInverter::getMatrixId, matrixId)
|
||||
.eq(FacInverter::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacInverter::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
FacInverter inverter = new FacInverter();
|
||||
inverter.setProjectId(projectId);
|
||||
inverter.setMatrixId(matrixId);
|
||||
inverter.setName(formattedDate + "." + (count + 1));
|
||||
inverter.setProgressCategoryId(progressCategoryId);
|
||||
inverter.setProgressCategoryName(name);
|
||||
inverter.setRemark("手动添加");
|
||||
isSave = inverterService.save(inverter);
|
||||
}
|
||||
case PgsProgressCategoryConstant.BOX_TRANSFORMER_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = boxTransformerService.lambdaQuery()
|
||||
.eq(FacBoxTransformer::getProjectId, projectId)
|
||||
.eq(FacBoxTransformer::getMatrixId, matrixId)
|
||||
.eq(FacBoxTransformer::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacBoxTransformer::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
FacBoxTransformer boxTransformer = new FacBoxTransformer();
|
||||
boxTransformer.setProjectId(projectId);
|
||||
boxTransformer.setMatrixId(matrixId);
|
||||
boxTransformer.setName(formattedDate + "." + (count + 1));
|
||||
boxTransformer.setProgressCategoryId(progressCategoryId);
|
||||
boxTransformer.setProgressCategoryName(name);
|
||||
boxTransformer.setRemark("手动添加");
|
||||
isSave = boxTransformerService.save(boxTransformer);
|
||||
}
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_POINT_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelPointService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanelPoint::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanelPoint::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
FacPhotovoltaicPanelPoint point = new FacPhotovoltaicPanelPoint();
|
||||
point.setProjectId(projectId);
|
||||
point.setMatrixId(matrixId);
|
||||
point.setName(formattedDate + "." + (count + 1));
|
||||
point.setProgressCategoryId(progressCategoryId);
|
||||
point.setProgressCategoryName(name);
|
||||
point.setRemark("手动添加");
|
||||
isSave = photovoltaicPanelPointService.save(point);
|
||||
}
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_COLUMN_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelColumnService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanelColumn::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanelColumn::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
FacPhotovoltaicPanelColumn column = new FacPhotovoltaicPanelColumn();
|
||||
column.setProjectId(projectId);
|
||||
column.setMatrixId(matrixId);
|
||||
column.setName(formattedDate + "." + (count + 1));
|
||||
column.setProgressCategoryId(progressCategoryId);
|
||||
column.setProgressCategoryName(name);
|
||||
column.setRemark("手动添加");
|
||||
isSave = photovoltaicPanelColumnService.save(column);
|
||||
}
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_SUPPORT_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelSupportService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanelSupport::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanelSupport::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
FacPhotovoltaicPanelSupport support = new FacPhotovoltaicPanelSupport();
|
||||
support.setProjectId(projectId);
|
||||
support.setMatrixId(matrixId);
|
||||
support.setName(formattedDate + "." + (count + 1));
|
||||
support.setProgressCategoryId(progressCategoryId);
|
||||
support.setProgressCategoryName(name);
|
||||
support.setRemark("手动添加");
|
||||
isSave = photovoltaicPanelSupportService.save(support);
|
||||
}
|
||||
case null, default -> throw new ServiceException("不支持的设施类型", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
if (!isSave) {
|
||||
throw new ServiceException("添加设施失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
// 更新进度类别数量
|
||||
PgsProgressCategory updateCategory = new PgsProgressCategory();
|
||||
updateCategory.setId(progressCategoryId);
|
||||
updateCategory.setTotal(category.getTotal().add(BigDecimal.ONE));
|
||||
boolean update = this.updateById(updateCategory);
|
||||
if (!update) {
|
||||
throw new ServiceException("修改进度类别数量失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增设施批量
|
||||
*
|
||||
* @param req 设施信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertBatchFacility(PgsProgressCategoryCreateBatchFacilityReq req) {
|
||||
Long progressCategoryId = req.getProgressCategoryId();
|
||||
Integer number = req.getNumber();
|
||||
PgsProgressCategory category = this.getById(progressCategoryId);
|
||||
if (category == null) {
|
||||
throw new ServiceException("对应进度类别不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// 根据类别,新增对应的设施
|
||||
String workType = category.getWorkType();
|
||||
String type = workType.split("_")[0];
|
||||
// 获取当前日期
|
||||
LocalDate today = LocalDate.now();
|
||||
// 定义格式化器:yyyyMMdd
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
// 格式化日期
|
||||
String formattedDate = today.format(formatter);
|
||||
Long projectId = category.getProjectId();
|
||||
Long matrixId = category.getMatrixId();
|
||||
String name = category.getName();
|
||||
switch (type) {
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanel::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanel::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanel::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanel::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
List<FacPhotovoltaicPanel> newList = new ArrayList<>();
|
||||
for (int i = 1; i <= number; i++) {
|
||||
FacPhotovoltaicPanel panel = new FacPhotovoltaicPanel();
|
||||
panel.setProjectId(projectId);
|
||||
panel.setMatrixId(matrixId);
|
||||
panel.setName(formattedDate + "." + (count + i));
|
||||
panel.setProgressCategoryId(progressCategoryId);
|
||||
panel.setProgressCategoryName(name);
|
||||
panel.setRemark("手动添加");
|
||||
newList.add(panel);
|
||||
}
|
||||
photovoltaicPanelService.saveBatch(newList);
|
||||
}
|
||||
case PgsProgressCategoryConstant.INVERTER_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = inverterService.lambdaQuery()
|
||||
.eq(FacInverter::getProjectId, projectId)
|
||||
.eq(FacInverter::getMatrixId, matrixId)
|
||||
.eq(FacInverter::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacInverter::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
List<FacInverter> newList = new ArrayList<>();
|
||||
for (int i = 1; i <= number; i++) {
|
||||
FacInverter inverter = new FacInverter();
|
||||
inverter.setProjectId(projectId);
|
||||
inverter.setMatrixId(matrixId);
|
||||
inverter.setName(formattedDate + "." + (count + i));
|
||||
inverter.setProgressCategoryId(progressCategoryId);
|
||||
inverter.setProgressCategoryName(name);
|
||||
inverter.setRemark("手动添加");
|
||||
newList.add(inverter);
|
||||
}
|
||||
inverterService.saveBatch(newList);
|
||||
}
|
||||
case PgsProgressCategoryConstant.BOX_TRANSFORMER_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = boxTransformerService.lambdaQuery()
|
||||
.eq(FacBoxTransformer::getProjectId, projectId)
|
||||
.eq(FacBoxTransformer::getMatrixId, matrixId)
|
||||
.eq(FacBoxTransformer::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacBoxTransformer::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
List<FacBoxTransformer> newList = new ArrayList<>();
|
||||
for (int i = 1; i <= number; i++) {
|
||||
FacBoxTransformer boxTransformer = new FacBoxTransformer();
|
||||
boxTransformer.setProjectId(projectId);
|
||||
boxTransformer.setMatrixId(matrixId);
|
||||
boxTransformer.setName(formattedDate + "." + (count + i));
|
||||
boxTransformer.setProgressCategoryId(progressCategoryId);
|
||||
boxTransformer.setProgressCategoryName(name);
|
||||
boxTransformer.setRemark("手动添加");
|
||||
newList.add(boxTransformer);
|
||||
}
|
||||
boxTransformerService.saveBatch(newList);
|
||||
}
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_POINT_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelPointService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanelPoint::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanelPoint::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
List<FacPhotovoltaicPanelPoint> newList = new ArrayList<>();
|
||||
for (int i = 1; i <= number; i++) {
|
||||
FacPhotovoltaicPanelPoint point = new FacPhotovoltaicPanelPoint();
|
||||
point.setProjectId(projectId);
|
||||
point.setMatrixId(matrixId);
|
||||
point.setName(formattedDate + "." + (count + i));
|
||||
point.setProgressCategoryId(progressCategoryId);
|
||||
point.setProgressCategoryName(name);
|
||||
point.setRemark("手动添加");
|
||||
newList.add(point);
|
||||
}
|
||||
photovoltaicPanelPointService.saveBatch(newList);
|
||||
}
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_COLUMN_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelColumnService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanelColumn::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanelColumn::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
List<FacPhotovoltaicPanelColumn> newList = new ArrayList<>();
|
||||
for (int i = 1; i <= number; i++) {
|
||||
FacPhotovoltaicPanelColumn column = new FacPhotovoltaicPanelColumn();
|
||||
column.setProjectId(projectId);
|
||||
column.setMatrixId(matrixId);
|
||||
column.setName(formattedDate + "." + (count + i));
|
||||
column.setProgressCategoryId(progressCategoryId);
|
||||
column.setProgressCategoryName(name);
|
||||
column.setRemark("手动添加");
|
||||
newList.add(column);
|
||||
}
|
||||
photovoltaicPanelColumnService.saveBatch(newList);
|
||||
}
|
||||
case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_SUPPORT_WORK_TYPE -> {
|
||||
// 获取当天已创建的设施数量
|
||||
Long count = photovoltaicPanelSupportService.lambdaQuery()
|
||||
.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId)
|
||||
.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId)
|
||||
.eq(FacPhotovoltaicPanelSupport::getProgressCategoryId, progressCategoryId)
|
||||
.likeRight(FacPhotovoltaicPanelSupport::getName, formattedDate)
|
||||
.count();
|
||||
// 封装数据
|
||||
List<FacPhotovoltaicPanelSupport> newList = new ArrayList<>();
|
||||
for (int i = 1; i <= number; i++) {
|
||||
FacPhotovoltaicPanelSupport support = new FacPhotovoltaicPanelSupport();
|
||||
support.setProjectId(projectId);
|
||||
support.setMatrixId(matrixId);
|
||||
support.setName(formattedDate + "." + (count + i));
|
||||
support.setProgressCategoryId(progressCategoryId);
|
||||
support.setProgressCategoryName(name);
|
||||
support.setRemark("手动添加");
|
||||
newList.add(support);
|
||||
}
|
||||
photovoltaicPanelSupportService.saveBatch(newList);
|
||||
}
|
||||
case null, default -> throw new ServiceException("不支持的设施类型", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
// 更新进度类别数量
|
||||
PgsProgressCategory updateCategory = new PgsProgressCategory();
|
||||
updateCategory.setId(progressCategoryId);
|
||||
updateCategory.setTotal(category.getTotal().add(BigDecimal.valueOf(number)));
|
||||
boolean update = this.updateById(updateCategory);
|
||||
if (!update) {
|
||||
throw new ServiceException("修改进度类别数量失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -116,6 +116,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
@Resource
|
||||
private IFacPhotovoltaicPanelPartsService photovoltaicPanelPartsService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IOutConstructionValueService constructionValueService;
|
||||
|
||||
@ -352,7 +353,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertPercentageNumberDetail(PgsProgressPlanDetailCreateReq req) {
|
||||
public Boolean insertPercentageNumberDetail(PgsProgressPlanDetailCreateReq req, Boolean isCheckout) {
|
||||
// 校验
|
||||
BigDecimal finishedNumber = req.getFinishedNumber();
|
||||
if (finishedNumber == null) {
|
||||
@ -373,7 +374,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
throw new ServiceException("完成时间不能大于当前时间", HttpStatus.BAD_REQUEST);
|
||||
}*/
|
||||
// 判断当前详情是否已提交
|
||||
if (!progressPlanDetail.getStatus().equals("1")) {
|
||||
if (isCheckout && !progressPlanDetail.getStatus().equals("1")) {
|
||||
throw new ServiceException("当前详情已提交至施工产值,无法进行修改", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
Long progressPlanId = progressPlanDetail.getProgressPlanId();
|
||||
@ -894,7 +895,8 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
);
|
||||
// 为每一个项目创建一个施工产值范围
|
||||
Set<Long> projectIds = planDetailList.stream()
|
||||
.map(PgsProgressPlanDetail::getProjectId).collect(Collectors.toSet());
|
||||
.map(PgsProgressPlanDetail::getProjectId)
|
||||
.collect(Collectors.toSet());
|
||||
// 获取所有父级项目
|
||||
List<BusProject> projectList = projectService.listByIds(projectIds);
|
||||
List<Long> allProjectIds = projectList
|
||||
@ -934,8 +936,8 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
long rangeId = IdWorker.getId(range);
|
||||
range.setId(rangeId);
|
||||
range.setProjectId(id);
|
||||
range.setStartDate(startDate);
|
||||
range.setEndDate(endDate);
|
||||
range.setStartDate(monday);
|
||||
range.setEndDate(sunday);
|
||||
// 获取所有子项目
|
||||
List<Long> subProject = new ArrayList<>(projectList.stream()
|
||||
.filter(project -> Objects.equals(project.getPId(), id))
|
||||
@ -1139,8 +1141,8 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
}
|
||||
List<Long> projectIds = projects.stream().map(BusProject::getId).distinct().toList();
|
||||
// 识别类型:洞、桩、架、架子
|
||||
List<RecognizerTypeEnum> enumList = List.of(RecognizerTypeEnum.HOLE, RecognizerTypeEnum.PHO,
|
||||
RecognizerTypeEnum.PILE, RecognizerTypeEnum.SHELVES);
|
||||
List<RecognizerTypeEnum> enumList = List.of(RecognizerTypeEnum.HOLE, RecognizerTypeEnum.SOLAR,
|
||||
RecognizerTypeEnum.PILE, RecognizerTypeEnum.BRACKET);
|
||||
// 调用识别算法
|
||||
RecognizeVo recognizeVo = null;
|
||||
try {
|
||||
@ -1177,11 +1179,11 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
}
|
||||
log.info("类型:{},识别到的设施:{},转换坐标:{}", type, value, coordinateList);
|
||||
// 处理对应设施
|
||||
if (type.equals(RecognizerTypeEnum.PHO.getValue())) {
|
||||
if (type.equals(RecognizerTypeEnum.SOLAR.getValue())) {
|
||||
photovoltaicPanelService.updateFinishNumberByCoordinate(projectIds, coordinateList);
|
||||
} else if (type.equals(RecognizerTypeEnum.HOLE.getValue())
|
||||
|| type.equals(RecognizerTypeEnum.PILE.getValue())
|
||||
|| type.equals(RecognizerTypeEnum.SHELVES.getValue())) {
|
||||
|| type.equals(RecognizerTypeEnum.BRACKET.getValue())) {
|
||||
photovoltaicPanelPartsService.updateFinishNumberByCoordinate(projectIds, coordinateList, type);
|
||||
} else {
|
||||
log.error("未知设施类型:{}", type);
|
||||
|
||||
@ -209,10 +209,13 @@ public class PgsProgressPlanServiceImpl extends ServiceImpl<PgsProgressPlanMappe
|
||||
throw new ServiceException("删除进度计划失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
// 关联删除分类中记录的计划值
|
||||
boolean update = progressCategoryService.lambdaUpdate()
|
||||
.eq(PgsProgressCategory::getId, progressPlan.getProgressCategoryId())
|
||||
.setSql("plan_total = plan_total - " + progressPlan.getPlanNumber())
|
||||
.update();
|
||||
PgsProgressCategory category = progressCategoryService.getById(progressPlan.getProgressCategoryId());
|
||||
BigDecimal left = category.getPlanTotal().subtract(progressPlan.getPlanNumber());
|
||||
if (left.compareTo(BigDecimal.ZERO) < 0) {
|
||||
left = BigDecimal.ZERO;
|
||||
}
|
||||
category.setPlanTotal(left);
|
||||
boolean update = progressCategoryService.updateById(category);
|
||||
if (!update) {
|
||||
throw new ServiceException("更新进度分类计划总数量失败,数据库操作失败", HttpStatus.ERROR);
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ package org.dromara.quality.service.impl;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -23,7 +22,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.oss.core.OssClient;
|
||||
import org.dromara.common.oss.exception.OssException;
|
||||
import org.dromara.common.oss.factory.OssFactory;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.utils.DocumentUtil;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.dromara.quality.constant.QltQualityConstant;
|
||||
@ -172,9 +170,13 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
|
||||
// 获取整改情况
|
||||
long passCount = 0L;
|
||||
for (QltQualityInspection qualityInspection : qualityInspectionList) {
|
||||
if (QltQualityInspectionStatusEnum.VERIFICATION.getValue().equals(qualityInspection.getInspectionStatus())
|
||||
if ("1".equals(qualityInspection.getIsReply())
|
||||
&& QltQualityInspectionStatusEnum.VERIFICATION.getValue().equals(qualityInspection.getInspectionStatus())
|
||||
&& QltQualityInspectionVerificationTypeEnum.PASS.getValue().equals(qualityInspection.getVerificationType())) {
|
||||
passCount++;
|
||||
} else if ("2".equals(qualityInspection.getIsReply())
|
||||
&& QltQualityInspectionStatusEnum.RECTIFICATION.getValue().equals(qualityInspection.getInspectionStatus())) {
|
||||
passCount++;
|
||||
}
|
||||
}
|
||||
gisVo.setList(gisList);
|
||||
@ -252,7 +254,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
|
||||
});
|
||||
|
||||
}
|
||||
if("2".equals(req.getVerificationType())){
|
||||
if ("2".equals(req.getVerificationType())) {
|
||||
handleFail(oldQualityInspection);
|
||||
}
|
||||
// 操作数据库
|
||||
@ -267,7 +269,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
|
||||
qualityInspection.setRectificationTime(null);
|
||||
qualityInspection.setRectificationFile(null);
|
||||
qualityInspection.setRectificationImgFile(null);
|
||||
qualityInspection.setVersion(qualityInspection.getVersion()+1);
|
||||
qualityInspection.setVersion(qualityInspection.getVersion() + 1);
|
||||
save(qualityInspection);
|
||||
}
|
||||
|
||||
@ -359,9 +361,9 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
|
||||
Long projectId = req.getProjectId();
|
||||
String inspectionType = req.getInspectionType();
|
||||
String inspectionStatus = req.getInspectionStatus();
|
||||
if(StrUtil.isNotBlank(inspectionStatus) ){
|
||||
if (StrUtil.isNotBlank(inspectionStatus)) {
|
||||
String[] split = inspectionStatus.split(",");
|
||||
lqw.in( QltQualityInspection::getInspectionStatus, Arrays.asList(split));
|
||||
lqw.in(QltQualityInspection::getInspectionStatus, Arrays.asList(split));
|
||||
}
|
||||
String rectificationUnit = req.getRectificationUnit();
|
||||
Long rectificationId = req.getRectificationId();
|
||||
|
||||
@ -11,7 +11,6 @@ import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.manager.recognizermanager.enums.RecognizerTypeEnum;
|
||||
import org.dromara.manager.recognizermanager.vo.RecognizeTargetVo;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
@ -194,15 +193,7 @@ public class HseRecognizeRecordServiceImpl extends ServiceImpl<HseRecognizeRecor
|
||||
Date createTime = req.getCreateTime();
|
||||
lqw.eq(ObjectUtils.isNotEmpty(projectId), HseRecognizeRecord::getProjectId, projectId);
|
||||
lqw.eq(StringUtils.isNotBlank(recordCategory), HseRecognizeRecord::getRecordCategory, recordCategory);
|
||||
if (StringUtils.isNotBlank(violationType)) {
|
||||
lqw.likeRight(HseRecognizeRecord::getViolationType, violationType + ",")
|
||||
.or()
|
||||
.likeLeft(HseRecognizeRecord::getViolationType, "," + violationType)
|
||||
.or()
|
||||
.like(HseRecognizeRecord::getViolationType, "," + violationType + ",")
|
||||
.or()
|
||||
.eq(HseRecognizeRecord::getViolationType, violationType);
|
||||
}
|
||||
lqw.eq(StringUtils.isNotBlank(violationType), HseRecognizeRecord::getViolationType, violationType);
|
||||
lqw.like(StringUtils.isNotBlank(description), HseRecognizeRecord::getDescription, description);
|
||||
if (createTime != null) {
|
||||
// 构造当天的起始和结束时间
|
||||
@ -216,6 +207,7 @@ public class HseRecognizeRecordServiceImpl extends ServiceImpl<HseRecognizeRecor
|
||||
lqw.ge(HseRecognizeRecord::getCreateTime, start)
|
||||
.lt(HseRecognizeRecord::getCreateTime, end);
|
||||
}
|
||||
lqw.orderByDesc(HseRecognizeRecord::getCreateTime);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
|
||||
@ -30,6 +30,7 @@ import org.dromara.project.domain.BusProjectTeam;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.dromara.project.service.IBusProjectTeamMemberService;
|
||||
import org.dromara.project.service.IBusProjectTeamService;
|
||||
import org.dromara.quality.domain.enums.QltQualityInspectionStatusEnum;
|
||||
import org.dromara.safety.constant.HseSafetyConstant;
|
||||
import org.dromara.safety.domain.HseSafetyInspection;
|
||||
import org.dromara.safety.domain.HseTeamMeeting;
|
||||
@ -222,23 +223,20 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
||||
.list();
|
||||
long passCount = 0L;
|
||||
for (HseSafetyInspection safetyInspection : safetyInspectionList) {
|
||||
if (HseSafetyInspectionStatusEnum.REVIEW.getValue().equals(safetyInspection.getStatus())
|
||||
if ("1".equals(safetyInspection.getIsReply())
|
||||
&& HseSafetyInspectionStatusEnum.REVIEW.getValue().equals(safetyInspection.getStatus())
|
||||
&& HseSafetyInspectionReviewTypeEnum.PASS.getValue().equals(safetyInspection.getReviewType())) {
|
||||
passCount++;
|
||||
} else if ("2".equals(safetyInspection.getIsReply())
|
||||
&& QltQualityInspectionStatusEnum.RECTIFICATION.getValue().equals(safetyInspection.getStatus())
|
||||
) {
|
||||
passCount++;
|
||||
}
|
||||
}
|
||||
int safetyInspectionCount = safetyInspectionList.stream()
|
||||
.filter(inspection -> inspection.getIsReply().equals("2"))
|
||||
.toList()
|
||||
.size();
|
||||
int correctSituationCount = safetyInspectionList.stream()
|
||||
.filter(inspection -> inspection.getIsReply().equals("1") && !inspection.getStatus().equals("1"))
|
||||
.toList()
|
||||
.size();
|
||||
gisVo.setTeamMeetingCount((long) teamMeetings.size());
|
||||
gisVo.setSafetyInspectionCount((long) safetyInspectionCount);
|
||||
gisVo.setCorrectSituationCount((long) correctSituationCount);
|
||||
gisVo.setCorrectSituation(String.format("%.2f", correctSituationCount * 100.0 / safetyInspectionCount));
|
||||
gisVo.setSafetyInspectionCount((long) safetyInspectionList.size());
|
||||
gisVo.setCorrectSituationCount(passCount);
|
||||
gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / safetyInspectionList.size()));
|
||||
return gisVo;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user