gongchunyi
4 天以前 e8d08ebdd187f99f793cd839038dd5c392cdfbd8
fix: 修改人员薪资接口
已修改8个文件
314 ■■■■ 文件已修改
src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/compensationperformance/mapper/CompensationPerformanceMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/compensationperformance/service/CompensationPerformanceService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/compensationperformance/service/impl/CompensationPerformanceServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/compensationperformance/CompensationPerformanceMapper.xml 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffOnJobMapper.xml 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
@@ -40,11 +40,14 @@
    @Autowired
    private CompensationPerformanceService compensationPerformanceService;
    @Autowired
    private StaffOnJobMapper staffOnJobMapper;
    @GetMapping("/listPage")
    @Log(title = "薪酬绩效-分页查询", businessType = BusinessType.OTHER)
    @ApiOperation("薪酬绩效-分页查询")
    public AjaxResult listPage(Page page, CompensationPerformance compensationPerformance){
        IPage<CompensationPerformance> listPage = compensationPerformanceService.listPage(page, compensationPerformance);
    public AjaxResult listPage(Page page, String staffName, String payDateStr) {
        IPage<CompensationPerformance> listPage = compensationPerformanceService.listPage(page, staffName, payDateStr);
        return AjaxResult.success(listPage);
    }
@@ -52,7 +55,7 @@
    @Log(title = "薪酬绩效-添加", businessType = BusinessType.INSERT)
    @ApiOperation("薪酬绩效-添加")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult add(@RequestBody CompensationPerformance compensationPerformance){
    public AjaxResult add(@RequestBody CompensationPerformance compensationPerformance) {
        boolean save = compensationPerformanceService.save(compensationPerformance);
        return save ? AjaxResult.success("添加成功") : AjaxResult.error("添加失败");
    }
@@ -61,7 +64,7 @@
    @Log(title = "薪酬绩效-修改", businessType = BusinessType.UPDATE)
    @ApiOperation("薪酬绩效-修改")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult update(@RequestBody CompensationPerformance compensationPerformance){
    public AjaxResult update(@RequestBody CompensationPerformance compensationPerformance) {
        boolean update = compensationPerformanceService.updateById(compensationPerformance);
        return update ? AjaxResult.success("修改成功") : AjaxResult.error("修改失败");
    }
@@ -70,17 +73,17 @@
    @Log(title = "薪酬绩效-删除", businessType = BusinessType.DELETE)
    @ApiOperation("薪酬绩效-删除")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult delete(@RequestBody List<Long> ids){
        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
    public AjaxResult delete(@RequestBody List<Long> ids) {
        if (CollectionUtils.isEmpty(ids)) return AjaxResult.error("请传入要删除的ID");
        boolean delete = compensationPerformanceService.removeBatchByIds(ids);
        return delete ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
    }
    @Log(title = "导出薪资管理列表", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response ) {
    public void export(HttpServletResponse response) {
        List<CompensationPerformance> list = compensationPerformanceService.list();
        ExcelUtil<CompensationPerformance> util = new ExcelUtil<CompensationPerformance>(CompensationPerformance.class);
        ExcelUtil<CompensationPerformance> util = new ExcelUtil<>(CompensationPerformance.class);
        util.exportExcel(response, list, "导出薪资管理列表");
    }
@@ -92,18 +95,15 @@
        util.exportExcel(response, list, "下载薪资管理列表模板");
    }
    @Autowired
    private SysUserMapper sysUserMapper;
    @Log(title = "导入薪资管理列表", businessType = BusinessType.IMPORT)
    @PostMapping("/importData")
    public AjaxResult importData(MultipartFile file) throws Exception {
        ExcelUtil<CompensationPerformance> util = new ExcelUtil<>(CompensationPerformance.class);
        List<CompensationPerformance> list = util.importExcel(file.getInputStream());
        list.forEach(item->{
            SysUser staffOnJob = sysUserMapper.selectUserByNickName(item.getName());
            if(staffOnJob!=null){
                item.setStaffId(staffOnJob.getUserId());
        list.forEach(item -> {
            StaffOnJob staffOnJob = staffOnJobMapper.selectStaffByNickName(item.getStaffName());
            if (staffOnJob != null) {
                item.setStaffId(staffOnJob.getId());
            }
        });
        boolean b = compensationPerformanceService.saveBatch(list);
src/main/java/com/ruoyi/compensationperformance/mapper/CompensationPerformanceMapper.java
@@ -15,9 +15,10 @@
    /**
     * 分页查询
     *
     * @param page
     * @param compensationPerformance
     * @param page       分页
     * @param staffName  员工姓名
     * @param payDateStr 薪资日期
     * @return
     */
    IPage<CompensationPerformance> listPage(Page page,@Param("req") CompensationPerformance compensationPerformance);
    IPage<CompensationPerformance> listPage(Page page, @Param("staffName") String staffName, @Param("payDateStr") String payDateStr);
}
src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java
@@ -8,193 +8,156 @@
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
/**
 * 薪酬绩效明细
 *
 * @author :yys
 * @date : 2025/8/8 9:40
 * @date : 2025/8/8
 */
@Data
@TableName("compensation_performance")
@ApiModel
public class CompensationPerformance {
@ApiModel("薪酬绩效明细")
public class CompensationPerformance implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("主键")
    private Long id;
    /**
     * 用户id
     * 员工id
     */
    @ApiModelProperty("用户id")
    @ApiModelProperty("员工id")
    private Long staffId;
    /**
     * 姓名
     * 员工姓名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    @ApiModelProperty("员工姓名")
    @Excel(name = "员工姓名")
    @TableField(exist = false)
    private String staffName;
    /**
     * 薪资月份(查询)
     * 岗位名称
     */
    @ApiModelProperty("薪资月份(查询)")
    @ApiModelProperty("岗位名称")
    @Excel(name = "岗位名称")
    @TableField(exist = false)
    private String payDateStr;
    private String postName;
    /**
     * 部门名称
     */
    @ApiModelProperty("部门名称")
    @Excel(name = "部门名称")
    @TableField(exist = false)
    private String deptName;
    /**
     * 薪资月份
     */
    @ApiModelProperty("薪资月份")
    @Excel(name = "薪资月份", dateFormat = "yyyy-MM", width = 30)
    @Excel(name = "月份", dateFormat = "yyyy-MM", width = 20)
    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM")
    private Date payDate;
    /**
     * 应出勤天数
     */
    @ApiModelProperty("应出勤天数")
//    @Excel(name = "应出勤天数")
    private BigDecimal shouldAttendedNum;
    /**
     * 实际出勤天数
     */
    @ApiModelProperty("实际出勤天数")
//    @Excel(name = "实际出勤天数")
    private BigDecimal actualAttendedNum;
    /**
     * 基本工资
     */
    @ApiModelProperty("基本工资")
//    @Excel(name = "基本工资")
    @Excel(name = "基本工资")
    private BigDecimal basicSalary;
    /**
     * 岗位工资
     * 计件工资
     */
    @ApiModelProperty("岗位工资")
//    @Excel(name = "岗位工资")
    private BigDecimal postSalary;
    @ApiModelProperty("计件工资")
    @Excel(name = "计件工资")
    private BigDecimal pieceworkSalary;
    /**
     * 入离职缺勤扣款
     * 计时工资
     */
    @ApiModelProperty("入离职缺勤扣款")
//    @Excel(name = "入离职缺勤扣款")
    private BigDecimal deductionAbsenteeism;
    @ApiModelProperty("计时工资")
    @Excel(name = "计时工资")
    private BigDecimal hourlySalary;
    /**
     * 病假扣款
     * 其他收入
     */
    @ApiModelProperty("病假扣款")
//    @Excel(name = "病假扣款")
    private BigDecimal sickLeaveDeductions;
    /**
     * 事假扣款
     */
    @ApiModelProperty("事假扣款")
//    @Excel(name = "事假扣款")
    private BigDecimal deductionPersonalLeave;
    /**
     * 忘记打卡扣款
     */
    @ApiModelProperty("忘记打卡扣款")
//    @Excel(name = "忘记打卡扣款")
    private BigDecimal forgetClockDeduct;
    /**
     * 绩效得分
     */
    @ApiModelProperty("绩效得分")
//    @Excel(name = "绩效得分")
    private BigDecimal performanceScore;
    /**
     * 绩效工资
     */
    @ApiModelProperty("绩效工资")
//    @Excel(name = "绩效工资")
    private BigDecimal performancePay;
    /**
     * 应发合计
     */
    @ApiModelProperty("应发合计")
//    @Excel(name = "应发合计")
    private BigDecimal payableWages;
    @ApiModelProperty("其他收入")
    @Excel(name = "其他收入")
    private BigDecimal otherIncome;
    /**
     * 社保个人
     */
    @ApiModelProperty("社保个人")
//    @Excel(name = "社保个人")
    @Excel(name = "社保个人")
    private BigDecimal socialSecurityIndividuals;
    /**
     * 社保公司
     */
    @ApiModelProperty("社保公司")
//    @Excel(name = "社保公司")
    private BigDecimal socialSecurityCompanies;
    /**
     * 社保合计
     */
    @ApiModelProperty("社保合计")
//    @Excel(name = "社保合计")
    private BigDecimal socialSecurityTotal;
    /**
     * 公积金合计
     */
    @ApiModelProperty("公积金合计")
//    @Excel(name = "公积金合计")
    private BigDecimal providentFundTotal;
    /**
     * 公积金公司
     */
    @ApiModelProperty("公积金公司")
//    @Excel(name = "公积金公司")
    private BigDecimal providentFundCompany;
    /**
     * 公积金个人
     */
    @ApiModelProperty("公积金个人")
//    @Excel(name = "公积金个人")
    @Excel(name = "公积金个人")
    private BigDecimal providentFundIndividuals;
    /**
     * 应税工资
     * 工资个税
     */
    @ApiModelProperty("应税工资")
//    @Excel(name = "应税工资")
    private BigDecimal taxableWaget;
    /**
     * 个人所得税
     */
    @ApiModelProperty("个人所得税")
//    @Excel(name = "个人所得税")
    @ApiModelProperty("工资个税")
    @Excel(name = "工资个税")
    private BigDecimal personalIncomeTax;
    /**
     * 其他支出
     */
    @ApiModelProperty("其他支出")
    @Excel(name = "其他支出")
    private BigDecimal otherDeductions;
    /**
     * 应发工资
     */
    @ApiModelProperty("应发工资")
    @Excel(name = "应发工资")
    private BigDecimal payableWages;
    /**
     * 应扣工资
     */
    @ApiModelProperty("应扣工资")
    @Excel(name = "应扣工资")
    private BigDecimal deductibleWages;
    /**
     * 实发工资
     */
    @ApiModelProperty("实发工资")
    @Excel(name = "实发工资", width = 30)
    @Excel(name = "实发工资")
    private BigDecimal actualWages;
    /**
     * 备注
     */
    @ApiModelProperty("备注")
    @Excel(name = "备注")
    private String remark;
    /**
     * 租户ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    /**
     * 创建者
@@ -206,6 +169,7 @@
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    /**
@@ -218,12 +182,7 @@
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;
    /**
     * 租户ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
}
src/main/java/com/ruoyi/compensationperformance/service/CompensationPerformanceService.java
@@ -14,9 +14,11 @@
    /**
     * 分页查询
     *
     * @param page
     * @param compensationPerformance
     * @param page       分页插件
     * @param staffName  员工姓名
     * @param payDateStr 薪资日期
     * @return
     */
    IPage<CompensationPerformance> listPage(Page page, CompensationPerformance compensationPerformance);
    IPage<CompensationPerformance> listPage(Page page, String staffName, String payDateStr);
}
src/main/java/com/ruoyi/compensationperformance/service/impl/CompensationPerformanceServiceImpl.java
@@ -23,8 +23,8 @@
    @Override
    public IPage<CompensationPerformance> listPage(Page page, CompensationPerformance compensationPerformance) {
        IPage<CompensationPerformance> compensationPerformanceIPage = compensationPerformanceMapper.listPage(page, compensationPerformance);
        return compensationPerformanceIPage;
    public IPage<CompensationPerformance> listPage(Page page, String staffName, String payDateStr) {
        return compensationPerformanceMapper.listPage(page, staffName, payDateStr);
    }
}
src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
@@ -20,6 +20,7 @@
    /**
     * 统计指定日期的在职员工数
     *
     * @param date 日期
     * @return 在职员工数
     */
@@ -27,9 +28,18 @@
    /**
     * 统计指定月份的新入职员工数
     *
     * @param monthStart 月份开始日期
     * @param monthEnd 月份结束日期
     * @param monthEnd   月份结束日期
     * @return 新入职员工数
     */
    Integer countNewHireByMonth(@Param("monthStart") LocalDate monthStart, @Param("monthEnd") LocalDate monthEnd);
    /**
     * 根据员工姓名查询员工信息
     *
     * @param staffName 员工姓名
     * @return 员工数据
     */
    StaffOnJob selectStaffByNickName(String staffName);
}
src/main/resources/mapper/compensationperformance/CompensationPerformanceMapper.xml
@@ -3,14 +3,23 @@
<mapper namespace="com.ruoyi.compensationperformance.mapper.CompensationPerformanceMapper">
    <select id="listPage" resultType="com.ruoyi.compensationperformance.pojo.CompensationPerformance">
        select * from compensation_performance
        SELECT
        cp.*,
        soj.staff_name AS staffName,
        sp.post_name AS postName,
        sd.dept_name AS deptName
        FROM compensation_performance cp
        LEFT JOIN staff_on_job soj ON soj.id = cp.staff_id
        LEFT JOIN sys_post sp ON sp.post_id = soj.sys_post_id
        LEFT JOIN sys_dept sd ON sd.dept_id = soj.sys_dept_id
        <where>
            <if test="req.name != null and req.name != ''">
                and `name` like concat('%',#{req.name},'%')
            <if test="staffName != null and staffName != ''">
                AND soj.staff_name LIKE CONCAT('%', #{staffName}, '%')
            </if>
            <if test="req.payDateStr != null and req.payDateStr != ''">
                and pay_date like concat('%',#{req.payDateStr},'%')
            <if test="payDateStr != null and payDateStr != ''">
                AND DATE_FORMAT(cp.pay_date, '%Y-%m') = #{payDateStr}
            </if>
        </where>
        ORDER BY cp.pay_date DESC, cp.id DESC
    </select>
</mapper>
src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -13,7 +13,7 @@
        sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id
        where 1=1
        <if test="staffOnJob.staffState != null">
        AND staff_state = #{staffOnJob.staffState}
            AND staff_state = #{staffOnJob.staffState}
        </if>
        <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
            AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
@@ -22,7 +22,7 @@
            AND contract_expire_time &gt;= DATE_FORMAT(#{staffOnJob.entryDateStart},'%Y-%m-%d')
        </if>
        <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' ">
            AND  contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
            AND contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
        </if>
    </select>
    <select id="staffOnJobList" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
@@ -48,7 +48,7 @@
        SELECT COUNT(*)
        FROM staff_on_job
        WHERE staff_state = 1
        AND DATE_FORMAT(create_time, '%Y-%m-%d') &lt;= #{date}
          AND DATE_FORMAT(create_time, '%Y-%m-%d') &lt;= #{date}
    </select>
    <!-- 统计指定月份的新入职员工数 -->
@@ -56,6 +56,23 @@
        SELECT COUNT(*)
        FROM staff_on_job
        WHERE staff_state = 1
        AND DATE_FORMAT(create_time, '%Y-%m-%d') BETWEEN #{monthStart} AND #{monthEnd}
          AND DATE_FORMAT(create_time, '%Y-%m-%d') BETWEEN #{monthStart} AND #{monthEnd}
    </select>
    <select id="selectStaffByNickName" resultType="com.ruoyi.staff.pojo.StaffOnJob" parameterType="java.lang.String">
        SELECT
        id
        nick_name AS staffName
        FROM staff_on_job
        WHERE del_flag = '0'
        <choose>
            <when test="staffName != null and staffName != ''">
                AND nick_name = #{staffName}
            </when>
            <otherwise>
                AND 1 = 0
            </otherwise>
        </choose>
        LIMIT 1
    </select>
</mapper>