business/src/main/java/com/ycl/domain/entity/ProjectInfoWinUnit.java
New file @@ -0,0 +1,39 @@ 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-18 */ @Data @TableName("t_project_info_win_unit") public class ProjectInfoWinUnit extends AbsEntity { private static final long serialVersionUID = 1L; @TableField("project_info_id") /** 项目id */ private Long projectInfoId; @TableField("win_unit") /** 中标单位 */ private String winUnit; @TableField("contacts") /** 联系人 */ private String contacts; @TableField("phone") /** 联系方式 */ private String phone; } business/src/main/java/com/ycl/domain/entity/ProjectInfoYearPlan.java
New file @@ -0,0 +1,40 @@ package com.ycl.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import com.ycl.system.domain.base.AbsEntity; import lombok.Data; /** * 项目年度投资计划 * * @author xp * @since 2025-02-18 */ @Data @TableName("t_project_info_year_plan") public class ProjectInfoYearPlan extends AbsEntity { private static final long serialVersionUID = 1L; @TableField("project_info_id") /** 项目id */ private Long projectInfoId; @TableField("year") /** 年份 */ private String year; @TableField("year_total_money") /** 年度投资金额 */ private BigDecimal yearTotalMoney; @TableField("project_image_progress") /** 工程形象进度 */ private String projectImageProgress; } business/src/main/java/com/ycl/domain/form/ProjectInfoWinUnitForm.java
New file @@ -0,0 +1,50 @@ 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.ProjectInfoWinUnit; 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-18 */ @Data @ApiModel(value = "ProjectInfoWinUnit表单", description = "项目中标单位表单") public class ProjectInfoWinUnitForm 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 winUnit; @NotBlank(message = "联系人不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("联系人") private String contacts; @NotBlank(message = "联系方式不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("联系方式") private String phone; public static ProjectInfoWinUnit getEntityByForm(@NonNull ProjectInfoWinUnitForm form, ProjectInfoWinUnit entity) { if(entity == null) { entity = new ProjectInfoWinUnit(); } BeanUtils.copyProperties(form, entity); return entity; } } business/src/main/java/com/ycl/domain/form/ProjectInfoYearPlanForm.java
New file @@ -0,0 +1,50 @@ 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.ProjectInfoYearPlan; 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-18 */ @Data @ApiModel(value = "ProjectInfoYearPlan表单", description = "项目年度投资计划表单") public class ProjectInfoYearPlanForm 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 year; @NotNull(message = "年度投资金额不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("年度投资金额") private BigDecimal yearTotalMoney; @NotBlank(message = "工程形象进度不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("工程形象进度") private String projectImageProgress; public static ProjectInfoYearPlan getEntityByForm(@NonNull ProjectInfoYearPlanForm form, ProjectInfoYearPlan entity) { if(entity == null) { entity = new ProjectInfoYearPlan(); } BeanUtils.copyProperties(form, entity); return entity; } } business/src/main/java/com/ycl/domain/vo/ProjectInfoWinUnitVO.java
New file @@ -0,0 +1,47 @@ package com.ycl.domain.vo; import com.ycl.system.domain.base.AbsVo; import com.ycl.domain.entity.ProjectInfoWinUnit; 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-18 */ @Data @ApiModel(value = "项目中标单位响应数据", description = "项目中标单位响应数据") public class ProjectInfoWinUnitVO extends AbsVo { /** 项目id */ @ApiModelProperty("项目id") private Long projectInfoId; /** 中标单位 */ @ApiModelProperty("中标单位") private String winUnit; /** 联系人 */ @ApiModelProperty("联系人") private String contacts; /** 联系方式 */ @ApiModelProperty("联系方式") private String phone; public static ProjectInfoWinUnitVO getVoByEntity(@NonNull ProjectInfoWinUnit entity, ProjectInfoWinUnitVO vo) { if(vo == null) { vo = new ProjectInfoWinUnitVO(); } BeanUtils.copyProperties(entity, vo); return vo; } } business/src/main/java/com/ycl/domain/vo/ProjectInfoYearPlanVO.java
New file @@ -0,0 +1,47 @@ package com.ycl.domain.vo; import com.ycl.system.domain.base.AbsVo; import com.ycl.domain.entity.ProjectInfoYearPlan; 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-18 */ @Data @ApiModel(value = "项目年度投资计划响应数据", description = "项目年度投资计划响应数据") public class ProjectInfoYearPlanVO extends AbsVo { /** 项目id */ @ApiModelProperty("项目id") private Long projectInfoId; /** 年份 */ @ApiModelProperty("年份") private String year; /** 年度投资金额 */ @ApiModelProperty("年度投资金额") private BigDecimal yearTotalMoney; /** 工程形象进度 */ @ApiModelProperty("工程形象进度") private String projectImageProgress; public static ProjectInfoYearPlanVO getVoByEntity(@NonNull ProjectInfoYearPlan entity, ProjectInfoYearPlanVO vo) { if(vo == null) { vo = new ProjectInfoYearPlanVO(); } BeanUtils.copyProperties(entity, vo); return vo; } } business/src/main/java/com/ycl/mapper/ProjectInfoWinUnitMapper.java
New file @@ -0,0 +1,29 @@ package com.ycl.mapper; import com.ycl.domain.entity.ProjectInfoWinUnit; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.domain.vo.ProjectInfoWinUnitVO; import com.ycl.domain.form.ProjectInfoWinUnitForm; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * 项目中标单位 Mapper 接口 * * @author xp * @since 2025-02-18 */ @Mapper public interface ProjectInfoWinUnitMapper extends BaseMapper<ProjectInfoWinUnit> { /** * id查找项目中标单位 * @param id * @return */ ProjectInfoWinUnitVO getById(Integer id); } business/src/main/java/com/ycl/mapper/ProjectInfoYearPlanMapper.java
New file @@ -0,0 +1,29 @@ package com.ycl.mapper; import com.ycl.domain.entity.ProjectInfoYearPlan; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.domain.vo.ProjectInfoYearPlanVO; import com.ycl.domain.form.ProjectInfoYearPlanForm; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * 项目年度投资计划 Mapper 接口 * * @author xp * @since 2025-02-18 */ @Mapper public interface ProjectInfoYearPlanMapper extends BaseMapper<ProjectInfoYearPlan> { /** * id查找项目年度投资计划 * @param id * @return */ ProjectInfoYearPlanVO getById(Integer id); } business/src/main/java/com/ycl/service/ProjectInfoWinUnitService.java
New file @@ -0,0 +1,57 @@ package com.ycl.service; import com.ycl.domain.entity.ProjectInfoWinUnit; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.common.base.Result; import com.ycl.domain.form.ProjectInfoWinUnitForm; import java.util.List; /** * 项目中标单位 服务类 * * @author xp * @since 2025-02-18 */ public interface ProjectInfoWinUnitService extends IService<ProjectInfoWinUnit> { /** * 添加 * @param form * @return */ Result add(ProjectInfoWinUnitForm form); /** * 修改 * @param form * @return */ Result update(ProjectInfoWinUnitForm form); /** * 批量删除 * @param ids * @return */ Result remove(List<String> ids); /** * id删除 * @param id * @return */ Result removeById(String id); /** * 根据id查找 * @param id * @return */ Result detail(Integer id); /** * 列表 * @return */ Result all(); } business/src/main/java/com/ycl/service/ProjectInfoYearPlanService.java
New file @@ -0,0 +1,57 @@ package com.ycl.service; import com.ycl.domain.entity.ProjectInfoYearPlan; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.common.base.Result; import com.ycl.domain.form.ProjectInfoYearPlanForm; import java.util.List; /** * 项目年度投资计划 服务类 * * @author xp * @since 2025-02-18 */ public interface ProjectInfoYearPlanService extends IService<ProjectInfoYearPlan> { /** * 添加 * @param form * @return */ Result add(ProjectInfoYearPlanForm form); /** * 修改 * @param form * @return */ Result update(ProjectInfoYearPlanForm form); /** * 批量删除 * @param ids * @return */ Result remove(List<String> ids); /** * id删除 * @param id * @return */ Result removeById(String id); /** * 根据id查找 * @param id * @return */ Result detail(Integer id); /** * 列表 * @return */ Result all(); } business/src/main/java/com/ycl/service/impl/ProjectInfoWinUnitServiceImpl.java
New file @@ -0,0 +1,106 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.domain.entity.ProjectInfoWinUnit; import com.ycl.mapper.ProjectInfoWinUnitMapper; import com.ycl.service.ProjectInfoWinUnitService; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.domain.form.ProjectInfoWinUnitForm; import com.ycl.domain.vo.ProjectInfoWinUnitVO; 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-18 */ @Service @RequiredArgsConstructor public class ProjectInfoWinUnitServiceImpl extends ServiceImpl<ProjectInfoWinUnitMapper, ProjectInfoWinUnit> implements ProjectInfoWinUnitService { private final ProjectInfoWinUnitMapper projectInfoWinUnitMapper; /** * 添加 * @param form * @return */ @Override public Result add(ProjectInfoWinUnitForm form) { ProjectInfoWinUnit entity = ProjectInfoWinUnitForm.getEntityByForm(form, null); baseMapper.insert(entity); return Result.ok("添加成功"); } /** * 修改 * @param form * @return */ @Override public Result update(ProjectInfoWinUnitForm form) { ProjectInfoWinUnit 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("删除成功"); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(Integer id) { ProjectInfoWinUnitVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List<ProjectInfoWinUnit> entities = baseMapper.selectList(null); List<ProjectInfoWinUnitVO> vos = entities.stream() .map(entity -> ProjectInfoWinUnitVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } } business/src/main/java/com/ycl/service/impl/ProjectInfoYearPlanServiceImpl.java
New file @@ -0,0 +1,106 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.domain.entity.ProjectInfoYearPlan; import com.ycl.mapper.ProjectInfoYearPlanMapper; import com.ycl.service.ProjectInfoYearPlanService; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.domain.form.ProjectInfoYearPlanForm; import com.ycl.domain.vo.ProjectInfoYearPlanVO; 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-18 */ @Service @RequiredArgsConstructor public class ProjectInfoYearPlanServiceImpl extends ServiceImpl<ProjectInfoYearPlanMapper, ProjectInfoYearPlan> implements ProjectInfoYearPlanService { private final ProjectInfoYearPlanMapper projectInfoYearPlanMapper; /** * 添加 * @param form * @return */ @Override public Result add(ProjectInfoYearPlanForm form) { ProjectInfoYearPlan entity = ProjectInfoYearPlanForm.getEntityByForm(form, null); baseMapper.insert(entity); return Result.ok("添加成功"); } /** * 修改 * @param form * @return */ @Override public Result update(ProjectInfoYearPlanForm form) { ProjectInfoYearPlan 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("删除成功"); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(Integer id) { ProjectInfoYearPlanVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List<ProjectInfoYearPlan> entities = baseMapper.selectList(null); List<ProjectInfoYearPlanVO> vos = entities.stream() .map(entity -> ProjectInfoYearPlanVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } } business/src/main/resources/mapper/ProjectInfoWinUnitMapper.xml
New file @@ -0,0 +1,33 @@ <?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.ProjectInfoWinUnitMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProjectInfoWinUnitVO"> <result column="project_info_id" property="projectInfoId" /> <result column="win_unit" property="winUnit" /> <result column="contacts" property="contacts" /> <result column="phone" property="phone" /> </resultMap> <select id="getById" resultMap="BaseResultMap"> SELECT TPIWU.project_info_id, TPIWU.win_unit, TPIWU.contacts, TPIWU.phone, TPIWU.id FROM t_project_info_win_unit TPIWU WHERE TPIWU.id = #{id} AND TPIWU.deleted = 0 </select> </mapper> business/src/main/resources/mapper/ProjectInfoYearPlanMapper.xml
New file @@ -0,0 +1,33 @@ <?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.ProjectInfoYearPlanMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProjectInfoYearPlanVO"> <result column="project_info_id" property="projectInfoId" /> <result column="year" property="year" /> <result column="year_total_money" property="yearTotalMoney" /> <result column="project_image_progress" property="projectImageProgress" /> </resultMap> <select id="getById" resultMap="BaseResultMap"> SELECT TPIYP.project_info_id, TPIYP.year, TPIYP.year_total_money, TPIYP.project_image_progress, TPIYP.id FROM t_project_info_year_plan TPIYP WHERE TPIYP.id = #{id} AND TPIYP.deleted = 0 </select> </mapper>