From e8adc2b14d77dd1968b20d3a138f9ce0416cb6e7 Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Thu, 12 Jun 2025 17:43:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=99=E4=B8=AA=E6=AD=BB=E8=B4=A2=E5=8A=A1?= =?UTF-8?q?=E6=8F=90=E7=9A=84=E8=8E=AB=E5=90=8D=E5=85=B6=E5=A6=99=E7=9A=84?= =?UTF-8?q?=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OaAttendanceRecordController.java | 22 +++- .../SysOaWarehouseMasterController.java | 9 ++ .../ruoyi/oa/domain/ProjectAttendance.java | 13 ++ .../oa/domain/vo/ProjectAttendanceVo.java | 19 +++ .../oa/mapper/OaAttendanceRecordMapper.java | 11 ++ .../oa/mapper/SysOaAttendanceMapper.java | 2 + .../service/IOaAttendanceRecordService.java | 3 + .../service/ISysOaWarehouseMasterService.java | 8 ++ .../impl/OaAttendanceRecordServiceImpl.java | 89 +++++++++++++- .../service/impl/SysOaProjectServiceImpl.java | 2 +- .../impl/SysOaWarehouseMasterServiceImpl.java | 65 +++++----- .../mapper/oa/OaAttendanceRecordMapper.xml | 113 ++++++++++++++---- .../mapper/oa/SysOaAttendanceMapper.xml | 21 ++++ 13 files changed, 317 insertions(+), 60 deletions(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/ProjectAttendance.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/ProjectAttendanceVo.java diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaAttendanceRecordController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaAttendanceRecordController.java index 97a740d..2f200f1 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaAttendanceRecordController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaAttendanceRecordController.java @@ -2,23 +2,21 @@ package com.ruoyi.oa.controller; import java.util.List; import java.util.Arrays; -import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import com.ruoyi.oa.domain.vo.ProjectAttendanceVo; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; -import cn.dev33.satoken.annotation.SaCheckPermission; + import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.ruoyi.common.annotation.RepeatSubmit; -import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; -import com.ruoyi.common.core.validate.QueryGroup; -import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo; import com.ruoyi.oa.domain.bo.OaAttendanceRecordBo; @@ -99,4 +97,18 @@ public class OaAttendanceRecordController extends BaseController { @PathVariable Long[] recordIds) { return toAjax(iOaAttendanceRecordService.deleteWithValidByIds(Arrays.asList(recordIds), true)); } + + + + @GetMapping("/attendance") + public R>getAttendance( + @RequestParam List userIds, + @RequestParam(required = false) String calcTime, + @RequestParam String relationMonth) { + // 使用 Stream 将 List 转换为 List + List longList = userIds.stream() + .map(Long::parseLong) // 将每个 String 转换为 Long + .collect(Collectors.toList()); + return R.ok(iOaAttendanceRecordService.getAttendance(longList,calcTime, relationMonth)); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java index 56e03d4..aca58ae 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java @@ -128,4 +128,13 @@ public class SysOaWarehouseMasterController extends BaseController { @PathVariable Long[] masterIds) { return toAjax(iSysOaWarehouseMasterService.deleteWithValidByIds(Arrays.asList(masterIds), true)); } + + /** + * 撤回出库单 + * 这个傻逼库房非得让写个撤回 勾八自己写错了信息化背锅 + */ + @GetMapping("/redo/{masterId}") + public R redo(@PathVariable("masterId") Long masterId) { + return toAjax(iSysOaWarehouseMasterService.redoMaster(masterId)); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/ProjectAttendance.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/ProjectAttendance.java new file mode 100644 index 0000000..68f2449 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/ProjectAttendance.java @@ -0,0 +1,13 @@ +package com.ruoyi.oa.domain; + + +import lombok.Data; + +@Data +public class ProjectAttendance { + private Long userId; + private String relationMonth; + private Long projectId; + private String projectName; + private Long workDays; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/ProjectAttendanceVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/ProjectAttendanceVo.java new file mode 100644 index 0000000..ca5c022 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/ProjectAttendanceVo.java @@ -0,0 +1,19 @@ +package com.ruoyi.oa.domain.vo; + + +import com.ruoyi.oa.domain.ProjectAttendance; +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectAttendanceVo { + private Long userId; + private String relationMonth; + private String nickName; + + private List projects; + + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaAttendanceRecordMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaAttendanceRecordMapper.java index 581a477..662f7c9 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaAttendanceRecordMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaAttendanceRecordMapper.java @@ -1,8 +1,11 @@ package com.ruoyi.oa.mapper; +import com.ruoyi.oa.domain.ProjectAttendance; +import com.ruoyi.oa.domain.vo.ProjectAttendanceVo; import com.ruoyi.oa.domain.OaAttendanceRecord; import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; +import com.ruoyi.oa.domain.vo.SysOaProjectVo; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -38,4 +41,12 @@ public interface OaAttendanceRecordMapper extends BaseMapperPlus getAttendance(@Param("userIds") List userIds, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth); + + SysOaProjectVo getProjectById(Long projectId); + + Long getWorkDays(@Param("userId") Long userId, @Param("projectIds") String[] projectIds, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth); + + List selectProjectIds(@Param("userIds") List userIds, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java index ef0063e..11ff735 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java @@ -44,4 +44,6 @@ public interface SysOaAttendanceMapper extends BaseMapperPlus selectMonthlyCounts(String refDate); + + Long getWorkDaysByUserIdAndProjectId(@Param("userId") Long userId, @Param("projectId") Long projectId, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaAttendanceRecordService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaAttendanceRecordService.java index 63b1ad0..35defbb 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaAttendanceRecordService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaAttendanceRecordService.java @@ -1,5 +1,6 @@ package com.ruoyi.oa.service; +import com.ruoyi.oa.domain.vo.ProjectAttendanceVo; import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo; import com.ruoyi.oa.domain.bo.OaAttendanceRecordBo; import com.ruoyi.common.core.page.TableDataInfo; @@ -53,4 +54,6 @@ public interface IOaAttendanceRecordService { */ List listGenDate(String date); + List getAttendance(List userIds,String calcTime, String relationMonth); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java index 54d75b6..27011c8 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java @@ -63,4 +63,12 @@ public interface ISysOaWarehouseMasterService { */ int updateMasterAndInsertBatchWare(SysOaWarehouseMasterBo bo); + + /** + * 撤回出库 + * @param masterId + * @return + */ + int redoMaster(Long masterId); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaAttendanceRecordServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaAttendanceRecordServiceImpl.java index a82b5c1..daa80a2 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaAttendanceRecordServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaAttendanceRecordServiceImpl.java @@ -1,13 +1,20 @@ package com.ruoyi.oa.service.impl; import cn.hutool.core.bean.BeanUtil; -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.oa.domain.ProjectAttendance; +import com.ruoyi.oa.domain.vo.ProjectAttendanceVo; +import com.ruoyi.oa.domain.vo.SysOaProjectVo; +import com.ruoyi.oa.mapper.SysOaAttendanceMapper; +import com.ruoyi.oa.mapper.SysOaProjectMapper; +import com.ruoyi.system.mapper.SysUserMapper; +import liquibase.pro.packaged.A; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.OaAttendanceRecordBo; import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo; @@ -29,6 +36,15 @@ public class OaAttendanceRecordServiceImpl implements IOaAttendanceRecordService private final OaAttendanceRecordMapper baseMapper; + @Autowired + private SysOaProjectMapper projectMapper; + + @Autowired + private SysOaAttendanceMapper attendanceMapper; + + @Autowired + private SysUserMapper userMapper; + /** * 查询计算记录 */ @@ -130,4 +146,75 @@ public class OaAttendanceRecordServiceImpl implements IOaAttendanceRecordService return baseMapper.listGenDate(date); } + + /** + * + * @param userIds + * @param calcTime “yyyy-MM-dd” + * @param relationMonth “yyyy-MM-dd” + * @return + */ + @Override + public List getAttendance(List userIds, String calcTime,String relationMonth) { + // 首先查询合并好的projectIds 然后在查到的这个Long类型的列表后加入 0 1, 分别代表0出差1请假 + List projectIdsString = baseMapper.selectProjectIds(userIds,calcTime,relationMonth); + List projectIds = parseProjectIds(projectIdsString); + projectIds.add(0L); + projectIds.add(1L); + // 然后拿着每一个userId和projectId去签到表查询出勤 在传入的计算时间之前 + List attendanceVoList = new ArrayList<>(); + for (Long userId : userIds) { + + List projects = new ArrayList<>(); + for (Long projectId : projectIds) { + // 老规矩如果calcTime和relationMonth不在一个月则查询relationMonth全月的 如果在一个月则查询从一号到calcTime的出勤次数 及day_length>0或hour>0或project_id=0 + Long workDays = attendanceMapper.getWorkDaysByUserIdAndProjectId(userId,projectId,calcTime,relationMonth); + + ProjectAttendance projectAttendance = new ProjectAttendance(); + projectAttendance.setProjectId(projectId); + projectAttendance.setWorkDays(workDays); + if (projectId.equals(0L)) { + projectAttendance.setProjectName("出差"); + }else if (projectId.equals(1L)) { + projectAttendance.setProjectName("请假"); + }else{ + SysOaProjectVo sysOaProjectVo = projectMapper.selectVoById(projectId); + projectAttendance.setProjectName(sysOaProjectVo.getProjectName()); + } + + projects.add(projectAttendance); + } + ProjectAttendanceVo projectAttendanceVo = new ProjectAttendanceVo(); + projectAttendanceVo.setProjects(projects); + projectAttendanceVo.setRelationMonth(relationMonth); + projectAttendanceVo.setNickName(userMapper.selectVoById(userId).getNickName()); + attendanceVoList.add(projectAttendanceVo); + } + // + return attendanceVoList; + } + + + + public static List parseProjectIds(List projectIdsString) { + // 使用 HashSet 来确保去重 + Set projectIdSet = new HashSet<>(); + // 遍历输入的每个字符串 + for (String ids : projectIdsString) { + // 按照逗号分割每个字符串 + String[] idsArray = ids.split(","); + + // 将每个分割出来的 ID 转换为 Long 类型并添加到 Set 中 + for (String id : idsArray) { + // 去除空格并检查是否为空字符串 + id = id.trim(); // 去除两端的空格 + if (!id.isEmpty()) { // 如果不为空 + projectIdSet.add(Long.parseLong(id)); // 转换并添加到 Set 中 + } + } + } + + // 返回 List,Set 会自动去重 + return new ArrayList<>(projectIdSet); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java index 2268534..6b73ecc 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java @@ -78,7 +78,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.like(StringUtils.isNotBlank(bo.getProjectName()), SysOaProject::getProjectName, bo.getProjectName()); - lqw.eq(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum()); + lqw.like(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum()); lqw.like(StringUtils.isNotBlank(bo.getProjectCode()), SysOaProject::getProjectCode, bo.getProjectCode()); lqw.eq(bo.getTradeType() != null, SysOaProject::getTradeType, bo.getTradeType()); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java index 5209617..6c864cc 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java @@ -3,23 +3,31 @@ package com.ruoyi.oa.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.BeanCopyUtils; 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.toolkit.Wrappers; +import com.ruoyi.oa.domain.SysOaWarehouse; import com.ruoyi.oa.domain.SysOaWarehouseDetail; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo; +import com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo; +import com.ruoyi.oa.domain.vo.SysOaWarehouseVo; import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper; +import com.ruoyi.oa.mapper.SysOaWarehouseMapper; import com.ruoyi.oa.service.ISysOaWarehouseDetailService; +import com.ruoyi.oa.service.ISysOaWarehouseService; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo; import com.ruoyi.oa.domain.vo.SysOaWarehouseMasterVo; import com.ruoyi.oa.domain.SysOaWarehouseMaster; import com.ruoyi.oa.mapper.SysOaWarehouseMasterMapper; import com.ruoyi.oa.service.ISysOaWarehouseMasterService; +import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -39,6 +47,9 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer private final ISysOaWarehouseDetailService warehouseDetailService; + @Autowired + private SysOaWarehouseMapper warehouseMapper; + /** * 查询出库单管理 @@ -161,7 +172,6 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - System.out.println(ids); if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } @@ -210,36 +220,6 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer return flag; - -// // 获取是否存在此采购单的入库单 -// if (bo.getType() == 2L) { -// for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : bo.getWarehouseList()) { -// Long taskStatus = item.getTaskStatus(); -// if (taskStatus == 1|| taskStatus == 0) { -// item.setInventory(item.getTaskInventory()); -// SysOaWarehouseDetailBo bo = new SysOaWarehouseDetailBo(); -// bo.setAmount(item.getInventory()); -// bo.setSignPrice(item.getPrice()); -// Long warehouseId = insertByBo2(item); -// bo.setWarehouseId(warehouseId); -// list.add(bo); -// } -// } -// SysOaWarehouseMasterBo sysOaWarehouseMaster = new SysOaWarehouseMasterBo(); -// sysOaWarehouseMaster.setType(1L); -// List list = new ArrayList<>(); -// boList.forEach(item -> { -// -// }); -// sysOaWarehouseMaster.setWarehouseList(list); -// sysOaWarehouseMaster.setMasterNum(UUID.randomUUID().toString()); -// return masterService.insertByBo(sysOaWarehouseMaster); -// } -// -// -// // 如果不是2应该进不来 后面看一下是否删除掉 - - } @@ -247,4 +227,27 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer return 0; } + + @Override + @Transactional(rollbackFor = Exception.class) + public int redoMaster(Long masterId) { + SysOaWarehouseDetailBo sysOaWarehouseDetailBo = new SysOaWarehouseDetailBo(); + sysOaWarehouseDetailBo.setMasterId(masterId); + List sysOaWarehouseDetailVos = warehouseDetailService.queryList(sysOaWarehouseDetailBo); + for (SysOaWarehouseDetailVo sysOaWarehouseDetailVo : sysOaWarehouseDetailVos) { + SysOaWarehouseVo sysOaWarehouseVo = warehouseMapper.selectVoById(sysOaWarehouseDetailVo.getWarehouseId()); + // 拿到原有的物料 + if (sysOaWarehouseVo != null) { + // 如果还存在此物料就把库存恢复 然后把价格加权计算 + Long newInventory = sysOaWarehouseDetailVo.getAmount()+sysOaWarehouseVo.getInventory(); + Double newPrice = (sysOaWarehouseDetailVo.getSignPrice()*sysOaWarehouseDetailVo.getAmount()+sysOaWarehouseVo.getPrice()*sysOaWarehouseVo.getInventory())/(newInventory); + sysOaWarehouseVo.setPrice(newPrice); + sysOaWarehouseVo.setInventory(newInventory); + warehouseMapper.updateById(sysOaWarehouseVo); + } + + } + // 全部做完之后删除此出库单 + return baseMapper.deleteById(masterId); + } } diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaAttendanceRecordMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaAttendanceRecordMapper.xml index dcfad8a..925c387 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/OaAttendanceRecordMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaAttendanceRecordMapper.xml @@ -7,31 +7,31 @@ - + - + - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ r.relation_month, r.calc_time, r.nick_name, - u.labor_cost, + u.labor_cost, r.trips, r.not_num, r.works, @@ -72,7 +72,7 @@ LEFT JOIN (SELECT user_id, project_id, - DATE_FORMAT(create_time, '%Y-%m') AS relation_month, + DATE_FORMAT(create_time, '%Y-%m') AS relation_month, COUNT(CASE WHEN project_id != 0 and project_id != 1 THEN 1 END) AS work_times, @@ -95,7 +95,7 @@ GROUP BY user_id, project_id, relation_month) m ON m.user_id = r.user_id AND m.project_id = p.project_id - AND m.relation_month =DATE_FORMAT( r.relation_month , '%Y-%m') + AND m.relation_month = DATE_FORMAT(r.relation_month, '%Y-%m') WHERE r.del_flag = 0 AND r.record_id = #{recordId} @@ -117,9 +117,78 @@ and DAY(calc_time) = DAY(#{date}) and YEAR(relation_month) = YEAR(#{firstDay}) and MONTH(relation_month) = month(#{firstDay}) - and del_flag = 0 + and del_flag = 0 + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml index b77e703..b324057 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml @@ -305,6 +305,27 @@ GROUP BY m.month ORDER BY m.month DESC; -- 本月在前,上月在后 +