package com.xjrsoft.module.personnel.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.base.MPJBaseServiceImpl; import com.xjrsoft.module.organization.entity.User; import com.xjrsoft.module.organization.service.IUserService; import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalMonthPageDto; import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalYearPageDto; import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapital; import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalData; import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalTitle; import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalDataMapper; import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalMapper; import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalTitleMapper; import com.xjrsoft.module.personnel.service.IBasePersonnelLabourCapitalService; import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalMonthPageVo; import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalYearPageVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; /** * @title: 工资发放 * @Author dzx * @Date: 2023-11-08 * @Version 1.0 */ @Service @AllArgsConstructor public class BasePersonnelLabourCapitalServiceImpl extends MPJBaseServiceImpl implements IBasePersonnelLabourCapitalService { private final BasePersonnelLabourCapitalMapper labourCapitalMapper; private final BasePersonnelLabourCapitalDataMapper capitalDataMapper; private final BasePersonnelLabourCapitalTitleMapper capitalTitleMapper; private final IUserService userService; @Override public Page getMonthPage(Page page, BasePersonnelLabourCapitalMonthPageDto dto) { long userId = StpUtil.getLoginIdAsLong(); User user = userService.getById(userId); dto.setJobNumber(user.getUserName()); Page resultPage = labourCapitalMapper.getMonthPage(page, dto); for (BasePersonnelLabourCapitalMonthPageVo record : resultPage.getRecords()) { JSONObject extendJsonObj = JSON.parseObject(record.getPendingJson()); Map newDict = new HashMap<>(); for (String key : extendJsonObj.keySet()) { String bpName = getBpName(key); if (bpName != null) { newDict.put(bpName, extendJsonObj.getString(key)); } } record.setDict(newDict); } return resultPage; } @Override public Page getYearPage(Page page, BasePersonnelLabourCapitalYearPageDto dto) { long userId = StpUtil.getLoginIdAsLong(); User user = userService.getById(userId); dto.setJobNumber(user.getUserName()); return labourCapitalMapper.getYearPage(page, dto); } private String getBpName(String columnNumber) { List bpTitles = capitalTitleMapper.selectList(Wrappers.lambdaQuery().eq(BasePersonnelLabourCapitalTitle::getColumnNumber, columnNumber)); if (bpTitles != null && !bpTitles.isEmpty()) { return bpTitles.get(0).getName(); } else { return null; } } @Override @Transactional(rollbackFor = Exception.class) public Boolean add(BasePersonnelLabourCapital basePersonnelLabourCapital) { labourCapitalMapper.insert(basePersonnelLabourCapital); for (BasePersonnelLabourCapitalData basePersonnelLabourCapitalData : basePersonnelLabourCapital.getBasePersonnelLabourCapitalDataList()) { basePersonnelLabourCapitalData.setLabourCapitalId(basePersonnelLabourCapital.getId()); capitalDataMapper.insert(basePersonnelLabourCapitalData); } for (BasePersonnelLabourCapitalTitle basePersonnelLabourCapitalTitle : basePersonnelLabourCapital.getBasePersonnelLabourCapitalTitleList()) { basePersonnelLabourCapitalTitle.setLabourCapitalId(basePersonnelLabourCapital.getId()); capitalTitleMapper.insert(basePersonnelLabourCapitalTitle); } return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean update(BasePersonnelLabourCapital basePersonnelLabourCapital) { labourCapitalMapper.updateById(basePersonnelLabourCapital); //********************************* BasePersonnelLabourCapitalData 增删改 开始 *******************************************/ { // 查出所有子级的id List basePersonnelLabourCapitalDataList = capitalDataMapper.selectList(Wrappers.lambdaQuery(BasePersonnelLabourCapitalData.class).eq(BasePersonnelLabourCapitalData::getLabourCapitalId, basePersonnelLabourCapital.getId()).select(BasePersonnelLabourCapitalData::getId)); List basePersonnelLabourCapitalDataIds = basePersonnelLabourCapitalDataList.stream().map(BasePersonnelLabourCapitalData::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List basePersonnelLabourCapitalDataOldIds = basePersonnelLabourCapital.getBasePersonnelLabourCapitalDataList().stream().map(BasePersonnelLabourCapitalData::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List basePersonnelLabourCapitalDataRemoveIds = basePersonnelLabourCapitalDataIds.stream().filter(item -> !basePersonnelLabourCapitalDataOldIds.contains(item)).collect(Collectors.toList()); for (BasePersonnelLabourCapitalData basePersonnelLabourCapitalData : basePersonnelLabourCapital.getBasePersonnelLabourCapitalDataList()) { //如果不等于空则修改 if (basePersonnelLabourCapitalData.getId() != null) { capitalDataMapper.updateById(basePersonnelLabourCapitalData); } //如果等于空 则新增 else { //已经不存在的id 删除 basePersonnelLabourCapitalData.setLabourCapitalId(basePersonnelLabourCapital.getId()); capitalDataMapper.insert(basePersonnelLabourCapitalData); } } //已经不存在的id 删除 if(basePersonnelLabourCapitalDataRemoveIds.size() > 0){ capitalDataMapper.deleteBatchIds(basePersonnelLabourCapitalDataRemoveIds); } } //********************************* BasePersonnelLabourCapitalData 增删改 结束 *******************************************/ //********************************* BasePersonnelLabourCapitalTitle 增删改 开始 *******************************************/ { // 查出所有子级的id List basePersonnelLabourCapitalTitleList = capitalTitleMapper.selectList(Wrappers.lambdaQuery(BasePersonnelLabourCapitalTitle.class).eq(BasePersonnelLabourCapitalTitle::getLabourCapitalId, basePersonnelLabourCapital.getId()).select(BasePersonnelLabourCapitalTitle::getId)); List basePersonnelLabourCapitalTitleIds = basePersonnelLabourCapitalTitleList.stream().map(BasePersonnelLabourCapitalTitle::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List basePersonnelLabourCapitalTitleOldIds = basePersonnelLabourCapital.getBasePersonnelLabourCapitalTitleList().stream().map(BasePersonnelLabourCapitalTitle::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List basePersonnelLabourCapitalTitleRemoveIds = basePersonnelLabourCapitalTitleIds.stream().filter(item -> !basePersonnelLabourCapitalTitleOldIds.contains(item)).collect(Collectors.toList()); for (BasePersonnelLabourCapitalTitle basePersonnelLabourCapitalTitle : basePersonnelLabourCapital.getBasePersonnelLabourCapitalTitleList()) { //如果不等于空则修改 if (basePersonnelLabourCapitalTitle.getId() != null) { capitalTitleMapper.updateById(basePersonnelLabourCapitalTitle); } //如果等于空 则新增 else { //已经不存在的id 删除 basePersonnelLabourCapitalTitle.setLabourCapitalId(basePersonnelLabourCapital.getId()); capitalTitleMapper.insert(basePersonnelLabourCapitalTitle); } } //已经不存在的id 删除 if(basePersonnelLabourCapitalTitleRemoveIds.size() > 0){ capitalTitleMapper.deleteBatchIds(basePersonnelLabourCapitalTitleRemoveIds); } } //********************************* BasePersonnelLabourCapitalTitle 增删改 结束 *******************************************/ return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean delete(List ids) { labourCapitalMapper.deleteBatchIds(ids); capitalDataMapper.delete(Wrappers.lambdaQuery(BasePersonnelLabourCapitalData.class).in(BasePersonnelLabourCapitalData::getLabourCapitalId, ids)); capitalTitleMapper.delete(Wrappers.lambdaQuery(BasePersonnelLabourCapitalTitle.class).in(BasePersonnelLabourCapitalTitle::getLabourCapitalId, ids)); return true; } }