Browse Source

薪资管理调整

yzc 1 year ago
parent
commit
88fd3cad81

+ 9 - 17
hx-oa/src/main/java/com/fjhx/oa/controller/user/UserSalaryManageController.java

@@ -5,27 +5,27 @@ import com.fjhx.oa.entity.user.dto.UserSalaryManageDto;
 import com.fjhx.oa.entity.user.dto.UserSalaryManageSelectDto;
 import com.fjhx.oa.entity.user.vo.UserSalaryManageVo;
 import com.fjhx.oa.service.user.UserSalaryManageService;
-import com.ruoyi.common.core.domain.BaseSelectDto;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+
 
 /**
  * <p>
  * 员工薪资管理 前端控制器
  * </p>
  *
- * @author
+ * @author _
  * @since 2024-06-11
  */
 @RestController
 @RequestMapping("/userSalaryManage")
 public class UserSalaryManageController {
 
-    @Autowired
+    @Resource
     private UserSalaryManageService userSalaryManageService;
 
     /**
@@ -40,24 +40,16 @@ public class UserSalaryManageController {
      * 员工薪资管理明细
      */
     @PostMapping("/detail")
-    public UserSalaryManageVo detail(@RequestBody BaseSelectDto dto) {
-        return userSalaryManageService.detail(dto.getId());
+    public UserSalaryManageVo detail(@RequestBody UserSalaryManageDto dto) {
+        return userSalaryManageService.detail(dto.getUserId());
     }
 
     /**
      * 员工薪资管理新增
      */
-    @PostMapping("/addVersion")
-    public void addVersion(@RequestBody UserSalaryManageDto userSalaryManageDto) {
-        userSalaryManageService.addVersion(userSalaryManageDto);
-    }
-
-    /**
-     * 员工薪资管理删除
-     */
-    @PostMapping("/delete")
-    public void delete(@RequestBody BaseSelectDto dto) {
-        userSalaryManageService.delete(dto.getId());
+    @PostMapping("/edit")
+    public void edit(@RequestBody UserSalaryManageDto userSalaryManageDto) {
+        userSalaryManageService.edit(userSalaryManageDto);
     }
 
 }

+ 5 - 2
hx-oa/src/main/java/com/fjhx/oa/entity/user/po/UserSalaryDetail.java

@@ -21,9 +21,9 @@ import java.math.BigDecimal;
 public class UserSalaryDetail extends BasePo {
 
     /**
-     * 用户薪资管理id
+     * 用户id
      */
-    private Long userSalaryManageId;
+    private Long userId;
 
     /**
      * 薪资结构id
@@ -35,4 +35,7 @@ public class UserSalaryDetail extends BasePo {
      */
     private BigDecimal money;
 
+    private Integer dataVer;
+    private Integer isCurrentVer;
+
 }

+ 53 - 26
hx-oa/src/main/java/com/fjhx/oa/entity/user/po/UserSalaryManage.java

@@ -1,65 +1,92 @@
 package com.fjhx.oa.entity.user.po;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
- * <p>
  * 员工薪资管理
- * </p>
- *
- * @author
- * @since 2024-06-11
  */
 @Getter
 @Setter
-@TableName("user_salary_manage")
-public class UserSalaryManage extends BasePo {
+@TableName("sys_user")
+public class UserSalaryManage {
 
-    /**
-     * 员工id
-     */
     private Long userId;
+    private Long companyId;
+    private Long deptId;
+    private String nickName;
 
     /**
      * 10实习员工、20试用员工、30正式员工
      */
     private String employeeType;
-
     /**
      * 试用期薪资比例
      */
-    private BigDecimal probationRatio;
-
+    private Integer probationRatio;
     /**
      * 实习期薪资比例
      */
-    private BigDecimal internshipRatio;
-
+    private Integer InternshipRatio;
     /**
-     * 合计金额
+     * 薪资合计
      */
     private BigDecimal amount;
-
     /**
-     * 版本号
+     * 学历
+     */
+    private String education;
+    /**
+     * 岗位
+     */
+    private String post;
+    /**
+     * 试用期
+     */
+    private Integer probationPeriod;
+    /**
+     * 生效日期
+     */
+    private Date effectiveDate;
+    /**
+     * 转正日期
+     */
+    private Date fullTimeDate;
+    /**
+     * 月休
+     */
+    private Integer monthRest;
+    /**
+     * 日工作时长
+     */
+    private Integer dailyHours;
+    /**
+     * 上午开始工作时间
+     */
+    private Date morningBeginTime;
+    /**
+     * 上午结束工作时间
+     */
+    private Date morningEndTime;
+    /**
+     * 下午开始工作时间
      */
-    private Integer dataVer;
+    private Date afternoonBeginTime;
     /**
-     * 版本组id
+     * 下午结束工作时间
      */
-    private Long groupId;
+    private Date afternoonEndTime;
     /**
-     * 是否是当前版本
+     * 薪资结算方式
      */
-    private Integer currentVersion;
+    private String settleMethod;
     /**
-     * 上一版本id
+     * 薪资说明
      */
-    private Long parentId;
+    private String salaryRemark;
 
 }

+ 3 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/user/vo/UserSalaryManageVo.java

@@ -18,6 +18,9 @@ import java.util.List;
 @Setter
 public class UserSalaryManageVo extends UserSalaryManage {
 
+    private String companyName;
+    private String deptName;
+
     /**
      * 薪资明细
      */

+ 12 - 1
hx-oa/src/main/java/com/fjhx/oa/mapper/user/UserSalaryManageMapper.java

@@ -2,11 +2,15 @@ package com.fjhx.oa.mapper.user;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.user.dto.UserSalaryManageDto;
 import com.fjhx.oa.entity.user.po.UserSalaryManage;
 import com.fjhx.oa.entity.user.vo.UserSalaryManageVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -16,11 +20,18 @@ import org.apache.ibatis.annotations.Param;
  * @author
  * @since 2024-06-11
  */
+@Mapper
 public interface UserSalaryManageMapper extends BaseMapper<UserSalaryManage> {
 
     /**
      * 员工薪资管理分页
      */
-    Page<UserSalaryManageVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<UserSalaryManage> wrapper);
+    Page<UserSalaryManageVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
+    List<UserSalaryManageVo> getPage(@Param("ew") IWrapper<Object> wrapper);
+
+    UserSalaryManageVo getDetail(@Param("userId") Long userId);
+
+    Integer updateById(UserSalaryManageDto dto);
 
 }

+ 1 - 18
hx-oa/src/main/java/com/fjhx/oa/service/user/UserSalaryManageService.java

@@ -3,20 +3,13 @@ package com.fjhx.oa.service.user;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.oa.entity.user.dto.UserSalaryManageDto;
 import com.fjhx.oa.entity.user.dto.UserSalaryManageSelectDto;
-import com.fjhx.oa.entity.user.po.UserSalaryManage;
 import com.fjhx.oa.entity.user.vo.UserSalaryManageVo;
-import com.ruoyi.common.core.service.BaseService;
 
 
 /**
- * <p>
  * 员工薪资管理 服务类
- * </p>
- *
- * @author
- * @since 2024-06-11
  */
-public interface UserSalaryManageService extends BaseService<UserSalaryManage> {
+public interface UserSalaryManageService {
 
     /**
      * 员工薪资管理分页
@@ -29,18 +22,8 @@ public interface UserSalaryManageService extends BaseService<UserSalaryManage> {
     UserSalaryManageVo detail(Long id);
 
     /**
-     * 员工薪资管理新增
-     */
-    void addVersion(UserSalaryManageDto userSalaryManageDto);
-
-    /**
      * 员工薪资管理编辑
      */
     void edit(UserSalaryManageDto userSalaryManageDto);
 
-    /**
-     * 员工薪资管理删除
-     */
-    void delete(Long id);
-
 }

+ 56 - 49
hx-oa/src/main/java/com/fjhx/oa/service/user/impl/UserSalaryManageServiceImpl.java

@@ -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);
     }
 
 }

+ 1 - 1
hx-oa/src/main/resources/mapper/user/UserSalaryDetailMapper.xml

@@ -4,7 +4,7 @@
     <select id="getList" resultType="com.fjhx.oa.entity.user.vo.UserSalaryDetailVo">
         SELECT usd.*
         FROM user_salary_detail usd
-                 JOIN user_salary_manage usm ON usd.user_salary_manage_id = usm.id
+                 JOIN sys_user su ON usd.user_id = su.user_id
             ${ew.customSqlSegment}
     </select>
 </mapper>

+ 58 - 17
hx-oa/src/main/resources/mapper/user/UserSalaryManageMapper.xml

@@ -1,23 +1,64 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.oa.mapper.user.UserSalaryManageMapper">
+    <sql id="list">
+        SELECT su.user_id,
+               su.nick_name,
+               su.company_id,
+               su.dept_id,
+               su.employee_type,
+               su.probation_ratio,
+               su.internship_ratio,
+               su.amount,
+               su.education,
+               su.post,
+               su.probation_period,
+               su.effective_date,
+               su.full_time_date,
+               su.month_rest,
+               su.daily_hours,
+               su.morning_begin_time,
+               su.morning_end_time,
+               su.afternoon_begin_time,
+               su.afternoon_end_time,
+               su.settle_method,
+               su.salary_remark
+        FROM sys_user su
+    </sql>
     <select id="getPage" resultType="com.fjhx.oa.entity.user.vo.UserSalaryManageVo">
-        select usm.id,
-               usm.user_id,
-               usm.employee_type,
-               usm.probation_ratio,
-               usm.Internship_ratio,
-               usm.amount,
-               usm.data_ver,
-               usm.group_id,
-               usm.current_version,
-               usm.parent_id,
-               usm.create_user,
-               usm.create_time,
-               usm.update_user,
-               usm.update_time
-        from user_salary_manage usm
-            ${ew.customSqlSegment}
+        <include refid="list"/>
+        ${ew.customSqlSegment}
     </select>
-
+    <select id="getDetail" resultType="com.fjhx.oa.entity.user.vo.UserSalaryManageVo">
+        <include refid="list"/>
+        where su.user_id = #{userId}
+    </select>
+    <update id="updateById">
+        update sys_user
+        <set>
+            <if test="employeeType != null and employeeType != ''">employee_type = #{employeeType},</if>
+            <if test="probationRatio != null and probationRatio != ''">probation_ratio = #{probationRatio},</if>
+            <if test="internshipRatio != null and internshipRatio != ''">internship_ratio = #{internshipRatio},</if>
+            <if test="amount != null and amount != ''">amount = #{amount},</if>
+            <if test="education != null and education != ''">education = #{education},</if>
+            <if test="post != null and post != ''">post = #{post},</if>
+            <if test="probationPeriod != null and probationPeriod != ''">probation_period = #{probationPeriod},</if>
+            <if test="effectiveDate != null and effectiveDate != ''">effective_date = #{effectiveDate},</if>
+            <if test="fullTimeDate != null and fullTimeDate != ''">full_time_date = #{fullTimeDate},</if>
+            <if test="monthRest != null and monthRest != ''">month_rest = #{monthRest},</if>
+            <if test="dailyHours != null and dailyHours != ''">daily_hours = #{dailyHours},</if>
+            <if test="morningBeginTime != null and morningBeginTime != ''">morning_begin_time = #{morningBeginTime},
+            </if>
+            <if test="morningEndTime != null and morningEndTime != ''">morning_end_time = #{morningEndTime},</if>
+            <if test="afternoonBeginTime != null and afternoonBeginTime != ''">afternoon_begin_time
+                =#{afternoonBeginTime},
+            </if>
+            <if test="afternoonEndTime != null and afternoonEndTime != ''">afternoon_end_time = #{afternoonEndTime},
+            </if>
+            <if test="settleMethod != null and settleMethod != ''">settle_method = #{settleMethod},</if>
+            <if test="salaryRemark != null and salaryRemark != ''">salary_remark = #{salaryRemark},</if>
+            update_time = sysdate()
+        </set>
+        where user_id = #{userId}
+    </update>
 </mapper>