This commit is contained in:
2025-03-09 20:15:50 +08:00
parent 6cfa7d7528
commit dfb195255b
9 changed files with 74 additions and 39 deletions

View File

@@ -47,6 +47,14 @@ public class OaSalaryController extends BaseController {
public TableDataInfo<OaSalaryVo> list(OaSalaryBo bo, PageQuery pageQuery) {
return iOaSalaryService.queryPageList(bo, pageQuery);
}
/**
* 查询薪资管理列表
*/
@SaCheckPermission("oa:salary:list")
@GetMapping("/list-worker")
public TableDataInfo<OaSalaryVo> listWorker(OaSalaryBo bo, PageQuery pageQuery) {
return iOaSalaryService.queryPageList(bo, pageQuery);
}
/**
* 批量写入user到salary中
@@ -116,7 +124,7 @@ public class OaSalaryController extends BaseController {
@PostMapping("/calc")
public void calc(@RequestBody OaSalaryBo bo) {
iOaSalaryService.calcSalary(bo);
public R<Void> calc(@RequestBody OaSalaryBo bo) {
return R.ok(iOaSalaryService.calcSalary(bo));
}
}

View File

@@ -1,7 +1,6 @@
package com.ruoyi.oa.service;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.oa.domain.OaSalary;
import com.ruoyi.oa.domain.vo.OaSalaryVo;
import com.ruoyi.oa.domain.bo.OaSalaryBo;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -51,9 +50,11 @@ public interface IOaSalaryService {
/**
* 计算工资
*
* @param bo
* @return
*/
void calcSalary(OaSalaryBo bo);
String calcSalary(OaSalaryBo bo);
/**
* 导入当月所有人的记录

View File

@@ -3,29 +3,21 @@ package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.service.UserService;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.flowable.utils.TaskUtils;
import com.ruoyi.oa.domain.OaSalaryItem;
import com.ruoyi.oa.domain.vo.CalcResultVo;
import com.ruoyi.oa.domain.vo.SysOaHolidayVo;
import com.ruoyi.oa.mapper.OaSalaryItemMapper;
import com.ruoyi.oa.service.IOaSalaryItemService;
import com.ruoyi.oa.service.ISysOaHolidayService;
import com.ruoyi.oa.utils.OwnHttpUtils;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.workflow.mapper.WfDeployFormMapper;
import com.ruoyi.workflow.service.IWfTaskService;
import liquibase.pro.packaged.A;
import lombok.RequiredArgsConstructor;
import org.apache.catalina.User;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.TaskService;
@@ -43,10 +35,7 @@ import com.ruoyi.oa.service.IOaSalaryService;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.*;
@@ -106,14 +95,15 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
@Override
public R<Void> importSalaryUser() {
SysUser sysUser = new SysUser();
List<SysUser> sysUsers = userService.selectUserList(sysUser);
List<SysUser> sysUsers = userService.selectUserList2();
for (SysUser user : sysUsers) {
OaSalary oaSalary = new OaSalary();
oaSalary.setUserId(user.getUserId());
oaSalary.setBaseSalary(Double.valueOf(user.getLaborCost()));
oaSalary.setPayTime(new Date());
baseMapper.insert(oaSalary);
if(Objects.nonNull(user)){
OaSalary oaSalary = new OaSalary();
oaSalary.setUserId(user.getUserId());
oaSalary.setBaseSalary(Double.valueOf(user.getLaborCost()));
oaSalary.setPayTime(new Date());
baseMapper.insert(oaSalary);
}
}
return R.ok();
}
@@ -180,21 +170,22 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
/**
* 计算薪资
*
* @param bo
* @return
*/
@Override
public void calcSalary(OaSalaryBo bo) {
public String calcSalary(OaSalaryBo bo) {
// 1先获取对应的json路径 "/home/ubuntu/lyq/fad_oa_kqdeal/202411.json"
String jsonPath = OwnHttpUtils.getJsonName(bo.getMonthStr(), bo.getFilePath());
// 2拿到所有的用户
SysUser sysUser = new SysUser();
Date yearMonth = StringToDate(combineYearMonth(bo.getMonthStr()));
List<SysUser> sysUsers = userService.selectUserList(sysUser);
List<SysUser> sysUsers = userService.selectUserList2();
// 3遍历user列表 拿出所有的nickName分别拿到他们的json 进行第二步分析
for (SysUser user : sysUsers) {
OaSalary salary = baseMapper.selectVoByUserId(user.getUserId());
if (salary == null) {
return;
return jsonPath;
}
// 3.1 拿到一个人打卡机的记录
CalcResultVo res = OwnHttpUtils.getBaseCalc(jsonPath,user.getNickName());
@@ -319,6 +310,7 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
salaryItemMapper.insert(oaSalaryItem);
}
return "计算成功";
}
@@ -432,17 +424,17 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
private Date StringToDate(String dateStr) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 1. 解析字符串到 YearMonth只包含年和月
YearMonth yearMonth = YearMonth.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM"));
// 1. 先解析成 LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse(dateStr, formatter);
// 2. 在 YearMonth 基础上指定“日”为 1
LocalDate localDate = yearMonth.atDay(1);
// 2. 转换为 Instant(指定时区)
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
// 3. 转 Instant
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
// 3. 转成旧版 Date
// 4. 转成旧版 Date
return Date.from(instant);
}
private String DateToString(Date date) {