BasePersonnelLabourCapitalServiceImpl.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.xjrsoft.module.personnel.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.github.yulichang.base.MPJBaseServiceImpl;
  8. import com.xjrsoft.module.organization.entity.User;
  9. import com.xjrsoft.module.organization.service.IUserService;
  10. import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalMonthPageDto;
  11. import com.xjrsoft.module.personnel.dto.BasePersonnelLabourCapitalYearPageDto;
  12. import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapital;
  13. import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalData;
  14. import com.xjrsoft.module.personnel.entity.BasePersonnelLabourCapitalTitle;
  15. import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalDataMapper;
  16. import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalMapper;
  17. import com.xjrsoft.module.personnel.mapper.BasePersonnelLabourCapitalTitleMapper;
  18. import com.xjrsoft.module.personnel.service.IBasePersonnelLabourCapitalService;
  19. import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalMonthPageVo;
  20. import com.xjrsoft.module.personnel.vo.BasePersonnelLabourCapitalYearPageVo;
  21. import lombok.AllArgsConstructor;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.Objects;
  28. import java.util.stream.Collectors;
  29. /**
  30. * @title: 工资发放
  31. * @Author dzx
  32. * @Date: 2023-11-08
  33. * @Version 1.0
  34. */
  35. @Service
  36. @AllArgsConstructor
  37. public class BasePersonnelLabourCapitalServiceImpl extends MPJBaseServiceImpl<BasePersonnelLabourCapitalMapper, BasePersonnelLabourCapital> implements IBasePersonnelLabourCapitalService {
  38. private final BasePersonnelLabourCapitalMapper labourCapitalMapper;
  39. private final BasePersonnelLabourCapitalDataMapper capitalDataMapper;
  40. private final BasePersonnelLabourCapitalTitleMapper capitalTitleMapper;
  41. private final IUserService userService;
  42. @Override
  43. public Page<BasePersonnelLabourCapitalMonthPageVo> getMonthPage(Page<BasePersonnelLabourCapitalMonthPageDto> page, BasePersonnelLabourCapitalMonthPageDto dto) {
  44. long userId = StpUtil.getLoginIdAsLong();
  45. User user = userService.getById(userId);
  46. dto.setJobNumber(user.getUserName());
  47. Page<BasePersonnelLabourCapitalMonthPageVo> resultPage = labourCapitalMapper.getMonthPage(page, dto);
  48. for (BasePersonnelLabourCapitalMonthPageVo record : resultPage.getRecords()) {
  49. JSONObject extendJsonObj = JSON.parseObject(record.getPendingJson());
  50. Map<String, Object> newDict = new HashMap<>();
  51. for (String key : extendJsonObj.keySet()) {
  52. String bpName = getBpName(key);
  53. if (bpName != null) {
  54. newDict.put(bpName, extendJsonObj.getString(key));
  55. }
  56. }
  57. record.setDict(newDict);
  58. }
  59. return resultPage;
  60. }
  61. @Override
  62. public Page<BasePersonnelLabourCapitalYearPageVo> getYearPage(Page<BasePersonnelLabourCapitalYearPageDto> page, BasePersonnelLabourCapitalYearPageDto dto) {
  63. long userId = StpUtil.getLoginIdAsLong();
  64. User user = userService.getById(userId);
  65. dto.setJobNumber(user.getUserName());
  66. return labourCapitalMapper.getYearPage(page, dto);
  67. }
  68. private String getBpName(String columnNumber) {
  69. List<BasePersonnelLabourCapitalTitle> bpTitles = capitalTitleMapper.selectList(Wrappers.<BasePersonnelLabourCapitalTitle>lambdaQuery().eq(BasePersonnelLabourCapitalTitle::getColumnNumber, columnNumber));
  70. if (bpTitles != null && !bpTitles.isEmpty()) {
  71. return bpTitles.get(0).getName();
  72. } else {
  73. return null;
  74. }
  75. }
  76. @Override
  77. @Transactional(rollbackFor = Exception.class)
  78. public Boolean add(BasePersonnelLabourCapital basePersonnelLabourCapital) {
  79. labourCapitalMapper.insert(basePersonnelLabourCapital);
  80. for (BasePersonnelLabourCapitalData basePersonnelLabourCapitalData : basePersonnelLabourCapital.getBasePersonnelLabourCapitalDataList()) {
  81. basePersonnelLabourCapitalData.setLabourCapitalId(basePersonnelLabourCapital.getId());
  82. capitalDataMapper.insert(basePersonnelLabourCapitalData);
  83. }
  84. for (BasePersonnelLabourCapitalTitle basePersonnelLabourCapitalTitle : basePersonnelLabourCapital.getBasePersonnelLabourCapitalTitleList()) {
  85. basePersonnelLabourCapitalTitle.setLabourCapitalId(basePersonnelLabourCapital.getId());
  86. capitalTitleMapper.insert(basePersonnelLabourCapitalTitle);
  87. }
  88. return true;
  89. }
  90. @Override
  91. @Transactional(rollbackFor = Exception.class)
  92. public Boolean update(BasePersonnelLabourCapital basePersonnelLabourCapital) {
  93. labourCapitalMapper.updateById(basePersonnelLabourCapital);
  94. //********************************* BasePersonnelLabourCapitalData 增删改 开始 *******************************************/
  95. {
  96. // 查出所有子级的id
  97. List<BasePersonnelLabourCapitalData> basePersonnelLabourCapitalDataList = capitalDataMapper.selectList(Wrappers.lambdaQuery(BasePersonnelLabourCapitalData.class).eq(BasePersonnelLabourCapitalData::getLabourCapitalId, basePersonnelLabourCapital.getId()).select(BasePersonnelLabourCapitalData::getId));
  98. List<Long> basePersonnelLabourCapitalDataIds = basePersonnelLabourCapitalDataList.stream().map(BasePersonnelLabourCapitalData::getId).collect(Collectors.toList());
  99. //原有子表单 没有被删除的主键
  100. List<Long> basePersonnelLabourCapitalDataOldIds = basePersonnelLabourCapital.getBasePersonnelLabourCapitalDataList().stream().map(BasePersonnelLabourCapitalData::getId).filter(Objects::nonNull).collect(Collectors.toList());
  101. //找到需要删除的id
  102. List<Long> basePersonnelLabourCapitalDataRemoveIds = basePersonnelLabourCapitalDataIds.stream().filter(item -> !basePersonnelLabourCapitalDataOldIds.contains(item)).collect(Collectors.toList());
  103. for (BasePersonnelLabourCapitalData basePersonnelLabourCapitalData : basePersonnelLabourCapital.getBasePersonnelLabourCapitalDataList()) {
  104. //如果不等于空则修改
  105. if (basePersonnelLabourCapitalData.getId() != null) {
  106. capitalDataMapper.updateById(basePersonnelLabourCapitalData);
  107. }
  108. //如果等于空 则新增
  109. else {
  110. //已经不存在的id 删除
  111. basePersonnelLabourCapitalData.setLabourCapitalId(basePersonnelLabourCapital.getId());
  112. capitalDataMapper.insert(basePersonnelLabourCapitalData);
  113. }
  114. }
  115. //已经不存在的id 删除
  116. if(basePersonnelLabourCapitalDataRemoveIds.size() > 0){
  117. capitalDataMapper.deleteBatchIds(basePersonnelLabourCapitalDataRemoveIds);
  118. }
  119. }
  120. //********************************* BasePersonnelLabourCapitalData 增删改 结束 *******************************************/
  121. //********************************* BasePersonnelLabourCapitalTitle 增删改 开始 *******************************************/
  122. {
  123. // 查出所有子级的id
  124. List<BasePersonnelLabourCapitalTitle> basePersonnelLabourCapitalTitleList = capitalTitleMapper.selectList(Wrappers.lambdaQuery(BasePersonnelLabourCapitalTitle.class).eq(BasePersonnelLabourCapitalTitle::getLabourCapitalId, basePersonnelLabourCapital.getId()).select(BasePersonnelLabourCapitalTitle::getId));
  125. List<Long> basePersonnelLabourCapitalTitleIds = basePersonnelLabourCapitalTitleList.stream().map(BasePersonnelLabourCapitalTitle::getId).collect(Collectors.toList());
  126. //原有子表单 没有被删除的主键
  127. List<Long> basePersonnelLabourCapitalTitleOldIds = basePersonnelLabourCapital.getBasePersonnelLabourCapitalTitleList().stream().map(BasePersonnelLabourCapitalTitle::getId).filter(Objects::nonNull).collect(Collectors.toList());
  128. //找到需要删除的id
  129. List<Long> basePersonnelLabourCapitalTitleRemoveIds = basePersonnelLabourCapitalTitleIds.stream().filter(item -> !basePersonnelLabourCapitalTitleOldIds.contains(item)).collect(Collectors.toList());
  130. for (BasePersonnelLabourCapitalTitle basePersonnelLabourCapitalTitle : basePersonnelLabourCapital.getBasePersonnelLabourCapitalTitleList()) {
  131. //如果不等于空则修改
  132. if (basePersonnelLabourCapitalTitle.getId() != null) {
  133. capitalTitleMapper.updateById(basePersonnelLabourCapitalTitle);
  134. }
  135. //如果等于空 则新增
  136. else {
  137. //已经不存在的id 删除
  138. basePersonnelLabourCapitalTitle.setLabourCapitalId(basePersonnelLabourCapital.getId());
  139. capitalTitleMapper.insert(basePersonnelLabourCapitalTitle);
  140. }
  141. }
  142. //已经不存在的id 删除
  143. if(basePersonnelLabourCapitalTitleRemoveIds.size() > 0){
  144. capitalTitleMapper.deleteBatchIds(basePersonnelLabourCapitalTitleRemoveIds);
  145. }
  146. }
  147. //********************************* BasePersonnelLabourCapitalTitle 增删改 结束 *******************************************/
  148. return true;
  149. }
  150. @Override
  151. @Transactional(rollbackFor = Exception.class)
  152. public Boolean delete(List<Long> ids) {
  153. labourCapitalMapper.deleteBatchIds(ids);
  154. capitalDataMapper.delete(Wrappers.lambdaQuery(BasePersonnelLabourCapitalData.class).in(BasePersonnelLabourCapitalData::getLabourCapitalId, ids));
  155. capitalTitleMapper.delete(Wrappers.lambdaQuery(BasePersonnelLabourCapitalTitle.class).in(BasePersonnelLabourCapitalTitle::getLabourCapitalId, ids));
  156. return true;
  157. }
  158. }