From 1266567bc9a8500f32fb9cdac9684a894b8f4865 Mon Sep 17 00:00:00 2001 From: yk Date: Sat, 6 Jan 2024 16:00:33 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8CgraphQL=20=E5=AE=8C=E5=96=84=E8=80=83?= =?UTF-8?q?=E5=8B=A4=202=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=A7=84=E8=8C=83=203=EF=BC=8C=E8=80=83=E5=8B=A4=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=BC=BA=E5=8B=A4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pass/domain/po/DmRecognizedRecordsPo.java | 4 +- .../api/staff/feign/RemoteStaffService.java | 3 + .../{DateUtils.java => MyDateUtils.java} | 48 +++++--- .../java/com/xueyi/job/task/DgmanTask.java | 40 ++++++- .../transfer/controller/ApiController.java | 6 +- .../controller/DmDigitalmanController.java | 8 +- .../controller/api/DmMenuApiController.java | 4 +- .../service/impl/DmManDeviceServiceImpl.java | 3 +- .../controller/DmExceptionLogController.java | 5 +- .../emcs/service/HeartBeatMessageHandler.java | 4 +- .../emcs/service/LogUploadMessageHandler.java | 4 +- .../api/DmMeetingApiController.java | 4 +- .../api/DmMeetingInnerApiController.java | 80 ++++++------- .../impl/DmMeetingOrdersServiceImpl.java | 24 ++-- .../controller/api/SysDeptApiController.java | 4 +- .../api/DmRecognizedRecordsApiController.java | 4 +- ...DmRecognizedRecordsInnerApiController.java | 11 +- .../controller/api/BaseApiController.java | 113 ------------------ .../api/DmResourcesCommonApiController.java | 7 +- .../controller/api/MyBaseApiController.java | 62 ++++++++++ .../controller/DmEmpAttendanceController.java | 20 ++-- .../controller/api/DmStaffApiController.java | 4 +- .../api/DmStaffInnerApiController.java | 12 +- .../api/DmVisitorApiController.java | 4 +- .../api/DmVisitorInnerApiController.java | 15 ++- .../staff/domain/dto/DmEmpAttendanceDto.java | 9 +- .../staff/domain/po/DmEmpAttendancePo.java | 14 ++- .../PassRecordsGraphQLQueryResolver.java | 59 +++++++++ .../VisitorGraphQLMutationResolver.java | 1 - .../staff/graphql/VisitorGraphQLQuery.java | 24 +++- .../service/impl/DmStaffServiceImpl.java | 50 ++++++-- .../resources/graphql/passRecords.graphqls | 21 ++++ 32 files changed, 398 insertions(+), 273 deletions(-) rename xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/{DateUtils.java => MyDateUtils.java} (87%) delete mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/BaseApiController.java create mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/MyBaseApiController.java create mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/PassRecordsGraphQLQueryResolver.java create mode 100644 xueyi-modules/xueyi-system/src/main/resources/graphql/passRecords.graphqls diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/pass/domain/po/DmRecognizedRecordsPo.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/pass/domain/po/DmRecognizedRecordsPo.java index 13fb2655..1d8ce901 100644 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/pass/domain/po/DmRecognizedRecordsPo.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/pass/domain/po/DmRecognizedRecordsPo.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; -import java.util.Date; +import java.time.LocalDateTime; import static com.xueyi.common.core.constant.basic.EntityConstants.NAME; import static com.xueyi.common.core.constant.basic.EntityConstants.REMARK; @@ -65,7 +65,7 @@ public class DmRecognizedRecordsPo extends TBaseEntity { /** 识别时间 */ @Excel(name = "识别时间") - protected Date recognizedTime; + protected LocalDateTime recognizedTime; /** 所属组织ID */ @Excel(name = "所属组织ID") diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java index bf0f8bd7..139ef090 100644 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java @@ -48,6 +48,9 @@ public interface RemoteStaffService { @GetMapping("/staff/api/broadcast-staff-count") JSONObject queryStaffCount(@RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/staff/inner-api/init-attendance") + JSONObject initAttendance(@RequestParam(value = "tenantId") Long tenantId, @RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/staff/api/staff-count") JSONObject staffCount(); diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/DateUtils.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/MyDateUtils.java similarity index 87% rename from xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/DateUtils.java rename to xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/MyDateUtils.java index 42b2da3c..141d8299 100644 --- a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/DateUtils.java +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/MyDateUtils.java @@ -16,8 +16,14 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.List; -public class DateUtils extends org.apache.commons.lang.time.DateUtils { - public DateUtils() { +public class MyDateUtils extends org.apache.commons.lang.time.DateUtils { + public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; + public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd"; + public static final String DEFAULT_NO_SECOND_DATE_PATTERN = "yyyy-MM-dd HH:mm"; + public static final String DEFAULT_TIME_PATTERN = "HH:mm"; + public static final String DEFAULT_FULL_TIME_PATTERN = "HH:mm:ss"; + public MyDateUtils() { + super(); } public static Date getPushForwardDate(Date date, Integer num) { @@ -94,7 +100,7 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { } public static Date getFirstDayOfMonth(Date date) { - new SimpleDateFormat("yyyy-MM-dd "); + new SimpleDateFormat(DEFAULT_DATE_PATTERN); GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance(); gcLast.setTime(date); gcLast.set(Calendar.DAY_OF_MONTH, 1); @@ -123,7 +129,7 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { calendar.setTime(dNow); calendar.add(5, -1); Date dBefore = calendar.getTime(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_DATE_PATTERN); return sdf.format(dBefore); } @@ -134,7 +140,7 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { * @return java.lang.String **/ public static String dateToWeek(String datetime) { - SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat f = new SimpleDateFormat(DEFAULT_DATE_PATTERN); String[] weekDays = new String[]{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance(); Date datet = null; @@ -157,11 +163,9 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { public static String getDatePoor(Date endDate, Date nowDate) { long nd = 86400000L; long nh = 3600000L; - long nm = 60000L; long diff = endDate.getTime() - nowDate.getTime(); long day = diff / nd; long hour = diff % nd / nh; - long min = diff % nd % nh / nm; return day + ":" + hour; } @@ -185,7 +189,7 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { for (int i = 0; i < nearlyDays; ++i) { calendar.add(5, i == 0 ? 0 : -1); - dateStringList.add(formatDate(calendar.getTime(), "yyyy-MM-dd")); + dateStringList.add(formatDate(calendar.getTime(), DEFAULT_DATE_PATTERN)); } return dateStringList; @@ -261,7 +265,7 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(dateLong); Date date = calendar.getTime(); - return formatDate(date, "yyyy-MM-dd HH:mm:ss"); + return formatDate(date, DEFAULT_PATTERN); } public static String getMillsSecondsDouble() { @@ -286,15 +290,14 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { //形如yyyy-MM-dd格式的时间串,赠加或减少几天 //如2022-06-06 增加一天 返回 2022-06-07 public static String dateStrAdd(String dateStr, int addDays) { - Date date1 = DateUtils.parseStrToDate(dateStr, "yyyy-MM-dd"); - Date date2 = DateUtils.addDays(date1, addDays); - String dateStr2 = DateUtils.formatDate(date2, "yyyy-MM-dd"); - return dateStr2; + Date date1 = parseStrToDate(dateStr, DEFAULT_DATE_PATTERN); + Date date2 = org.apache.commons.lang3.time.DateUtils.addDays(date1, addDays); + return MyDateUtils.formatDate(date2, DEFAULT_DATE_PATTERN); } public static int dateStrDiff(String startDateStr, String endDateStr) { - Date date1 = DateUtils.parseStrToDate(startDateStr, "yyyy-MM-dd"); - Date date2 = DateUtils.parseStrToDate(endDateStr, "yyyy-MM-dd"); + Date date1 = parseStrToDate(startDateStr, DEFAULT_DATE_PATTERN); + Date date2 = parseStrToDate(endDateStr, DEFAULT_DATE_PATTERN); Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); @@ -331,11 +334,20 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { public static LocalDateTime dateToLocalDateTime(Date date) { - LocalDateTime ldt = date.toInstant() + return date.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime(); - return ldt; + } + + + public static Date localDateToDate(LocalDate date) { + LocalDateTime ldt = date.atStartOfDay(); + return localDateTimeToDate(ldt); + } + + public static Date localDateTimeToDate(LocalDateTime date) { + return Date.from(date.atZone(ZoneId.systemDefault()).toInstant()); } public static String isAmPm() { @@ -350,7 +362,7 @@ public class DateUtils extends org.apache.commons.lang.time.DateUtils { } public static String getChineseWeek(Date date) { - int week = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date)).getDayOfWeek().getValue(); + int week = LocalDate.parse(new SimpleDateFormat(DEFAULT_DATE_PATTERN).format(date)).getDayOfWeek().getValue(); switch (week) { case 1: return "周一"; 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 8fc48938..4cdeb636 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 @@ -1,12 +1,18 @@ 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.R; +import com.xueyi.common.security.service.TokenService; import com.xueyi.system.api.digitalmans.feign.RemoteManDeviceService; 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; @@ -19,6 +25,7 @@ import java.util.List; */ @Component("dgmanTask") public class DgmanTask { + Logger log = org.slf4j.LoggerFactory.getLogger(DgmanTask.class); @Autowired RemoteTenantService tenantService; @@ -26,23 +33,24 @@ public class DgmanTask { @Autowired RemoteManDeviceService remoteManDeviceService; + @Autowired + RemoteStaffService staffService; + public void ryParams(String params) { - System.out.println(StrUtil.format("执行有参方法:参数{}", params)); + log.info(StrUtil.format("执行有参方法:参数{}", params)); } public void dgmanMonitor() { R> listR = tenantService.tenantList(); if (listR.isFail()) { - System.out.println("租户列表获取失败"); + log.info("租户列表获取失败"); return; } listR.getData().forEach(item->{ - // 获取数据源 - Source source = SourceUtil.getSourceCache(item.getStrategyId()); // 更新租户内数字人信息 remoteManDeviceService.manDeviceListInnerSync(item.getId()); }); - System.out.println("监控心跳执行完成"); + log.info("监控心跳执行完成"); } @@ -53,4 +61,26 @@ public class DgmanTask { public void dgmanDeviceOnlineState() { remoteManDeviceService.syncNumbersOfOnline(); } + + + public void initStaffAttendances() { + log.info("=======考勤数据初始化开始。。。。========"); + R> listR = tenantService.tenantList(); + if (listR.isFail()) { + log.info("租户列表获取失败"); + return; + } + listR.getData().forEach(item->{ + // 获取数据源 + Source source = SourceUtil.getSourceCache(item.getStrategyId()); + log.info("souce id:{}", JSON.toJSONString(source)); + + // 更新租户内数字人信息 + log.info("=======初始化考勤数据,租户id:{},getSourceName:{} ========", item.getId(), source.getMaster()); + staffService.initAttendance(item.getId(), item.getId(), source.getMaster(), SecurityConstants.INNER); + }); + + + log.info("=======考勤数据初始化完成。。。========"); + } } diff --git a/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java b/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java index 145175af..6e99c9bf 100644 --- a/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java +++ b/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java @@ -11,7 +11,7 @@ import com.xueyi.common.core.web.result.AjaxResult; import com.xueyi.common.core.web.result.R; import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.common.redis.utils.RedisUtil; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.message.api.transfer.domain.vo.DmActiveVo; import com.xueyi.message.api.transfer.domain.vo.DmDeviceVo; import com.xueyi.message.transfer.service.impl.MessageQueueServiceImpl; @@ -353,8 +353,8 @@ public class ApiController { JSONArray jsonArray = new JSONArray(); // 最近三十天的数据,服务人次,知识库增量 for (int i = 0; i < 30; i++) { - Date date = DateUtils.addDays(new Date(), -i); - String dateStr2 = DateUtils.formatDate(date, "yyyy-MM-dd"); + Date date = MyDateUtils.addDays(new Date(), -i); + String dateStr2 = MyDateUtils.formatDate(date, MyDateUtils.DEFAULT_DATE_PATTERN); JSONObject json2 = new JSONObject(); json2.put("date", dateStr2); json2.put("serviceTimes", RedisUtil.getNumberVal("dashboard:server-chart:"+dateStr2)); diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java index de0a010f..3650fddf 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java @@ -19,7 +19,7 @@ import com.xueyi.common.log.enums.BusinessType; import com.xueyi.common.security.annotation.InnerAuth; import com.xueyi.common.security.annotation.RequiresPermissions; import com.xueyi.common.web.entity.controller.BaseController; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.file.api.feign.RemoteFileService; import com.xueyi.message.api.transfer.feign.RemoteTransferService; import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService; @@ -322,7 +322,7 @@ public class DmDigitalmanController extends BaseControllerquery().lambda() .ge(DmExceptionLogPo::getCreateTime,sevenDaysAgo.format(formatter))).size()); // 当前未解除预警数 diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/controller/DmExceptionLogController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/controller/DmExceptionLogController.java index cacf8ee6..425bad66 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/controller/DmExceptionLogController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/controller/DmExceptionLogController.java @@ -10,6 +10,7 @@ import com.xueyi.common.log.enums.BusinessType; import com.xueyi.common.mqtt.connection.MqttTemplate; import com.xueyi.common.security.annotation.RequiresPermissions; import com.xueyi.common.web.entity.controller.BaseController; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.system.api.digitalmans.domain.vo.NumberOfAlertToChartVo; import com.xueyi.system.emcs.domain.dto.DmExceptionLogDto; import com.xueyi.system.emcs.domain.dto.RedisBaseDto; @@ -205,7 +206,7 @@ public class DmExceptionLogController extends BaseController rangeBy5Weeks = new ArrayList<>(); // select nearly 5 weeks alerts from dm_exception_log - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(MyDateUtils.DEFAULT_PATTERN); LocalDateTime startL = LocalDateTime.now(); LocalDateTime endL = null; for (int i = 0;i < 5;i++) { @@ -265,7 +266,7 @@ public class DmExceptionLogController extends BaseController list = new ArrayList<>(); StringBuilder mms = new StringBuilder(); - SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat dateFormat2 = new SimpleDateFormat("HH:mm"); + SimpleDateFormat dateFormat1 = new SimpleDateFormat(MyDateUtils.DEFAULT_DATE_PATTERN); + SimpleDateFormat dateFormat2 = new SimpleDateFormat(MyDateUtils.DEFAULT_TIME_PATTERN); DmMeetingRoomsPo meetingRoom = dmMeetingRoomsService.selectById(order.getSpaceId().toString()); if (null == meetingRoom){ @@ -160,8 +160,8 @@ public class DmMeetingInnerApiController extends BaseApiController { String times = (String) timeStr; String[] timeAry = times.split("-"); - Date orderDate = DateUtils.parseStrToDate(date + " " + timeAry[0], "yyyy-MM-dd HH:mm"); - Date endDate = DateUtils.parseStrToDate(date + " " + timeAry[1], "yyyy-MM-dd HH:mm"); + Date orderDate = MyDateUtils.parseStrToDate(date + " " + timeAry[0], MyDateUtils.DEFAULT_NO_SECOND_DATE_PATTERN); + Date endDate = MyDateUtils.parseStrToDate(date + " " + timeAry[1], MyDateUtils.DEFAULT_NO_SECOND_DATE_PATTERN); Long duration1 = orderDate.getTime(); Long duration2 = endDate.getTime(); Integer duration = Math.toIntExact(duration2 - duration1); @@ -252,15 +252,15 @@ public class DmMeetingInnerApiController extends BaseApiController { if (null == room) { return output(ResponseCode.DATA_NOT_EXISTS, "会议室").toJSON(); } - if (DateUtils.formatDate(new Date(), "yyyy-MM-dd").compareTo(dateStr) > 0) { + if (MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN).compareTo(dateStr) > 0) { return output(ResponseCode.MEETING_ORDER_TIME_ERROR).toJSON(); } if (StringUtils.isEmpty(startTime)) { return output(ResponseCode.MEETING_ORDER_TIME_ERROR).toJSON(); } String sTime = startTime,eTime = ""; - Date end = DateUtils.addMinutes(DateUtils.parseStrToDate(dateStr + " " + startTime, "yyyy-MM-dd HH:mm"), 30); - eTime = DateUtils.formatDate(end, "HH:mm"); + Date end = MyDateUtils.addMinutes(MyDateUtils.parseStrToDate(dateStr + " " + startTime, MyDateUtils.DEFAULT_NO_SECOND_DATE_PATTERN), 30); + eTime = MyDateUtils.formatDate(end, MyDateUtils.DEFAULT_TIME_PATTERN); List lists = dmMeetingOrdersMapper.queryByOrder(roomId, dateStr, sTime, eTime); if (lists.size() > 0) { @@ -277,16 +277,16 @@ public class DmMeetingInnerApiController extends BaseApiController { if (null == room) { return output(ResponseCode.DATA_NOT_EXISTS, "会议室").toJSON(); } - if (DateUtils.formatDate(new Date(), "yyyy-MM-dd").compareTo(dateStr) > 0) { + if (MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN).compareTo(dateStr) > 0) { return output(ResponseCode.MEETING_ORDER_TIME_ERROR).toJSON(); } if (StringUtils.isEmpty(startTime)) { return output(ResponseCode.MEETING_ORDER_TIME_ERROR).toJSON(); } String sTime = startTime,eTime = ""; - Date end = DateUtils.parseStrToDate(dateStr + " " + startTime, "yyyy-MM-dd HH:mm"); - end = DateUtils.addMinutes(end, duration); - eTime = DateUtils.formatDate(end, "HH:mm"); + Date end = MyDateUtils.parseStrToDate(dateStr + " " + startTime, MyDateUtils.DEFAULT_NO_SECOND_DATE_PATTERN); + end = MyDateUtils.addMinutes(end, duration); + eTime = MyDateUtils.formatDate(end, MyDateUtils.DEFAULT_TIME_PATTERN); log.info("roomId:{} dateStr:{} startTime:{} endTime:{} duration:{}", roomId, dateStr, sTime, eTime, duration); List lists = dmMeetingOrdersMapper.queryByOrder(roomId, dateStr, sTime, eTime); @@ -305,8 +305,8 @@ public class DmMeetingInnerApiController extends BaseApiController { return output(ResponseCode.MEETING_RECORD_NOT_FOUND, null).toJSON(); } - SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat dateFormat2 = new SimpleDateFormat("HH:mm"); + SimpleDateFormat dateFormat1 = new SimpleDateFormat(MyDateUtils.DEFAULT_DATE_PATTERN); + SimpleDateFormat dateFormat2 = new SimpleDateFormat(MyDateUtils.DEFAULT_TIME_PATTERN); DmMeetingRoomsPo meetingRoom = dmMeetingRoomsMapper.findById(mro.getSpaceId()); String mms = dateFormat1.format(mro.getOrderDate()) + " " + dateFormat2.format(mro.getStartTime()) + "于" + meetingRoom.getName(); @@ -445,16 +445,16 @@ public class DmMeetingInnerApiController extends BaseApiController { } if (objects.size() ==1) { DmMeetingOrdersPo current = objects.get(0); - if (DateUtils.formatDate(current.getStartTime(), "HH:mm").compareTo(currentTime) > 0 ) { + if (MyDateUtils.formatDate(current.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(currentTime) > 0 ) { JSONObject json = new JSONObject(); json.put("startTime", currentTime); - json.put("endTime", DateUtils.formatDate(current.getStartTime(), "HH:mm")); + json.put("endTime", MyDateUtils.formatDate(current.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN)); json.put("roomId", roomId); freeTimeList.add(json); } else { - if (DateUtils.formatDate(current.getEndTime(), "HH:mm").compareTo(currentTime) > 0 ) { + if (MyDateUtils.formatDate(current.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(currentTime) > 0 ) { JSONObject json = new JSONObject(); - json.put("startTime", DateUtils.formatDate(current.getEndTime(), "HH:mm")); + json.put("startTime", MyDateUtils.formatDate(current.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN)); json.put("endTime", 0); json.put("roomId", roomId); freeTimeList.add(json); @@ -469,8 +469,8 @@ public class DmMeetingInnerApiController extends BaseApiController { } return freeTimeList; } -// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); - objects = objects.stream().sorted(Comparator.comparing(po -> DateUtils.formatDate(po.getStartTime(), "HH:mm"))).collect(Collectors.toList()); +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern(MyDateUtils.DEFAULT_TIME_PATTERN); + objects = objects.stream().sorted(Comparator.comparing(po -> MyDateUtils.formatDate(po.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN))).collect(Collectors.toList()); for (int i = 0; i < objects.size() - 1; i++) { DmMeetingOrdersPo current = objects.get(i); DmMeetingOrdersPo next = objects.get(i + 1); @@ -478,14 +478,14 @@ public class DmMeetingInnerApiController extends BaseApiController { Date freeStartTime = current.getEndTime(); Date freeEndTime = next.getStartTime(); - String freeStartTimeStr = DateUtils.formatDate(current.getEndTime(), "HH:mm"); - String freeEndTimeStr = DateUtils.formatDate(next.getStartTime(), "HH:mm"); + String freeStartTimeStr = MyDateUtils.formatDate(current.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN); + String freeEndTimeStr = MyDateUtils.formatDate(next.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN); - if (DateUtils.formatDate(current.getStartTime(), "HH:mm").compareTo(currentTime) < 0) { + if (MyDateUtils.formatDate(current.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(currentTime) < 0) { if (i==objects.size() - 2) { JSONObject json = new JSONObject(); - if (DateUtils.formatDate(next.getEndTime(), "HH:mm").compareTo(currentTime)>0) { - json.put("startTime", DateUtils.formatDate(next.getEndTime(), "HH:mm")); + if (MyDateUtils.formatDate(next.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(currentTime)>0) { + json.put("startTime", MyDateUtils.formatDate(next.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN)); } else { json.put("startTime", currentTime); } @@ -496,10 +496,10 @@ public class DmMeetingInnerApiController extends BaseApiController { continue; } - if (i==0 && DateUtils.formatDate(current.getStartTime(), "HH:mm").compareTo(currentTime) > 0 ) { + if (i==0 && MyDateUtils.formatDate(current.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(currentTime) > 0 ) { JSONObject json = new JSONObject(); json.put("startTime", currentTime); - json.put("endTime", DateUtils.formatDate(current.getStartTime(), "HH:mm")); + json.put("endTime", MyDateUtils.formatDate(current.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN)); json.put("roomId", roomId); freeTimeList.add(json); } @@ -514,8 +514,8 @@ public class DmMeetingInnerApiController extends BaseApiController { if (i==objects.size() - 2) { JSONObject json = new JSONObject(); - if (DateUtils.formatDate(next.getEndTime(), "HH:mm").compareTo(currentTime)>0) { - json.put("startTime", DateUtils.formatDate(next.getEndTime(), "HH:mm")); + if (MyDateUtils.formatDate(next.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(currentTime)>0) { + json.put("startTime", MyDateUtils.formatDate(next.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN)); } else { json.put("startTime", currentTime); } @@ -585,7 +585,7 @@ public class DmMeetingInnerApiController extends BaseApiController { //过滤掉今天的已经过去的预约记录,并按开始时间进行排序 - list = list.stream().filter(t->DateUtils.formatDate(t.getOrderDate(), "yyyy-MM-dd").compareTo(DateUtils.formatDate(new Date(), "yyyy-MM-dd"))>0 || (DateUtils.formatDate(t.getOrderDate(), "yyyy-MM-dd").compareTo(DateUtils.formatDate(new Date(), "yyyy-MM-dd"))==0 && DateUtils.formatDate(t.getStartTime(), "HH:mm").compareTo(DateUtils.formatDate(new Date(), "HH:mm"))>0)).sorted(Comparator.comparing(po -> DateUtils.formatDate(po.getStartTime(), "HH:mm"))).collect(Collectors.toList()); + list = list.stream().filter(t-> MyDateUtils.formatDate(t.getOrderDate(), MyDateUtils.DEFAULT_DATE_PATTERN).compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN))>0 || (MyDateUtils.formatDate(t.getOrderDate(), MyDateUtils.DEFAULT_DATE_PATTERN).compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN))==0 && MyDateUtils.formatDate(t.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_TIME_PATTERN))>0)).sorted(Comparator.comparing(po -> MyDateUtils.formatDate(po.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN))).collect(Collectors.toList()); //获得当前时间开始最近的整点,或者半点 @@ -594,7 +594,7 @@ public class DmMeetingInnerApiController extends BaseApiController { currentStr = startTime; } - if (dateStr.compareTo(DateUtils.formatDate(new Date(), "yyyy-MM-dd")) == 0) { + if (dateStr.compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN)) == 0) { LocalTime currentTime = LocalTime.now(); if (currentTime.getMinute() >= 30) { currentTime = currentTime.plusHours(1).withMinute(0).withSecond(0); @@ -602,7 +602,7 @@ public class DmMeetingInnerApiController extends BaseApiController { currentTime = currentTime.withMinute(30).withSecond(0); } - currentStr = currentTime.format(DateTimeFormatter.ofPattern("HH:mm")); + currentStr = currentTime.format(DateTimeFormatter.ofPattern(MyDateUtils.DEFAULT_TIME_PATTERN)); } Map> groupedByRoom = list.stream() @@ -639,7 +639,7 @@ public class DmMeetingInnerApiController extends BaseApiController { Map rooms = new HashMap<>(); Map sorts = new HashMap<>(); //当天 - String dateStr = DateUtils.formatDate(new Date(), "yyyy-MM-dd"); + String dateStr = MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN); DmMeetingRoomsPo dm = new DmMeetingRoomsPo(); dm.setDeptId(deptId); @@ -652,23 +652,23 @@ public class DmMeetingInnerApiController extends BaseApiController { //获得当前时间开始最近的整点,或者半点 String currentStr = "08:00"; - if (dateStr.compareTo(DateUtils.formatDate(new Date(), "yyyy-MM-dd")) == 0) { + if (dateStr.compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN)) == 0) { LocalTime currentTime = LocalTime.now(); if (currentTime.getMinute() >= 30) { currentTime = currentTime.plusHours(1).withMinute(0).withSecond(0); } else { currentTime = currentTime.withMinute(30).withSecond(0); } - currentStr = currentTime.format(DateTimeFormatter.ofPattern("HH:mm")); + currentStr = currentTime.format(DateTimeFormatter.ofPattern(MyDateUtils.DEFAULT_TIME_PATTERN)); } Map> groupedByRoom = ordersService.selectOrderedList(deptId,dateStr); - String nextDateStr = DateUtils.dateStrAdd(dateStr, 1); + String nextDateStr = MyDateUtils.dateStrAdd(dateStr, 1); Map> nextGroupedByRoom = ordersService.selectOrderedList(deptId,nextDateStr); JSONObject js1 = getList(currentStr, groupedByRoom, rooms, sorts, ids); JSONObject js2 = new JSONObject(); JSONObject js3 = new JSONObject(); - if (DateUtils.isAmPm().equals("am")) { + if (MyDateUtils.isAmPm().equals("am")) { currentStr = "14:00"; js2 = getList(currentStr, groupedByRoom, rooms, sorts, ids); currentStr = "09:00"; @@ -686,7 +686,7 @@ public class DmMeetingInnerApiController extends BaseApiController { arr.add(js1); } if (ObjectUtil.isNotEmpty(js2)) { - if (DateUtils.isAmPm().equals("am")) { + if (MyDateUtils.isAmPm().equals("am")) { js2.put("orderDate", dateStr); } else { js2.put("orderDate", nextDateStr); diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/service/impl/DmMeetingOrdersServiceImpl.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/service/impl/DmMeetingOrdersServiceImpl.java index 5ce2c6e5..b27fadc7 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/service/impl/DmMeetingOrdersServiceImpl.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/service/impl/DmMeetingOrdersServiceImpl.java @@ -1,7 +1,7 @@ package com.xueyi.system.meeting.service.impl; import com.xueyi.common.web.entity.service.impl.BaseServiceImpl; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.system.api.meeting.domain.dto.DmMeetingOrdersDto; import com.xueyi.system.api.meeting.domain.po.DmMeetingOrdersPo; import com.xueyi.system.api.staff.domain.po.DmStaffPo; @@ -52,11 +52,13 @@ public class DmMeetingOrdersServiceImpl extends BaseServiceImpl> selectOrderedList(Long deptId, String dateStr) { - List list = new ArrayList<>(); //当天 - String curDateStr = DateUtils.formatDate(new Date(), "yyyy-MM-dd"); - list = dmMeetingOrdersMapper.findListByDateStr(dateStr); + String curDateStr = MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN); + List list = dmMeetingOrdersMapper.findListByDateStr(dateStr); //过滤掉今天的已经过去的预约记录,并按开始时间进行排序 if (curDateStr.equals(dateStr)) { - list = list.stream().filter(t->DateUtils.formatDate(t.getOrderDate(), "yyyy-MM-dd").compareTo(DateUtils.formatDate(new Date(), "yyyy-MM-dd"))>0 || (DateUtils.formatDate(t.getOrderDate(), "yyyy-MM-dd").compareTo(DateUtils.formatDate(new Date(), "yyyy-MM-dd"))==0 && DateUtils.formatDate(t.getStartTime(), "HH:mm").compareTo(DateUtils.formatDate(new Date(), "HH:mm"))>0)).sorted(Comparator.comparing(po -> DateUtils.formatDate(po.getStartTime(), "HH:mm"))).collect(Collectors.toList()); + list = list.stream().filter(t-> MyDateUtils.formatDate(t.getOrderDate(), MyDateUtils.DEFAULT_DATE_PATTERN).compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN))>0 || (MyDateUtils.formatDate(t.getOrderDate(), MyDateUtils.DEFAULT_DATE_PATTERN).compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN))==0 && MyDateUtils.formatDate(t.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_TIME_PATTERN))>0)).sorted(Comparator.comparing(po -> MyDateUtils.formatDate(po.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN))).toList(); } else { - list = list.stream().sorted(Comparator.comparing(po -> DateUtils.formatDate(po.getStartTime(), "HH:mm"))).collect(Collectors.toList()); + list = list.stream().sorted(Comparator.comparing(po -> MyDateUtils.formatDate(po.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN))).toList(); } - Map> groupedByRoom = list.stream() + return list.stream() .collect(Collectors.groupingBy(DmMeetingOrdersPo::getSpaceId)); - return groupedByRoom; } } \ No newline at end of file diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/organize/controller/api/SysDeptApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/organize/controller/api/SysDeptApiController.java index bf25c75b..ce627a5f 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/organize/controller/api/SysDeptApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/organize/controller/api/SysDeptApiController.java @@ -6,7 +6,7 @@ import com.xueyi.common.core.web.result.R; import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.system.api.organize.domain.vo.SysDeptExt; import com.xueyi.system.api.organize.feign.RemoteDeptService; -import com.xueyi.system.resource.controller.api.BaseApiController; +import com.xueyi.system.resource.controller.api.MyBaseApiController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequestMapping("/dept/api") -public class SysDeptApiController extends BaseApiController { +public class SysDeptApiController extends MyBaseApiController { @Autowired private RemoteDeptService deptService; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java index 53c9716d..15f23aef 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java @@ -24,7 +24,7 @@ import com.xueyi.system.api.pass.domain.po.DmRecognizedRecordsPo; import com.xueyi.system.api.pass.feign.RemoteRecognizedRecordsService; import com.xueyi.system.pass.mapper.DmRecognizedRecordsMapper; import com.xueyi.system.pass.service.impl.DmRecognizedRecordsServiceImpl; -import com.xueyi.system.resource.controller.api.BaseApiController; +import com.xueyi.system.resource.controller.api.MyBaseApiController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +47,7 @@ import java.util.stream.Collectors; */ @RestController @RequestMapping("/pass/api") -public class DmRecognizedRecordsApiController extends BaseApiController { +public class DmRecognizedRecordsApiController extends MyBaseApiController { private static final Logger log = LoggerFactory.getLogger(DmRecognizedRecordsApiController.class); @Autowired private RemoteRecognizedRecordsService recognizedRecordsFeign; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java index 01407b63..b34548be 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java @@ -1,5 +1,6 @@ package com.xueyi.system.pass.controller.api; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import co.elastic.clients.elasticsearch.ElasticsearchClient; @@ -9,7 +10,7 @@ import com.xueyi.common.core.web.result.R; import com.xueyi.common.security.annotation.InnerAuth; import com.xueyi.common.web.constant.ResponseCode; import com.xueyi.common.web.response.MyResponse; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.file.api.domain.SysFile; import com.xueyi.file.api.feign.RemoteFileService; import com.xueyi.system.api.pass.domain.dto.DmRecognizedMultiRecordsDto; @@ -19,7 +20,7 @@ import com.xueyi.system.api.staff.domain.po.DmStaffPo; import com.xueyi.system.pass.domain.model.DmRecognizedRecordsConverter; import com.xueyi.system.pass.mapper.DmRecognizedRecordsMapper; import com.xueyi.system.pass.service.impl.DmRecognizedRecordsServiceImpl; -import com.xueyi.system.resource.controller.api.BaseApiController; +import com.xueyi.system.resource.controller.api.MyBaseApiController; import com.xueyi.system.resource.domain.dto.DmResourcesDto; import com.xueyi.system.resource.service.impl.DmResourcesServiceImpl; import com.xueyi.system.resource.service.impl.FaceServiceImpl; @@ -45,7 +46,7 @@ import java.util.List; */ @RestController @RequestMapping("/pass/inner-api") -public class DmRecognizedRecordsInnerApiController extends BaseApiController { +public class DmRecognizedRecordsInnerApiController extends MyBaseApiController { @Autowired private DmStaffMapper dmStaffMapper; @@ -94,7 +95,7 @@ public class DmRecognizedRecordsInnerApiController extends BaseApiController { DmRecognizedRecordsPo cr = recordsConverter.mapperPo(recognizedRecordsDto); try { - cr.setRecognizedTime(DateUtils.parseLongToDate(timestamp.longValue())); + cr.setRecognizedTime(LocalDateTimeUtil.of(MyDateUtils.parseLongToDate(timestamp.longValue()))); } catch (ParseException e) { e.printStackTrace(); return output(ResponseCode.ILLEGAL_PARAMETER, "timestamp").toJSON(); @@ -147,7 +148,7 @@ public class DmRecognizedRecordsInnerApiController extends BaseApiController { DmRecognizedRecordsPo cr = recordsConverter.mapperPo(recognizedRecordsDto); try { - cr.setRecognizedTime(DateUtils.parseLongToDate(timestamp.longValue())); + cr.setRecognizedTime(LocalDateTimeUtil.of(MyDateUtils.parseLongToDate(timestamp.longValue()))); } catch (ParseException e) { e.printStackTrace(); return output(ResponseCode.ILLEGAL_PARAMETER, "timestamp").toJSON(); diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/BaseApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/BaseApiController.java deleted file mode 100644 index 3e48b96b..00000000 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/BaseApiController.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.xueyi.system.resource.controller.api; - -import com.alibaba.fastjson2.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.xueyi.common.web.constant.ResponseCode; -import com.xueyi.common.web.response.MyResponse; -import com.xueyi.system.digitalmans.mapper.DmDigitalmanMapper; -import com.xueyi.system.digitalmans.service.impl.DmDigitalmanServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.servlet.http.HttpServletRequest; -import java.io.BufferedReader; -import java.io.IOException; -import java.util.Map; -import java.util.TreeMap; - -public class BaseApiController extends com.xueyi.common.web.controller.BaseApiController { - - - @Autowired - private DmDigitalmanServiceImpl dmDigitalmanService; - - @Autowired - private DmDigitalmanMapper dmDigitalmanMapper; - - public MyResponse commonCheck(String devId, Double timestamp, String sign) { - String regexZS = "[0-9A-Za-z_-]+"; - if (!(StringUtils.isNotEmpty(devId) && devId.matches(regexZS))) { - return output(ResponseCode.ILLEGAL_PARAMETER, "devId"); - } - - if (!(StringUtils.isNotEmpty(sign) && sign.matches(regexZS))) { - return output(ResponseCode.ILLEGAL_PARAMETER, "sign"); - } - -// dmDigitalmanService.selectById() - /*DmDigitalmanDto dmDigitalmanDto = dmDigitalmanMapper.selectByCode(devId); - System.err.println(dmDigitalmanDto);*/ - - /* Device device = deviceService.findByDevId(devId); - if (!ObjectUtils.isNotNull(device)) { - return output(ResponseCode.PARAM_ID_NOT_EXIST_RECORD, devId); - } - System.err.println("----------sign check start----------"); - String singStr = devId + device.getBindDeviceSn() + timestamp + device.getAuthCode(); - System.err.println(singStr); - String signStr = DigestUtils.md5DigestAsHex(singStr.getBytes()); - System.err.println(signStr); - System.err.println("----------sign check end----------"); - - if (!sign.equals(signStr)) { - return output(ResponseCode.AUTH_NOT_PASS, null); - }*/ - - return output(ResponseCode.SUCCESS, null); - } - - /*/** - * @Author yangkai - * @Description //TODO - * @Date 2023/4/19 - * @Param [request] - * @Param [type] 1,application/json方式请求;2,form-data方式请求 - * - * @return com.alibaba.fastjson2.JSONObject - **/ - public JSONObject genSign(HttpServletRequest request, Integer type){ - if (1 == type) { - Map paramMap = request.getParameterMap(); - - // 將參數轉換為TreeMap並按照key排序 - TreeMap sortedParamMap = new TreeMap<>(); - for (Map.Entry entry : paramMap.entrySet()) { - String key = entry.getKey(); - String[] valueArray = entry.getValue(); - String value = (valueArray.length > 0) ? valueArray[0] : ""; - sortedParamMap.put(key, value); - } - return JSONObject.from(sortedParamMap); - - } else { - BufferedReader reader = null; - try { - reader = request.getReader(); - StringBuilder stringBuilder = new StringBuilder(); - String line = null; - while ((line = reader.readLine()) != null) { - stringBuilder.append(line); - } - String requestBody = stringBuilder.toString(); - - ObjectMapper objectMapper = new ObjectMapper(); - Map requestMap = objectMapper.readValue(requestBody, new TypeReference>(){}); - - TreeMap sortedParamMap = new TreeMap<>(); - for (Map.Entry entry : requestMap.entrySet()) { - String key = entry.getKey(); - String[] valueArray = entry.getValue(); - String value = (valueArray.length > 0) ? valueArray[0] : ""; - sortedParamMap.put(key, value); - } - return JSONObject.from(sortedParamMap); - } catch (IOException e) { - throw new RuntimeException(e); - } - - } - } - - -} \ No newline at end of file diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/DmResourcesCommonApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/DmResourcesCommonApiController.java index deb03efe..af57f365 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/DmResourcesCommonApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/DmResourcesCommonApiController.java @@ -1,19 +1,14 @@ package com.xueyi.system.resource.controller.api; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.xueyi.common.web.constant.ResponseCode; import com.xueyi.common.web.response.MyResponse; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.text.NumberFormat; -import java.text.ParseException; /** * 静态资源管理 业务处理 @@ -23,7 +18,7 @@ import java.text.ParseException; */ @RestController @RequestMapping("/api/resources") -public class DmResourcesCommonApiController extends BaseApiController{ +public class DmResourcesCommonApiController extends MyBaseApiController { @RequestMapping(value = "/sync-face", method = RequestMethod.POST, produces = "application/json;charset=UTF-8") public Object syncFace(@RequestBody JSONObject map, HttpServletRequest request) { diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/MyBaseApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/MyBaseApiController.java new file mode 100644 index 00000000..bc1c1c02 --- /dev/null +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/MyBaseApiController.java @@ -0,0 +1,62 @@ +package com.xueyi.system.resource.controller.api; + +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.xueyi.common.web.constant.ResponseCode; +import com.xueyi.common.web.response.MyResponse; +import com.xueyi.system.digitalmans.mapper.DmDigitalmanMapper; +import com.xueyi.system.digitalmans.service.impl.DmDigitalmanServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; +import java.util.Map; +import java.util.TreeMap; + +public class MyBaseApiController extends com.xueyi.common.web.controller.BaseApiController { + + + @Autowired + private DmDigitalmanServiceImpl dmDigitalmanService; + + @Autowired + private DmDigitalmanMapper dmDigitalmanMapper; + + public MyResponse commonCheck(String devId, Double timestamp, String sign) { + String regexZS = "[0-9A-Za-z_-]+"; + if (!(StringUtils.isNotEmpty(devId) && devId.matches(regexZS))) { + return output(ResponseCode.ILLEGAL_PARAMETER, "devId"); + } + + if (!(StringUtils.isNotEmpty(sign) && sign.matches(regexZS))) { + return output(ResponseCode.ILLEGAL_PARAMETER, "sign"); + } + +// dmDigitalmanService.selectById() + /*DmDigitalmanDto dmDigitalmanDto = dmDigitalmanMapper.selectByCode(devId); + System.err.println(dmDigitalmanDto);*/ + + /* Device device = deviceService.findByDevId(devId); + if (!ObjectUtils.isNotNull(device)) { + return output(ResponseCode.PARAM_ID_NOT_EXIST_RECORD, devId); + } + System.err.println("----------sign check start----------"); + String singStr = devId + device.getBindDeviceSn() + timestamp + device.getAuthCode(); + System.err.println(singStr); + String signStr = DigestUtils.md5DigestAsHex(singStr.getBytes()); + System.err.println(signStr); + System.err.println("----------sign check end----------"); + + if (!sign.equals(signStr)) { + return output(ResponseCode.AUTH_NOT_PASS, null); + }*/ + + return output(ResponseCode.SUCCESS, null); + } + + + +} \ No newline at end of file diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmEmpAttendanceController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmEmpAttendanceController.java index c3cffc9d..b32babe3 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmEmpAttendanceController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmEmpAttendanceController.java @@ -19,7 +19,7 @@ import com.xueyi.common.log.annotation.Log; import com.xueyi.common.log.enums.BusinessType; import com.xueyi.common.security.annotation.RequiresPermissions; import com.xueyi.common.web.entity.controller.BaseController; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.system.organize.mapper.SysDeptMapper; import com.xueyi.system.staff.domain.dto.DmEmpAttendanceDto; import com.xueyi.system.staff.domain.model.DmEmpAttendanceConverter; @@ -100,13 +100,13 @@ public class DmEmpAttendanceController extends BaseController 0) { @@ -181,13 +181,13 @@ public class DmEmpAttendanceController extends BaseController query = new QueryWrapper<>(); if (dmEmpAttendance != null && dmEmpAttendance.getETimestamp() != null &&dmEmpAttendance.getETimestamp()>0) { - start = DateUtils.parseLongToDate(dmEmpAttendance.getSTimestamp()); - end = DateUtils.parseLongToDate(dmEmpAttendance.getETimestamp()); - String sTime = DateUtils.formatDate(start,"yyyy-MM-dd"); - String eTime = DateUtils.formatDate(end,"yyyy-MM-dd"); + start = MyDateUtils.parseLongToDate(dmEmpAttendance.getSTimestamp()); + end = MyDateUtils.parseLongToDate(dmEmpAttendance.getETimestamp()); + String sTime = MyDateUtils.formatDate(start,MyDateUtils.DEFAULT_DATE_PATTERN); + String eTime = MyDateUtils.formatDate(end,MyDateUtils.DEFAULT_DATE_PATTERN); query.between("date_str",sTime, eTime); } else { - start = DateUtils.addDays(new Date(), -30); + start = MyDateUtils.addDays(new Date(), -30); end = new Date(); } if (dmEmpAttendance != null && dmEmpAttendance.getDeptId() !=null && dmEmpAttendance.getDeptId() > 0) { diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java index a22ff357..7b1e7854 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java @@ -16,7 +16,7 @@ import com.xueyi.system.api.pass.domain.po.DmRecognizedRecordsPo; import com.xueyi.system.api.staff.domain.dto.DmStaffCommonDto; import com.xueyi.system.api.staff.feign.RemoteStaffService; import com.xueyi.system.pass.mapper.DmRecognizedRecordsMapper; -import com.xueyi.system.resource.controller.api.BaseApiController; +import com.xueyi.system.resource.controller.api.MyBaseApiController; import com.xueyi.system.staff.service.impl.DmStaffServiceImpl; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; @@ -43,7 +43,7 @@ import java.util.List; */ @RestController @RequestMapping("/staff/api") -public class DmStaffApiController extends BaseApiController { +public class DmStaffApiController extends MyBaseApiController { private static final Logger log = LoggerFactory.getLogger(DmStaffApiController.class); diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java index d4d882c6..0f29ae02 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java @@ -12,7 +12,7 @@ import com.xueyi.system.api.digitalmans.domain.dto.DmVisitorsDto; import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo; import com.xueyi.system.api.staff.domain.dto.DmStaffCommonDto; import com.xueyi.system.api.staff.domain.po.DmStaffPo; -import com.xueyi.system.resource.controller.api.BaseApiController; +import com.xueyi.system.resource.controller.api.MyBaseApiController; import com.xueyi.system.resource.domain.dto.DmResourcesDto; import com.xueyi.system.resource.service.impl.DmResourcesServiceImpl; import com.xueyi.system.resource.service.impl.FaceServiceImpl; @@ -37,7 +37,7 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequestMapping("/staff/inner-api") -public class DmStaffInnerApiController extends BaseApiController { +public class DmStaffInnerApiController extends MyBaseApiController { @Autowired private DmStaffMapper dmStaffMapper; @@ -157,4 +157,12 @@ public class DmStaffInnerApiController extends BaseApiController { return outputSuccess(count).toJSON(); } + @InnerAuth + @GetMapping(value = "init-attendance") + @ResponseBody + public JSONObject initAttendance(@RequestParam("tenantId") Long tenantId){ + dmStaffService.initEmpAttendances(tenantId); + return outputSuccess("初始化当天考勤数据成功").toJSON(); + } + } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java index 166d6718..1803fc9e 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java @@ -5,7 +5,7 @@ import com.xueyi.common.core.constant.basic.SecurityConstants; import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.system.api.staff.domain.dto.DmVisitCommonDto; import com.xueyi.system.api.staff.feign.RemoteVisitorService; -import com.xueyi.system.resource.controller.api.BaseApiController; +import com.xueyi.system.resource.controller.api.MyBaseApiController; import com.xueyi.system.staff.mapper.DmStaffMapper; import com.xueyi.system.staff.mapper.DmVisitRecordsMapper; import com.xueyi.system.staff.mapper.DmVisitorsMapper; @@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequestMapping("/visit/api") -public class DmVisitorApiController extends BaseApiController { +public class DmVisitorApiController extends MyBaseApiController { @Autowired diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorInnerApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorInnerApiController.java index 10886917..472de033 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorInnerApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorInnerApiController.java @@ -15,7 +15,7 @@ import com.xueyi.common.core.web.result.R; import com.xueyi.common.security.annotation.InnerAuth; import com.xueyi.common.sms.configure.SmsProperties; import com.xueyi.common.web.constant.ResponseCode; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.file.api.domain.SysFile; import com.xueyi.file.api.feign.RemoteFileService; import com.xueyi.system.api.dict.domain.dto.SysDictDataDto; @@ -35,7 +35,7 @@ import com.xueyi.system.digitalmans.mapper.DmDigitalmanMapper; import com.xueyi.system.meeting.constant.VisitRecordStatus; import com.xueyi.system.receiver.domain.po.DmTenantReceiverPo; import com.xueyi.system.receiver.mapper.DmTenantReceiverMapper; -import com.xueyi.system.resource.controller.api.BaseApiController; +import com.xueyi.system.resource.controller.api.MyBaseApiController; import com.xueyi.system.resource.domain.dto.DmResourcesDto; import com.xueyi.system.resource.service.impl.DmResourcesServiceImpl; import com.xueyi.system.resource.service.impl.FaceServiceImpl; @@ -58,7 +58,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -71,7 +70,7 @@ import java.util.stream.Collectors; */ @RestController @RequestMapping("/visit/inner-api") -public class DmVisitorInnerApiController extends BaseApiController { +public class DmVisitorInnerApiController extends MyBaseApiController { @Autowired @@ -153,7 +152,7 @@ public class DmVisitorInnerApiController extends BaseApiController { } v.setRecordStatus(DmVisitRecordsDto.STATUS_VISITED); - v.setUpdateTime(DateUtils.dateToLocalDateTime(new Date())); + v.setUpdateTime(MyDateUtils.dateToLocalDateTime(new Date())); dmVisitRecordsMapper.updateById(v); return outputSuccess(json).toJSON(); @@ -219,7 +218,7 @@ public class DmVisitorInnerApiController extends BaseApiController { visitRecords.setDeptId(emp.getDeptId()); visitRecords.setVisitorId(v.getId()); if (StringUtils.isNotEmpty(commonDto.getVisitDate())) { - visitRecords.setVisitDate(LocalDateTimeUtil.of(DateUtils.parseStrToDate(commonDto.getVisitDate(), "yyyy-MM-dd")).toLocalDate()); + visitRecords.setVisitDate(LocalDateTimeUtil.of(MyDateUtils.parseStrToDate(commonDto.getVisitDate(), MyDateUtils.DEFAULT_DATE_PATTERN)).toLocalDate()); } visitRecords.setUserId(commonDto.getEmpId()); visitRecords.setRecordStatus(VisitRecordStatus.getRecordStatusStart()); @@ -325,7 +324,7 @@ public class DmVisitorInnerApiController extends BaseApiController { d.setVisitorName(visitorsPo.getName()); } if (null != item.getVisitDate()) { - d.setVisitDateStr(LocalDateTimeUtil.format(item.getVisitDate(), "yyyy-MM-dd")); + d.setVisitDateStr(LocalDateTimeUtil.format(item.getVisitDate(), MyDateUtils.DEFAULT_DATE_PATTERN)); } dtos.add(d); }); @@ -355,7 +354,7 @@ public class DmVisitorInnerApiController extends BaseApiController { d.setVisitorName(visitorsPo.getName()); } if (null != item.getVisitDate()) { - d.setVisitDateStr(LocalDateTimeUtil.format(item.getVisitDate(), "yyyy-MM-dd")); + d.setVisitDateStr(LocalDateTimeUtil.format(item.getVisitDate(), MyDateUtils.DEFAULT_DATE_PATTERN)); } dtos.add(d); } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/dto/DmEmpAttendanceDto.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/dto/DmEmpAttendanceDto.java index 0fd005e9..9113baa2 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/dto/DmEmpAttendanceDto.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/dto/DmEmpAttendanceDto.java @@ -1,13 +1,10 @@ package com.xueyi.system.staff.domain.dto; import com.xueyi.common.core.annotation.Excel; -import com.xueyi.common.web.utils.DateUtils; -import com.xueyi.system.api.organize.domain.po.SysDeptPo; -import com.xueyi.system.organize.mapper.SysDeptMapper; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.system.staff.domain.po.DmEmpAttendancePo; import lombok.Data; import lombok.EqualsAndHashCode; -import org.springframework.beans.factory.annotation.Autowired; import java.io.Serial; @@ -36,11 +33,11 @@ public class DmEmpAttendanceDto extends DmEmpAttendancePo { public DmEmpAttendanceDto fixExcel(){ if (this.checkInTime != null){ - this.sTime = DateUtils.formatDate(this.checkInTime, "HH:mm"); + this.sTime = MyDateUtils.formatDate(this.checkInTime, MyDateUtils.DEFAULT_TIME_PATTERN); } if (this.checkOutTime != null) { - this.eTime = DateUtils.formatDate(this.checkOutTime, "HH:mm"); + this.eTime = MyDateUtils.formatDate(this.checkOutTime, MyDateUtils.DEFAULT_TIME_PATTERN); } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/po/DmEmpAttendancePo.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/po/DmEmpAttendancePo.java index 95183f51..e0f428a7 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/po/DmEmpAttendancePo.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/po/DmEmpAttendancePo.java @@ -10,7 +10,7 @@ import com.alibaba.excel.enums.poi.FillPatternTypeEnum; import com.alibaba.excel.util.ListUtils; import com.baomidou.mybatisplus.annotation.TableName; import com.xueyi.common.core.web.tenant.base.TBaseEntity; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; import com.xueyi.system.staff.domain.converter.DurationConverter; import com.xueyi.system.staff.domain.converter.UserTypeConverter; import lombok.Data; @@ -82,21 +82,23 @@ public class DmEmpAttendancePo extends TBaseEntity { // @ExcelProperty(value = "考勤状态", converter = DescTypeConverter.class) protected Integer descStatus; + protected Long tenantId; + public static List> head(Date startDate, Date endDate) { - List base = Arrays.asList("考勤记录", DateUtils.formatDate(startDate,"yyyy年MM月dd日")+" 到 "+DateUtils.formatDate(endDate,"yyyy年MM月dd日")); + List base = Arrays.asList("考勤记录", MyDateUtils.formatDate(startDate,"yyyy年MM月dd日")+" 到 "+ MyDateUtils.formatDate(endDate,"yyyy年MM月dd日")); List> head = ListUtils.newArrayList(); List _headRow = ListUtils.newArrayList(base); - _headRow.add(DateUtils.formatDate(startDate, "姓名")); + _headRow.add(MyDateUtils.formatDate(startDate, "姓名")); head.add(_headRow); //从startDate到endDate开始循环 while (startDate.compareTo(endDate) <= 0) { List headRow = ListUtils.newArrayList(base); - headRow.add(DateUtils.formatDate(startDate, "MM月dd日")); + headRow.add(MyDateUtils.formatDate(startDate, "MM月dd日")); List headRow2 = ListUtils.newArrayList(headRow); - headRow2.add(DateUtils.getChineseWeek(startDate)); + headRow2.add(MyDateUtils.getChineseWeek(startDate)); head.add(headRow2); - startDate = DateUtils.addDays(startDate, 1); + startDate = MyDateUtils.addDays(startDate, 1); } return head; } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/PassRecordsGraphQLQueryResolver.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/PassRecordsGraphQLQueryResolver.java new file mode 100644 index 00000000..358434dd --- /dev/null +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/PassRecordsGraphQLQueryResolver.java @@ -0,0 +1,59 @@ +package com.xueyi.system.staff.graphql; + +import cn.hutool.core.date.LocalDateTimeUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.xueyi.common.web.utils.MyDateUtils; +import com.xueyi.system.api.pass.domain.dto.DmRecognizedRecordsDto; +import com.xueyi.system.api.pass.domain.po.DmRecognizedRecordsPo; +import com.xueyi.system.pass.domain.model.DmRecognizedRecordsConverter; +import com.xueyi.system.pass.mapper.DmRecognizedRecordsMapper; +import graphql.kickstart.tools.GraphQLQueryResolver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.util.List; +import java.util.stream.Collectors; + +/* + * @author yk + * @description + * @date 2023-12-25 19:55 + */ + +@Component +class PassRecordsGraphQLQueryResolver implements GraphQLQueryResolver { + @Autowired + private DmRecognizedRecordsMapper mapper; + + @Autowired + private DmRecognizedRecordsConverter converter; + + + public DmRecognizedRecordsDto passRecord(Long id) { + return converter.mapperDto(mapper.selectById(id)); + } + + public List passRecords(String userName, Long userId, Integer type, LocalDate startDate, LocalDate endDate){ + QueryWrapper query = new QueryWrapper<>(); + + if (StringUtils.isNotEmpty(userName)) { + query.like("user_name", userName); + } + + if (null != userId) { + query.eq("user_id", userId); + } + + if (null != type) { + query.eq("type", type); + } + + if (null != startDate && null != endDate){ + query.between("recognized_time", LocalDateTimeUtil.format(startDate, MyDateUtils.DEFAULT_DATE_PATTERN),LocalDateTimeUtil.format(endDate, MyDateUtils.DEFAULT_DATE_PATTERN)); + } + + return mapper.selectList(query).stream().map(t->converter.mapperDto(t)).collect(Collectors.toList()); + } +} diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLMutationResolver.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLMutationResolver.java index f00b382b..f804f4f6 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLMutationResolver.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLMutationResolver.java @@ -3,7 +3,6 @@ package com.xueyi.system.staff.graphql; import com.alibaba.excel.util.BooleanUtils; import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo; import com.xueyi.system.api.resource.domain.po.DmResourcesPo; -import com.xueyi.system.resource.domain.dto.DmResourcesDto; import com.xueyi.system.resource.mapper.DmResourcesMapper; import com.xueyi.system.staff.domain.model.DmVisitorsConverter; import com.xueyi.system.staff.mapper.DmVisitorsMapper; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java index 71dedd10..0f770d11 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java @@ -1,16 +1,16 @@ package com.xueyi.system.staff.graphql; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.xueyi.system.api.digitalmans.domain.dto.DmVisitorsDto; import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo; import com.xueyi.system.staff.domain.model.DmVisitorsConverter; -import com.xueyi.system.staff.domain.query.DmVisitorsQuery; import com.xueyi.system.staff.mapper.DmVisitorsMapper; import graphql.kickstart.tools.GraphQLQueryResolver; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; -import java.util.stream.Collectors; /* * @author yk @@ -31,6 +31,24 @@ class VisitorGraphQLQueryResolver implements GraphQLQueryResolver { } public List visitors(Long id, String name, Integer type, String phone){ - return mapper.selectList(null).stream().map(t->converter.mapperDto(t)).collect(Collectors.toList()); + QueryWrapper query = new QueryWrapper<>(); + + if (null != id) { + query.eq("id", id); + } + + if (StringUtils.isNotEmpty(name)) { + query.like("name", name); + } + + if (null != type) { + query.eq("type", type); + } + + if (StringUtils.isNotEmpty(phone)) { + query.eq("phone", phone); + } + + return mapper.selectList(query).stream().map(t->converter.mapperDto(t)).toList(); } } 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 e8a474f8..3f2ad0fb 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.xueyi.common.web.annotation.TenantIgnore; import com.xueyi.common.web.entity.service.impl.BaseServiceImpl; -import com.xueyi.common.web.utils.DateUtils; +import com.xueyi.common.web.utils.MyDateUtils; 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; @@ -25,6 +25,7 @@ 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; @@ -120,6 +121,35 @@ public class DmStaffServiceImpl extends BaseServiceImpl lists = staffMapper.selectList(new QueryWrapper().eq("tenant_id", tenantId)); + List attendancePos = new ArrayList<>(); + for (DmStaffPo po : lists) { + if (po != null && po.getId() != null) { + DmEmpAttendancePo attendancePo = new DmEmpAttendancePo(); + attendancePo.setUserId(po.getId()); + attendancePo.setUserName(po.getUserName()); + attendancePo.setTenantId(po.getTenantId()); + attendancePo.setDescStatus(3); + attendancePo.setDateStr(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN)); + attendancePos.add(attendancePo); + } + } + if (attendancePos.size() > 0) { + dmEmpAttendanceMapper.insertBatch(attendancePos); + } + } + public void updateOrInsertAttendance(DmRecognizedRecordsPo checkRecords) { if (null == checkRecords.getUserId()) { @@ -131,8 +161,8 @@ public class DmStaffServiceImpl extends BaseServiceImpl 0) { + if (MyDateUtils.formatDate(checkDate, MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(ext.getOnDutyHourEnd()) > 0) { ea.setDescStatus(statusMap.get("BE_LATER")); // 迟到 if (holidayPo.getHoliday() == 1) { ea.setDescStatus(statusMap.get("OVERTIME")); @@ -191,14 +221,14 @@ public class DmStaffServiceImpl extends BaseServiceImpl