From e4ed222bac9df4b228c16774f233a522bb3d3a83 Mon Sep 17 00:00:00 2001 From: yk Date: Mon, 8 Jan 2024 11:38:01 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E8=80=83=E5=8B=A4=E8=8A=82=E5=81=87?= =?UTF-8?q?=E6=97=A5=E4=B8=8D=E8=BF=9B=E8=A1=8C=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E8=8A=82=E5=81=87=E6=97=A5=E7=BC=BA?= =?UTF-8?q?=E5=8B=A4=E7=9A=84=E9=97=AE=E9=A2=98=202=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=9F=A5=E8=AF=A2=E6=89=80=E6=9C=89visitor=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/holiday}/domain/dto/DmHolidayDto.java | 4 +- .../api/holiday}/domain/po/DmHolidayPo.java | 7 +- .../holiday/feign/FeignHolidayService.java | 23 +++++++ .../factory/FeignHolidayFallbackFactory.java | 27 ++++++++ .../api/staff/feign/RemoteVisitorService.java | 3 + ...ot.autoconfigure.AutoConfiguration.imports | 2 + .../java/com/xueyi/job/task/DgmanTask.java | 26 +++++-- .../controller/DmHolidayController.java | 16 ++++- .../domain/model/DmHolidayConverter.java | 4 +- .../common/domain/query/DmHolidayQuery.java | 2 +- .../common/manager/IDmHolidayManager.java | 2 +- .../common/manager/impl/DmHolidayManager.java | 4 +- .../system/common/mapper/DmHolidayMapper.java | 4 +- .../common/service/IDmHolidayService.java | 2 +- .../service/impl/IDmHolidayServiceImpl.java | 2 +- .../api/DmVisitorApiController.java | 9 +++ .../api/DmVisitorInnerApiController.java | 9 +++ .../service/impl/DmStaffServiceImpl.java | 68 ++++++++----------- 18 files changed, 152 insertions(+), 62 deletions(-) rename {xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common => xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday}/domain/dto/DmHolidayDto.java (68%) rename {xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common => xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday}/domain/po/DmHolidayPo.java (78%) create mode 100644 xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/FeignHolidayService.java create mode 100644 xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/factory/FeignHolidayFallbackFactory.java diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/domain/dto/DmHolidayDto.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/domain/dto/DmHolidayDto.java similarity index 68% rename from xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/domain/dto/DmHolidayDto.java rename to xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/domain/dto/DmHolidayDto.java index 5dcf1e3e..b540ef65 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/domain/dto/DmHolidayDto.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/domain/dto/DmHolidayDto.java @@ -1,7 +1,7 @@ -package com.xueyi.system.common.domain.dto; +package com.xueyi.system.api.holiday.domain.dto; -import com.xueyi.system.common.domain.po.DmHolidayPo; +import com.xueyi.system.api.holiday.domain.po.DmHolidayPo; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/domain/po/DmHolidayPo.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/domain/po/DmHolidayPo.java similarity index 78% rename from xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/domain/po/DmHolidayPo.java rename to xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/domain/po/DmHolidayPo.java index fc127871..6311a60e 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/domain/po/DmHolidayPo.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/domain/po/DmHolidayPo.java @@ -1,4 +1,4 @@ -package com.xueyi.system.common.domain.po; +package com.xueyi.system.api.holiday.domain.po; import com.baomidou.mybatisplus.annotation.TableName; import com.xueyi.common.core.annotation.Excel; @@ -9,7 +9,10 @@ import lombok.EqualsAndHashCode; import java.io.Serial; import java.time.LocalDate; -import static com.xueyi.common.core.constant.basic.EntityConstants.*; +import static com.xueyi.common.core.constant.basic.EntityConstants.DEL_FLAG; +import static com.xueyi.common.core.constant.basic.EntityConstants.REMARK; +import static com.xueyi.common.core.constant.basic.EntityConstants.SORT; +import static com.xueyi.common.core.constant.basic.EntityConstants.STATUS; @Data @EqualsAndHashCode(callSuper = true) diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/FeignHolidayService.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/FeignHolidayService.java new file mode 100644 index 00000000..ef32dfc8 --- /dev/null +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/FeignHolidayService.java @@ -0,0 +1,23 @@ +package com.xueyi.system.api.holiday.feign; + + +import com.xueyi.common.core.constant.basic.SecurityConstants; +import com.xueyi.common.core.constant.basic.ServiceConstants; +import com.xueyi.common.core.web.result.AjaxResult; +import com.xueyi.system.api.holiday.feign.factory.FeignHolidayFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; + +/** + * 短信发送服务 + * + * @author yrx + */ +@FeignClient(contextId = "feignHolidayService", value = ServiceConstants.SYSTEM_SERVICE, fallbackFactory = FeignHolidayFallbackFactory.class) +public interface FeignHolidayService { + + @GetMapping("/holiday/api/todayIsWorkDay") + AjaxResult todayIsWorkDay(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + +} \ No newline at end of file diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/factory/FeignHolidayFallbackFactory.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/factory/FeignHolidayFallbackFactory.java new file mode 100644 index 00000000..6fb6f791 --- /dev/null +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/holiday/feign/factory/FeignHolidayFallbackFactory.java @@ -0,0 +1,27 @@ +package com.xueyi.system.api.holiday.feign.factory; + +import com.xueyi.common.core.web.result.AjaxResult; +import com.xueyi.system.api.holiday.feign.FeignHolidayService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 会议室服务 降级处理 + * + * @author xueyi + */ +@Slf4j +@Component +public class FeignHolidayFallbackFactory implements FallbackFactory { + + @Override + public FeignHolidayService create(Throwable throwable) { + return new FeignHolidayService() { + @Override + public AjaxResult todayIsWorkDay(String source) { + return AjaxResult.error("工作日服务调用失败:" + throwable.getMessage()); + } + }; + } +} \ No newline at end of file diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteVisitorService.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteVisitorService.java index 4aca79ae..92e28e1b 100644 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteVisitorService.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteVisitorService.java @@ -40,6 +40,9 @@ public interface RemoteVisitorService { public JSONObject visitList(@RequestParam(value = "empId") Long empId, @RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping(value = "/visit/inner-api/visitors") + public JSONObject visitors(@RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping(value = "/visit/inner-api/list-all") public JSONObject visitListAll(@RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); diff --git a/xueyi-api/xueyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/xueyi-api/xueyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 9a76f253..7d57bf6a 100644 --- a/xueyi-api/xueyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/xueyi-api/xueyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -11,3 +11,5 @@ com.xueyi.system.api.meeting.feign.factory.RemoteMeetingFallbackFactory com.xueyi.system.api.resource.feign.factory.RemoteH5ConfigFallbackFactory com.xueyi.system.api.interfaces.airport.feign.factory.RemotePlaneFallbackFactory com.xueyi.system.api.sms.feign.factory.RemoteSmsFallbackFactory +com.xueyi.system.api.holiday.feign.factory.RemoteHolidayFallbackFactory +com.xueyi.system.api.holiday.feign.factory.FeignHolidayFallbackFactory diff --git a/xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/task/DgmanTask.java b/xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/task/DgmanTask.java index 4cdeb636..6f6698bd 100644 --- a/xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/task/DgmanTask.java +++ b/xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/task/DgmanTask.java @@ -3,15 +3,15 @@ package com.xueyi.job.task; import com.alibaba.fastjson2.JSON; import com.xueyi.common.cache.utils.SourceUtil; import com.xueyi.common.core.constant.basic.SecurityConstants; -import com.xueyi.common.core.utils.core.StrUtil; +import com.xueyi.common.core.web.result.AjaxResult; import com.xueyi.common.core.web.result.R; -import com.xueyi.common.security.service.TokenService; import com.xueyi.system.api.digitalmans.feign.RemoteManDeviceService; +import com.xueyi.system.api.holiday.domain.po.DmHolidayPo; +import com.xueyi.system.api.holiday.feign.FeignHolidayService; import com.xueyi.system.api.model.Source; import com.xueyi.system.api.staff.feign.RemoteStaffService; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; -import org.antlr.runtime.Token; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -36,8 +36,11 @@ public class DgmanTask { @Autowired RemoteStaffService staffService; + @Autowired + FeignHolidayService feignHolidayService; + public void ryParams(String params) { - log.info(StrUtil.format("执行有参方法:参数{}", params)); + log.info("执行有参方法:参数{}", params); } public void dgmanMonitor() { @@ -46,10 +49,10 @@ public class DgmanTask { log.info("租户列表获取失败"); return; } - listR.getData().forEach(item->{ + listR.getData().forEach(item-> // 更新租户内数字人信息 - remoteManDeviceService.manDeviceListInnerSync(item.getId()); - }); + remoteManDeviceService.manDeviceListInnerSync(item.getId()) + ); log.info("监控心跳执行完成"); } @@ -65,6 +68,15 @@ public class DgmanTask { public void initStaffAttendances() { log.info("=======考勤数据初始化开始。。。。========"); + AjaxResult result = feignHolidayService.todayIsWorkDay(SecurityConstants.INNER); + if (result !=null && result.get("data") != null){ + DmHolidayPo po = JSON.parseObject(JSON.toJSONString(result.get("data")), DmHolidayPo.class); + if (po.getHoliday() == 1){ + log.info("=======今天不是工作日,不进行考勤数据初始化========"); + return; + } + } + R> listR = tenantService.tenantList(); if (listR.isFail()) { log.info("租户列表获取失败"); diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/controller/DmHolidayController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/controller/DmHolidayController.java index 093f1375..d5ec2851 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/controller/DmHolidayController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/controller/DmHolidayController.java @@ -2,9 +2,11 @@ package com.xueyi.system.common.controller; import com.alibaba.fastjson2.JSONObject; import com.xueyi.common.core.web.result.AjaxResult; +import com.xueyi.common.security.annotation.InnerAuth; +import com.xueyi.common.web.annotation.TenantIgnore; import com.xueyi.common.web.entity.controller.BaseController; +import com.xueyi.system.api.holiday.domain.dto.DmHolidayDto; import com.xueyi.system.api.holiday.feign.RemoteHolidayService; -import com.xueyi.system.common.domain.dto.DmHolidayDto; import com.xueyi.system.common.domain.query.DmHolidayQuery; import com.xueyi.system.common.service.IDmHolidayService; import org.springframework.beans.factory.annotation.Autowired; @@ -30,17 +32,27 @@ public class DmHolidayController extends BaseController v = dmVisitorsMapper.selectList(null); + json.put("data", v); + return outputSuccess(json).toJSON(); + } + @Autowired private SmsProperties smsProperties; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java index 3f2ad0fb..3cb1617c 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java @@ -2,15 +2,16 @@ package com.xueyi.system.staff.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.xueyi.common.core.utils.core.ObjectUtil; import com.xueyi.common.web.annotation.TenantIgnore; import com.xueyi.common.web.entity.service.impl.BaseServiceImpl; import com.xueyi.common.web.utils.MyDateUtils; +import com.xueyi.system.api.holiday.domain.po.DmHolidayPo; import com.xueyi.system.api.organize.domain.vo.SysDeptExt; import com.xueyi.system.api.pass.domain.po.DmRecognizedRecordsPo; import com.xueyi.system.api.staff.domain.dto.DmStaffDto; import com.xueyi.system.api.staff.domain.po.DmStaffPo; import com.xueyi.system.api.staff.domain.vo.DmStaffFeature; -import com.xueyi.system.common.domain.po.DmHolidayPo; import com.xueyi.system.common.service.IDmHolidayService; import com.xueyi.system.organize.mapper.SysDeptExtMapper; import com.xueyi.system.staff.domain.po.DmEmpAttendancePo; @@ -24,12 +25,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * 人员管理 服务层处理 @@ -39,26 +37,19 @@ import java.util.Map; @Service public class DmStaffServiceImpl extends BaseServiceImpl implements IDmStaffService { -// Map STATUS_TYPE = MapUtil.; - private Logger logger = LoggerFactory.getLogger(DmStaffServiceImpl.class); - private Map statusMap; + + public static final Integer ATTENDANCE_STATUS_NORMAL = 0; + public static final Integer ATTENDANCE_STATUS_BE_LATER = 1; + public static final Integer ATTENDANCE_STATUS_LEAVE_EARLY = 2; + public static final Integer ATTENDANCE_STATUS_ABSENCE = 3; + public static final Integer ATTENDANCE_STATUS_OVERTIME = 4; + public static final Integer ATTENDANCE_STATUS_LATER_AND_EARLY = 6; + @Autowired private IDmHolidayService holidayService; - @PostConstruct - public void initializeMap() { - // 初始化Map - statusMap = new HashMap<>(); - statusMap.put("NORMAL", 0); - statusMap.put("BE_LATER", 1); - statusMap.put("LEAVE_EARLY", 2); - statusMap.put("ABSENCE", 3); - statusMap.put("OVERTIME", 4); - statusMap.put("LATER_AND_EARLY", 6); - // 继续初始化其他常量... - } @Autowired DmStaffMapper staffMapper; @@ -88,7 +79,6 @@ public class DmStaffServiceImpl extends BaseServiceImpl selectStaffList(DmStaffPo staff) { List result = staffMapper.selectStaffList(staff); - List po = staffMapper.selectList(null); return result; } @@ -140,19 +130,21 @@ public class DmStaffServiceImpl extends BaseServiceImpl 0) { + if (!attendancePos.isEmpty()) { dmEmpAttendanceMapper.insertBatch(attendancePos); } } public void updateOrInsertAttendance(DmRecognizedRecordsPo checkRecords) { - if (null == checkRecords.getUserId()) { + if (ObjectUtil.isNull(checkRecords.getUserId())) { return ; } Long userId = checkRecords.getUserId(); @@ -189,35 +181,33 @@ public class DmStaffServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(); - wrapper.eq("id",empAttendance.getId()); - dmEmpAttendanceMapper.update(empAttendance, wrapper); + dmEmpAttendanceMapper.updateById(empAttendance); } else { DmEmpAttendancePo ea = new DmEmpAttendancePo(); Date checkDate = checkTime; ea.setCheckInTime(checkDate); DmHolidayPo holidayPo = holidayService.isHoliday(checkDate); - if (MyDateUtils.formatDate(checkDate, MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(ext.getOnDutyHourEnd()) > 0) { - ea.setDescStatus(statusMap.get("BE_LATER")); // 迟到 + if (MyDateUtils.formatDate(checkDate, MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(ext.getOnDutyHourEnd()) > 0) {//识别时间比考勤上班打卡最晚时间更晚 + ea.setDescStatus(ATTENDANCE_STATUS_BE_LATER); // 迟到 if (holidayPo.getHoliday() == 1) { - ea.setDescStatus(statusMap.get("OVERTIME")); + ea.setDescStatus(ATTENDANCE_STATUS_OVERTIME); } - } else { + } else {//识别时间比考勤上班打卡最晚时间早 if (holidayPo.getHoliday() == 1) { - ea.setDescStatus(statusMap.get("OVERTIME")); + ea.setDescStatus(ATTENDANCE_STATUS_OVERTIME); } }