xiangpei
2025-02-26 b37eac632faf7f26b6f947d8b6792db8828fba6f
工程管理
9个文件已添加
550 ■■■■■ 已修改文件
business/src/main/java/com/ycl/controller/ProjectEngineeringController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/entity/ProjectEngineering.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/form/ProjectEngineeringForm.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/query/ProjectEngineeringQuery.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/ProjectEngineeringVO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/mapper/ProjectEngineeringMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/ProjectEngineeringService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectEngineeringServiceImpl.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/resources/mapper/ProjectEngineeringMapper.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/controller/ProjectEngineeringController.java
New file
@@ -0,0 +1,83 @@
package com.ycl.controller;
import com.ycl.common.group.Update;
import com.ycl.common.group.Add;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import lombok.RequiredArgsConstructor;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotEmpty;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ycl.service.ProjectEngineeringService;
import com.ycl.common.base.Result;
import com.ycl.domain.form.ProjectEngineeringForm;
import com.ycl.domain.query.ProjectEngineeringQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
 * 项目工程 前端控制器
 *
 * @author xp
 * @since 2025-02-26
 */
@Validated
@RequiredArgsConstructor
@Api(value = "项目工程", tags = "项目工程管理")
@RestController
@RequestMapping("/project-engineering")
public class ProjectEngineeringController {
    private final ProjectEngineeringService projectEngineeringService;
    @PostMapping
    @ApiOperation(value = "添加", notes = "添加")
//    @PreAuthorize("@ss.hasPermi('projectEngineering:add')")
    public Result add(@RequestBody @Validated(Add.class) ProjectEngineeringForm form) {
        return projectEngineeringService.add(form);
    }
    @PutMapping
    @ApiOperation(value = "修改", notes = "修改")
//    @PreAuthorize("@ss.hasPermi('projectEngineering:edit')")
    public Result update(@RequestBody @Validated(Update.class) ProjectEngineeringForm form) {
        return projectEngineeringService.update(form);
    }
    @DeleteMapping("/{id}")
    @ApiOperation(value = "ID删除", notes = "ID删除")
//    @PreAuthorize("@ss.hasPermi('projectEngineering:del')")
    public Result removeById(@PathVariable("id") String id) {
        return projectEngineeringService.removeById(id);
    }
    @DeleteMapping("/batch")
    @ApiOperation(value = "批量删除", notes = "批量删除")
//    @PreAuthorize("@ss.hasPermi('projectEngineering:del:batch')")
    public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) {
        return projectEngineeringService.remove(ids);
    }
    @GetMapping("/page")
    @ApiOperation(value = "分页", notes = "分页")
//    @PreAuthorize("@ss.hasPermi('projectEngineering:page')")
    public Result page(ProjectEngineeringQuery query) {
        return projectEngineeringService.page(query);
    }
    @GetMapping("/{id}")
    @ApiOperation(value = "详情", notes = "详情")
//    @PreAuthorize("@ss.hasPermi('projectEngineering:detail')")
    public Result detail(@PathVariable("id") Integer id) {
        return projectEngineeringService.detail(id);
    }
    @GetMapping("/list")
//    @PreAuthorize("@ss.hasPermi('projectEngineering:list')")
    @ApiOperation(value = "列表", notes = "列表")
    public Result list() {
        return projectEngineeringService.all();
    }
}
business/src/main/java/com/ycl/domain/entity/ProjectEngineering.java
New file
@@ -0,0 +1,43 @@
package com.ycl.domain.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import com.ycl.system.domain.base.AbsEntity;
import lombok.Data;
/**
 * 项目工程
 *
 * @author xp
 * @since 2025-02-26
 */
@Data
@TableName("t_project_engineering")
public class ProjectEngineering extends AbsEntity {
    private static final long serialVersionUID = 1L;
    @TableField("project_info_id")
    /** 项目id */
    private Long projectInfoId;
    @TableField("project_name")
    /** 工程名称 */
    private String projectName;
    @TableField("project_type")
    /** 项目推进类型 */
    private String projectType;
    @TableField("investment_amount")
    /** 投资额 */
    private String investmentAmount;
    @TableField("status")
    /** 状态 */
    private String status;
}
business/src/main/java/com/ycl/domain/form/ProjectEngineeringForm.java
New file
@@ -0,0 +1,54 @@
package com.ycl.domain.form;
import com.ycl.common.group.Update;
import com.ycl.common.group.Add;
import com.ycl.system.domain.base.AbsForm;
import com.ycl.domain.entity.ProjectEngineering;
import org.springframework.beans.BeanUtils;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.springframework.lang.NonNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * 项目工程表单
 *
 * @author xp
 * @since 2025-02-26
 */
@Data
@ApiModel(value = "ProjectEngineering表单", description = "项目工程表单")
public class ProjectEngineeringForm extends AbsForm {
    @NotNull(message = "项目id不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目id")
    private Long projectInfoId;
    @NotBlank(message = "工程名称不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("工程名称")
    private String projectName;
    @NotBlank(message = "项目推进类型不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目推进类型")
    private String projectType;
    @NotBlank(message = "投资额不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("投资额")
    private String investmentAmount;
    @NotBlank(message = "状态不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("状态")
    private String status;
    public static ProjectEngineering getEntityByForm(@NonNull ProjectEngineeringForm form, ProjectEngineering entity) {
        if(entity == null) {
          entity = new ProjectEngineering();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
business/src/main/java/com/ycl/domain/query/ProjectEngineeringQuery.java
New file
@@ -0,0 +1,34 @@
package com.ycl.domain.query;
import com.ycl.system.domain.base.AbsQuery;
import java.util.List;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 项目工程查询
 *
 * @author xp
 * @since 2025-02-26
 */
@Data
@ApiModel(value = "ProjectEngineering查询参数", description = "项目工程查询参数")
public class ProjectEngineeringQuery extends AbsQuery {
    @ApiModelProperty("主项目")
    private Long projectInfoId;
    @ApiModelProperty("工程名")
    private String projectName;
    @ApiModelProperty("开工状态")
    private String status;
    @ApiModelProperty("流程推进类型")
    private String projectType;
}
business/src/main/java/com/ycl/domain/vo/ProjectEngineeringVO.java
New file
@@ -0,0 +1,54 @@
package com.ycl.domain.vo;
import com.ycl.system.domain.base.AbsVo;
import com.ycl.domain.entity.ProjectEngineering;
import java.util.List;
import org.springframework.lang.NonNull;
import org.springframework.beans.BeanUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * 项目工程展示
 *
 * @author xp
 * @since 2025-02-26
 */
@Data
@ApiModel(value = "项目工程响应数据", description = "项目工程响应数据")
public class ProjectEngineeringVO extends AbsVo {
    /** 项目id */
    @ApiModelProperty("项目id")
    private Long projectInfoId;
    @ApiModelProperty("主项目名称")
    private String projectInfoName;
    /** 工程名称 */
    @ApiModelProperty("工程名称")
    private String projectName;
    /** 项目推进类型 */
    @ApiModelProperty("项目推进类型")
    private String projectType;
    /** 投资额 */
    @ApiModelProperty("投资额")
    private String investmentAmount;
    /** 状态 */
    @ApiModelProperty("状态")
    private String status;
    public static ProjectEngineeringVO getVoByEntity(@NonNull ProjectEngineering entity, ProjectEngineeringVO vo) {
        if(vo == null) {
            vo = new ProjectEngineeringVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
}
business/src/main/java/com/ycl/mapper/ProjectEngineeringMapper.java
New file
@@ -0,0 +1,34 @@
package com.ycl.mapper;
import com.ycl.domain.entity.ProjectEngineering;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.domain.vo.ProjectEngineeringVO;
import com.ycl.domain.form.ProjectEngineeringForm;
import com.ycl.domain.query.ProjectEngineeringQuery;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * 项目工程 Mapper 接口
 *
 * @author xp
 * @since 2025-02-26
 */
@Mapper
public interface ProjectEngineeringMapper extends BaseMapper<ProjectEngineering> {
    /**
     * id查找项目工程
     * @param id
     * @return
     */
    ProjectEngineeringVO getById(Integer id);
    /**
    *  分页
    */
    IPage getPage(IPage page, @Param("query") ProjectEngineeringQuery query);
}
business/src/main/java/com/ycl/service/ProjectEngineeringService.java
New file
@@ -0,0 +1,65 @@
package com.ycl.service;
import com.ycl.domain.entity.ProjectEngineering;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.common.base.Result;
import com.ycl.domain.form.ProjectEngineeringForm;
import com.ycl.domain.query.ProjectEngineeringQuery;
import java.util.List;
/**
 * 项目工程 服务类
 *
 * @author xp
 * @since 2025-02-26
 */
public interface ProjectEngineeringService extends IService<ProjectEngineering> {
    /**
     * 添加
     * @param form
     * @return
     */
    Result add(ProjectEngineeringForm form);
    /**
     * 修改
     * @param form
     * @return
     */
    Result update(ProjectEngineeringForm form);
    /**
     * 批量删除
     * @param ids
     * @return
     */
    Result remove(List<String> ids);
    /**
     * id删除
     * @param id
     * @return
     */
    Result removeById(String id);
    /**
     * 分页查询
     * @param query
     * @return
     */
    Result page(ProjectEngineeringQuery query);
    /**
     * 根据id查找
     * @param id
     * @return
     */
    Result detail(Integer id);
    /**
     * 列表
     * @return
     */
    Result all();
}
business/src/main/java/com/ycl/service/impl/ProjectEngineeringServiceImpl.java
New file
@@ -0,0 +1,119 @@
package com.ycl.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.domain.entity.ProjectEngineering;
import com.ycl.mapper.ProjectEngineeringMapper;
import com.ycl.service.ProjectEngineeringService;
import com.ycl.common.base.Result;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.domain.form.ProjectEngineeringForm;
import com.ycl.domain.vo.ProjectEngineeringVO;
import com.ycl.domain.query.ProjectEngineeringQuery;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import com.ycl.framework.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.util.Assert;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 项目工程 服务实现类
 *
 * @author xp
 * @since 2025-02-26
 */
@Service
@RequiredArgsConstructor
public class ProjectEngineeringServiceImpl extends ServiceImpl<ProjectEngineeringMapper, ProjectEngineering> implements ProjectEngineeringService {
    private final ProjectEngineeringMapper projectEngineeringMapper;
    /**
     * 添加
     * @param form
     * @return
     */
    @Override
    public Result add(ProjectEngineeringForm form) {
        ProjectEngineering entity = ProjectEngineeringForm.getEntityByForm(form, null);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
    /**
     * 修改
     * @param form
     * @return
     */
    @Override
    public Result update(ProjectEngineeringForm form) {
        ProjectEngineering entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
    /**
     * 批量删除
     * @param ids
     * @return
     */
    @Override
    public Result remove(List<String> ids) {
        baseMapper.deleteBatchIds(ids);
        return Result.ok("删除成功");
    }
    /**
     * id删除
     * @param id
     * @return
     */
    @Override
    public Result removeById(String id) {
        baseMapper.deleteById(id);
        return Result.ok("删除成功");
    }
    /**
     * 分页查询
     * @param query
     * @return
     */
    @Override
    public Result page(ProjectEngineeringQuery query) {
        IPage<ProjectEngineeringVO> page = PageUtil.getPage(query, ProjectEngineeringVO.class);
        baseMapper.getPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
     * 根据id查找
     * @param id
     * @return
     */
    @Override
    public Result detail(Integer id) {
        ProjectEngineeringVO vo = baseMapper.getById(id);
        Assert.notNull(vo, "记录不存在");
        return Result.ok().data(vo);
    }
    /**
     * 列表
     * @return
     */
    @Override
    public Result all() {
        List<ProjectEngineering> entities = baseMapper.selectList(null);
        List<ProjectEngineeringVO> vos = entities.stream()
                .map(entity -> ProjectEngineeringVO.getVoByEntity(entity, null))
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
}
business/src/main/resources/mapper/ProjectEngineeringMapper.xml
New file
@@ -0,0 +1,64 @@
<?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="com.ycl.mapper.ProjectEngineeringMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProjectEngineeringVO">
        <result column="project_info_id" property="projectInfoId" />
        <result column="projectInfoName" property="projectInfoName" />
        <result column="project_name" property="projectName" />
        <result column="project_type" property="projectType" />
        <result column="investment_amount" property="investmentAmount" />
        <result column="status" property="status" />
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            TPE.project_info_id,
            TPE.project_name,
            TPE.project_type,
            TPE.investment_amount,
            TPE.status,
            TPE.id
        FROM
            t_project_engineering TPE
        WHERE
            TPE.id = #{id} AND TPE.deleted = 0
    </select>
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            TPE.project_info_id,
            TPE.project_name,
            TPE.project_type,
            TPE.investment_amount,
            TPE.status,
            TPE.id,
            TPI.project_name as projectInfoName
        FROM
            t_project_engineering TPE
                INNER JOIN t_project_info TPI ON TPI.id = TPE.project_info_id AND TPI.deleted = 0
        WHERE
            TPE.deleted = 0
            <if test="query.projectName != null and query.projectName != ''">
                AND TPE.project_name LIKE concat('%', #{query.projectName}, '%')
            </if>
            <if test="query.projectInfoId != null">
                AND TPE.project_info_id = #{query.projectInfoId}
            </if>
            <if test="query.status != null and query.status != ''">
                AND TPE.status = #{query.status}
            </if>
            <if test="query.projectType != null and query.projectType != ''">
                AND TPE.project_type = #{query.projectType}
            </if>
    </select>
</mapper>