Compare commits

...

3 Commits

Author SHA1 Message Date
LHD_HY 00df5b16a5 Merge remote-tracking branch 'origin/master' 2025-10-22 15:58:18 +08:00
LHD_HY fc0820d0fc 模块引用 2025-10-22 15:56:03 +08:00
LHD_HY d9f34640f5 业绩库增删改查 2025-10-22 15:54:18 +08:00
7 changed files with 582 additions and 1 deletions

View File

@ -0,0 +1,88 @@
package com.bonus.web.controller.enterprise;
import com.bonus.common.core.domain.AjaxResult;
import com.bonus.common.core.page.TableDataInfo;
import com.bonus.mainDataBase.domain.Performance;
import com.bonus.mainDataBase.service.PerformanceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 企业业绩控制器
* 处理前端关于业绩的增删改查请求
*/
@RestController
@RequestMapping("/performance") // 接口统一前缀
public class PerformanceController {
@Autowired
private PerformanceService performanceService;
/**
* 查询业绩列表带分页和条件筛选
*/
@GetMapping("/list")
public TableDataInfo list(Performance performance) {
// 调用Service查询列表实际项目中通常包含分页参数由Service处理分页
List<Performance> list = performanceService.selectPerformanceList(performance);
// 封装分页结果TableDataInfo为通用分页响应对象包含总条数列表数据等
return new TableDataInfo(list, list.size());
}
/**
* 根据ID查询业绩详情
*/
@GetMapping(value = "/{performanceId}")
public AjaxResult getInfo(@PathVariable("performanceId") Long performanceId) {
// 调用Service查询详情
Performance performance = performanceService.selectPerformanceById(performanceId);
return AjaxResult.success(performance); // 封装成功响应返回业绩数据
}
/**
* 新增业绩
*/
@PostMapping(value = "/add")
public AjaxResult add(@Validated @RequestBody Performance performance) {
try {
// 调用Service新增返回影响行数
int rows = performanceService.insertPerformance(performance);
return rows > 0 ? AjaxResult.success("新增成功") : AjaxResult.error("新增失败");
} catch (RuntimeException e) {
// 捕获业务异常如项目名称重复返回错误信息
return AjaxResult.error(e.getMessage());
}
}
/**
* 修改业绩
*/
@PostMapping(value = "/edit")
public AjaxResult edit(@Validated @RequestBody Performance performance) {
try {
// 调用Service修改
int rows = performanceService.updatePerformance(performance);
return rows > 0 ? AjaxResult.success("修改成功") : AjaxResult.error("修改失败");
} catch (RuntimeException e) {
return AjaxResult.error(e.getMessage());
}
}
/**
* 删除业绩
*/
@PostMapping("delete/{performanceId}")
public AjaxResult remove(@PathVariable Long performanceId) {
try {
int rows = performanceService.deletePerformanceById(performanceId);
return rows > 0 ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
} catch (RuntimeException e) {
return AjaxResult.error(e.getMessage());
}
}
}

View File

@ -59,6 +59,12 @@
<artifactId>bonus-system</artifactId>
</dependency>
<!-- 数据处理模块-->
<dependency>
<groupId>com.bonus</groupId>
<artifactId>bonus-mainDatabase</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,125 @@
package com.bonus.mainDataBase.domain;
import com.bonus.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 企业业绩实体类
* 对应表tb_enterprise_performance
*/
@Data
public class Performance extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 业绩id主键
*/
private Long performanceId;
/**
* 企业id关联企业表
*/
private Long enterpriseId;
/**
* 项目名称
*/
private String proName;
/**
* 合同签订时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date contractSigningTime;
/**
* 合同金额
*/
private String contractAmount; // 若需计算
/**
* 建设地点
*/
private String constructionSite;
/**
* 建设单位
*/
private String constructionUnit;
/**
* 建设单位联系方式
*/
private String constructionPhone;
/**
* 开工时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startTime;
/**
* 竣工时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date completionTime;
/**
* 项目经理
*/
private String projectManager;
/**
* 项目类型字典表配置
*/
private String proType;
/**
* 电压等级字典表配置
*/
private String voltageLevel;
/**
* 项目概况
*/
private String projectOverview; // 数据库为text类型对应Java String
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人id
*/
private Long createUserId;
/**
* 创建人姓名
*/
private String createUserName;
/**
* 修改时间
*/
private Date updateTime;
/**
* 修改人id
*/
private Long updateUserId;
/**
* 修改人姓名
*/
private String updateUserName;
/**
* 删除状态0未删除1删除
*/
private String delFlag;
}

View File

@ -0,0 +1,54 @@
package com.bonus.mainDataBase.mapper;
import com.bonus.mainDataBase.domain.Performance;
import java.util.List;
/**
* 企业业绩数据访问层接口
* 对应表tb_enterprise_performance
*/
public interface PerformanceMapper {
/**
* 查询企业业绩列表带条件筛选
* @param enterprisePerformance 筛选条件包含项目名称企业ID等
* @return 业绩列表
*/
List<Performance> selectperformanceList(Performance enterprisePerformance);
/**
* 根据业绩ID查询详情
* @param performanceId 业绩主键ID
* @return 企业业绩对象
*/
Performance selectperformanceById(Long performanceId);
/**
* 校验项目名称唯一性
* @param enterprisePerformance 包含项目名称和业绩ID编辑时用于排除自身
* @return 存在数量0不存在1存在
*/
int checkProNameUnique(Performance enterprisePerformance);
/**
* 新增企业业绩
* @param enterprisePerformance 企业业绩对象
* @return 影响行数
*/
int insertperformance(Performance enterprisePerformance);
/**
* 编辑企业业绩
* @param enterprisePerformance 企业业绩对象包含更新字段和主键
* @return 影响行数
*/
int updateperformance(Performance enterprisePerformance);
/**
* 逻辑删除企业业绩更新del_flag为1
* @param performanceId 业绩主键ID
* @return 影响行数
*/
int deleteperformanceById(Long performanceId);
}

View File

@ -0,0 +1,53 @@
package com.bonus.mainDataBase.service;
import com.bonus.mainDataBase.domain.Performance;
import java.util.List;
/**
* 企业业绩服务层接口
*/
public interface PerformanceService {
/**
* 查询企业业绩列表带条件筛选
* @param performance 筛选条件
* @return 业绩列表
*/
List<Performance> selectPerformanceList(Performance performance);
/**
* 根据ID查询业绩详情
* @param performanceId 业绩ID
* @return 业绩对象
*/
Performance selectPerformanceById(Long performanceId);
/**
* 新增业绩
* @param performance 业绩对象
* @return 结果1成功0失败
*/
int insertPerformance(Performance performance);
/**
* 修改业绩
* @param performance 业绩对象
* @return 结果1成功0失败
*/
int updatePerformance(Performance performance);
/**
* 逻辑删除业绩
* @param performanceId 业绩ID
* @return 结果1成功0失败
*/
int deletePerformanceById(Long performanceId);
/**
* 校验项目名称是否唯一
* @param performance 业绩对象含项目名称和ID
* @return 结果true唯一false不唯一
*/
boolean checkProNameUnique(Performance performance);
}

View File

@ -0,0 +1,113 @@
package com.bonus.mainDataBase.service.impl;
import com.bonus.mainDataBase.domain.Performance;
import com.bonus.mainDataBase.mapper.PerformanceMapper;
import com.bonus.mainDataBase.service.PerformanceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 企业业绩服务层实现类
*/
@Service
public class PerformanceServiceImpl implements PerformanceService {
@Autowired
private PerformanceMapper performanceMapper;
/**
* 查询业绩列表
*/
@Override
public List<Performance> selectPerformanceList(Performance performance) {
// 调用Mapper查询返回结果
return performanceMapper.selectperformanceList(performance);
}
/**
* 根据ID查询业绩详情
*/
@Override
public Performance selectPerformanceById(Long performanceId) {
// 校验ID是否为空
if (performanceId == null || performanceId <= 0) {
throw new IllegalArgumentException("业绩ID不能为空或无效");
}
return performanceMapper.selectperformanceById(performanceId);
}
/**
* 新增业绩
*/
@Override
@Transactional // 事务控制确保新增操作要么全成要么全失败
public int insertPerformance(Performance performance) {
// 1. 校验项目名称唯一性
if (!checkProNameUnique(performance)) {
throw new RuntimeException("项目名称已存在,请更换");
}
// 2. 补充默认值如创建人创建时间若前端未传
// 示例若需自动填充创建人可从上下文获取当前登录用户ID和名称
// performance.setCreateUserId(getCurrentUserId());
// performance.setCreateUserName(getCurrentUserName());
// 3. 调用Mapper执行新增
return performanceMapper.insertperformance(performance);
}
/**
* 修改业绩
*/
@Override
@Transactional
public int updatePerformance(Performance performance) {
// 1. 校验ID是否存在
Performance oldPerformance = selectPerformanceById(performance.getPerformanceId());
if (oldPerformance == null) {
throw new RuntimeException("业绩信息不存在或已删除");
}
// 2. 校验项目名称唯一性排除自身
if (!checkProNameUnique(performance)) {
throw new RuntimeException("项目名称已存在,请更换");
}
// 3. 补充修改人信息如从上下文获取
// performance.setUpdateUserId(getCurrentUserId());
// performance.setUpdateUserName(getCurrentUserName());
// 4. 调用Mapper执行更新
return performanceMapper.updateperformance(performance);
}
/**
* 逻辑删除业绩
*/
@Override
@Transactional
public int deletePerformanceById(Long performanceId) {
// 1. 校验ID是否存在
Performance performance = selectPerformanceById(performanceId);
if (performance == null) {
throw new RuntimeException("业绩信息不存在或已删除");
}
// 2. 调用Mapper执行逻辑删除
return performanceMapper.deleteperformanceById(performanceId);
}
/**
* 校验项目名称是否唯一
*/
@Override
public boolean checkProNameUnique(Performance performance) {
// 调用Mapper查询同名记录数量
int count = performanceMapper.checkProNameUnique(performance);
// count == 0 表示唯一
return count == 0;
}
}

View File

@ -0,0 +1,142 @@
<?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.bonus.mainDataBase.mapper.PerformanceMapper">
<!-- 结果集映射 -->
<resultMap type="Performance" id="performanceResult">
<id property="performanceId" column="performance_id" />
<result property="enterpriseId" column="enterprise_id" />
<result property="proName" column="pro_name" />
<result property="contractSigningTime" column="contract_signing_time" />
<result property="contractAmount" column="contract_amount" />
<result property="constructionSite" column="construction_site" />
<result property="constructionUnit" column="construction_unit" />
<result property="constructionPhone" column="construction_phone" />
<result property="startTime" column="start_time" />
<result property="completionTime" column="completion_time" />
<result property="projectManager" column="project_manager" />
<result property="proType" column="pro_type" />
<result property="voltageLevel" column="voltage_level" />
<result property="projectOverview" column="project_overview" />
<result property="createTime" column="create_time" />
<result property="createUserId" column="create_user_id" />
<result property="createUserName" column="create_user_name" />
<result property="updateTime" column="update_time" />
<result property="updateUserId" column="update_user_id" />
<result property="updateUserName" column="update_user_name" />
<result property="delFlag" column="del_flag" />
</resultMap>
<!-- 基础查询SQL片段 -->
<sql id="selectperformance">
select
performance_id, enterprise_id, pro_name, contract_signing_time,
contract_amount, construction_site, construction_unit, construction_phone,
start_time, completion_time, project_manager, pro_type, voltage_level,
project_overview, create_time, create_user_id, create_user_name,
update_time, update_user_id, update_user_name, del_flag
from tb_enterprise_performance
where del_flag = '0'
</sql>
<!-- 1. 列表查询 -->
<select id="selectperformanceList" parameterType="Performance" resultMap="performanceResult">
<include refid="selectperformance"/>
<!-- 企业ID筛选 -->
<if test="enterpriseId != null and enterpriseId != 0">
AND enterprise_id = #{enterpriseId}
</if>
<!-- 项目名称模糊查询 -->
<if test="proName != null and proName != ''">
AND pro_name like concat('%', #{proName}, '%')
</if>
<!-- 项目类型筛选 -->
<if test="proType != null and proType != ''">
AND pro_type = #{proType}
</if>
<!-- 电压等级筛选 -->
<if test="voltageLevel != null and voltageLevel != ''">
AND voltage_level = #{voltageLevel}
</if>
<!-- 项目经理模糊查询 -->
<if test="projectManager != null and projectManager != ''">
AND project_manager like concat('%', #{projectManager}, '%')
</if>
<!-- 合同签订时间范围查询(假设传入的是字符串格式,如'2024-01-01' -->
<if test="contractSigningTime != null and contractSigningTime != ''">
AND contract_signing_time = #{contractSigningTime}
</if>
</select>
<!-- 2. 详情查询根据业绩ID -->
<select id="selectperformanceById" parameterType="Long" resultMap="performanceResult">
<include refid="selectperformance"/>
AND performance_id = #{performanceId}
</select>
<!-- 3. 校验项目名称唯一性(用于新增/编辑时去重) -->
<select id="checkProNameUnique" parameterType="Performance" resultType="Integer">
select count(1) from tb_enterprise_performance
where del_flag = '0'
and pro_name = #{proName}
<if test="performanceId != null and performanceId != 0">
AND performance_id != #{performanceId} -- 编辑时排除自身
</if>
</select>
<!-- 4. 新增业绩 -->
<insert id="insertperformance" parameterType="Performance" useGeneratedKeys="true" keyProperty="performanceId">
insert into tb_enterprise_performance(
enterprise_id, pro_name, contract_signing_time, contract_amount,
construction_site, construction_unit, construction_phone, start_time,
completion_time, project_manager, pro_type, voltage_level, project_overview,
create_user_id, create_user_name, create_time
)values(
#{enterpriseId}, #{proName}, #{contractSigningTime}, #{contractAmount},
#{constructionSite}, #{constructionUnit}, #{constructionPhone}, #{startTime},
#{completionTime}, #{projectManager}, #{proType}, #{voltageLevel}, #{projectOverview},
#{createUserId}, #{createUserName}, sysdate()
)
</insert>
<!-- 5. 编辑业绩 -->
<update id="updateperformance" parameterType="Performance">
update tb_enterprise_performance
<set>
<if test="enterpriseId != null and enterpriseId != 0">enterprise_id = #{enterpriseId},</if>
<if test="proName != null and proName != ''">pro_name = #{proName},</if>
<if test="contractSigningTime != null ">contract_signing_time = #{contractSigningTime},</if>
<if test="contractAmount != null and contractAmount != ''">contract_amount = #{contractAmount},</if>
<if test="constructionSite != null and constructionSite != ''">construction_site = #{constructionSite},</if>
<if test="constructionUnit != null and constructionUnit != ''">construction_unit = #{constructionUnit},</if>
<if test="constructionPhone != null and constructionPhone != ''">construction_phone = #{constructionPhone},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="completionTime != null">completion_time = #{completionTime},</if>
<if test="projectManager != null and projectManager != ''">project_manager = #{projectManager},</if>
<if test="proType != null and proType != ''">pro_type = #{proType},</if>
<if test="voltageLevel != null and voltageLevel != ''">voltage_level = #{voltageLevel},</if>
<if test="projectOverview != null and projectOverview != ''">project_overview = #{projectOverview},</if>
<if test="updateUserId != null and updateUserId != 0">update_user_id = #{updateUserId},</if>
<if test="updateUserName != null and updateUserName != ''">update_user_name = #{updateUserName},</if>
update_time = sysdate() -- 自动更新修改时间
</set>
where performance_id = #{performanceId}
</update>
<!-- 6. 删除业绩(逻辑删除) -->
<delete id="deleteperformanceById" parameterType="Long">
update tb_enterprise_performance
set del_flag = '1', -- 标记为删除
update_time = sysdate()
where performance_id = #{performanceId}
</delete>
</mapper>