From 35369ecc3f36151eb7a8984a56902bfd59d6f117 Mon Sep 17 00:00:00 2001 From: lSun <15893999301@qq.com> Date: Thu, 26 Dec 2024 16:01:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E9=9A=94?= =?UTF-8?q?=E7=A6=BB=EF=BC=8Cbug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lSun <15893999301@qq.com> --- .../AttendanceDetailsController.java | 43 ++++++++++-- .../evection/service/EvectionServiceImpl.java | 2 +- .../controller/LeaveReportingController.java | 33 +++++++++ .../leaveReporting/dao/LeaveReportingDao.java | 2 + .../entity/LeaveReportingBean.java | 3 + .../service/LeaveReportingService.java | 5 ++ .../service/LeaveReportingServiceImpl.java | 67 +++++++++++++++++++ .../bonus/system/wechat/dao/WechatDao.java | 3 +- .../system/wechat/entity/WechatBean.java | 5 ++ .../service/WechatEvectionServiceImpl.java | 21 ++++-- .../WechatLeaveReportingServiceImpl.java | 17 +++++ .../wechat/service/WechatServiceImpl.java | 18 +++++ .../LeaveReporting/LeaveReportingMapper.xml | 7 ++ .../mapper/att/AttendanceDetailsMapper.xml | 6 ++ .../mapper/holiday/WorkReportMapper.xml | 1 + .../mapper/wechat/WechatEvectionMapper.xml | 7 ++ .../wechat/WechatLeaveReportingMapper.xml | 7 ++ .../resources/mapper/wechat/WechatMapper.xml | 10 +++ 18 files changed, 246 insertions(+), 11 deletions(-) diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java index 85f8ea4..b65f5da 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/att/controller/AttendanceDetailsController.java @@ -56,6 +56,39 @@ public class AttendanceDetailsController extends BaseController { @Log(title = "考勤报表->考勤明细->列表查询", businessType = BusinessType.QUERY) public TableDataInfo getOriginalList(AttDataDetailsBean bean) { try{ + // 部门负责人和部门考勤员可以在考勤明细页面看到本部门人员的考勤信息,管理员和人资专员可以看所有数据,普通人员看到自己数据 + Long userId = SecurityUtils.getUserId(); + List sysRoleList = dao.getRoleListByUserId(userId); + int roleCount = 0; + if(!sysRoleList.isEmpty()){ + for (SysRole sysRole : sysRoleList) { + if(sysRole.getRoleId().equals(1L)){ + roleCount = 1; + break; + }else if(sysRole.getRoleId().equals(16L)){ + roleCount = 1; + break; + }else if(sysRole.getRoleId().equals(14L)){ + roleCount = 2; + break; + }else if(sysRole.getRoleId().equals(13L)){ + roleCount = 2; + break; + }else if(sysRole.getRoleId().equals(15L)){ + roleCount = 3; + break; + } + } + } + + if(roleCount==2){ + String ids = userMapper.getOrg(userId); + bean.setRoleType("2"); + bean.setOrgListId(ids); + }else if(roleCount==3){ + bean.setRoleType("3"); + bean.setUserId(userId); + } startPage(); return getDataTable(attendanceDetailsService.selectAttOriginalList(bean)); }catch (Exception e){ @@ -78,19 +111,19 @@ public class AttendanceDetailsController extends BaseController { int roleCount = 0; if(!sysRoleList.isEmpty()){ for (SysRole sysRole : sysRoleList) { - if(sysRole.getRoleName().contains("管理员")){ + if(sysRole.getRoleId().equals(1L)){ roleCount = 1; break; - }else if(sysRole.getRoleName().contains("人资专员")){ + }else if(sysRole.getRoleId().equals(16L)){ roleCount = 1; break; - }else if(sysRole.getRoleName().contains("部门负责人")){ + }else if(sysRole.getRoleId().equals(14L)){ roleCount = 2; break; - }else if(sysRole.getRoleName().contains("部门考勤员")){ + }else if(sysRole.getRoleId().equals(13L)){ roleCount = 2; break; - }else if(sysRole.getRoleName().contains("普通人员")){ + }else if(sysRole.getRoleId().equals(15L)){ roleCount = 3; break; } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/evection/service/EvectionServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/evection/service/EvectionServiceImpl.java index 8e095c2..0457861 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/evection/service/EvectionServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/evection/service/EvectionServiceImpl.java @@ -54,7 +54,7 @@ public class EvectionServiceImpl implements EvectionService { o.setUuid(uuId); o.setCreateUserId(userId); o.setSource("1"); - String travelers = o.getTravelers(); + String travelers = o.getTravelers(); String[] split = travelers.split(","); String[] splitName = o.getTravelersName().split(","); int k = 0; diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/controller/LeaveReportingController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/controller/LeaveReportingController.java index d654fc8..3ff7074 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/controller/LeaveReportingController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/controller/LeaveReportingController.java @@ -161,4 +161,37 @@ public class LeaveReportingController extends BaseController { return error("系统异常"); } + /** + * 根据用户id 临时外出审核 代理主持工作人员 + */ + @GetMapping(value = "/getUserListCheck/{id}") + @Log(title = "流程管理->临时外出审核->查询同部门人员", businessType = BusinessType.QUERY) + public AjaxResult getUserListCheck(@PathVariable Long id) { + try{ + return success(leaveReportingService.getUserListCheck(id)); + }catch (Exception e){ + log.error(e.toString(),e); + } + return error("系统异常"); + } + + /** + * 休假时间去除周末以及法定节假日 + * 1、查询出所有周末以及节假日的日期 + * 2、传入开始日期和结束日期,判断是否含有周末或者节假日 + * 3、计算去除周末或节假日后剩余天数 + */ + @PostMapping("/getDays") + @Log(title = "流程管理->休假报备->计算时间", businessType = BusinessType.QUERY) + public AjaxResult getDays(@Validated @RequestBody LeaveReportingBean bean){ + try { + return success(leaveReportingService.getDays(bean)); + } catch (Exception e) { + log.error(e.toString(),e); + } + return error("操作失败"); + + } + + } \ No newline at end of file diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/dao/LeaveReportingDao.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/dao/LeaveReportingDao.java index 13ff75e..6958ac0 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/dao/LeaveReportingDao.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/dao/LeaveReportingDao.java @@ -37,4 +37,6 @@ public interface LeaveReportingDao { LeaveReportingBean getPostName(Long id); List getUserList(@Param("params")LeaveReportingBean bean); + + List getFestivalAndHoliday(LeaveReportingBean bean); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/entity/LeaveReportingBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/entity/LeaveReportingBean.java index 4c147bb..0696c5b 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/entity/LeaveReportingBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/entity/LeaveReportingBean.java @@ -160,4 +160,7 @@ public class LeaveReportingBean extends BaseBean { */ private List orgList; + private String date; + private String name; + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingService.java index 335a65b..1b280b2 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingService.java @@ -62,4 +62,9 @@ public interface LeaveReportingService { LeaveReportingBean getPostName(Long id); AjaxResult getUserList(Long id); + + LeaveReportingBean getDays(LeaveReportingBean bean); + + AjaxResult getUserListCheck(Long id); + } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingServiceImpl.java index ed74b40..31dce8d 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/leaveReporting/service/LeaveReportingServiceImpl.java @@ -30,6 +30,8 @@ import springfox.documentation.spring.web.json.Json; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; @@ -119,4 +121,69 @@ public class LeaveReportingServiceImpl implements LeaveReportingService { return AjaxResult.error(); } } + + private static final ThreadLocal DATE_FORMAT = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd"); + } + }; + + @Override + public LeaveReportingBean getDays(LeaveReportingBean bean) { + try { + // 查询出所有周末以及节假日的日期 + List holidays = leaveReportingDao.getFestivalAndHoliday(bean); + + // 将节假日转换为 Set,提高查找效率 + Set holidaySet = new HashSet<>(); + for (LeaveReportingBean holiday : holidays) { + holidaySet.add(holiday.getDate()); + } + + Date startDate = null; + startDate = parseDate(String.valueOf(bean.getLeaveStartDate())); + Date endDate = parseDate(String.valueOf(bean.getLeaveEndDate())); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + + int totalDays = 0; + + while (!calendar.getTime().after(endDate)) { + String currentDate = formatDate(calendar.getTime()); + if (!holidaySet.contains(currentDate)) { + totalDays++; + } + calendar.add(Calendar.DAY_OF_MONTH, 1); + } + bean.setDate(String.valueOf(totalDays)); + return bean; + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + @Override + public AjaxResult getUserListCheck(Long id) { + try { + LeaveReportingBean bean = new LeaveReportingBean(); + bean.setId(id); + List list = leaveReportingDao.getUserList(bean); + return AjaxResult.success(list); + } catch (Exception e) { + log.error(e.toString(),e); + return AjaxResult.error(); + } + } + + // 辅助方法:将字符串解析为Date对象 + private Date parseDate(String dateStr) throws ParseException { + return DATE_FORMAT.get().parse(dateStr); + } + + // 辅助方法:将Date对象格式化为字符串 + private String formatDate(Date date) { + return DATE_FORMAT.get().format(date); + } } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/dao/WechatDao.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/dao/WechatDao.java index 81c88ec..5d851ba 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/dao/WechatDao.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/dao/WechatDao.java @@ -2,6 +2,7 @@ package com.bonus.system.wechat.dao; import com.bonus.system.wechat.entity.WechatBean; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -19,7 +20,7 @@ public interface WechatDao { * @param bean * @return */ - List getWechatList(WechatBean bean); + List getWechatList(@Param("bean") WechatBean bean); /** * 小程序打卡数据列表-用户查询 diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/entity/WechatBean.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/entity/WechatBean.java index 41b05b8..bcb3c7e 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/entity/WechatBean.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/entity/WechatBean.java @@ -85,4 +85,9 @@ public class WechatBean extends BaseBean { */ @Excel(name = "备注", width = 20.0,height = 20.0, orderNum = "5") private String errorRemake; + + /** + * 自己项目部所在分公司下的所有项目部id + */ + private List orgList; } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatEvectionServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatEvectionServiceImpl.java index 1937fcd..cf23b1a 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatEvectionServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatEvectionServiceImpl.java @@ -3,6 +3,7 @@ package com.bonus.system.wechat.service; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.MapVo; +import com.bonus.system.api.domain.SysUser; import com.bonus.system.evection.dao.EvectionDao; import com.bonus.system.evection.entity.EvectionBean; import com.bonus.system.evection.service.EvectionService; @@ -12,10 +13,7 @@ import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; /** * 出差报备-业务层 @@ -31,6 +29,21 @@ public class WechatEvectionServiceImpl implements WechatEvectionService { @Override public List getEvectionList(WechatEvectionBean bean) { + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + List roleId = sysUser.getRoleList(); + //管理员与人资角色可以看到所有 + if( roleId !=null && !roleId.isEmpty()){ + if (Collections.frequency(roleId, "1")==0 && Collections.frequency(roleId, "16")==0) { + List orgList = sysUser.getOrgList(); + if (!orgList.isEmpty()) { + ArrayList ids = new ArrayList<>(); + for (MapVo mapVo : orgList) { + ids.add(String.valueOf(mapVo.getId())); + } + bean.setOrgList(ids); + } + } + } return wechatEvectionDao.getEvectionList(bean); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatLeaveReportingServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatLeaveReportingServiceImpl.java index 33e6e6e..547235c 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatLeaveReportingServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatLeaveReportingServiceImpl.java @@ -3,6 +3,7 @@ package com.bonus.system.wechat.service; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.MapVo; +import com.bonus.system.api.domain.SysUser; import com.bonus.system.leaveReporting.dao.LeaveReportingDao; import com.bonus.system.leaveReporting.entity.LeaveReportingBean; import com.bonus.system.leaveReporting.service.LeaveReportingService; @@ -13,6 +14,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -29,6 +31,21 @@ public class WechatLeaveReportingServiceImpl implements WechatLeaveReportingServ @Override public List getLeaveReportingList(WechatLeaveReportingBean bean) { + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + List roleId = sysUser.getRoleList(); + //管理员与人资角色可以看到所有 + if( roleId !=null && !roleId.isEmpty()){ + if (Collections.frequency(roleId, "1")==0 && Collections.frequency(roleId, "16")==0) { + List orgList = sysUser.getOrgList(); + if (!orgList.isEmpty()) { + ArrayList ids = new ArrayList<>(); + for (MapVo mapVo : orgList) { + ids.add(String.valueOf(mapVo.getId())); + } + bean.setOrgList(ids); + } + } + } return wechatLeaveReportingDao.getLeaveReportingList(bean); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatServiceImpl.java index 1c7cb8e..69b428a 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/wechat/service/WechatServiceImpl.java @@ -2,6 +2,9 @@ package com.bonus.system.wechat.service; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.system.api.domain.MapVo; +import com.bonus.system.api.domain.SysUser; import com.bonus.system.wechat.dao.WechatDao; import com.bonus.system.wechat.entity.WechatBean; import org.springframework.stereotype.Service; @@ -22,6 +25,21 @@ public class WechatServiceImpl implements WechatService { @Override public List getWechatList(WechatBean bean) { + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + List roleId = sysUser.getRoleList(); + //管理员与人资角色可以看到所有 + if( roleId !=null && !roleId.isEmpty()){ + if (Collections.frequency(roleId, "1")==0 && Collections.frequency(roleId, "16")==0) { + List orgList = sysUser.getOrgList(); + if (!orgList.isEmpty()) { + ArrayList ids = new ArrayList<>(); + for (MapVo mapVo : orgList) { + ids.add(String.valueOf(mapVo.getId())); + } + bean.setOrgList(ids); + } + } + } return wechatDao.getWechatList(bean); } diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml index c169bbf..5a93619 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/LeaveReporting/LeaveReportingMapper.xml @@ -167,4 +167,11 @@ ) + + \ No newline at end of file diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml index 46a6b30..18600dc 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml @@ -124,6 +124,12 @@ AND (v.toWorkAttStatus = #{attStatus} OR v.offWorkAttStatus = #{attStatus}) + + and v.org_id in (#{orgListId}) + + + and su.user_id = #{userId} + ORDER BY att_current_day DESC diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/holiday/WorkReportMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/holiday/WorkReportMapper.xml index baf9989..ca9ac5a 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/holiday/WorkReportMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/holiday/WorkReportMapper.xml @@ -230,6 +230,7 @@