package com.ruoyi.staff.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.domain.SysUserDept; import com.ruoyi.project.system.mapper.SysUserDeptMapper; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.staff.mapper.StaffSalaryDetailMapper; import com.ruoyi.staff.pojo.SchemeApplicableStaff; import com.ruoyi.staff.pojo.StaffSalaryDetail; import com.ruoyi.staff.pojo.StaffSalaryMain; import com.ruoyi.staff.mapper.StaffSalaryMainMapper; import com.ruoyi.staff.service.StaffSalaryDetailService; import com.ruoyi.staff.service.StaffSalaryMainService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** *

* 员工工资主表 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-03-06 01:22:05 */ @Service public class StaffSalaryMainServiceImpl extends ServiceImpl implements StaffSalaryMainService { @Autowired private StaffSalaryMainMapper staffSalaryMainMapper; @Autowired private StaffSalaryDetailService staffSalaryDetailService; @Autowired private StaffSalaryDetailMapper staffSalaryDetailMapper; @Autowired private SchemeApplicableStaffServiceImpl schemeApplicableStaffService; @Autowired private SysUserDeptMapper sysUserDeptMapper; @Autowired private SysUserMapper sysUserMapper; @Override public AjaxResult listPage(Page page, StaffSalaryMain staffSalaryMain) { LambdaQueryWrapper staffSalaryMainLambdaQueryWrapper = new LambdaQueryWrapper<>(); if(staffSalaryMain != null){ if(StringUtils.isNotEmpty(staffSalaryMain.getSalaryTitle())){ staffSalaryMainLambdaQueryWrapper.like(StaffSalaryMain::getSalaryTitle, staffSalaryMain.getSalaryTitle()); } if(StringUtils.isNotEmpty(staffSalaryMain.getSalaryMonth())){ staffSalaryMainLambdaQueryWrapper.like(StaffSalaryMain::getSalaryMonth, staffSalaryMain.getSalaryMonth()); } if(staffSalaryMain.getStatus() != null){ staffSalaryMainLambdaQueryWrapper.eq(StaffSalaryMain::getStatus, staffSalaryMain.getStatus()); } } Page page1 = staffSalaryMainMapper.selectPage(page, staffSalaryMainLambdaQueryWrapper); page1.getRecords().forEach(main -> { List staffSalaryDetailList = staffSalaryDetailMapper.selectList(new LambdaQueryWrapper().eq(StaffSalaryDetail::getMainId, main.getId())); main.setStaffSalaryDetailList(staffSalaryDetailList); }); return AjaxResult.success(page1); } @Override public AjaxResult add(StaffSalaryMain staffSalaryMain) { staffSalaryMainMapper.insert(staffSalaryMain); staffSalaryMain.getStaffSalaryDetailList().forEach(detail -> { detail.setMainId(staffSalaryMain.getId()); }); staffSalaryDetailService.saveBatch(staffSalaryMain.getStaffSalaryDetailList()); return AjaxResult.success("新增成功"); } @Override public AjaxResult updateStaffSalaryMain(StaffSalaryMain staffSalaryMain) { if(staffSalaryMain == null){ return AjaxResult.error("参数错误"); } StaffSalaryMain staffSalaryMain1 = staffSalaryMainMapper.selectById(staffSalaryMain.getId()); if(staffSalaryMain1 == null){ return AjaxResult.error("参数错误"); } // 待审核不可编辑 if(staffSalaryMain1.getStatus() > 2){ return AjaxResult.error("待审核不可编辑"); } staffSalaryMainMapper.updateById(staffSalaryMain); staffSalaryDetailMapper.delete(new LambdaQueryWrapper().eq(StaffSalaryDetail::getMainId, staffSalaryMain.getId())); staffSalaryMain.getStaffSalaryDetailList().forEach(detail -> { detail.setMainId(staffSalaryMain.getId()); }); staffSalaryDetailService.saveBatch(staffSalaryMain.getStaffSalaryDetailList()); return AjaxResult.success("修改成功"); } @Override public AjaxResult delete(List ids) { if(CollectionUtils.isEmpty(ids)){ return AjaxResult.error("参数错误"); } staffSalaryMainMapper.deleteBatchIds(ids); staffSalaryDetailMapper.delete(new LambdaQueryWrapper().in(StaffSalaryDetail::getMainId, ids)); return AjaxResult.success("删除成功"); } @Override public AjaxResult calculateSalary(List ids) { if(CollectionUtils.isEmpty(ids)){ return AjaxResult.error("参数错误"); } List> longs = setSchemeApplicableStaffUserInfo(ids); // 通过部门ids获取用户信息 if(CollectionUtils.isEmpty(longs)){ return AjaxResult.error("无员工"); } for (Map id : longs) { schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id); } return AjaxResult.success(longs); } public List> setSchemeApplicableStaffUserInfo(List ids) { if(CollectionUtils.isEmpty(ids)){ return new ArrayList<>(); } // 通过部门获取人员id return sysUserDeptMapper.setSchemeApplicableStaffUserInfo(ids); } }