|
@@ -0,0 +1,114 @@
|
|
|
+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;
|
|
|
+import com.fjhx.oa.entity.user.dto.UserSalaryManageDto;
|
|
|
+import com.fjhx.oa.entity.user.dto.UserSalaryManageSelectDto;
|
|
|
+import com.fjhx.oa.entity.user.po.UserSalaryDetail;
|
|
|
+import com.fjhx.oa.entity.user.po.UserSalaryManage;
|
|
|
+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.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ * <p>
|
|
|
+ * 员工薪资管理 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2024-06-11
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class UserSalaryManageServiceImpl extends ServiceImpl<UserSalaryManageMapper, UserSalaryManage> implements UserSalaryManageService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private UserSalaryDetailService userSalaryDetailService;
|
|
|
+
|
|
|
+ @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);
|
|
|
+ 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<>()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @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));
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+
|
|
|
+ List<UserSalaryDetail> userSalaryDetailList = dto.getUserSalaryDetailList();
|
|
|
+ for (UserSalaryDetail userSalaryDetail : userSalaryDetailList) {
|
|
|
+ userSalaryDetail.setId(null);
|
|
|
+ userSalaryDetail.setUserSalaryManageId(dto.getId());
|
|
|
+ }
|
|
|
+ userSalaryDetailService.saveBatch(userSalaryDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(UserSalaryManageDto userSalaryManageDto) {
|
|
|
+ this.updateById(userSalaryManageDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(Long id) {
|
|
|
+ this.removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|