|
@@ -1,5 +1,6 @@
|
|
|
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.extension.plugins.pagination.Page;
|
|
@@ -9,12 +10,16 @@ import com.fjhx.file.entity.FileInfoVo;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
|
import com.fjhx.oa.entity.user.dto.UserSalaryManageDto;
|
|
|
import com.fjhx.oa.entity.user.dto.UserSalaryManageSelectDto;
|
|
|
+import com.fjhx.oa.entity.user.po.UserSalary;
|
|
|
import com.fjhx.oa.entity.user.po.UserSalaryDetail;
|
|
|
import com.fjhx.oa.entity.user.po.UserSalaryManage;
|
|
|
+import com.fjhx.oa.entity.user.vo.UserSalaryDetailVo;
|
|
|
import com.fjhx.oa.entity.user.vo.UserSalaryManageVo;
|
|
|
+import com.fjhx.oa.entity.user.vo.UserSalaryVo;
|
|
|
import com.fjhx.oa.mapper.user.UserSalaryManageMapper;
|
|
|
import com.fjhx.oa.service.user.UserSalaryDetailService;
|
|
|
import com.fjhx.oa.service.user.UserSalaryManageService;
|
|
|
+import com.fjhx.oa.service.user.UserSalaryService;
|
|
|
import com.fjhx.tenant.utils.DeptUstil;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
@@ -41,6 +46,8 @@ public class UserSalaryManageServiceImpl extends ServiceImpl<UserSalaryManageMap
|
|
|
|
|
|
@Resource
|
|
|
private UserSalaryDetailService userSalaryDetailService;
|
|
|
+ @Resource
|
|
|
+ private UserSalaryService userSalaryService;
|
|
|
|
|
|
@Override
|
|
|
public Page<UserSalaryManageVo> getPage(UserSalaryManageSelectDto dto) {
|
|
@@ -79,14 +86,30 @@ public class UserSalaryManageServiceImpl extends ServiceImpl<UserSalaryManageMap
|
|
|
}
|
|
|
userSalaryDetailService.updateBatchById(oldList);
|
|
|
}
|
|
|
+ //保存历史版本
|
|
|
+ UserSalary oldUserSalary = userSalaryService.getOne(q -> q.eq(UserSalary::getUserId, dto.getUserId()).eq(UserSalary::getIsCurrentVer, 1));
|
|
|
+ if (ObjectUtil.isNotEmpty(oldUserSalary)) {
|
|
|
+ UserSalary userSalary = BeanUtil.copyProperties(this.getById(dto.getUserId()), UserSalary.class);
|
|
|
+ userSalary.setId(oldUserSalary.getId());
|
|
|
+ userSalary.setIsCurrentVer(0);
|
|
|
+ userSalaryService.updateById(userSalary);
|
|
|
+ }
|
|
|
|
|
|
//再处理新数据
|
|
|
dataVer++;//版本号+1
|
|
|
this.updateById(dto);
|
|
|
ObsFileUtil.editFile(dto.getFileList(), dto.getUserId(), 10);
|
|
|
+
|
|
|
+ UserSalary newUserSalary = BeanUtil.copyProperties(dto, UserSalary.class);
|
|
|
+ newUserSalary.setDataVer(dataVer);
|
|
|
+ newUserSalary.setIsCurrentVer(1);
|
|
|
+ userSalaryService.save(newUserSalary);
|
|
|
+ ObsFileUtil.copyFileAndSave(dto.getFileList(), newUserSalary.getId(), 10);
|
|
|
+
|
|
|
List<UserSalaryDetail> userSalaryDetailList = dto.getUserSalaryDetailList();
|
|
|
for (UserSalaryDetail userSalaryDetail : userSalaryDetailList) {
|
|
|
userSalaryDetail.setId(null);
|
|
|
+ userSalaryDetail.setUserSalaryId(newUserSalary.getId());
|
|
|
userSalaryDetail.setUserId(dto.getUserId());
|
|
|
userSalaryDetail.setDataVer(dataVer);
|
|
|
userSalaryDetail.setIsCurrentVer(1);
|
|
@@ -94,6 +117,31 @@ public class UserSalaryManageServiceImpl extends ServiceImpl<UserSalaryManageMap
|
|
|
userSalaryDetailService.saveBatch(userSalaryDetailList);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<UserSalaryVo> getHistoryVerList(Long userId) {
|
|
|
+ Assert.notEmpty(userId, "用户id不能为空!");
|
|
|
+ List<UserSalaryVo> list = userSalaryService.getList(q -> q
|
|
|
+ .eq(UserSalary::getUserId, userId)
|
|
|
+ .eq(UserSalary::getIsCurrentVer, 0)
|
|
|
+ .orderByDesc(UserSalary::getDataVer)
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isEmpty(list)) {
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ //赋值明细
|
|
|
+ List<Long> ids = list.stream().map(UserSalary::getId).collect(Collectors.toList());
|
|
|
+ List<UserSalaryDetailVo> userSalaryDetailVos = userSalaryDetailService.getList(IWrapper.getWrapper()
|
|
|
+ .in(UserSalaryDetail::getUserSalaryId, ids)
|
|
|
+ );
|
|
|
+ Map<Long, List<UserSalaryDetailVo>> collect = userSalaryDetailVos.stream().collect(Collectors.groupingBy(UserSalaryDetail::getUserSalaryId));
|
|
|
+ for (UserSalaryVo userSalary : list) {
|
|
|
+ userSalary.setUserSalaryDetailList(collect.getOrDefault(userSalary.getId(), new ArrayList<>()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
private void setInfo(List<UserSalaryManageVo> list) {
|
|
|
if (ObjectUtil.isEmpty(list)) {
|
|
|
return;
|