Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2025-12-23 20:03:03 +08:00
50 changed files with 1601 additions and 134 deletions

View File

@ -310,7 +310,7 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService {
reviewedDesignLastM = reviewedDesignLastM.add(BigDecimal.ONE); reviewedDesignLastM = reviewedDesignLastM.add(BigDecimal.ONE);
} }
} }
} else if (BusinessStatusEnum.WAITING.getStatus().equals(status)) { } else if (BusinessStatusEnum.WAITING.getStatus().equals(status) || BusinessStatusEnum.DRAFT.getStatus().equals(status)) {
pendingReviewDesign++; pendingReviewDesign++;
Date createTime = file.getCreateTime(); Date createTime = file.getCreateTime();
LocalDate createDate = createTime.toInstant() LocalDate createDate = createTime.toInstant()

View File

@ -0,0 +1,106 @@
package org.dromara.build.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.build.domain.bo.BudConstructionPlanBo;
import org.dromara.build.domain.vo.BudConstructionPlanVo;
import org.dromara.build.service.IBudConstructionPlanService;
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;
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.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 施工完成计划
*
* @author lilemy
* @date 2025-12-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/build/constructionPlan")
public class BudConstructionPlanController extends BaseController {
private final IBudConstructionPlanService budConstructionPlanService;
/**
* 查询施工完成计划列表
*/
@SaCheckPermission("build:constructionPlan:list")
@GetMapping("/list")
public TableDataInfo<BudConstructionPlanVo> list(BudConstructionPlanBo bo, PageQuery pageQuery) {
return budConstructionPlanService.queryPageList(bo, pageQuery);
}
/**
* 导出施工完成计划列表
*/
@SaCheckPermission("build:constructionPlan:export")
@Log(title = "施工完成计划", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BudConstructionPlanBo bo, HttpServletResponse response) {
List<BudConstructionPlanVo> list = budConstructionPlanService.queryList(bo);
ExcelUtil.exportExcel(list, "施工完成计划", BudConstructionPlanVo.class, response);
}
/**
* 获取施工完成计划详细信息
*
* @param id 主键
*/
@SaCheckPermission("build:constructionPlan:query")
@GetMapping("/{id}")
public R<BudConstructionPlanVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(budConstructionPlanService.queryById(id));
}
/**
* 新增施工完成计划
*/
@SaCheckPermission("build:constructionPlan:add")
@Log(title = "施工完成计划", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BudConstructionPlanBo bo) {
return toAjax(budConstructionPlanService.insertByBo(bo));
}
/**
* 修改施工完成计划
*/
@SaCheckPermission("build:constructionPlan:edit")
@Log(title = "施工完成计划", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BudConstructionPlanBo bo) {
return toAjax(budConstructionPlanService.updateByBo(bo));
}
/**
* 删除施工完成计划
*
* @param ids 主键串
*/
@SaCheckPermission("build:constructionPlan:remove")
@Log(title = "施工完成计划", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(budConstructionPlanService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -1,26 +1,27 @@
package org.dromara.build.controller; package org.dromara.build.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*; import jakarta.servlet.http.HttpServletResponse;
import org.springframework.validation.annotation.Validated; import jakarta.validation.constraints.NotEmpty;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import jakarta.validation.constraints.NotNull;
import org.dromara.common.log.annotation.Log; import lombok.RequiredArgsConstructor;
import org.dromara.common.web.core.BaseController; import org.dromara.build.domain.bo.BudConstructionTemplateGroupBo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.build.domain.vo.BudConstructionTemplateGroupVo;
import org.dromara.build.service.IBudConstructionTemplateGroupService;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.build.domain.vo.BudConstructionTemplateGroupVo; import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.build.domain.bo.BudConstructionTemplateGroupBo; import org.dromara.common.log.annotation.Log;
import org.dromara.build.service.IBudConstructionTemplateGroupService; 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.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 施工模板组(汇总) * 施工模板组(汇总)

View File

@ -0,0 +1,106 @@
package org.dromara.build.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.build.domain.bo.BudPlanFacilityBo;
import org.dromara.build.domain.vo.BudPlanFacilityVo;
import org.dromara.build.service.IBudPlanFacilityService;
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;
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.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 施工计划关联设施
*
* @author lilemy
* @date 2025-12-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/build/planFacility")
public class BudPlanFacilityController extends BaseController {
private final IBudPlanFacilityService budPlanFacilityService;
/**
* 查询施工计划关联设施列表
*/
@SaCheckPermission("build:planFacility:list")
@GetMapping("/list")
public TableDataInfo<BudPlanFacilityVo> list(BudPlanFacilityBo bo, PageQuery pageQuery) {
return budPlanFacilityService.queryPageList(bo, pageQuery);
}
/**
* 导出施工计划关联设施列表
*/
@SaCheckPermission("build:planFacility:export")
@Log(title = "施工计划关联设施", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BudPlanFacilityBo bo, HttpServletResponse response) {
List<BudPlanFacilityVo> list = budPlanFacilityService.queryList(bo);
ExcelUtil.exportExcel(list, "施工计划关联设施", BudPlanFacilityVo.class, response);
}
/**
* 获取施工计划关联设施详细信息
*
* @param id 主键
*/
@SaCheckPermission("build:planFacility:query")
@GetMapping("/{id}")
public R<BudPlanFacilityVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(budPlanFacilityService.queryById(id));
}
/**
* 新增施工计划关联设施
*/
@SaCheckPermission("build:planFacility:add")
@Log(title = "施工计划关联设施", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BudPlanFacilityBo bo) {
return toAjax(budPlanFacilityService.insertByBo(bo));
}
/**
* 修改施工计划关联设施
*/
@SaCheckPermission("build:planFacility:edit")
@Log(title = "施工计划关联设施", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BudPlanFacilityBo bo) {
return toAjax(budPlanFacilityService.updateByBo(bo));
}
/**
* 删除施工计划关联设施
*
* @param ids 主键串
*/
@SaCheckPermission("build:planFacility:remove")
@Log(title = "施工计划关联设施", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(budPlanFacilityService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -50,7 +50,7 @@ public class BudBoxChange extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
private String status; private String status;

View File

@ -0,0 +1,63 @@
package org.dromara.build.domain;
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;
import java.time.LocalDate;
/**
* 施工完成计划对象 bud_construction_plan
*
* @author lilemy
* @date 2025-12-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bud_construction_plan")
public class BudConstructionPlan extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 项目 ID
*/
private Long projectId;
/**
* 计划名称
*/
private String planName;
/**
* 计划开始日期
*/
private LocalDate planStartDate;
/**
* 计划完成日期
*/
private LocalDate planEndDate;
/**
* 计划状态
*/
private String status;
/**
* 备注
*/
private String remark;
}

View File

@ -50,7 +50,7 @@ public class BudInverter extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
private String status; private String status;

View File

@ -50,7 +50,7 @@ public class BudPillarPoint extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
private String status; private String status;

View File

@ -0,0 +1,65 @@
package org.dromara.build.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 施工计划关联设施对象 bud_plan_facility
*
* @author lilemy
* @date 2025-12-23
*/
@Data
@TableName("bud_plan_facility")
public class BudPlanFacility implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 项目 ID
*/
private Long projectId;
/**
* 施工计划 ID
*/
private Long planId;
/**
* 设施类型
*/
private String facilityType;
/**
* 设施 ID
*/
private Long facilityId;
/**
* 设施状态
*/
private String status;
/**
* 完成方式
*/
private String finishMethod;
/**
* 完成时间
*/
private LocalDateTime finishTime;
}

View File

@ -50,7 +50,7 @@ public class BudSolarPanel extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
private String status; private String status;

View File

@ -50,7 +50,7 @@ public class BudStandColumn extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
private String status; private String status;

View File

@ -50,7 +50,7 @@ public class BudSupportFrame extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
private String status; private String status;

View File

@ -57,9 +57,9 @@ public class BudBoxChangeBo extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@NotBlank(message = "完成状态0未开始 1进行中 2完成不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "完成状态0未开始 1进行中 2已延期 3已完成)不能为空", groups = {AddGroup.class, EditGroup.class})
private String status; private String status;
/** /**

View File

@ -0,0 +1,77 @@
package org.dromara.build.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.build.domain.BudConstructionPlan;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
import java.time.LocalDate;
import java.util.List;
/**
* 施工完成计划业务对象 bud_construction_plan
*
* @author lilemy
* @date 2025-12-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BudConstructionPlan.class, reverseConvertGenerate = false)
public class BudConstructionPlanBo extends BaseEntity {
@Serial
private static final long serialVersionUID = 6496839101835764379L;
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id;
/**
* 项目 ID
*/
@NotNull(message = "项目 ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long projectId;
/**
* 计划名称
*/
@NotBlank(message = "计划名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String planName;
/**
* 计划开始日期
*/
@NotNull(message = "计划开始日期不能为空", groups = {AddGroup.class, EditGroup.class})
private LocalDate planStartDate;
/**
* 计划完成日期
*/
@NotNull(message = "计划完成日期不能为空", groups = {AddGroup.class, EditGroup.class})
private LocalDate planEndDate;
/**
* 计划状态
*/
private String status;
/**
* 备注
*/
private String remark;
/**
* 计划设施列表
*/
@NotNull(message = "计划设施列表不能为空", groups = {AddGroup.class, EditGroup.class})
private List<BudPlanFacilityBo> planFacilityList;
}

View File

@ -57,9 +57,9 @@ public class BudInverterBo extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@NotBlank(message = "完成状态0未开始 1进行中 2完成不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "完成状态0未开始 1进行中 2已延期 3已完成)不能为空", groups = {AddGroup.class, EditGroup.class})
private String status; private String status;
/** /**

View File

@ -57,9 +57,9 @@ public class BudPillarPointBo extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@NotBlank(message = "完成状态0未开始 1进行中 2完成不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "完成状态0未开始 1进行中 2已延期 3已完成)不能为空", groups = {AddGroup.class, EditGroup.class})
private String status; private String status;
/** /**

View File

@ -0,0 +1,65 @@
package org.dromara.build.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.build.domain.BudPlanFacility;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 施工计划关联设施业务对象 bud_plan_facility
*
* @author lilemy
* @date 2025-12-23
*/
@Data
@AutoMapper(target = BudPlanFacility.class, reverseConvertGenerate = false)
public class BudPlanFacilityBo implements Serializable {
@Serial
private static final long serialVersionUID = 2833374803608062065L;
/**
* 主键
*/
private Long id;
/**
* 施工计划 ID
*/
private Long planId;
/**
* 设施类型
*/
@NotBlank(message = "设施类型不能为空", groups = {AddGroup.class, EditGroup.class})
private String facilityType;
/**
* 设施 ID
*/
@NotNull(message = "设施 ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long facilityId;
/**
* 设施状态
*/
private String status;
/**
* 完成方式
*/
private String finishMethod;
/**
* 完成时间
*/
private LocalDateTime finishTime;
}

View File

@ -57,9 +57,9 @@ public class BudSolarPanelBo extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@NotBlank(message = "完成状态0未开始 1进行中 2完成不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "完成状态0未开始 1进行中 2已延期 3已完成)不能为空", groups = {AddGroup.class, EditGroup.class})
private String status; private String status;
/** /**

View File

@ -57,9 +57,9 @@ public class BudStandColumnBo extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@NotBlank(message = "完成状态0未开始 1进行中 2完成不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "完成状态0未开始 1进行中 2已延期 3已完成)不能为空", groups = {AddGroup.class, EditGroup.class})
private String status; private String status;
/** /**

View File

@ -57,9 +57,9 @@ public class BudSupportFrameBo extends BaseEntity {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@NotBlank(message = "完成状态0未开始 1进行中 2完成不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "完成状态0未开始 1进行中 2已延期 3已完成)不能为空", groups = {AddGroup.class, EditGroup.class})
private String status; private String status;
/** /**

View File

@ -11,7 +11,7 @@ import java.util.Objects;
*/ */
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum BudDesignType { public enum BudFacilityType {
/** /**
* 方阵 * 方阵
@ -63,8 +63,8 @@ public enum BudDesignType {
* @param value 枚举值 * @param value 枚举值
* @return 枚举 * @return 枚举
*/ */
public static BudDesignType getEnumByValue(String value) { public static BudFacilityType getEnumByValue(String value) {
for (BudDesignType type : values()) { for (BudFacilityType type : values()) {
if (Objects.equals(type.getValue(), value)) { if (Objects.equals(type.getValue(), value)) {
return type; return type;
} }

View File

@ -0,0 +1,37 @@
package org.dromara.build.domain.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author lilemy
* @date 2025-12-23 11:40
*/
@Getter
@AllArgsConstructor
public enum BudFinishStatus {
/**
* 未开始
*/
NOT_STARTED("未开始", "0"),
/**
* 进行中
*/
IN_PROGRESS("进行中", "1"),
/**
* 已延期
*/
DELAYED("已延期", "2"),
/**
* 已完成
*/
COMPLETED("已完成", "3");
private final String text;
private final String value;
}

View File

@ -0,0 +1,34 @@
package org.dromara.build.domain.interfaces;
import java.time.LocalDate;
/**
* 构建完成接口
*
* @author lilemy
* @date 2025-12-23 17:13
*/
public interface BudFinishable {
/**
* 获取 ID
*
* @return id
*/
Long getId();
/**
* 获取状态
*/
void setStatus(String status);
/**
* 获取完成方式
*/
void setFinishType(String finishType);
/**
* 获取完成时间
*/
void setFinishDate(LocalDate finishDate);
}

View File

@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.build.domain.BudBoxChange; import org.dromara.build.domain.BudBoxChange;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
@ -22,7 +23,7 @@ import java.time.LocalDate;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = BudBoxChange.class) @AutoMapper(target = BudBoxChange.class)
public class BudBoxChangeVo implements Serializable { public class BudBoxChangeVo implements BudFinishable, Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -58,7 +59,7 @@ public class BudBoxChangeVo implements Serializable {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class) @ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成") @ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成")

View File

@ -0,0 +1,73 @@
package org.dromara.build.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.build.domain.BudConstructionPlan;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
/**
* 施工完成计划视图对象 bud_construction_plan
*
* @author lilemy
* @date 2025-12-23
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BudConstructionPlan.class)
public class BudConstructionPlanVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 项目 ID
*/
@ExcelProperty(value = "项目 ID")
private Long projectId;
/**
* 计划名称
*/
@ExcelProperty(value = "计划名称")
private String planName;
/**
* 计划开始日期
*/
@ExcelProperty(value = "计划开始日期")
private LocalDate planStartDate;
/**
* 计划完成日期
*/
@ExcelProperty(value = "计划完成日期")
private LocalDate planEndDate;
/**
* 计划状态
*/
@ExcelProperty(value = "计划状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "build_finish_status")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -42,7 +42,7 @@ public class BudDesignDrawingByBuildVo implements Serializable {
private String type; private String type;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
private String status; private String status;
@ -57,14 +57,9 @@ public class BudDesignDrawingByBuildVo implements Serializable {
private LocalDate finishDate; private LocalDate finishDate;
/** /**
* 进度类型id * 计划 ID
*/ */
private Long progressCategoryId; private Long planId;
/**
* 进度类别名称
*/
private String progressCategoryName;
/** /**
* 对象转vo * 对象转vo
@ -72,18 +67,16 @@ public class BudDesignDrawingByBuildVo implements Serializable {
* @param id 主键 * @param id 主键
* @param name 名称 * @param name 名称
* @param positions 位置字符串 * @param positions 位置字符串
* @param status 完成状态0未开始 1进行中 2完成 * @param status 完成状态0未开始 1进行中 2已延期 3已完成)
* @return BudDesignDrawingByBuildVo * @return BudDesignDrawingByBuildVo
*/ */
public static BudDesignDrawingByBuildVo obj2vo(Long id, String name, String positions, String finishType, LocalDate finishDate, public static BudDesignDrawingByBuildVo obj2vo(Long id, String name, String positions,
String status, Long progressCategoryId, String progressCategoryName) { String finishType, LocalDate finishDate, String status) {
BudDesignDrawingByBuildVo vo = new BudDesignDrawingByBuildVo(); BudDesignDrawingByBuildVo vo = new BudDesignDrawingByBuildVo();
vo.setId(id); vo.setId(id);
vo.setName(name); vo.setName(name);
vo.setFinishType(finishType); vo.setFinishType(finishType);
vo.setFinishDate(finishDate); vo.setFinishDate(finishDate);
vo.setProgressCategoryId(progressCategoryId);
vo.setProgressCategoryName(progressCategoryName);
JSONArray positionList = JSONUtil.parseArray(positions); JSONArray positionList = JSONUtil.parseArray(positions);
vo.setPositionList(positionList); vo.setPositionList(positionList);
vo.setStatus(status); vo.setStatus(status);

View File

@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.build.domain.BudInverter; import org.dromara.build.domain.BudInverter;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
@ -22,7 +23,7 @@ import java.time.LocalDate;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = BudInverter.class) @AutoMapper(target = BudInverter.class)
public class BudInverterVo implements Serializable { public class BudInverterVo implements BudFinishable, Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -58,7 +59,7 @@ public class BudInverterVo implements Serializable {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class) @ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成") @ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成")

View File

@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.build.domain.BudPillarPoint; import org.dromara.build.domain.BudPillarPoint;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
@ -22,7 +23,7 @@ import java.time.LocalDate;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = BudPillarPoint.class) @AutoMapper(target = BudPillarPoint.class)
public class BudPillarPointVo implements Serializable { public class BudPillarPointVo implements BudFinishable, Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -58,7 +59,7 @@ public class BudPillarPointVo implements Serializable {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class) @ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成") @ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成")

View File

@ -0,0 +1,81 @@
package org.dromara.build.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.build.domain.BudPlanFacility;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 施工计划关联设施视图对象 bud_plan_facility
*
* @author lilemy
* @date 2025-12-23
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BudPlanFacility.class)
public class BudPlanFacilityVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 项目 ID
*/
@ExcelProperty(value = "项目 ID")
private Long projectId;
/**
* 施工计划 ID
*/
@ExcelProperty(value = "施工计划 ID")
private Long planId;
/**
* 设施类型
*/
@ExcelProperty(value = "设施类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "build_facility_type")
private String facilityType;
/**
* 设施 ID
*/
@ExcelProperty(value = "设施 ID")
private Long facilityId;
/**
* 设施状态
*/
@ExcelProperty(value = "设施状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "build_finish_status")
private String status;
/**
* 完成方式
*/
@ExcelProperty(value = "完成方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "build_finish_type")
private String finishMethod;
/**
* 完成时间
*/
@ExcelProperty(value = "完成时间")
private LocalDateTime finishTime;
}

View File

@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.build.domain.BudSolarPanel; import org.dromara.build.domain.BudSolarPanel;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
@ -22,7 +23,7 @@ import java.time.LocalDate;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = BudSolarPanel.class) @AutoMapper(target = BudSolarPanel.class)
public class BudSolarPanelVo implements Serializable { public class BudSolarPanelVo implements BudFinishable, Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -58,7 +59,7 @@ public class BudSolarPanelVo implements Serializable {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class) @ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成") @ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成")

View File

@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.build.domain.BudStandColumn; import org.dromara.build.domain.BudStandColumn;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
@ -22,7 +23,7 @@ import java.time.LocalDate;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = BudStandColumn.class) @AutoMapper(target = BudStandColumn.class)
public class BudStandColumnVo implements Serializable { public class BudStandColumnVo implements BudFinishable, Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -58,7 +59,7 @@ public class BudStandColumnVo implements Serializable {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class) @ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成") @ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成")

View File

@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.build.domain.BudSupportFrame; import org.dromara.build.domain.BudSupportFrame;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
@ -22,7 +23,7 @@ import java.time.LocalDate;
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = BudSupportFrame.class) @AutoMapper(target = BudSupportFrame.class)
public class BudSupportFrameVo implements Serializable { public class BudSupportFrameVo implements BudFinishable, Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -58,7 +59,7 @@ public class BudSupportFrameVo implements Serializable {
private String positions; private String positions;
/** /**
* 完成状态0未开始 1进行中 2完成 * 完成状态0未开始 1进行中 2已延期 3已完成)
*/ */
@ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class) @ExcelProperty(value = "完成状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成") @ExcelDictFormat(readConverterExp = "0=未开始,1=进行中,2=完成")

View File

@ -0,0 +1,15 @@
package org.dromara.build.mapper;
import org.dromara.build.domain.BudConstructionPlan;
import org.dromara.build.domain.vo.BudConstructionPlanVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 施工完成计划Mapper接口
*
* @author lilemy
* @date 2025-12-23
*/
public interface BudConstructionPlanMapper extends BaseMapperPlus<BudConstructionPlan, BudConstructionPlanVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.build.mapper;
import org.dromara.build.domain.BudPlanFacility;
import org.dromara.build.domain.vo.BudPlanFacilityVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 施工计划关联设施Mapper接口
*
* @author lilemy
* @date 2025-12-23
*/
public interface BudPlanFacilityMapper extends BaseMapperPlus<BudPlanFacility, BudPlanFacilityVo> {
}

View File

@ -0,0 +1,71 @@
package org.dromara.build.service;
import org.dromara.build.domain.vo.BudConstructionPlanVo;
import org.dromara.build.domain.bo.BudConstructionPlanBo;
import org.dromara.build.domain.BudConstructionPlan;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 施工完成计划Service接口
*
* @author lilemy
* @date 2025-12-23
*/
public interface IBudConstructionPlanService extends IService<BudConstructionPlan> {
/**
* 查询施工完成计划
*
* @param id 主键
* @return 施工完成计划
*/
BudConstructionPlanVo queryById(Long id);
/**
* 分页查询施工完成计划列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 施工完成计划分页列表
*/
TableDataInfo<BudConstructionPlanVo> queryPageList(BudConstructionPlanBo bo, PageQuery pageQuery);
/**
* 查询符合条件的施工完成计划列表
*
* @param bo 查询条件
* @return 施工完成计划列表
*/
List<BudConstructionPlanVo> queryList(BudConstructionPlanBo bo);
/**
* 新增施工完成计划
*
* @param bo 施工完成计划
* @return 是否新增成功
*/
Boolean insertByBo(BudConstructionPlanBo bo);
/**
* 修改施工完成计划
*
* @param bo 施工完成计划
* @return 是否修改成功
*/
Boolean updateByBo(BudConstructionPlanBo bo);
/**
* 校验并批量删除施工完成计划信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -83,14 +83,6 @@ public interface IBudDesignDrawingService extends IService<BudDesignDrawing> {
*/ */
Boolean insertByCadFile(MultipartFile file, BudDesignDrawingUploadReq req); Boolean insertByCadFile(MultipartFile file, BudDesignDrawingUploadReq req);
/**
* 新增施工设计图
*
* @param bo 施工设计图
* @return 是否新增成功
*/
Boolean insertByBo(BudDesignDrawingBo bo);
/** /**
* 新增施工设施 * 新增施工设施
* *

View File

@ -0,0 +1,99 @@
package org.dromara.build.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.build.domain.BudPlanFacility;
import org.dromara.build.domain.bo.BudPlanFacilityBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.build.domain.vo.BudPlanFacilityVo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import java.util.Collection;
import java.util.List;
/**
* 施工计划关联设施Service接口
*
* @author lilemy
* @date 2025-12-23
*/
public interface IBudPlanFacilityService extends IService<BudPlanFacility> {
/**
* 查询施工计划关联设施
*
* @param id 主键
* @return 施工计划关联设施
*/
BudPlanFacilityVo queryById(Long id);
/**
* 分页查询施工计划关联设施列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 施工计划关联设施分页列表
*/
TableDataInfo<BudPlanFacilityVo> queryPageList(BudPlanFacilityBo bo, PageQuery pageQuery);
/**
* 查询符合条件的施工计划关联设施列表
*
* @param bo 查询条件
* @return 施工计划关联设施列表
*/
List<BudPlanFacilityVo> queryList(BudPlanFacilityBo bo);
/**
* 新增施工计划关联设施
*
* @param bo 施工计划关联设施
* @return 是否新增成功
*/
Boolean insertByBo(BudPlanFacilityBo bo);
/**
* 修改施工计划关联设施
*
* @param bo 施工计划关联设施
* @return 是否修改成功
*/
Boolean updateByBo(BudPlanFacilityBo bo);
/**
* 校验并批量删除施工计划关联设施信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 保存或更新
*
* @param projectId 项目 ID
* @param planId 计划 ID
* @param boList 列表
* @param isUpdate 是否更新
* @return 是否保存成功
*/
Boolean saveOrUpdate(Long projectId, Long planId, List<BudPlanFacilityBo> boList, Boolean isUpdate);
/**
* 填充完成信息
*
* @param target 目标对象
* @param designType 施工类型
*/
<T extends BudFinishable> void fillFinishInfo(T target, BudFacilityType designType);
/**
* 填充完成信息
*
* @param list 列表
* @param designType 施工类型
*/
<T extends BudFinishable> void fillFinishInfo(List<T> list, BudFacilityType designType);
}

View File

@ -6,6 +6,8 @@ import org.dromara.build.domain.geojson.BudFeature;
import java.util.List; import java.util.List;
/** /**
* 光伏板基础信息(桩点、立柱、支架)服务
*
* @author lilemy * @author lilemy
* @date 2025-12-19 14:52 * @date 2025-12-19 14:52
*/ */

View File

@ -13,12 +13,14 @@ import org.dromara.build.domain.BudBoxChange;
import org.dromara.build.domain.BudDesignDrawing; import org.dromara.build.domain.BudDesignDrawing;
import org.dromara.build.domain.BudMatrix; import org.dromara.build.domain.BudMatrix;
import org.dromara.build.domain.bo.BudBoxChangeBo; import org.dromara.build.domain.bo.BudBoxChangeBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.geojson.BudFeature; import org.dromara.build.domain.geojson.BudFeature;
import org.dromara.build.domain.geojson.BudGeometry; import org.dromara.build.domain.geojson.BudGeometry;
import org.dromara.build.domain.vo.BudBoxChangeVo; import org.dromara.build.domain.vo.BudBoxChangeVo;
import org.dromara.build.mapper.BudBoxChangeMapper; import org.dromara.build.mapper.BudBoxChangeMapper;
import org.dromara.build.service.IBudBoxChangeService; import org.dromara.build.service.IBudBoxChangeService;
import org.dromara.build.service.IBudMatrixService; import org.dromara.build.service.IBudMatrixService;
import org.dromara.build.service.IBudPlanFacilityService;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -32,7 +34,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 箱变Service业务层处理 * 箱变Service业务层处理
@ -49,6 +50,9 @@ public class BudBoxChangeServiceImpl extends ServiceImpl<BudBoxChangeMapper, Bud
@Resource @Resource
private IBudMatrixService budMatrixService; private IBudMatrixService budMatrixService;
@Resource
private IBudPlanFacilityService budPlanFacilityService;
/** /**
* 查询箱变 * 查询箱变
* *
@ -57,7 +61,9 @@ public class BudBoxChangeServiceImpl extends ServiceImpl<BudBoxChangeMapper, Bud
*/ */
@Override @Override
public BudBoxChangeVo queryById(Long id) { public BudBoxChangeVo queryById(Long id) {
return baseMapper.selectVoById(id); BudBoxChangeVo budBoxChangeVo = baseMapper.selectVoById(id);
budPlanFacilityService.fillFinishInfo(budBoxChangeVo, BudFacilityType.BOX_CHANGE);
return budBoxChangeVo;
} }
/** /**
@ -71,6 +77,7 @@ public class BudBoxChangeServiceImpl extends ServiceImpl<BudBoxChangeMapper, Bud
public TableDataInfo<BudBoxChangeVo> queryPageList(BudBoxChangeBo bo, PageQuery pageQuery) { public TableDataInfo<BudBoxChangeVo> queryPageList(BudBoxChangeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudBoxChange> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudBoxChange> lqw = buildQueryWrapper(bo);
Page<BudBoxChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<BudBoxChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
budPlanFacilityService.fillFinishInfo(result.getRecords(), BudFacilityType.BOX_CHANGE);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -83,22 +90,17 @@ public class BudBoxChangeServiceImpl extends ServiceImpl<BudBoxChangeMapper, Bud
@Override @Override
public List<BudBoxChangeVo> queryList(BudBoxChangeBo bo) { public List<BudBoxChangeVo> queryList(BudBoxChangeBo bo) {
LambdaQueryWrapper<BudBoxChange> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudBoxChange> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); List<BudBoxChangeVo> voList = baseMapper.selectVoList(lqw);
budPlanFacilityService.fillFinishInfo(voList, BudFacilityType.BOX_CHANGE);
return voList;
} }
private LambdaQueryWrapper<BudBoxChange> buildQueryWrapper(BudBoxChangeBo bo) { private LambdaQueryWrapper<BudBoxChange> buildQueryWrapper(BudBoxChangeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BudBoxChange> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<BudBoxChange> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BudBoxChange::getId); lqw.orderByDesc(BudBoxChange::getId);
lqw.eq(bo.getProjectId() != null, BudBoxChange::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, BudBoxChange::getProjectId, bo.getProjectId());
lqw.eq(bo.getMatrixId() != null, BudBoxChange::getMatrixId, bo.getMatrixId()); lqw.eq(bo.getMatrixId() != null, BudBoxChange::getMatrixId, bo.getMatrixId());
lqw.like(StringUtils.isNotBlank(bo.getName()), BudBoxChange::getName, bo.getName()); lqw.like(StringUtils.isNotBlank(bo.getName()), BudBoxChange::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getPositions()), BudBoxChange::getPositions, bo.getPositions());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BudBoxChange::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getFinishType()), BudBoxChange::getFinishType, bo.getFinishType());
lqw.eq(bo.getFinishDate() != null, BudBoxChange::getFinishDate, bo.getFinishDate());
lqw.eq(bo.getProgressCategoryId() != null, BudBoxChange::getProgressCategoryId, bo.getProgressCategoryId());
lqw.like(StringUtils.isNotBlank(bo.getProgressCategoryName()), BudBoxChange::getProgressCategoryName, bo.getProgressCategoryName());
return lqw; return lqw;
} }

View File

@ -0,0 +1,193 @@
package org.dromara.build.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.dromara.build.domain.BudConstructionPlan;
import org.dromara.build.domain.BudPlanFacility;
import org.dromara.build.domain.bo.BudConstructionPlanBo;
import org.dromara.build.domain.enums.BudFinishStatus;
import org.dromara.build.domain.vo.BudConstructionPlanVo;
import org.dromara.build.mapper.BudConstructionPlanMapper;
import org.dromara.build.service.IBudConstructionPlanService;
import org.dromara.build.service.IBudPlanFacilityService;
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.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 施工完成计划Service业务层处理
*
* @author lilemy
* @date 2025-12-23
*/
@RequiredArgsConstructor
@Service
public class BudConstructionPlanServiceImpl extends ServiceImpl<BudConstructionPlanMapper, BudConstructionPlan>
implements IBudConstructionPlanService {
private final IBudPlanFacilityService budPlanFacilityService;
/**
* 查询施工完成计划
*
* @param id 主键
* @return 施工完成计划
*/
@Override
public BudConstructionPlanVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询施工完成计划列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 施工完成计划分页列表
*/
@Override
public TableDataInfo<BudConstructionPlanVo> queryPageList(BudConstructionPlanBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudConstructionPlan> lqw = buildQueryWrapper(bo);
Page<BudConstructionPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的施工完成计划列表
*
* @param bo 查询条件
* @return 施工完成计划列表
*/
@Override
public List<BudConstructionPlanVo> queryList(BudConstructionPlanBo bo) {
LambdaQueryWrapper<BudConstructionPlan> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BudConstructionPlan> buildQueryWrapper(BudConstructionPlanBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BudConstructionPlan> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BudConstructionPlan::getId);
lqw.eq(bo.getProjectId() != null, BudConstructionPlan::getProjectId, bo.getProjectId());
lqw.like(StringUtils.isNotBlank(bo.getPlanName()), BudConstructionPlan::getPlanName, bo.getPlanName());
lqw.eq(bo.getPlanStartDate() != null, BudConstructionPlan::getPlanStartDate, bo.getPlanStartDate());
lqw.eq(bo.getPlanEndDate() != null, BudConstructionPlan::getPlanEndDate, bo.getPlanEndDate());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BudConstructionPlan::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增施工完成计划
*
* @param bo 施工完成计划
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(BudConstructionPlanBo bo) {
BudConstructionPlan add = MapstructUtils.convert(bo, BudConstructionPlan.class);
if (add == null) {
throw new ServiceException("新增施工完成计划失败,参数错误");
}
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (!flag) {
throw new ServiceException("新增施工完成计划失败");
}
// 添加关联
Boolean b = budPlanFacilityService.saveOrUpdate(bo.getProjectId(), add.getId(), bo.getPlanFacilityList(), false);
if (!b) {
throw new ServiceException("新增施工完成计划失败");
}
return true;
}
/**
* 修改施工完成计划
*
* @param bo 施工完成计划
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(BudConstructionPlanBo bo) {
BudConstructionPlan update = MapstructUtils.convert(bo, BudConstructionPlan.class);
if (update == null) {
throw new ServiceException("修改施工完成计划失败,参数错误");
}
validEntityBeforeSave(update);
boolean flag = this.updateById(update);
if (!flag) {
throw new ServiceException("修改施工完成计划失败");
}
// 修改关联
Boolean b = budPlanFacilityService.saveOrUpdate(bo.getProjectId(), update.getId(), bo.getPlanFacilityList(), true);
if (!b) {
throw new ServiceException("修改施工完成计划失败");
}
return true;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BudConstructionPlan entity) {
//TODO 做一些数据校验,如唯一约束
Long projectId = entity.getProjectId();
String planName = entity.getPlanName();
LambdaQueryWrapper<BudConstructionPlan> lqw = new LambdaQueryWrapper<>();
lqw.eq(BudConstructionPlan::getProjectId, projectId);
lqw.eq(BudConstructionPlan::getPlanName, planName);
if (entity.getId() != null) {
lqw.ne(BudConstructionPlan::getId, entity.getId());
}
if (this.count(lqw) > 0) {
throw new ServiceException("计划名称不能重复");
}
}
/**
* 校验并批量删除施工完成计划信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
List<BudPlanFacility> relList = budPlanFacilityService.lambdaQuery()
.in(BudPlanFacility::getPlanId, ids)
.list();
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
relList.forEach(rel -> {
String status = rel.getStatus();
if (BudFinishStatus.COMPLETED.getValue().equals(status)) {
throw new ServiceException("删除失败,存在已完成的施工计划");
}
});
}
// 删除关联
boolean b = budPlanFacilityService.removeBatchByIds(relList);
if (!b) {
throw new ServiceException("删除失败,系统异常");
}
boolean remove = this.removeBatchByIds(ids);
if (!remove) {
throw new ServiceException("删除失败,系统异常");
}
return true;
}
}

View File

@ -17,7 +17,8 @@ import org.dromara.build.domain.bo.BudDesignDrawingBo;
import org.dromara.build.domain.dto.BudCreateByLayerReq; import org.dromara.build.domain.dto.BudCreateByLayerReq;
import org.dromara.build.domain.dto.BudDesignDrawingQueryBuildReq; import org.dromara.build.domain.dto.BudDesignDrawingQueryBuildReq;
import org.dromara.build.domain.dto.BudDesignDrawingUploadReq; import org.dromara.build.domain.dto.BudDesignDrawingUploadReq;
import org.dromara.build.domain.enums.BudDesignType; import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.enums.BudFinishStatus;
import org.dromara.build.domain.geojson.BudFeature; import org.dromara.build.domain.geojson.BudFeature;
import org.dromara.build.domain.vo.BudDesignDrawingByBuildVo; import org.dromara.build.domain.vo.BudDesignDrawingByBuildVo;
import org.dromara.build.domain.vo.BudDesignDrawingVo; import org.dromara.build.domain.vo.BudDesignDrawingVo;
@ -36,10 +37,13 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* 施工设计图Service业务层处理 * 施工设计图Service业务层处理
@ -83,6 +87,9 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
@Resource @Resource
private IBudSupportFrameService budSupportFrameService; private IBudSupportFrameService budSupportFrameService;
@Resource
private IBudPlanFacilityService budPlanFacilityService;
/** /**
* 查询施工设计图 * 查询施工设计图
* *
@ -165,7 +172,7 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
String buildType = req.getBuildType(); String buildType = req.getBuildType();
Long projectId = req.getProjectId(); Long projectId = req.getProjectId();
Long matrixId = req.getMatrixId(); Long matrixId = req.getMatrixId();
BudDesignType value = BudDesignType.getEnumByValue(buildType); BudFacilityType value = BudFacilityType.getEnumByValue(buildType);
List<BudDesignDrawingByBuildVo> list; List<BudDesignDrawingByBuildVo> list;
switch (value) { switch (value) {
// 方阵 // 方阵
@ -175,8 +182,8 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.eq(matrixId != null, BudMatrix::getId, matrixId) .eq(matrixId != null, BudMatrix::getId, matrixId)
.list(); .list();
list = matrixList.stream().map(matrix -> BudDesignDrawingByBuildVo.obj2vo( list = matrixList.stream().map(matrix -> BudDesignDrawingByBuildVo.obj2vo(
matrix.getId(), matrix.getName(), matrix.getPositions(), null, null, matrix.getId(), matrix.getName(), matrix.getPositions(), null, null, null)
null, null, null)).toList(); ).toList();
} }
// 光伏板 // 光伏板
case SOLAR_PANEL -> { case SOLAR_PANEL -> {
@ -185,8 +192,9 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.eq(matrixId != null, BudSolarPanel::getMatrixId, matrixId) .eq(matrixId != null, BudSolarPanel::getMatrixId, matrixId)
.list(); .list();
list = photovoltaicPanelList.stream().map(panel -> BudDesignDrawingByBuildVo.obj2vo( list = photovoltaicPanelList.stream().map(panel -> BudDesignDrawingByBuildVo.obj2vo(
panel.getId(), panel.getName(), panel.getPositions(), panel.getFinishType(), panel.getFinishDate(), panel.getId(), panel.getName(), panel.getPositions(),
panel.getStatus(), panel.getProgressCategoryId(), panel.getProgressCategoryName())).toList(); panel.getFinishType(), panel.getFinishDate(), panel.getStatus())
).toList();
} }
// 逆变器 // 逆变器
case INVERTER -> { case INVERTER -> {
@ -195,8 +203,9 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.eq(matrixId != null, BudInverter::getMatrixId, matrixId) .eq(matrixId != null, BudInverter::getMatrixId, matrixId)
.list(); .list();
list = inverterList.stream().map(inverter -> BudDesignDrawingByBuildVo.obj2vo( list = inverterList.stream().map(inverter -> BudDesignDrawingByBuildVo.obj2vo(
inverter.getId(), inverter.getName(), inverter.getPositions(), inverter.getFinishType(), inverter.getFinishDate(), inverter.getId(), inverter.getName(), inverter.getPositions(), inverter.getFinishType(),
inverter.getStatus(), inverter.getProgressCategoryId(), inverter.getProgressCategoryName())).toList(); inverter.getFinishDate(), inverter.getStatus())
).toList();
} }
// 箱变 // 箱变
case BOX_CHANGE -> { case BOX_CHANGE -> {
@ -205,8 +214,9 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.eq(matrixId != null, BudBoxChange::getMatrixId, matrixId) .eq(matrixId != null, BudBoxChange::getMatrixId, matrixId)
.list(); .list();
list = boxChangeList.stream().map(boxChange -> BudDesignDrawingByBuildVo.obj2vo( list = boxChangeList.stream().map(boxChange -> BudDesignDrawingByBuildVo.obj2vo(
boxChange.getId(), boxChange.getName(), boxChange.getPositions(), boxChange.getFinishType(), boxChange.getFinishDate(), boxChange.getId(), boxChange.getName(), boxChange.getPositions(), boxChange.getFinishType(),
boxChange.getStatus(), boxChange.getProgressCategoryId(), boxChange.getProgressCategoryName())).toList(); boxChange.getFinishDate(), boxChange.getStatus())
).toList();
} }
// 红线 // 红线
case RED_LINE -> { case RED_LINE -> {
@ -214,8 +224,8 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.eq(BudRedLine::getProjectId, projectId) .eq(BudRedLine::getProjectId, projectId)
.list(); .list();
list = redLineList.stream().map(redLine -> BudDesignDrawingByBuildVo.obj2vo( list = redLineList.stream().map(redLine -> BudDesignDrawingByBuildVo.obj2vo(
redLine.getId(), redLine.getName(), redLine.getPositions(), null, null, redLine.getId(), redLine.getName(), redLine.getPositions(), null, null, null)
null, null, null)).toList(); ).toList();
} }
// 桩点 // 桩点
case PILLAR_POINT -> { case PILLAR_POINT -> {
@ -225,8 +235,7 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.list(); .list();
list = pillarPointList.stream().map(pillarPoint -> BudDesignDrawingByBuildVo.obj2vo( list = pillarPointList.stream().map(pillarPoint -> BudDesignDrawingByBuildVo.obj2vo(
pillarPoint.getId(), pillarPoint.getName(), pillarPoint.getPositions(), pillarPoint.getId(), pillarPoint.getName(), pillarPoint.getPositions(),
pillarPoint.getFinishType(), pillarPoint.getFinishDate(), pillarPoint.getFinishType(), pillarPoint.getFinishDate(), pillarPoint.getStatus())
pillarPoint.getStatus(), pillarPoint.getProgressCategoryId(), pillarPoint.getProgressCategoryName())
).toList(); ).toList();
} }
// 立柱 // 立柱
@ -237,8 +246,7 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.list(); .list();
list = standColumnList.stream().map(standColumn -> BudDesignDrawingByBuildVo.obj2vo( list = standColumnList.stream().map(standColumn -> BudDesignDrawingByBuildVo.obj2vo(
standColumn.getId(), standColumn.getName(), standColumn.getPositions(), standColumn.getId(), standColumn.getName(), standColumn.getPositions(),
standColumn.getFinishType(), standColumn.getFinishDate(), standColumn.getFinishType(), standColumn.getFinishDate(), standColumn.getStatus())
standColumn.getStatus(), standColumn.getProgressCategoryId(), standColumn.getProgressCategoryName())
).toList(); ).toList();
} }
// 支架 // 支架
@ -249,12 +257,33 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.list(); .list();
list = supportFrameList.stream().map(supportFrame -> BudDesignDrawingByBuildVo.obj2vo( list = supportFrameList.stream().map(supportFrame -> BudDesignDrawingByBuildVo.obj2vo(
supportFrame.getId(), supportFrame.getName(), supportFrame.getPositions(), supportFrame.getId(), supportFrame.getName(), supportFrame.getPositions(),
supportFrame.getFinishType(), supportFrame.getFinishDate(), supportFrame.getFinishType(), supportFrame.getFinishDate(), supportFrame.getStatus())
supportFrame.getStatus(), supportFrame.getProgressCategoryId(), supportFrame.getProgressCategoryName())
).toList(); ).toList();
} }
case null -> throw new ServiceException("参数错误"); case null -> throw new ServiceException("参数错误");
} }
// 封装完成情况等信息
List<BudPlanFacility> facilityList = budPlanFacilityService.lambdaQuery()
.eq(BudPlanFacility::getFacilityType, buildType)
.in(BudPlanFacility::getProjectId, projectId)
.list();
if (CollUtil.isNotEmpty(facilityList)) {
Map<Long, BudPlanFacility> map = facilityList.stream()
.collect(Collectors.toMap(BudPlanFacility::getFacilityId, Function.identity(), (a, b) -> a));
list.forEach(item -> {
if (map.containsKey(item.getId())) {
BudPlanFacility planFacility = map.get(item.getId());
item.setPlanId(planFacility.getPlanId());
item.setStatus(planFacility.getStatus());
item.setFinishType(planFacility.getFinishMethod());
if (planFacility.getFinishTime() != null) {
item.setFinishDate(LocalDate.from(planFacility.getFinishTime()));
}
} else {
item.setStatus(BudFinishStatus.NOT_STARTED.getValue());
}
});
}
return list; return list;
} }
@ -307,7 +336,6 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
} }
private LambdaQueryWrapper<BudDesignDrawing> buildQueryWrapper(BudDesignDrawingBo bo) { private LambdaQueryWrapper<BudDesignDrawing> buildQueryWrapper(BudDesignDrawingBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BudDesignDrawing> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<BudDesignDrawing> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BudDesignDrawing::getId); lqw.orderByDesc(BudDesignDrawing::getId);
lqw.eq(bo.getProjectId() != null, BudDesignDrawing::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, BudDesignDrawing::getProjectId, bo.getProjectId());
@ -320,23 +348,6 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
return lqw; return lqw;
} }
/**
* 新增施工设计图
*
* @param bo 施工设计图
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BudDesignDrawingBo bo) {
BudDesignDrawing add = MapstructUtils.convert(bo, BudDesignDrawing.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/** /**
* 新增施工设施 * 新增施工设施
* *
@ -380,7 +391,7 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
.filter(item -> nameLayers.contains(item.getProperties().getLayer_name())) .filter(item -> nameLayers.contains(item.getProperties().getLayer_name()))
.toList(); .toList();
} }
BudDesignType value = BudDesignType.getEnumByValue(type); BudFacilityType value = BudFacilityType.getEnumByValue(type);
Boolean save; Boolean save;
switch (value) { switch (value) {
// 方阵 // 方阵
@ -435,7 +446,18 @@ public class BudDesignDrawingServiceImpl extends ServiceImpl<BudDesignDrawingMap
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) { if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 // 删除文件
List<BudDesignDrawing> budDesignDrawings = this.listByIds(ids);
for (BudDesignDrawing budDesignDrawing : budDesignDrawings) {
String filePath = budDesignDrawing.getFilePath();
File file = new File(filePath);
if (file.exists()) {
boolean delete = file.delete();
if (!delete) {
throw new ServiceException("删除文件失败");
}
}
}
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }

View File

@ -13,12 +13,14 @@ import org.dromara.build.domain.BudDesignDrawing;
import org.dromara.build.domain.BudInverter; import org.dromara.build.domain.BudInverter;
import org.dromara.build.domain.BudMatrix; import org.dromara.build.domain.BudMatrix;
import org.dromara.build.domain.bo.BudInverterBo; import org.dromara.build.domain.bo.BudInverterBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.geojson.BudFeature; import org.dromara.build.domain.geojson.BudFeature;
import org.dromara.build.domain.geojson.BudGeometry; import org.dromara.build.domain.geojson.BudGeometry;
import org.dromara.build.domain.vo.BudInverterVo; import org.dromara.build.domain.vo.BudInverterVo;
import org.dromara.build.mapper.BudInverterMapper; import org.dromara.build.mapper.BudInverterMapper;
import org.dromara.build.service.IBudInverterService; import org.dromara.build.service.IBudInverterService;
import org.dromara.build.service.IBudMatrixService; import org.dromara.build.service.IBudMatrixService;
import org.dromara.build.service.IBudPlanFacilityService;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -49,6 +51,9 @@ public class BudInverterServiceImpl extends ServiceImpl<BudInverterMapper, BudIn
@Resource @Resource
private IBudMatrixService budMatrixService; private IBudMatrixService budMatrixService;
@Resource
private IBudPlanFacilityService budPlanFacilityService;
/** /**
* 查询逆变器 * 查询逆变器
* *
@ -57,7 +62,9 @@ public class BudInverterServiceImpl extends ServiceImpl<BudInverterMapper, BudIn
*/ */
@Override @Override
public BudInverterVo queryById(Long id) { public BudInverterVo queryById(Long id) {
return baseMapper.selectVoById(id); BudInverterVo vo = baseMapper.selectVoById(id);
budPlanFacilityService.fillFinishInfo(vo, BudFacilityType.INVERTER);
return vo;
} }
/** /**
@ -71,6 +78,7 @@ public class BudInverterServiceImpl extends ServiceImpl<BudInverterMapper, BudIn
public TableDataInfo<BudInverterVo> queryPageList(BudInverterBo bo, PageQuery pageQuery) { public TableDataInfo<BudInverterVo> queryPageList(BudInverterBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudInverter> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudInverter> lqw = buildQueryWrapper(bo);
Page<BudInverterVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<BudInverterVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
budPlanFacilityService.fillFinishInfo(result.getRecords(), BudFacilityType.INVERTER);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -83,7 +91,9 @@ public class BudInverterServiceImpl extends ServiceImpl<BudInverterMapper, BudIn
@Override @Override
public List<BudInverterVo> queryList(BudInverterBo bo) { public List<BudInverterVo> queryList(BudInverterBo bo) {
LambdaQueryWrapper<BudInverter> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudInverter> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); List<BudInverterVo> voList = baseMapper.selectVoList(lqw);
budPlanFacilityService.fillFinishInfo(voList, BudFacilityType.INVERTER);
return voList;
} }
private LambdaQueryWrapper<BudInverter> buildQueryWrapper(BudInverterBo bo) { private LambdaQueryWrapper<BudInverter> buildQueryWrapper(BudInverterBo bo) {
@ -93,12 +103,6 @@ public class BudInverterServiceImpl extends ServiceImpl<BudInverterMapper, BudIn
lqw.eq(bo.getProjectId() != null, BudInverter::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, BudInverter::getProjectId, bo.getProjectId());
lqw.eq(bo.getMatrixId() != null, BudInverter::getMatrixId, bo.getMatrixId()); lqw.eq(bo.getMatrixId() != null, BudInverter::getMatrixId, bo.getMatrixId());
lqw.like(StringUtils.isNotBlank(bo.getName()), BudInverter::getName, bo.getName()); lqw.like(StringUtils.isNotBlank(bo.getName()), BudInverter::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getPositions()), BudInverter::getPositions, bo.getPositions());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BudInverter::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getFinishType()), BudInverter::getFinishType, bo.getFinishType());
lqw.eq(bo.getFinishDate() != null, BudInverter::getFinishDate, bo.getFinishDate());
lqw.eq(bo.getProgressCategoryId() != null, BudInverter::getProgressCategoryId, bo.getProgressCategoryId());
lqw.like(StringUtils.isNotBlank(bo.getProgressCategoryName()), BudInverter::getProgressCategoryName, bo.getProgressCategoryName());
return lqw; return lqw;
} }

View File

@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.build.domain.BudPillarPoint; import org.dromara.build.domain.BudPillarPoint;
import org.dromara.build.domain.bo.BudPillarPointBo; import org.dromara.build.domain.bo.BudPillarPointBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.vo.BudPillarPointVo; import org.dromara.build.domain.vo.BudPillarPointVo;
import org.dromara.build.mapper.BudPillarPointMapper; import org.dromara.build.mapper.BudPillarPointMapper;
import org.dromara.build.service.IBudPillarPointService; import org.dromara.build.service.IBudPillarPointService;
import org.dromara.build.service.IBudPlanFacilityService;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -31,6 +34,9 @@ import java.util.Map;
public class BudPillarPointServiceImpl extends ServiceImpl<BudPillarPointMapper, BudPillarPoint> public class BudPillarPointServiceImpl extends ServiceImpl<BudPillarPointMapper, BudPillarPoint>
implements IBudPillarPointService { implements IBudPillarPointService {
@Resource
private IBudPlanFacilityService budPlanFacilityService;
/** /**
* 查询光伏板桩点 * 查询光伏板桩点
* *
@ -39,7 +45,9 @@ public class BudPillarPointServiceImpl extends ServiceImpl<BudPillarPointMapper,
*/ */
@Override @Override
public BudPillarPointVo queryById(Long id) { public BudPillarPointVo queryById(Long id) {
return baseMapper.selectVoById(id); BudPillarPointVo vo = baseMapper.selectVoById(id);
budPlanFacilityService.fillFinishInfo(vo, BudFacilityType.PILLAR_POINT);
return vo;
} }
/** /**
@ -53,6 +61,7 @@ public class BudPillarPointServiceImpl extends ServiceImpl<BudPillarPointMapper,
public TableDataInfo<BudPillarPointVo> queryPageList(BudPillarPointBo bo, PageQuery pageQuery) { public TableDataInfo<BudPillarPointVo> queryPageList(BudPillarPointBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudPillarPoint> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudPillarPoint> lqw = buildQueryWrapper(bo);
Page<BudPillarPointVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<BudPillarPointVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
budPlanFacilityService.fillFinishInfo(result.getRecords(), BudFacilityType.PILLAR_POINT);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -65,7 +74,9 @@ public class BudPillarPointServiceImpl extends ServiceImpl<BudPillarPointMapper,
@Override @Override
public List<BudPillarPointVo> queryList(BudPillarPointBo bo) { public List<BudPillarPointVo> queryList(BudPillarPointBo bo) {
LambdaQueryWrapper<BudPillarPoint> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudPillarPoint> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); List<BudPillarPointVo> voList = baseMapper.selectVoList(lqw);
budPlanFacilityService.fillFinishInfo(voList, BudFacilityType.PILLAR_POINT);
return voList;
} }
private LambdaQueryWrapper<BudPillarPoint> buildQueryWrapper(BudPillarPointBo bo) { private LambdaQueryWrapper<BudPillarPoint> buildQueryWrapper(BudPillarPointBo bo) {

View File

@ -0,0 +1,286 @@
package org.dromara.build.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.dromara.build.domain.BudPlanFacility;
import org.dromara.build.domain.bo.BudPlanFacilityBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.enums.BudFinishStatus;
import org.dromara.build.domain.interfaces.BudFinishable;
import org.dromara.build.domain.vo.BudPlanFacilityVo;
import org.dromara.build.mapper.BudPlanFacilityMapper;
import org.dromara.build.service.IBudPlanFacilityService;
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.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 施工计划关联设施Service业务层处理
*
* @author lilemy
* @date 2025-12-23
*/
@RequiredArgsConstructor
@Service
public class BudPlanFacilityServiceImpl extends ServiceImpl<BudPlanFacilityMapper, BudPlanFacility>
implements IBudPlanFacilityService {
/**
* 查询施工计划关联设施
*
* @param id 主键
* @return 施工计划关联设施
*/
@Override
public BudPlanFacilityVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询施工计划关联设施列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 施工计划关联设施分页列表
*/
@Override
public TableDataInfo<BudPlanFacilityVo> queryPageList(BudPlanFacilityBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudPlanFacility> lqw = buildQueryWrapper(bo);
Page<BudPlanFacilityVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的施工计划关联设施列表
*
* @param bo 查询条件
* @return 施工计划关联设施列表
*/
@Override
public List<BudPlanFacilityVo> queryList(BudPlanFacilityBo bo) {
LambdaQueryWrapper<BudPlanFacility> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BudPlanFacility> buildQueryWrapper(BudPlanFacilityBo bo) {
LambdaQueryWrapper<BudPlanFacility> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BudPlanFacility::getId);
lqw.eq(bo.getPlanId() != null, BudPlanFacility::getPlanId, bo.getPlanId());
lqw.eq(StringUtils.isNotBlank(bo.getFacilityType()), BudPlanFacility::getFacilityType, bo.getFacilityType());
lqw.eq(bo.getFacilityId() != null, BudPlanFacility::getFacilityId, bo.getFacilityId());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BudPlanFacility::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getFinishMethod()), BudPlanFacility::getFinishMethod, bo.getFinishMethod());
lqw.eq(bo.getFinishTime() != null, BudPlanFacility::getFinishTime, bo.getFinishTime());
return lqw;
}
/**
* 新增施工计划关联设施
*
* @param bo 施工计划关联设施
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BudPlanFacilityBo bo) {
BudPlanFacility add = MapstructUtils.convert(bo, BudPlanFacility.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改施工计划关联设施
*
* @param bo 施工计划关联设施
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BudPlanFacilityBo bo) {
BudPlanFacility update = MapstructUtils.convert(bo, BudPlanFacility.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BudPlanFacility entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除施工计划关联设施信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 保存或更新
*
* @param projectId 项目 ID
* @param planId 计划 ID
* @param boList 列表
* @param isUpdate 是否更新
* @return 是否保存成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean saveOrUpdate(Long projectId, Long planId, List<BudPlanFacilityBo> boList, Boolean isUpdate) {
// 校验当前关联设施是否存在
List<Long> facilityIds = boList.stream().map(BudPlanFacilityBo::getFacilityId).toList();
Long count = this.lambdaQuery()
.in(BudPlanFacility::getFacilityId, facilityIds)
.count();
if (count > 0) {
throw new ServiceException("存在已添加计划的设施,请勿重复添加");
}
if (isUpdate) {
// 查询当前计划的关联设施
List<BudPlanFacility> oldList = this.lambdaQuery()
.eq(BudPlanFacility::getPlanId, planId)
.list();
Set<Long> oldIdSet = oldList.stream()
.map(BudPlanFacility::getFacilityId)
.collect(Collectors.toSet());
// 过滤掉已完成的设施
oldList = oldList.stream()
.filter(item -> !BudFinishStatus.COMPLETED.getValue().equals(item.getStatus()))
.toList();
// 获取需要保存的设施
List<BudPlanFacility> saveList = boList.stream()
.filter(item -> !oldIdSet.contains(item.getFacilityId()))
.map(item -> buildInit(projectId, planId, item)).toList();
// 获取需要删除的设施
List<BudPlanFacility> deleteList = oldList.stream()
.filter(item -> !facilityIds.contains(item.getFacilityId()))
.toList();
if (CollUtil.isNotEmpty(deleteList)) {
boolean b = this.removeBatchByIds(deleteList);
if (!b) {
throw new ServiceException("修改设施计划失败");
}
}
if (CollUtil.isNotEmpty(saveList)) {
boolean b = this.saveBatch(saveList);
if (!b) {
throw new ServiceException("修改设施计划失败");
}
}
} else {
// 新增,直接保存
List<BudPlanFacility> saveList = boList.stream()
.map(item -> buildInit(projectId, planId, item)).toList();
return this.saveBatch(saveList);
}
return true;
}
/**
* 填充完成信息
*
* @param target 目标对象
* @param designType 施工类型
*/
@Override
public <T extends BudFinishable> void fillFinishInfo(T target, BudFacilityType designType) {
if (target == null) {
return;
}
BudPlanFacility planFacility = this.lambdaQuery()
.eq(BudPlanFacility::getFacilityId, target.getId())
.eq(BudPlanFacility::getFacilityType, designType.getValue())
.last("limit 1")
.one();
if (planFacility != null) {
target.setStatus(planFacility.getStatus());
target.setFinishType(planFacility.getFinishMethod());
if (planFacility.getFinishTime() != null) {
target.setFinishDate(LocalDate.from(planFacility.getFinishTime()));
}
}
}
/**
* 填充完成信息
*
* @param list 列表
* @param designType 施工类型
*/
@Override
public <T extends BudFinishable> void fillFinishInfo(List<T> list, BudFacilityType designType) {
if (CollUtil.isEmpty(list)) {
return;
}
List<Long> ids = list.stream()
.map(BudFinishable::getId)
.toList();
List<BudPlanFacility> planFacilityList = this.lambdaQuery()
.in(BudPlanFacility::getFacilityId, ids)
.eq(BudPlanFacility::getFacilityType, designType.getValue())
.list();
if (CollUtil.isEmpty(planFacilityList)) {
list.forEach(v ->
v.setStatus(BudFinishStatus.NOT_STARTED.getValue())
);
return;
}
Map<Long, BudPlanFacility> facilityMap = planFacilityList.stream()
.collect(Collectors.toMap(BudPlanFacility::getFacilityId, v -> v));
list.forEach(v -> {
BudPlanFacility pf = facilityMap.get(v.getId());
if (pf != null) {
v.setStatus(pf.getStatus());
v.setFinishType(pf.getFinishMethod());
if (pf.getFinishTime() != null) {
v.setFinishDate(LocalDate.from(pf.getFinishTime()));
}
}
});
}
/**
* 构建初始数据
*
* @param projectId 项目 ID
* @param planId 计划 ID
* @param bo bo
* @return 初始数据
*/
private BudPlanFacility buildInit(Long projectId, Long planId, BudPlanFacilityBo bo) {
BudPlanFacility facility = new BudPlanFacility();
facility.setProjectId(projectId);
facility.setPlanId(planId);
facility.setFacilityType(bo.getFacilityType());
facility.setFacilityId(bo.getFacilityId());
facility.setStatus(BudFinishStatus.IN_PROGRESS.getValue());
return facility;
}
}

View File

@ -19,6 +19,8 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 光伏板基础信息(桩点、立柱、支架)服务实现类
*
* @author lilemy * @author lilemy
* @date 2025-12-19 14:54 * @date 2025-12-19 14:54
*/ */

View File

@ -13,11 +13,13 @@ import org.dromara.build.domain.BudDesignDrawing;
import org.dromara.build.domain.BudMatrix; import org.dromara.build.domain.BudMatrix;
import org.dromara.build.domain.BudSolarPanel; import org.dromara.build.domain.BudSolarPanel;
import org.dromara.build.domain.bo.BudSolarPanelBo; import org.dromara.build.domain.bo.BudSolarPanelBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.geojson.BudFeature; import org.dromara.build.domain.geojson.BudFeature;
import org.dromara.build.domain.geojson.BudProperties; import org.dromara.build.domain.geojson.BudProperties;
import org.dromara.build.domain.vo.BudSolarPanelVo; import org.dromara.build.domain.vo.BudSolarPanelVo;
import org.dromara.build.mapper.BudSolarPanelMapper; import org.dromara.build.mapper.BudSolarPanelMapper;
import org.dromara.build.service.IBudMatrixService; import org.dromara.build.service.IBudMatrixService;
import org.dromara.build.service.IBudPlanFacilityService;
import org.dromara.build.service.IBudSolarPanelService; import org.dromara.build.service.IBudSolarPanelService;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
@ -48,6 +50,9 @@ public class BudSolarPanelServiceImpl extends ServiceImpl<BudSolarPanelMapper, B
@Resource @Resource
private IBudMatrixService budMatrixService; private IBudMatrixService budMatrixService;
@Resource
private IBudPlanFacilityService budPlanFacilityService;
/** /**
* 查询光伏板 * 查询光伏板
* *
@ -56,7 +61,9 @@ public class BudSolarPanelServiceImpl extends ServiceImpl<BudSolarPanelMapper, B
*/ */
@Override @Override
public BudSolarPanelVo queryById(Long id) { public BudSolarPanelVo queryById(Long id) {
return baseMapper.selectVoById(id); BudSolarPanelVo vo = baseMapper.selectVoById(id);
budPlanFacilityService.fillFinishInfo(vo, BudFacilityType.SOLAR_PANEL);
return vo;
} }
/** /**
@ -70,6 +77,7 @@ public class BudSolarPanelServiceImpl extends ServiceImpl<BudSolarPanelMapper, B
public TableDataInfo<BudSolarPanelVo> queryPageList(BudSolarPanelBo bo, PageQuery pageQuery) { public TableDataInfo<BudSolarPanelVo> queryPageList(BudSolarPanelBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudSolarPanel> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudSolarPanel> lqw = buildQueryWrapper(bo);
Page<BudSolarPanelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<BudSolarPanelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
budPlanFacilityService.fillFinishInfo(result.getRecords(), BudFacilityType.SOLAR_PANEL);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -82,7 +90,9 @@ public class BudSolarPanelServiceImpl extends ServiceImpl<BudSolarPanelMapper, B
@Override @Override
public List<BudSolarPanelVo> queryList(BudSolarPanelBo bo) { public List<BudSolarPanelVo> queryList(BudSolarPanelBo bo) {
LambdaQueryWrapper<BudSolarPanel> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudSolarPanel> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); List<BudSolarPanelVo> voList = baseMapper.selectVoList(lqw);
budPlanFacilityService.fillFinishInfo(voList, BudFacilityType.SOLAR_PANEL);
return voList;
} }
private LambdaQueryWrapper<BudSolarPanel> buildQueryWrapper(BudSolarPanelBo bo) { private LambdaQueryWrapper<BudSolarPanel> buildQueryWrapper(BudSolarPanelBo bo) {

View File

@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.build.domain.BudStandColumn; import org.dromara.build.domain.BudStandColumn;
import org.dromara.build.domain.bo.BudStandColumnBo; import org.dromara.build.domain.bo.BudStandColumnBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.vo.BudStandColumnVo; import org.dromara.build.domain.vo.BudStandColumnVo;
import org.dromara.build.mapper.BudStandColumnMapper; import org.dromara.build.mapper.BudStandColumnMapper;
import org.dromara.build.service.IBudPlanFacilityService;
import org.dromara.build.service.IBudStandColumnService; import org.dromara.build.service.IBudStandColumnService;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -31,6 +34,9 @@ import java.util.Map;
public class BudStandColumnServiceImpl extends ServiceImpl<BudStandColumnMapper, BudStandColumn> public class BudStandColumnServiceImpl extends ServiceImpl<BudStandColumnMapper, BudStandColumn>
implements IBudStandColumnService { implements IBudStandColumnService {
@Resource
private IBudPlanFacilityService budPlanFacilityService;
/** /**
* 查询光伏板立柱 * 查询光伏板立柱
* *
@ -39,7 +45,9 @@ public class BudStandColumnServiceImpl extends ServiceImpl<BudStandColumnMapper,
*/ */
@Override @Override
public BudStandColumnVo queryById(Long id) { public BudStandColumnVo queryById(Long id) {
return baseMapper.selectVoById(id); BudStandColumnVo vo = baseMapper.selectVoById(id);
budPlanFacilityService.fillFinishInfo(vo, BudFacilityType.STAND_COLUMN);
return vo;
} }
/** /**
@ -53,6 +61,7 @@ public class BudStandColumnServiceImpl extends ServiceImpl<BudStandColumnMapper,
public TableDataInfo<BudStandColumnVo> queryPageList(BudStandColumnBo bo, PageQuery pageQuery) { public TableDataInfo<BudStandColumnVo> queryPageList(BudStandColumnBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudStandColumn> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudStandColumn> lqw = buildQueryWrapper(bo);
Page<BudStandColumnVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<BudStandColumnVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
budPlanFacilityService.fillFinishInfo(result.getRecords(), BudFacilityType.STAND_COLUMN);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -65,7 +74,9 @@ public class BudStandColumnServiceImpl extends ServiceImpl<BudStandColumnMapper,
@Override @Override
public List<BudStandColumnVo> queryList(BudStandColumnBo bo) { public List<BudStandColumnVo> queryList(BudStandColumnBo bo) {
LambdaQueryWrapper<BudStandColumn> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudStandColumn> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); List<BudStandColumnVo> voList = baseMapper.selectVoList(lqw);
budPlanFacilityService.fillFinishInfo(voList, BudFacilityType.STAND_COLUMN);
return voList;
} }
private LambdaQueryWrapper<BudStandColumn> buildQueryWrapper(BudStandColumnBo bo) { private LambdaQueryWrapper<BudStandColumn> buildQueryWrapper(BudStandColumnBo bo) {

View File

@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.build.domain.BudSupportFrame; import org.dromara.build.domain.BudSupportFrame;
import org.dromara.build.domain.bo.BudSupportFrameBo; import org.dromara.build.domain.bo.BudSupportFrameBo;
import org.dromara.build.domain.enums.BudFacilityType;
import org.dromara.build.domain.vo.BudSupportFrameVo; import org.dromara.build.domain.vo.BudSupportFrameVo;
import org.dromara.build.mapper.BudSupportFrameMapper; import org.dromara.build.mapper.BudSupportFrameMapper;
import org.dromara.build.service.IBudPlanFacilityService;
import org.dromara.build.service.IBudSupportFrameService; import org.dromara.build.service.IBudSupportFrameService;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -31,6 +34,9 @@ import java.util.Map;
public class BudSupportFrameServiceImpl extends ServiceImpl<BudSupportFrameMapper, BudSupportFrame> public class BudSupportFrameServiceImpl extends ServiceImpl<BudSupportFrameMapper, BudSupportFrame>
implements IBudSupportFrameService { implements IBudSupportFrameService {
@Resource
private IBudPlanFacilityService budPlanFacilityService;
/** /**
* 查询光伏板支架 * 查询光伏板支架
* *
@ -39,7 +45,9 @@ public class BudSupportFrameServiceImpl extends ServiceImpl<BudSupportFrameMappe
*/ */
@Override @Override
public BudSupportFrameVo queryById(Long id) { public BudSupportFrameVo queryById(Long id) {
return baseMapper.selectVoById(id); BudSupportFrameVo vo = baseMapper.selectVoById(id);
budPlanFacilityService.fillFinishInfo(vo, BudFacilityType.SUPPORT_FRAME);
return vo;
} }
/** /**
@ -53,6 +61,7 @@ public class BudSupportFrameServiceImpl extends ServiceImpl<BudSupportFrameMappe
public TableDataInfo<BudSupportFrameVo> queryPageList(BudSupportFrameBo bo, PageQuery pageQuery) { public TableDataInfo<BudSupportFrameVo> queryPageList(BudSupportFrameBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BudSupportFrame> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudSupportFrame> lqw = buildQueryWrapper(bo);
Page<BudSupportFrameVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<BudSupportFrameVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
budPlanFacilityService.fillFinishInfo(result.getRecords(), BudFacilityType.SUPPORT_FRAME);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -65,7 +74,9 @@ public class BudSupportFrameServiceImpl extends ServiceImpl<BudSupportFrameMappe
@Override @Override
public List<BudSupportFrameVo> queryList(BudSupportFrameBo bo) { public List<BudSupportFrameVo> queryList(BudSupportFrameBo bo) {
LambdaQueryWrapper<BudSupportFrame> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BudSupportFrame> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); List<BudSupportFrameVo> voList = baseMapper.selectVoList(lqw);
budPlanFacilityService.fillFinishInfo(voList, BudFacilityType.SUPPORT_FRAME);
return voList;
} }
private LambdaQueryWrapper<BudSupportFrame> buildQueryWrapper(BudSupportFrameBo bo) { private LambdaQueryWrapper<BudSupportFrame> buildQueryWrapper(BudSupportFrameBo bo) {

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.build.mapper.BudConstructionPlanMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.build.mapper.BudPlanFacilityMapper">
</mapper>