diff --git a/core/src/main/java/com/dite/znpt/domain/entity/ProjectBudgetInfoEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/ProjectBudgetInfoEntity.java new file mode 100644 index 0000000..7b5e4bb --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/entity/ProjectBudgetInfoEntity.java @@ -0,0 +1,61 @@ +package com.dite.znpt.domain.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dite.znpt.domain.AuditableEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息表实体类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("project_budget_info") +@ApiModel(value="ProjectBudgetInfoEntity对象", description="项目预算信息表") +public class ProjectBudgetInfoEntity extends AuditableEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 514469235298737990L; + + @ExcelProperty("主键") + @ApiModelProperty("主键") + @TableId(value = "budget_id", type = IdType.ASSIGN_ID) + private String budgetId; + + @ExcelProperty("项目id") + @ApiModelProperty("项目id") + @TableField("project_id") + private String projectId; + + @ExcelProperty("预算名称") + @ApiModelProperty("预算名称") + @TableField("budget_name") + private String budgetName; + + @ExcelProperty("预算类型") + @ApiModelProperty("预算类型") + @TableField("budget_type") + private String budgetType; + + @ExcelProperty("预算金额(万元)") + @ApiModelProperty("预算金额(万元)") + @TableField("budget_amount") + private Double budgetAmount; + + @ExcelProperty("预算说明") + @ApiModelProperty("预算说明") + @TableField("budget_desc") + private String budgetDesc; +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoImportReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoImportReq.java new file mode 100644 index 0000000..18d93a7 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoImportReq.java @@ -0,0 +1,38 @@ +package com.dite.znpt.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息表导入请求类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ProjectBudgetInfo导入请求对象", description="项目预算信息表") +public class ProjectBudgetInfoImportReq implements Serializable { + + @Serial + private static final long serialVersionUID = 580212651388155611L; + + + @ExcelProperty(value = "项目名称") + private String projectName; + + @ExcelProperty(value = "预算名称") + private String budgetName; + + @ExcelProperty(value = "预算类型") + private String budgetType; + + @ExcelProperty(value = "预算金额(万元)") + private Double budgetAmount; + + @ExcelProperty(value = "预算说明") + private String budgetDesc; +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoListReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoListReq.java new file mode 100644 index 0000000..047b5e9 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoListReq.java @@ -0,0 +1,44 @@ +package com.dite.znpt.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息请求实体 + */ +@Data +@ApiModel("项目预算信息列表请求实体") +public class ProjectBudgetInfoListReq implements Serializable { + + @Serial + private static final long serialVersionUID = 539751666379021505L; + + @ApiModelProperty("查询关键字") + private String keyword; + + @ApiModelProperty("项目预算信息Id") + private String budgetId; + + @ApiModelProperty("项目id") + private String projectId; + + @ApiModelProperty("预算名称") + private String budgetName; + + @ApiModelProperty("预算类型") + private String budgetType; + + @ApiModelProperty("预算金额(万元)") + private Double budgetAmount; + + @ApiModelProperty("预算说明") + private String budgetDesc; + +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoListResp.java b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoListResp.java new file mode 100644 index 0000000..af0e31b --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoListResp.java @@ -0,0 +1,19 @@ +package com.dite.znpt.domain.vo; + +import com.dite.znpt.domain.entity.ProjectBudgetInfoEntity; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息列表响应实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("项目预算信息列表响应实体") +public class ProjectBudgetInfoListResp extends ProjectBudgetInfoEntity { + +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoReq.java new file mode 100644 index 0000000..60caa06 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoReq.java @@ -0,0 +1,41 @@ +package com.dite.znpt.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息表请求类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ProjectBudgetInfo请求对象", description="项目预算信息表") +public class ProjectBudgetInfoReq implements Serializable { + + @Serial + private static final long serialVersionUID = 778519049897573879L; + + @ApiModelProperty("项目id") + private String projectId; + + @ApiModelProperty("预算名称") + private String budgetName; + + @ApiModelProperty("预算类型") + private String budgetType; + + @ApiModelProperty("预算金额(万元)") + private Double budgetAmount; + + @ApiModelProperty("预算说明") + private String budgetDesc; + + @ApiModelProperty("附件id") + private String attachId; +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoResp.java b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoResp.java new file mode 100644 index 0000000..70b2d3f --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ProjectBudgetInfoResp.java @@ -0,0 +1,22 @@ +package com.dite.znpt.domain.vo; + +import com.dite.znpt.domain.entity.ProjectBudgetInfoEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息响应实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("项目预算信息响应实体") +public class ProjectBudgetInfoResp extends ProjectBudgetInfoEntity { + + @ApiModelProperty("预算类型描述") + private String budgetTypeDesc; +} + diff --git a/core/src/main/java/com/dite/znpt/enums/AttachBusinessTypeEnum.java b/core/src/main/java/com/dite/znpt/enums/AttachBusinessTypeEnum.java index 096af63..4e008b3 100644 --- a/core/src/main/java/com/dite/znpt/enums/AttachBusinessTypeEnum.java +++ b/core/src/main/java/com/dite/znpt/enums/AttachBusinessTypeEnum.java @@ -17,6 +17,8 @@ public enum AttachBusinessTypeEnum { INSURANCE_FILE("insurance", "保险文件"), MODEL_FILE("model", "模型文件"), DEFECT_MARK_PIC("defect_mark_pic", "缺陷标注图片"), + REPORT("report", "报告"), + PROJECT_BUDGE("project_budge", "预算文件"), ; private final String code; private final String desc; diff --git a/core/src/main/java/com/dite/znpt/enums/BudgeTypeEnum.java b/core/src/main/java/com/dite/znpt/enums/BudgeTypeEnum.java new file mode 100644 index 0000000..8eeff96 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/enums/BudgeTypeEnum.java @@ -0,0 +1,52 @@ +package com.dite.znpt.enums; + +import cn.hutool.json.JSONObject; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: gaoxiong + * @Date: 2025/5/7 21:22 + * @Description: + */ +@Getter +public enum BudgeTypeEnum { + PROCUREMENT("procurement", "采购"), + ARTIFICIAL("artificial", "人工"), + MANAGEMENT_FEE("managementFee", "管理费"), + ; + + private final String code; + private final String desc; + + BudgeTypeEnum(String code, String desc){ + this.code = code; + this.desc = desc; + } + + public static BudgeTypeEnum getByCode(String code){ + for (BudgeTypeEnum e : BudgeTypeEnum.values() ) { + if(e.code.equals(code)){ + return e; + } + } + return null; + } + + public static String getDescByCode(String code){ + BudgeTypeEnum e = getByCode(code); + return null == e ? null : e.desc; + } + + public static List listAll(){ + List list = new ArrayList<>(BudgeTypeEnum.values().length); + for (BudgeTypeEnum e : BudgeTypeEnum.values() ) { + JSONObject jsonObject = new JSONObject(); + jsonObject.set(e.code, e.desc); + list.add(jsonObject); + } + return list; + } +} diff --git a/core/src/main/java/com/dite/znpt/mapper/ProjectBudgetInfoMapper.java b/core/src/main/java/com/dite/znpt/mapper/ProjectBudgetInfoMapper.java new file mode 100644 index 0000000..2dcb73d --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/ProjectBudgetInfoMapper.java @@ -0,0 +1,20 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.ProjectBudgetInfoEntity; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListReq; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListResp; +import com.dite.znpt.domain.vo.ProjectBudgetInfoResp; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息表数据库访问层 + */ +public interface ProjectBudgetInfoMapper extends BaseMapper { + List queryBySelective(ProjectBudgetInfoListReq projectBudgetInfoReq); + List detailByProjectId(String projectId); +} + diff --git a/core/src/main/java/com/dite/znpt/service/ProjectBudgetInfoService.java b/core/src/main/java/com/dite/znpt/service/ProjectBudgetInfoService.java new file mode 100644 index 0000000..72aa0f0 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/ProjectBudgetInfoService.java @@ -0,0 +1,48 @@ +package com.dite.znpt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.ProjectBudgetInfoEntity; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListReq; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListResp; +import com.dite.znpt.domain.vo.ProjectBudgetInfoReq; +import com.dite.znpt.domain.vo.ProjectBudgetInfoResp; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息表服务接口 + */ +public interface ProjectBudgetInfoService extends IService { + + /** + * 功能描述:查询项目预算信息列表 + * + * @param projectBudgetInfoReq 项目预算信息 + * @return {@link List }<{@link ProjectBudgetInfoListResp }> + * @author huise23 + * @date 2025/07/17 21:58 + **/ + List selectList(ProjectBudgetInfoListReq projectBudgetInfoReq); + + /** + * 功能描述:根据项目id获取项目预算信息列表 + * + * @param projectId 项目id + * @return {@link List }<{@link ProjectBudgetInfoListResp }> + * @author huise23 + * @date 2025/07/17 21:58 + **/ + List detailByProjectId(String projectId); + + /** + * 功能描述:新增项目预算信息 + * + * @param projectBudgetInfoReq 项目预算信息 + * @author huise23 + * @date 2025/07/17 21:58 + **/ + void saveData(List projectBudgetInfoReq); +} + diff --git a/core/src/main/java/com/dite/znpt/service/impl/ProjectBudgetInfoServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ProjectBudgetInfoServiceImpl.java new file mode 100644 index 0000000..5380782 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/ProjectBudgetInfoServiceImpl.java @@ -0,0 +1,92 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.domain.entity.ProjectBudgetInfoEntity; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListReq; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListResp; +import com.dite.znpt.domain.vo.ProjectBudgetInfoReq; +import com.dite.znpt.domain.vo.ProjectBudgetInfoResp; +import com.dite.znpt.enums.AttachBusinessTypeEnum; +import com.dite.znpt.enums.BudgeTypeEnum; +import com.dite.znpt.mapper.ProjectBudgetInfoMapper; +import com.dite.znpt.service.AttachInfoService; +import com.dite.znpt.service.ProjectBudgetInfoService; +import com.dite.znpt.util.PageUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/17 21:58 + * @Description: 项目预算信息表服务实现类 + */ +@Service +@RequiredArgsConstructor +public class ProjectBudgetInfoServiceImpl extends ServiceImpl implements ProjectBudgetInfoService { + + private final AttachInfoService attachInfoService; + + /** + * 功能描述:查询项目预算信息列表 + * + * @param projectBudgetInfoReq 项目预算信息信息 + * @return {@link List }<{@link ProjectBudgetInfoResp }> + * @author huise23 + * @date 2025/07/17 21:58 + **/ + @Override + public List selectList(ProjectBudgetInfoListReq projectBudgetInfoReq) { + PageUtil.startPage(); + List projectBudgetInfoList= this.baseMapper.queryBySelective(projectBudgetInfoReq); + projectBudgetInfoList.forEach(resp -> { + + }); + return projectBudgetInfoList; + } + + /** + * 功能描述:根据项目id获取项目预算信息列表 + * + * @param projectId 项目id + * @return {@link List }<{@link ProjectBudgetInfoListResp }> + * @author huise23 + * @date 2025/07/17 21:58 + **/ + @Override + public List detailByProjectId(String projectId) { + List projectBudgetInfoList= this.baseMapper.detailByProjectId(projectId); + projectBudgetInfoList.forEach(resp -> { + resp.setBudgetTypeDesc(BudgeTypeEnum.getDescByCode(resp.getBudgetType())); + }); + return projectBudgetInfoList; + } + + /** + * 功能描述:新增项目预算信息 + * + * @param projectBudgetInfoReq 项目预算信息 + * @author huise23 + * @date 2025/07/17 21:58 + **/ + @Override + @Transactional(rollbackFor = Exception.class) + public void saveData(List projectBudgetInfoReq) { + List list = new ArrayList<>(); + for (ProjectBudgetInfoReq req : projectBudgetInfoReq) { + ProjectBudgetInfoEntity info = BeanUtil.copyProperties(req, ProjectBudgetInfoEntity.class); + info.setBudgetId(IdUtil.simpleUUID()); + attachInfoService.updateBusinessIdByAttachIds(info.getBudgetId(), ListUtil.of(req.getAttachId()), AttachBusinessTypeEnum.PROJECT_BUDGE); + list.add(info); + } + lambdaUpdate().eq(ProjectBudgetInfoEntity::getProjectId, list.get(0).getProjectId()).remove(); + baseMapper.insert(list); + } + +} diff --git a/core/src/main/resources/mapper/ProjectBudgetInfoMapper.xml b/core/src/main/resources/mapper/ProjectBudgetInfoMapper.xml new file mode 100644 index 0000000..5425a2b --- /dev/null +++ b/core/src/main/resources/mapper/ProjectBudgetInfoMapper.xml @@ -0,0 +1,49 @@ + + + + + + a.budget_id, a.project_id, a.budget_name, a.budget_type, + a.budget_amount, a.budget_desc, a.update_by, a.create_time, + a.create_by, a.update_time + + + + + + + diff --git a/web/src/main/java/com/dite/znpt/web/controller/ProjectBudgetInfoController.java b/web/src/main/java/com/dite/znpt/web/controller/ProjectBudgetInfoController.java new file mode 100644 index 0000000..3771898 --- /dev/null +++ b/web/src/main/java/com/dite/znpt/web/controller/ProjectBudgetInfoController.java @@ -0,0 +1,48 @@ +package com.dite.znpt.web.controller; + + +import com.dite.znpt.domain.PageResult; +import com.dite.znpt.domain.Result; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListReq; +import com.dite.znpt.domain.vo.ProjectBudgetInfoListResp; +import com.dite.znpt.domain.vo.ProjectBudgetInfoReq; +import com.dite.znpt.domain.vo.ProjectBudgetInfoResp; +import com.dite.znpt.service.ProjectBudgetInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/17 21:55 + */ +@Api(tags = "项目预算信息") +@RestController +@RequestMapping("/project-budget-info") +public class ProjectBudgetInfoController { + @Resource + private ProjectBudgetInfoService projectBudgetInfoService; + + @ApiOperation(value = "获取项目预算信息列表", httpMethod = "GET") + @GetMapping("/list") + public PageResult list(ProjectBudgetInfoListReq projectBudgetInfoReq) { + return PageResult.ok(projectBudgetInfoService.selectList(projectBudgetInfoReq)); + } + + @ApiOperation(value = "根据项目id获取项目预算信息列表", httpMethod = "GET") + @GetMapping("/detail/{projectId}") + public PageResult detailByProjectId(@PathVariable String projectId) { + return PageResult.ok(projectBudgetInfoService.detailByProjectId(projectId)); + } + + @ApiOperation(value = "保存项目预算信息", httpMethod = "POST") + @PostMapping + public Result add(@RequestBody List projectBudgetInfoReq) { + projectBudgetInfoService.saveData(projectBudgetInfoReq); + return Result.ok(); + } +} +