增加项目结构
This commit is contained in:
@ -0,0 +1,39 @@
|
|||||||
|
package org.dromara.facility.domain.vo.matrix;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryStructureVo;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-23 01:17
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class FacMatrixStructureVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 7526403047030009646L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 方阵名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分项工程
|
||||||
|
*/
|
||||||
|
private List<PgsProgressCategoryStructureVo> children;
|
||||||
|
|
||||||
|
}
|
@ -239,16 +239,19 @@ public class FacBoxTransformerServiceImpl extends ServiceImpl<FacBoxTransformerM
|
|||||||
.stream().collect(Collectors.groupingBy(FacBoxTransformer::getProgressCategoryId));
|
.stream().collect(Collectors.groupingBy(FacBoxTransformer::getProgressCategoryId));
|
||||||
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
||||||
Long progressCategoryId = progressCategory.getId();
|
Long progressCategoryId = progressCategory.getId();
|
||||||
BigDecimal unitPrice = progressCategory.getOwnerPrice();
|
BigDecimal ownerPrice = progressCategory.getOwnerPrice();
|
||||||
// todo BigDecimal unitPrice = progressCategory.getUnitPrice();
|
BigDecimal constructionPrice = progressCategory.getConstructionPrice();
|
||||||
int total = 0;
|
int total = 0;
|
||||||
if (countMap.containsKey(progressCategoryId)) {
|
if (countMap.containsKey(progressCategoryId)) {
|
||||||
total = countMap.get(progressCategoryId).size();
|
total = countMap.get(progressCategoryId).size();
|
||||||
}
|
}
|
||||||
progressCategory.setTotal(BigDecimal.valueOf(total));
|
progressCategory.setTotal(BigDecimal.valueOf(total));
|
||||||
// 如果单价不为 0 则计算产值
|
// 如果单价不为 0 则计算产值
|
||||||
if (unitPrice.compareTo(BigDecimal.ZERO) != 0) {
|
if (ownerPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
progressCategory.setOwnerOutputValue(unitPrice.multiply(BigDecimal.valueOf(total)));
|
progressCategory.setOwnerOutputValue(ownerPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
|
}
|
||||||
|
if (constructionPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
|
progressCategory.setOwnerOutputValue(constructionPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
||||||
@ -303,14 +306,14 @@ public class FacBoxTransformerServiceImpl extends ServiceImpl<FacBoxTransformerM
|
|||||||
}
|
}
|
||||||
BigDecimal total = BigDecimal.valueOf(newBoxTransformerList.size());
|
BigDecimal total = BigDecimal.valueOf(newBoxTransformerList.size());
|
||||||
progressCategory.setTotal(total);
|
progressCategory.setTotal(total);
|
||||||
/* todo progressCategory.setOutputValue(total.multiply(
|
|
||||||
Optional.ofNullable(progressCategory.getUnitPrice())
|
|
||||||
.orElse(BigDecimal.ZERO)
|
|
||||||
));*/
|
|
||||||
progressCategory.setOwnerOutputValue(total.multiply(
|
progressCategory.setOwnerOutputValue(total.multiply(
|
||||||
Optional.ofNullable(progressCategory.getOwnerPrice())
|
Optional.ofNullable(progressCategory.getOwnerPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));
|
));
|
||||||
|
progressCategory.setConstructionOutputValue(total.multiply(
|
||||||
|
Optional.ofNullable(progressCategory.getConstructionPrice())
|
||||||
|
.orElse(BigDecimal.ZERO)
|
||||||
|
));
|
||||||
boolean result = progressCategoryService.updateById(progressCategory);
|
boolean result = progressCategoryService.updateById(progressCategory);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
@ -239,16 +239,19 @@ public class FacInverterServiceImpl extends ServiceImpl<FacInverterMapper, FacIn
|
|||||||
.stream().collect(Collectors.groupingBy(FacInverter::getProgressCategoryId));
|
.stream().collect(Collectors.groupingBy(FacInverter::getProgressCategoryId));
|
||||||
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
||||||
Long progressCategoryId = progressCategory.getId();
|
Long progressCategoryId = progressCategory.getId();
|
||||||
// todo BigDecimal unitPrice = progressCategory.getUnitPrice();
|
BigDecimal ownerPrice = progressCategory.getOwnerPrice();
|
||||||
BigDecimal unitPrice = progressCategory.getOwnerPrice();
|
BigDecimal constructionPrice = progressCategory.getConstructionPrice();
|
||||||
int total = 0;
|
int total = 0;
|
||||||
if (countMap.containsKey(progressCategoryId)) {
|
if (countMap.containsKey(progressCategoryId)) {
|
||||||
total = countMap.get(progressCategoryId).size();
|
total = countMap.get(progressCategoryId).size();
|
||||||
}
|
}
|
||||||
progressCategory.setTotal(BigDecimal.valueOf(total));
|
progressCategory.setTotal(BigDecimal.valueOf(total));
|
||||||
// 如果单价不为 0 则计算产值
|
// 如果单价不为 0 则计算产值
|
||||||
if (unitPrice.compareTo(BigDecimal.ZERO) != 0) {
|
if (ownerPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
progressCategory.setOwnerOutputValue(unitPrice.multiply(BigDecimal.valueOf(total)));
|
progressCategory.setOwnerOutputValue(ownerPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
|
}
|
||||||
|
if (constructionPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
|
progressCategory.setConstructionOutputValue(constructionPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
||||||
@ -307,10 +310,10 @@ public class FacInverterServiceImpl extends ServiceImpl<FacInverterMapper, FacIn
|
|||||||
Optional.ofNullable(progressCategory.getOwnerPrice())
|
Optional.ofNullable(progressCategory.getOwnerPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));
|
));
|
||||||
/* todo progressCategory.setOutputValue(total.multiply(
|
progressCategory.setConstructionOutputValue(total.multiply(
|
||||||
Optional.ofNullable(progressCategory.getUnitPrice())
|
Optional.ofNullable(progressCategory.getConstructionPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));*/
|
));
|
||||||
boolean result = progressCategoryService.updateById(progressCategory);
|
boolean result = progressCategoryService.updateById(progressCategory);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
@ -179,10 +179,10 @@ public class FacPhotovoltaicPanelColumnServiceImpl extends ServiceImpl<FacPhotov
|
|||||||
Optional.ofNullable(progressCategory.getOwnerPrice())
|
Optional.ofNullable(progressCategory.getOwnerPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));
|
));
|
||||||
/* todo progressCategory.setOutputValue(total.multiply(
|
progressCategory.setConstructionOutputValue(total.multiply(
|
||||||
Optional.ofNullable(progressCategory.getUnitPrice())
|
Optional.ofNullable(progressCategory.getConstructionPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));*/
|
));
|
||||||
boolean result = progressCategoryService.updateById(progressCategory);
|
boolean result = progressCategoryService.updateById(progressCategory);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
@ -469,8 +469,8 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
|
|||||||
.stream().collect(Collectors.groupingBy(FacPhotovoltaicPanelSupport::getProgressCategoryId));
|
.stream().collect(Collectors.groupingBy(FacPhotovoltaicPanelSupport::getProgressCategoryId));
|
||||||
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
||||||
Long progressCategoryId = progressCategory.getId();
|
Long progressCategoryId = progressCategory.getId();
|
||||||
// todo BigDecimal unitPrice = progressCategory.getUnitPrice();
|
BigDecimal ownerPrice = progressCategory.getOwnerPrice();
|
||||||
BigDecimal unitPrice = progressCategory.getOwnerPrice();
|
BigDecimal constructionPrice = progressCategory.getConstructionPrice();
|
||||||
int total = 0;
|
int total = 0;
|
||||||
if (pointCountMap.containsKey(progressCategoryId)) {
|
if (pointCountMap.containsKey(progressCategoryId)) {
|
||||||
total = pointCountMap.get(progressCategoryId).size();
|
total = pointCountMap.get(progressCategoryId).size();
|
||||||
@ -481,8 +481,11 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
|
|||||||
}
|
}
|
||||||
progressCategory.setTotal(BigDecimal.valueOf(total));
|
progressCategory.setTotal(BigDecimal.valueOf(total));
|
||||||
// 如果单价不为 0 则计算产值
|
// 如果单价不为 0 则计算产值
|
||||||
if (unitPrice != null && unitPrice.compareTo(BigDecimal.ZERO) != 0) {
|
if (ownerPrice != null && ownerPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
progressCategory.setOwnerOutputValue(unitPrice.multiply(BigDecimal.valueOf(total)));
|
progressCategory.setOwnerOutputValue(ownerPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
|
}
|
||||||
|
if (constructionPrice != null && constructionPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
|
progressCategory.setConstructionOutputValue(constructionPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
||||||
|
@ -179,10 +179,10 @@ public class FacPhotovoltaicPanelPointServiceImpl extends ServiceImpl<FacPhotovo
|
|||||||
Optional.ofNullable(progressCategory.getOwnerPrice())
|
Optional.ofNullable(progressCategory.getOwnerPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));
|
));
|
||||||
/* todo progressCategory.setOutputValue(total.multiply(
|
progressCategory.setConstructionOutputValue(total.multiply(
|
||||||
Optional.ofNullable(progressCategory.getUnitPrice())
|
Optional.ofNullable(progressCategory.getConstructionPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));*/
|
));
|
||||||
boolean result = progressCategoryService.updateById(progressCategory);
|
boolean result = progressCategoryService.updateById(progressCategory);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
@ -369,16 +369,19 @@ public class FacPhotovoltaicPanelServiceImpl extends ServiceImpl<FacPhotovoltaic
|
|||||||
.stream().collect(Collectors.groupingBy(FacPhotovoltaicPanel::getProgressCategoryId));
|
.stream().collect(Collectors.groupingBy(FacPhotovoltaicPanel::getProgressCategoryId));
|
||||||
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
for (PgsProgressCategory progressCategory : progressCategoryList) {
|
||||||
Long progressCategoryId = progressCategory.getId();
|
Long progressCategoryId = progressCategory.getId();
|
||||||
// todo BigDecimal unitPrice = progressCategory.getUnitPrice();
|
BigDecimal ownerPrice = progressCategory.getOwnerPrice();
|
||||||
BigDecimal unitPrice = progressCategory.getOwnerPrice();
|
BigDecimal constructionPrice = progressCategory.getConstructionPrice();
|
||||||
int total = 0;
|
int total = 0;
|
||||||
if (countMap.containsKey(progressCategoryId)) {
|
if (countMap.containsKey(progressCategoryId)) {
|
||||||
total = countMap.get(progressCategoryId).size();
|
total = countMap.get(progressCategoryId).size();
|
||||||
}
|
}
|
||||||
progressCategory.setTotal(BigDecimal.valueOf(total));
|
progressCategory.setTotal(BigDecimal.valueOf(total));
|
||||||
// 如果单价不为 0 则计算产值
|
// 如果单价不为 0 则计算产值
|
||||||
if (unitPrice.compareTo(BigDecimal.ZERO) != 0) {
|
if (ownerPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
progressCategory.setOwnerOutputValue(unitPrice.multiply(BigDecimal.valueOf(total)));
|
progressCategory.setOwnerOutputValue(ownerPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
|
}
|
||||||
|
if (constructionPrice.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
|
progressCategory.setConstructionOutputValue(constructionPrice.multiply(BigDecimal.valueOf(total)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
boolean result = progressCategoryService.updateBatchById(progressCategoryList);
|
||||||
@ -508,14 +511,14 @@ public class FacPhotovoltaicPanelServiceImpl extends ServiceImpl<FacPhotovoltaic
|
|||||||
}
|
}
|
||||||
BigDecimal total = BigDecimal.valueOf(newPanelList.size());
|
BigDecimal total = BigDecimal.valueOf(newPanelList.size());
|
||||||
progressCategory.setTotal(total);
|
progressCategory.setTotal(total);
|
||||||
/* todo progressCategory.setOutputValue(total.multiply(
|
|
||||||
Optional.ofNullable(progressCategory.getUnitPrice())
|
|
||||||
.orElse(BigDecimal.ZERO)
|
|
||||||
)); */
|
|
||||||
progressCategory.setOwnerOutputValue(total.multiply(
|
progressCategory.setOwnerOutputValue(total.multiply(
|
||||||
Optional.ofNullable(progressCategory.getOwnerPrice())
|
Optional.ofNullable(progressCategory.getOwnerPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));
|
));
|
||||||
|
progressCategory.setConstructionOutputValue(total.multiply(
|
||||||
|
Optional.ofNullable(progressCategory.getConstructionPrice())
|
||||||
|
.orElse(BigDecimal.ZERO)
|
||||||
|
));
|
||||||
boolean result = progressCategoryService.updateById(progressCategory);
|
boolean result = progressCategoryService.updateById(progressCategory);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
@ -179,10 +179,10 @@ public class FacPhotovoltaicPanelSupportServiceImpl extends ServiceImpl<FacPhoto
|
|||||||
Optional.ofNullable(progressCategory.getOwnerPrice())
|
Optional.ofNullable(progressCategory.getOwnerPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));
|
));
|
||||||
/* todo progressCategory.setOutputValue(total.multiply(
|
progressCategory.setConstructionOutputValue(total.multiply(
|
||||||
Optional.ofNullable(progressCategory.getUnitPrice())
|
Optional.ofNullable(progressCategory.getConstructionPrice())
|
||||||
.orElse(BigDecimal.ZERO)
|
.orElse(BigDecimal.ZERO)
|
||||||
));*/
|
));
|
||||||
boolean result = progressCategoryService.updateById(progressCategory);
|
boolean result = progressCategoryService.updateById(progressCategory);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
throw new ServiceException("更新进度失败,数据库异常", HttpStatus.ERROR);
|
||||||
|
@ -49,6 +49,11 @@ public class PgsConstructionSchedulePlan extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long projectStructure;
|
private Long projectStructure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对应项目结构名称
|
||||||
|
*/
|
||||||
|
private String projectStructureName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预计开始时间
|
* 预计开始时间
|
||||||
*/
|
*/
|
||||||
|
@ -41,6 +41,11 @@ public class PgsConstructionSchedulePlanCreateReq implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Long projectStructure;
|
private Long projectStructure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对应项目结构名称
|
||||||
|
*/
|
||||||
|
private String projectStructureName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预计开始时间
|
* 预计开始时间
|
||||||
*/
|
*/
|
||||||
|
@ -25,6 +25,11 @@ public class PgsConstructionSchedulePlanQueryReq implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String nodeName;
|
private String nodeName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对应项目结构名称
|
||||||
|
*/
|
||||||
|
private String projectStructureName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态
|
* 状态
|
||||||
*/
|
*/
|
||||||
|
@ -32,6 +32,11 @@ public class PgsConstructionSchedulePlanUpdateReq implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Long projectStructure;
|
private Long projectStructure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对应项目结构名称
|
||||||
|
*/
|
||||||
|
private String projectStructureName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实际开始时间
|
* 实际开始时间
|
||||||
*/
|
*/
|
||||||
|
@ -58,6 +58,12 @@ public class PgsConstructionSchedulePlanVo implements Serializable {
|
|||||||
@ExcelProperty(value = "对应项目结构")
|
@ExcelProperty(value = "对应项目结构")
|
||||||
private Long projectStructure;
|
private Long projectStructure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对应项目结构名称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "对应项目结构名称")
|
||||||
|
private String projectStructureName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预计开始时间
|
* 预计开始时间
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
package org.dromara.progress.domain.vo.progresscategory;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-23 01:19
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PgsProgressCategoryStructureVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = -8392912623299656962L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类别名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子类别
|
||||||
|
*/
|
||||||
|
private List<PgsProgressCategoryStructureVo> children;
|
||||||
|
}
|
@ -52,6 +52,12 @@ public class PgsProgressCategoryVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Long matrixId;
|
private Long matrixId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 祖级列表
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "祖级列表")
|
||||||
|
private String ancestors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 类别名称
|
* 类别名称
|
||||||
*/
|
*/
|
||||||
@ -66,24 +72,22 @@ public class PgsProgressCategoryVo implements Serializable {
|
|||||||
private String unitType;
|
private String unitType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 总数量/百分比
|
* 总数量
|
||||||
*/
|
*/
|
||||||
@JsonSerialize(using = BigDecimalToIntegerSerializer.class)
|
@JsonSerialize(using = BigDecimalToIntegerSerializer.class)
|
||||||
@ExcelProperty(value = "总数量/百分比")
|
@ExcelProperty(value = "总数量")
|
||||||
private BigDecimal total;
|
private BigDecimal total;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已完成数量/百分比
|
* 已完成数量
|
||||||
*/
|
*/
|
||||||
@JsonSerialize(using = BigDecimalToIntegerSerializer.class)
|
@JsonSerialize(using = BigDecimalToIntegerSerializer.class)
|
||||||
@ExcelProperty(value = "已完成数量/百分比")
|
|
||||||
private BigDecimal completed;
|
private BigDecimal completed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计划总数量/百分比
|
* 计划总数量
|
||||||
*/
|
*/
|
||||||
@JsonSerialize(using = BigDecimalToIntegerSerializer.class)
|
@JsonSerialize(using = BigDecimalToIntegerSerializer.class)
|
||||||
@ExcelProperty(value = "计划总数量/百分比")
|
|
||||||
private BigDecimal planTotal;
|
private BigDecimal planTotal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -101,23 +105,13 @@ public class PgsProgressCategoryVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 是否超期(0否 1是)
|
* 是否超期(0否 1是)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "是否超期", converter = ExcelDictConvert.class)
|
|
||||||
@ExcelDictFormat(readConverterExp = "0=否,1=是")
|
|
||||||
private String isDelay;
|
private String isDelay;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 完成状态(0未开始 1进行中 2已完成)
|
* 完成状态(0未开始 1进行中 2已完成)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class)
|
|
||||||
@ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=已完成")
|
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计量单位
|
* 计量单位
|
||||||
*/
|
*/
|
||||||
@ -139,13 +133,11 @@ public class PgsProgressCategoryVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 产值金额(业主)
|
* 产值金额(业主)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "产值金额(业主)")
|
|
||||||
private BigDecimal ownerOutputValue;
|
private BigDecimal ownerOutputValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产值金额(分包)
|
* 产值金额(分包)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "产值金额(分包)")
|
|
||||||
private BigDecimal constructionOutputValue;
|
private BigDecimal constructionOutputValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -153,4 +145,10 @@ public class PgsProgressCategoryVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String workType;
|
private String workType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -181,8 +181,8 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByReq(PgsProgressCategoryCreateReq req) {
|
public Boolean insertByReq(PgsProgressCategoryCreateReq req) {
|
||||||
// todo BigDecimal unitPrice = req.getUnitPrice();
|
BigDecimal ownerPrice = req.getOwnerPrice();
|
||||||
BigDecimal unitPrice = req.getOwnerPrice();
|
BigDecimal constructionPrice = req.getConstructionPrice();
|
||||||
BigDecimal total = req.getTotal();
|
BigDecimal total = req.getTotal();
|
||||||
String workType = req.getWorkType();
|
String workType = req.getWorkType();
|
||||||
PgsProgressCategory progressCategory = new PgsProgressCategory();
|
PgsProgressCategory progressCategory = new PgsProgressCategory();
|
||||||
@ -200,8 +200,11 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
|||||||
progressCategory.setAncestors(parent.getAncestors() + StringUtils.SEPARATOR + progressCategory.getParentId());
|
progressCategory.setAncestors(parent.getAncestors() + StringUtils.SEPARATOR + progressCategory.getParentId());
|
||||||
}
|
}
|
||||||
// 计算产值
|
// 计算产值
|
||||||
if (unitPrice != null && total != null && unitPrice.compareTo(BigDecimal.ZERO) >= 0 && total.compareTo(BigDecimal.ZERO) >= 0) {
|
if (ownerPrice != null && total != null && ownerPrice.compareTo(BigDecimal.ZERO) >= 0 && total.compareTo(BigDecimal.ZERO) >= 0) {
|
||||||
progressCategory.setOwnerOutputValue(unitPrice.multiply(total));
|
progressCategory.setOwnerOutputValue(ownerPrice.multiply(total));
|
||||||
|
}
|
||||||
|
if (constructionPrice != null && total != null && constructionPrice.compareTo(BigDecimal.ZERO) >= 0 && total.compareTo(BigDecimal.ZERO) >= 0) {
|
||||||
|
progressCategory.setConstructionOutputValue(constructionPrice.multiply(total));
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(workType) && PgsProgressCategoryConstant.WORK_TYPE_LIST.contains(workType)) {
|
if (StringUtils.isNotBlank(workType) && PgsProgressCategoryConstant.WORK_TYPE_LIST.contains(workType)) {
|
||||||
List<PgsProgressCategory> progressCategoryList = this.lambdaQuery()
|
List<PgsProgressCategory> progressCategoryList = this.lambdaQuery()
|
||||||
@ -260,18 +263,21 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
|||||||
throw new ServiceException("该分项工程不存在", HttpStatus.BAD_REQUEST);
|
throw new ServiceException("该分项工程不存在", HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
// 计算产值
|
// 计算产值
|
||||||
// todo BigDecimal unitPrice = req.getUnitPrice();
|
BigDecimal ownerPrice = req.getOwnerPrice();
|
||||||
BigDecimal unitPrice = req.getOwnerPrice();
|
BigDecimal constructionPrice = req.getConstructionPrice();
|
||||||
BigDecimal outputValue = BigDecimal.ZERO;
|
BigDecimal ownerOutputValue = BigDecimal.ZERO;
|
||||||
|
BigDecimal constructionOutputValue = BigDecimal.ZERO;
|
||||||
if (progressCategory.getUnitType().equals(PgsProgressUnitTypeEnum.PERCENTAGE.getValue())) {
|
if (progressCategory.getUnitType().equals(PgsProgressUnitTypeEnum.PERCENTAGE.getValue())) {
|
||||||
progressCategory.setTotal(req.getTotal());
|
progressCategory.setTotal(req.getTotal());
|
||||||
outputValue = req.getTotal().multiply(unitPrice);
|
ownerOutputValue = req.getTotal().multiply(ownerPrice);
|
||||||
|
constructionOutputValue = req.getTotal().multiply(constructionPrice);
|
||||||
} else if (progressCategory.getUnitType().equals(PgsProgressUnitTypeEnum.NUMBER.getValue()) && progressCategory.getWorkType() != null) {
|
} else if (progressCategory.getUnitType().equals(PgsProgressUnitTypeEnum.NUMBER.getValue()) && progressCategory.getWorkType() != null) {
|
||||||
BigDecimal total = progressCategory.getTotal();
|
BigDecimal total = progressCategory.getTotal();
|
||||||
if (total == null || total.compareTo(BigDecimal.ZERO) <= 0) {
|
if (total == null || total.compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
throw new ServiceException("请导入分项工程数量后再添加单价", HttpStatus.BAD_REQUEST);
|
throw new ServiceException("请导入分项工程数量后再添加单价", HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
outputValue = total.multiply(unitPrice);
|
ownerOutputValue = total.multiply(ownerPrice);
|
||||||
|
constructionOutputValue = total.multiply(constructionPrice);
|
||||||
} else if (progressCategory.getUnitType().equals(PgsProgressUnitTypeEnum.NUMBER.getValue())) {
|
} else if (progressCategory.getUnitType().equals(PgsProgressUnitTypeEnum.NUMBER.getValue())) {
|
||||||
BigDecimal total = progressCategory.getTotal();
|
BigDecimal total = progressCategory.getTotal();
|
||||||
if (total == null || total.compareTo(BigDecimal.ZERO) <= 0) {
|
if (total == null || total.compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
@ -280,13 +286,15 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
|
|||||||
if (total == null || total.compareTo(BigDecimal.ZERO) <= 0) {
|
if (total == null || total.compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
throw new ServiceException("请输入分项工程数量", HttpStatus.BAD_REQUEST);
|
throw new ServiceException("请输入分项工程数量", HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
outputValue = total.multiply(unitPrice);
|
ownerOutputValue = total.multiply(ownerPrice);
|
||||||
|
constructionOutputValue = total.multiply(constructionPrice);
|
||||||
}
|
}
|
||||||
// 填入数据
|
// 填入数据
|
||||||
progressCategory.setUnit(req.getUnit());
|
progressCategory.setUnit(req.getUnit());
|
||||||
progressCategory.setOwnerPrice(unitPrice);
|
progressCategory.setOwnerPrice(ownerPrice);
|
||||||
// todo progressCategory.setUnitPrice(unitPrice);
|
progressCategory.setConstructionPrice(constructionPrice);
|
||||||
progressCategory.setOwnerOutputValue(outputValue);
|
progressCategory.setOwnerOutputValue(ownerOutputValue);
|
||||||
|
progressCategory.setConstructionOutputValue(constructionOutputValue);
|
||||||
// 写入数据库
|
// 写入数据库
|
||||||
return this.updateById(progressCategory);
|
return this.updateById(progressCategory);
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,18 @@ public class BusProjectController extends BaseController {
|
|||||||
return R.ok(projectService.queryById(id));
|
return R.ok(projectService.queryById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目结构
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:project:projectStructure")
|
||||||
|
@GetMapping("/projectStructure/{id}")
|
||||||
|
public R<BusProjectStructureVo> getProjectStructure(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(projectService.getStructure(id));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询项目以及项目下的分包公司列表
|
* 查询项目以及项目下的分包公司列表
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
package org.dromara.project.domain.vo.project;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-23 01:14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BusProjectStructureVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1774638688311795906L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子项目列表
|
||||||
|
*/
|
||||||
|
private List<BusSubProjectStructureVo> children;
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package org.dromara.project.domain.vo.project;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.dromara.facility.domain.vo.matrix.FacMatrixStructureVo;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-08-23 01:15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class BusSubProjectStructureVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 6993209784456857540L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 方阵列表
|
||||||
|
*/
|
||||||
|
private List<FacMatrixStructureVo> children;
|
||||||
|
}
|
@ -187,4 +187,12 @@ public interface IBusProjectService extends IService<BusProject> {
|
|||||||
* @return 项目地址信息列表
|
* @return 项目地址信息列表
|
||||||
*/
|
*/
|
||||||
List<BusProjectGisVo> getGisList();
|
List<BusProjectGisVo> getGisList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目结构信息
|
||||||
|
*
|
||||||
|
* @param projectId 项目id
|
||||||
|
* @return 项目结构信息
|
||||||
|
*/
|
||||||
|
BusProjectStructureVo getStructure(Long projectId);
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,13 @@ import org.dromara.contractor.service.ISubContractorService;
|
|||||||
import org.dromara.design.service.IDesTechnicalStandardService;
|
import org.dromara.design.service.IDesTechnicalStandardService;
|
||||||
import org.dromara.facility.domain.FacMatrix;
|
import org.dromara.facility.domain.FacMatrix;
|
||||||
import org.dromara.facility.domain.vo.matrix.FacMatrixBySubProjectVo;
|
import org.dromara.facility.domain.vo.matrix.FacMatrixBySubProjectVo;
|
||||||
|
import org.dromara.facility.domain.vo.matrix.FacMatrixStructureVo;
|
||||||
import org.dromara.facility.service.IFacMatrixService;
|
import org.dromara.facility.service.IFacMatrixService;
|
||||||
import org.dromara.manager.weathermanager.WeatherConstant;
|
import org.dromara.manager.weathermanager.WeatherConstant;
|
||||||
import org.dromara.manager.weathermanager.WeatherManager;
|
import org.dromara.manager.weathermanager.WeatherManager;
|
||||||
|
import org.dromara.progress.domain.PgsProgressCategory;
|
||||||
|
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryStructureVo;
|
||||||
|
import org.dromara.progress.service.IPgsProgressCategoryService;
|
||||||
import org.dromara.progress.service.IPgsProgressCategoryTemplateService;
|
import org.dromara.progress.service.IPgsProgressCategoryTemplateService;
|
||||||
import org.dromara.project.constant.BusProjectConstant;
|
import org.dromara.project.constant.BusProjectConstant;
|
||||||
import org.dromara.project.domain.BusProject;
|
import org.dromara.project.domain.BusProject;
|
||||||
@ -131,6 +135,10 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
@Resource
|
@Resource
|
||||||
private IPgsProgressCategoryTemplateService progressCategoryTemplateService;
|
private IPgsProgressCategoryTemplateService progressCategoryTemplateService;
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
@Resource
|
||||||
|
private IPgsProgressCategoryService progressCategoryService;
|
||||||
|
|
||||||
private final Cache<String, String> WEATHER_CACHE =
|
private final Cache<String, String> WEATHER_CACHE =
|
||||||
Caffeine.newBuilder().initialCapacity(1024)
|
Caffeine.newBuilder().initialCapacity(1024)
|
||||||
.maximumSize(10000L)
|
.maximumSize(10000L)
|
||||||
@ -905,6 +913,106 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
}).toList();
|
}).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目结构信息
|
||||||
|
*
|
||||||
|
* @param projectId 项目id
|
||||||
|
* @return 项目结构信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BusProjectStructureVo getStructure(Long projectId) {
|
||||||
|
// 获取项目
|
||||||
|
BusProject project = this.getById(projectId);
|
||||||
|
if (project == null) {
|
||||||
|
throw new ServiceException("项目信息不存在", HttpStatus.NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
BusProjectStructureVo vo = new BusProjectStructureVo();
|
||||||
|
vo.setId(project.getId());
|
||||||
|
vo.setName(project.getProjectName());
|
||||||
|
|
||||||
|
// 获取项目子项
|
||||||
|
List<BusProject> subProjects = this.lambdaQuery()
|
||||||
|
.eq(BusProject::getPId, projectId)
|
||||||
|
.list();
|
||||||
|
if (CollUtil.isEmpty(subProjects)) {
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
Set<Long> subProjectIds = subProjects.stream().map(BusProject::getId).collect(Collectors.toSet());
|
||||||
|
|
||||||
|
// 获取方阵信息
|
||||||
|
List<FacMatrix> matrixList = matrixService.lambdaQuery()
|
||||||
|
.in(FacMatrix::getProjectId, subProjectIds)
|
||||||
|
.list();
|
||||||
|
|
||||||
|
Map<Long, List<FacMatrix>> matrixMap = matrixList.stream()
|
||||||
|
.collect(Collectors.groupingBy(FacMatrix::getProjectId));
|
||||||
|
|
||||||
|
// 获取分项工程
|
||||||
|
Set<Long> matrixIds = matrixList.stream().map(FacMatrix::getId).collect(Collectors.toSet());
|
||||||
|
List<PgsProgressCategory> progressCategoryList = progressCategoryService.lambdaQuery()
|
||||||
|
.in(PgsProgressCategory::getMatrixId, matrixIds)
|
||||||
|
.list();
|
||||||
|
|
||||||
|
// 构造子项目结构
|
||||||
|
List<BusSubProjectStructureVo> subProjectStructures = subProjects.stream().map(subProject -> {
|
||||||
|
BusSubProjectStructureVo subProjectVo = new BusSubProjectStructureVo();
|
||||||
|
subProjectVo.setId(subProject.getId());
|
||||||
|
subProjectVo.setName(subProject.getProjectName());
|
||||||
|
|
||||||
|
// 找到该子项目下的方阵
|
||||||
|
List<FacMatrix> matrices = matrixMap.getOrDefault(subProject.getId(), new ArrayList<>());
|
||||||
|
List<FacMatrixStructureVo> matrixVos = matrices.stream().map(matrix -> {
|
||||||
|
FacMatrixStructureVo matrixVo = new FacMatrixStructureVo();
|
||||||
|
matrixVo.setId(matrix.getId());
|
||||||
|
matrixVo.setName(matrix.getMatrixName());
|
||||||
|
|
||||||
|
// 找到该方阵下的分项工程
|
||||||
|
List<PgsProgressCategory> categories = progressCategoryList.stream()
|
||||||
|
.filter(c -> Objects.equals(c.getMatrixId(), matrix.getId()))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
// 构造分项工程树
|
||||||
|
List<PgsProgressCategoryStructureVo> categoryTree = buildCategoryTree(categories);
|
||||||
|
matrixVo.setChildren(categoryTree);
|
||||||
|
return matrixVo;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
subProjectVo.setChildren(matrixVos);
|
||||||
|
return subProjectVo;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
vo.setChildren(subProjectStructures);
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造分项工程树
|
||||||
|
*/
|
||||||
|
private List<PgsProgressCategoryStructureVo> buildCategoryTree(List<PgsProgressCategory> categories) {
|
||||||
|
Map<Long, PgsProgressCategoryStructureVo> map = new HashMap<>();
|
||||||
|
List<PgsProgressCategoryStructureVo> roots = new ArrayList<>();
|
||||||
|
|
||||||
|
for (PgsProgressCategory c : categories) {
|
||||||
|
PgsProgressCategoryStructureVo node = new PgsProgressCategoryStructureVo(c.getId(), c.getName(), new ArrayList<>());
|
||||||
|
map.put(c.getId(), node);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (PgsProgressCategory c : categories) {
|
||||||
|
PgsProgressCategoryStructureVo node = map.get(c.getId());
|
||||||
|
if (c.getParentId() == 0) {
|
||||||
|
roots.add(node);
|
||||||
|
} else {
|
||||||
|
PgsProgressCategoryStructureVo parent = map.get(c.getParentId());
|
||||||
|
if (parent != null) {
|
||||||
|
parent.getChildren().add(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return roots;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据天气图标获取天气类别
|
* 根据天气图标获取天气类别
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user