From dfb195255bec86e41d3cb8462f68910abced264a Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Sun, 9 Mar 2025 20:15:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/controller/OaSalaryController.java | 12 ++++- .../ruoyi/oa/service/IOaSalaryService.java | 5 +- .../oa/service/impl/OaSalaryServiceImpl.java | 52 ++++++++----------- .../resources/mapper/oa/OaSalaryMapper.xml | 5 -- .../ruoyi/system/mapper/SysUserMapper.java | 7 +++ .../ruoyi/system/service/ISysUserService.java | 6 +++ .../service/impl/SysUserServiceImpl.java | 7 +++ .../resources/mapper/system/SysUserMapper.xml | 16 ++++++ ruoyi-ui/src/views/index.vue | 3 ++ 9 files changed, 74 insertions(+), 39 deletions(-) diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaSalaryController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaSalaryController.java index e073f69..bcfb3f5 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaSalaryController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaSalaryController.java @@ -47,6 +47,14 @@ public class OaSalaryController extends BaseController { public TableDataInfo list(OaSalaryBo bo, PageQuery pageQuery) { return iOaSalaryService.queryPageList(bo, pageQuery); } + /** + * 查询薪资管理列表 + */ + @SaCheckPermission("oa:salary:list") + @GetMapping("/list-worker") + public TableDataInfo 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 calc(@RequestBody OaSalaryBo bo) { + return R.ok(iOaSalaryService.calcSalary(bo)); } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaSalaryService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaSalaryService.java index 3d9d235..faff538 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaSalaryService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaSalaryService.java @@ -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); /** * 导入当月所有人的记录 diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryServiceImpl.java index 62c5a5d..66bb6bf 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaSalaryServiceImpl.java @@ -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 importSalaryUser() { - SysUser sysUser = new SysUser(); - List sysUsers = userService.selectUserList(sysUser); + List 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 sysUsers = userService.selectUserList(sysUser); + List 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) { diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaSalaryMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaSalaryMapper.xml index ba41cda..49f4c45 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/OaSalaryMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaSalaryMapper.xml @@ -45,18 +45,13 @@ AND YEAR(osi.sign_time) = YEAR(#{payTime}) AND MONTH(osi.sign_time) = MONTH(#{payTime}) LEFT JOIN sys_user su ON os.user_id = su.user_id - - YEAR(os.pay_time) = YEAR(#{payTime}) AND MONTH(os.pay_time) = MONTH(#{payTime}) - - AND ${ew.customSqlSegment} - GROUP BY os.salary_id, os.user_id, diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index 0baf736..66bcd4b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -99,4 +99,11 @@ public interface SysUserMapper extends BaseMapperPlus selectListAndNotDel(); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 17c0b51..462ddd1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -227,4 +227,10 @@ public interface ISysUserService { */ int deleteUserByIds(Long[] userIds); + /** + * 查找所有没有被删除的用户的基本信息 + * @return + */ + List selectUserList2(); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 6c24153..4c8b54a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -34,6 +34,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -487,6 +488,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService { return baseMapper.deleteBatchIds(ids); } + @Override + public List selectUserList2() { + + return baseMapper.selectListAndNotDel(); + } + @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId") @Override public String selectUserNameById(Long userId) { diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 6b96510..7edf3cc 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -50,6 +50,17 @@ + + + + + + + + + + + select u.user_id, u.dept_id, @@ -151,4 +162,9 @@ + + + diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index 0e747ca..ebff916 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -2,6 +2,7 @@
+ @@ -32,6 +33,7 @@ import Inventory from "../components/Inventory/index.vue"; import Announcements from "../components/Announcements/index.vue"; import ProjectManagement from "../components/ProjectManagement/index.vue"; import FinancialCharts from "../components/FinancialCharts/index.vue"; +import {importUser} from "@/api/oa/salary"; export default { name: "Index", @@ -62,6 +64,7 @@ export default { this.getListNotice(); }, methods: { + getList() { getCache().then((response) => { this.cache = response.data;