|
@@ -1,11 +1,8 @@
|
|
|
package com.fjhx.oa.service.user.impl;
|
|
|
|
|
|
-import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.common.utils.Assert;
|
|
|
import com.fjhx.file.entity.FileInfoVo;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
@@ -17,7 +14,10 @@ import com.fjhx.oa.entity.user.vo.UserSalaryManageVo;
|
|
|
import com.fjhx.oa.mapper.user.UserSalaryManageMapper;
|
|
|
import com.fjhx.oa.service.user.UserSalaryDetailService;
|
|
|
import com.fjhx.oa.service.user.UserSalaryManageService;
|
|
|
+import com.fjhx.tenant.utils.DeptUstil;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.ruoyi.system.service.ISysDeptService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
@@ -33,82 +33,89 @@ import java.util.stream.Collectors;
|
|
|
* 员工薪资管理 服务实现类
|
|
|
* </p>
|
|
|
*
|
|
|
- * @author
|
|
|
+ * @author _
|
|
|
* @since 2024-06-11
|
|
|
*/
|
|
|
@Service
|
|
|
-public class UserSalaryManageServiceImpl extends ServiceImpl<UserSalaryManageMapper, UserSalaryManage> implements UserSalaryManageService {
|
|
|
+public class UserSalaryManageServiceImpl implements UserSalaryManageService {
|
|
|
|
|
|
@Resource
|
|
|
+ private UserSalaryManageMapper baseMapper;
|
|
|
+ @Resource
|
|
|
private UserSalaryDetailService userSalaryDetailService;
|
|
|
+ @Resource
|
|
|
+ private ISysDeptService sysDeptService;
|
|
|
|
|
|
@Override
|
|
|
public Page<UserSalaryManageVo> getPage(UserSalaryManageSelectDto dto) {
|
|
|
- IWrapper<UserSalaryManage> wrapper = getWrapper();
|
|
|
- wrapper.eq("usm", UserSalaryManage::getCurrentVersion, 1);
|
|
|
- wrapper.orderByDesc("usm", UserSalaryManage::getId);
|
|
|
- Page<UserSalaryManageVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ IWrapper<Object> wrapper = IWrapper.getWrapper();
|
|
|
+ Page<UserSalaryManageVo> page = baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
List<UserSalaryManageVo> records = page.getRecords();
|
|
|
setInfo(records);
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public UserSalaryManageVo detail(Long id) {
|
|
|
- UserSalaryManage UserSalaryManage = this.getById(id);
|
|
|
- UserSalaryManageVo result = BeanUtil.toBean(UserSalaryManage, UserSalaryManageVo.class);
|
|
|
- setInfo(Collections.singletonList(result));
|
|
|
- return result;
|
|
|
- }
|
|
|
-
|
|
|
- private void setInfo(List<UserSalaryManageVo> list) {
|
|
|
- if (ObjectUtil.isEmpty(list)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- List<Long> ids = list.stream().map(UserSalaryManage::getId).collect(Collectors.toList());
|
|
|
- Map<Long, List<UserSalaryDetail>> usdMap = userSalaryDetailService.mapKGroup(UserSalaryDetail::getUserSalaryManageId, q -> q.in(UserSalaryDetail::getUserSalaryManageId, ids));
|
|
|
- Map<Long, List<FileInfoVo>> fileMap = ObsFileUtil.getFileMap(ids, 10);
|
|
|
- for (UserSalaryManageVo userSalaryManageVo : list) {
|
|
|
- userSalaryManageVo.setUserSalaryDetailList(usdMap.getOrDefault(userSalaryManageVo.getId(), new ArrayList<>()));
|
|
|
- userSalaryManageVo.setFileList(fileMap.getOrDefault(userSalaryManageVo.getId(), new ArrayList<>()));
|
|
|
+ public UserSalaryManageVo detail(Long userId) {
|
|
|
+ Assert.notEmpty(userId, "用户Id不能为空!");
|
|
|
+ UserSalaryManageVo detail = baseMapper.getDetail(userId);
|
|
|
+ if (ObjectUtil.isEmpty(detail)) {
|
|
|
+ throw new ServiceException("查询不到用户薪资信息!");
|
|
|
}
|
|
|
+ setInfo(Collections.singletonList(detail));
|
|
|
+ return detail;
|
|
|
}
|
|
|
|
|
|
@DSTransactional
|
|
|
@Override
|
|
|
- public synchronized void addVersion(UserSalaryManageDto dto) {
|
|
|
- Integer version = -1;
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getId())) {
|
|
|
- UserSalaryManage oldVer = this.getById(dto.getId());
|
|
|
- Assert.notEmpty(oldVer, "历史版本信息不存在!");
|
|
|
- dto.setParentId(dto.getId());
|
|
|
- dto.setGroupId(oldVer.getGroupId());
|
|
|
- version = oldVer.getDataVer();
|
|
|
- this.update(q -> q.eq(UserSalaryManage::getId, dto.getId()).set(UserSalaryManage::getCurrentVersion, 0));
|
|
|
+ public synchronized void edit(UserSalaryManageDto dto) {
|
|
|
+ Assert.notEmpty(dto.getUserId(), "用户Id不能为空!");
|
|
|
+ Integer dataVer = 0;
|
|
|
+ //先处理历史版本数据
|
|
|
+ List<UserSalaryDetail> oldList = userSalaryDetailService.list(q -> q
|
|
|
+ .eq(UserSalaryDetail::getUserId, dto.getUserId())
|
|
|
+ .eq(UserSalaryDetail::getIsCurrentVer, 1)
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isNotEmpty(oldList)) {
|
|
|
+ for (UserSalaryDetail userSalaryDetail : oldList) {
|
|
|
+ dataVer = userSalaryDetail.getDataVer();
|
|
|
+ userSalaryDetail.setIsCurrentVer(0);
|
|
|
+ }
|
|
|
+ userSalaryDetailService.updateBatchById(oldList);
|
|
|
}
|
|
|
- dto.setId(IdWorker.getId());
|
|
|
- dto.setGroupId(ObjectUtil.isEmpty(dto.getGroupId()) ? dto.getId() : dto.getGroupId());
|
|
|
- dto.setDataVer(++version);
|
|
|
- dto.setCurrentVersion(1);
|
|
|
- this.save(dto);
|
|
|
- ObsFileUtil.copyFileAndSave(dto.getFileList(), dto.getId(), 10);
|
|
|
|
|
|
+ //再处理新数据
|
|
|
+ baseMapper.updateById(dto);
|
|
|
+ ObsFileUtil.editFile(dto.getFileList(), dto.getUserId(), 10);
|
|
|
List<UserSalaryDetail> userSalaryDetailList = dto.getUserSalaryDetailList();
|
|
|
for (UserSalaryDetail userSalaryDetail : userSalaryDetailList) {
|
|
|
userSalaryDetail.setId(null);
|
|
|
- userSalaryDetail.setUserSalaryManageId(dto.getId());
|
|
|
+ userSalaryDetail.setUserId(dto.getUserId());
|
|
|
+ userSalaryDetail.setDataVer(++dataVer);
|
|
|
+ userSalaryDetail.setIsCurrentVer(1);
|
|
|
}
|
|
|
userSalaryDetailService.saveBatch(userSalaryDetailList);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void edit(UserSalaryManageDto userSalaryManageDto) {
|
|
|
- this.updateById(userSalaryManageDto);
|
|
|
- }
|
|
|
+ private void setInfo(List<UserSalaryManageVo> list) {
|
|
|
+ if (ObjectUtil.isEmpty(list)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Long> userIds = list.stream().map(UserSalaryManage::getUserId).collect(Collectors.toList());
|
|
|
+ Map<Long, List<UserSalaryDetail>> usdMap = userSalaryDetailService.mapKGroup(UserSalaryDetail::getUserId, q -> q
|
|
|
+ .in(UserSalaryDetail::getUserId, userIds)
|
|
|
+ .eq(UserSalaryDetail::getIsCurrentVer, 1)
|
|
|
+ );
|
|
|
+
|
|
|
+ Map<Long, List<FileInfoVo>> fileMap = ObsFileUtil.getFileMap(userIds, 10);
|
|
|
+ Map<Long, String> deptNameMap = DeptUstil.getDeptNameMap();
|
|
|
+ for (UserSalaryManageVo userSalaryManageVo : list) {
|
|
|
+ userSalaryManageVo.setUserSalaryDetailList(usdMap.getOrDefault(userSalaryManageVo.getUserId(), new ArrayList<>()));
|
|
|
+ userSalaryManageVo.setFileList(fileMap.getOrDefault(userSalaryManageVo.getUserId(), new ArrayList<>()));
|
|
|
+ userSalaryManageVo.setCompanyName(deptNameMap.get(userSalaryManageVo.getCompanyId()));
|
|
|
+ userSalaryManageVo.setDeptName(deptNameMap.get(userSalaryManageVo.getDeptId()));
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void delete(Long id) {
|
|
|
- this.removeById(id);
|
|
|
}
|
|
|
|
|
|
}
|