| @@ -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") | |||
| @@ -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(); | |||
| @@ -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 "周一"; | |||
| @@ -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<List<TeTenantDto>> 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<List<TeTenantDto>> 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("=======考勤数据初始化完成。。。========"); | |||
| } | |||
| } | |||
| @@ -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)); | |||
| @@ -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 BaseController<DmDigitalmanQuery, Dm | |||
| } | |||
| try { | |||
| occurTime = DateUtils.formatDate(DateUtils.parseLongToDate(timestamp),"HH:mm"); | |||
| occurTime = MyDateUtils.formatDate(MyDateUtils.parseLongToDate(timestamp),"HH:mm"); | |||
| } catch (ParseException e) { | |||
| e.printStackTrace(); | |||
| throw new RuntimeException(e); | |||
| @@ -373,7 +373,7 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm | |||
| exceptionLogDto.setManCode(devicePo.getManCode()); | |||
| exceptionLogDto.setTId(devicePo.getTId()); | |||
| exceptionLogDto.setOccurTime(DateUtils.dateToLocalDateTime(DateUtils.parseLongToDate(timestamp))); | |||
| exceptionLogDto.setOccurTime(MyDateUtils.dateToLocalDateTime(MyDateUtils.parseLongToDate(timestamp))); | |||
| // 上传类型为崩溃上传时,插入异常日志 | |||
| if (uploadType == EmcsUploadType.getTypeCrackUpload()) { | |||
| exceptionLogMapper.insert(exceptionLogDto); | |||
| @@ -403,7 +403,7 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm | |||
| if (!redisTemplate.hasKey("exceptionLog:dingTalk:" + devId + ":" + type)) { | |||
| //设置当前时间格式为yyyy-MM-dd HH:mm:ss | |||
| LocalDateTime localDateTime = LocalDateTime.now(); | |||
| DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | |||
| DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(MyDateUtils.DEFAULT_PATTERN); | |||
| String format = localDateTime.format(dateTimeFormatter); | |||
| DingdingReqEntity entity = new DingdingReqEntity(); | |||
| @@ -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.digitalmans.domain.dto.DmScreenIconDto; | |||
| import com.xueyi.system.api.digitalmans.feign.RemoteModelService; | |||
| 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; | |||
| @@ -20,7 +20,7 @@ import java.util.List; | |||
| @RestController | |||
| @RequestMapping("/api/menu/") | |||
| public class DmMenuApiController extends BaseApiController { | |||
| public class DmMenuApiController extends MyBaseApiController { | |||
| private static final Logger log = LoggerFactory.getLogger(DmMenuApiController.class); | |||
| @@ -8,6 +8,7 @@ import com.xueyi.common.core.web.result.AjaxResult; | |||
| import com.xueyi.common.mqtt.connection.MqttTemplate; | |||
| 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.message.api.transfer.domain.vo.DmActiveVo; | |||
| import com.xueyi.message.api.transfer.feign.RemoteTransferService; | |||
| import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto; | |||
| @@ -148,7 +149,7 @@ public class DmManDeviceServiceImpl extends BaseServiceImpl<DmManDeviceQuery, Dm | |||
| LocalDateTime currentDate = LocalDateTime.now(); | |||
| LocalDateTime sevenDaysAgo =currentDate.minusDays(7).withHour(0).withMinute(0).withSecond(0); | |||
| DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | |||
| DateTimeFormatter formatter = DateTimeFormatter.ofPattern(MyDateUtils.DEFAULT_PATTERN); | |||
| vo.setAlertNear7Days(exceptionLogMapper.selectList(Wrappers.<DmExceptionLogPo>query().lambda() | |||
| .ge(DmExceptionLogPo::getCreateTime,sevenDaysAgo.format(formatter))).size()); | |||
| // 当前未解除预警数 | |||
| @@ -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<DmExceptionLogQuery | |||
| JSONObject jsonObject = new JSONObject(); | |||
| List<NumberOfAlertToChartVo> 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<DmExceptionLogQuery | |||
| YearMonth currentYearMonth = YearMonth.now(); | |||
| int currentYear = currentYearMonth.getYear(); | |||
| int currentMonth = currentYearMonth.getMonthValue(); | |||
| DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); | |||
| DateTimeFormatter formatter = DateTimeFormatter.ofPattern(MyDateUtils.DEFAULT_DATE_PATTERN); | |||
| // 遍历每个月 | |||
| for (Month month : Month.values()) { | |||
| int monthValue = month.getValue(); | |||
| @@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSONObject; | |||
| import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||
| import com.xueyi.common.mqtt.service.MqttMessageHandler; | |||
| import com.xueyi.common.redis.service.RedisService; | |||
| import com.xueyi.common.web.utils.DateUtils; | |||
| import com.xueyi.common.web.utils.MyDateUtils; | |||
| import com.xueyi.system.emcs.domain.dto.RedisBaseDto; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| @@ -43,7 +43,7 @@ public class HeartBeatMessageHandler implements MqttMessageHandler { | |||
| String memory = (Double.valueOf(memoryTotal) - memoryFree) / Double.valueOf(memoryTotal) * 100 + ""; | |||
| String occurTime = ""; | |||
| occurTime = DateUtils.formatDate(DateUtils.parseLongToDate(timestamp),"HH:mm"); | |||
| occurTime = MyDateUtils.formatDate(MyDateUtils.parseLongToDate(timestamp),"HH:mm"); | |||
| if (StringUtils.isNotEmpty(devId)) { | |||
| @@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSONObject; | |||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||
| import com.xueyi.common.core.constant.basic.SqlConstants; | |||
| import com.xueyi.common.mqtt.service.MqttMessageHandler; | |||
| import com.xueyi.common.web.utils.DateUtils; | |||
| import com.xueyi.common.web.utils.MyDateUtils; | |||
| import com.xueyi.system.api.digitalmans.domain.po.DmManDevicePo; | |||
| import com.xueyi.system.digitalmans.mapper.DmManDeviceMapper; | |||
| import com.xueyi.system.emcs.constant.EmcsUploadType; | |||
| @@ -59,7 +59,7 @@ public class LogUploadMessageHandler implements MqttMessageHandler { | |||
| exceptionLogDto.setManCode(devicePo.getManCode()); | |||
| exceptionLogDto.setTId(devicePo.getTId()); | |||
| exceptionLogDto.setOccurTime(DateUtils.dateToLocalDateTime(DateUtils.parseLongToDate(timestamp))); | |||
| exceptionLogDto.setOccurTime(MyDateUtils.dateToLocalDateTime(MyDateUtils.parseLongToDate(timestamp))); | |||
| // 上传类型为崩溃上传时,插入异常日志 | |||
| if (uploadType == EmcsUploadType.getTypeCrackUpload()) { | |||
| exceptionLogMapper.insert(exceptionLogDto); | |||
| @@ -16,7 +16,7 @@ import com.xueyi.system.api.pass.feign.RemoteRecognizedRecordsService; | |||
| import com.xueyi.system.digitalmans.service.IDmDigitalmanService; | |||
| import com.xueyi.system.meeting.domain.model.DmMeetingRoomsConverter; | |||
| import com.xueyi.system.meeting.mapper.DmMeetingRoomsMapper; | |||
| import com.xueyi.system.resource.controller.api.BaseApiController; | |||
| import com.xueyi.system.resource.controller.api.MyBaseApiController; | |||
| import com.xueyi.system.utils.common.ImageUtil; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| @@ -42,7 +42,7 @@ import java.util.List; | |||
| */ | |||
| @RestController | |||
| @RequestMapping("/meeting/api") | |||
| public class DmMeetingApiController extends BaseApiController { | |||
| public class DmMeetingApiController extends MyBaseApiController { | |||
| private static final Logger log = LoggerFactory.getLogger(DmMeetingApiController.class); | |||
| @Autowired | |||
| @@ -13,7 +13,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.nlt.api.netty.domain.vo.DmWebSocketMessageVo; | |||
| import com.xueyi.nlt.api.netty.feign.RemoteWebsocketService; | |||
| import com.xueyi.nlt.api.nlt.feign.RemoteIntentService; | |||
| @@ -37,7 +37,7 @@ import com.xueyi.system.meeting.mapper.DmMeetingOrdersMapper; | |||
| import com.xueyi.system.meeting.mapper.DmMeetingRoomsMapper; | |||
| import com.xueyi.system.meeting.service.impl.DmMeetingOrdersServiceImpl; | |||
| import com.xueyi.system.meeting.service.impl.DmMeetingRoomsServiceImpl; | |||
| import com.xueyi.system.resource.controller.api.BaseApiController; | |||
| import com.xueyi.system.resource.controller.api.MyBaseApiController; | |||
| import com.xueyi.system.staff.mapper.DmStaffMapper; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| @@ -71,7 +71,7 @@ import java.util.stream.Collectors; | |||
| */ | |||
| @RestController | |||
| @RequestMapping("/meeting/inner-api") | |||
| public class DmMeetingInnerApiController extends BaseApiController { | |||
| public class DmMeetingInnerApiController extends MyBaseApiController { | |||
| private static final Logger log = LoggerFactory.getLogger(DmMeetingInnerApiController.class); | |||
| @Autowired | |||
| @@ -145,8 +145,8 @@ public class DmMeetingInnerApiController extends BaseApiController { | |||
| } | |||
| List<DmMeetingOrdersPo> 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<DmMeetingOrdersPo> 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<DmMeetingOrdersPo> 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<Long, List<DmMeetingOrdersPo>> groupedByRoom = list.stream() | |||
| @@ -639,7 +639,7 @@ public class DmMeetingInnerApiController extends BaseApiController { | |||
| Map<Long, String> rooms = new HashMap<>(); | |||
| Map<Long, Integer> 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<Long, List<DmMeetingOrdersPo>> groupedByRoom = ordersService.selectOrderedList(deptId,dateStr); | |||
| String nextDateStr = DateUtils.dateStrAdd(dateStr, 1); | |||
| String nextDateStr = MyDateUtils.dateStrAdd(dateStr, 1); | |||
| Map<Long, List<DmMeetingOrdersPo>> 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); | |||
| @@ -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<DmMeetingOrdersQ | |||
| public void fixColumns(DmMeetingOrdersDto dto) { | |||
| DmStaffPo sm = dmStaffService.selectById(dto.getOrderBy()); | |||
| if (null != sm) | |||
| dto.setOrderByEmp(sm.getUserName()); | |||
| { | |||
| dto.setOrderByEmp(sm.getUserName()); | |||
| } | |||
| dto.setStartTimeStr(DateUtils.formatDate(dto.getStartTime(), "HH:mm")); | |||
| dto.setOrderDateStr(DateUtils.formatDate(dto.getOrderDate(), "YYYY-MM-dd")); | |||
| dto.setEndTimeStr(DateUtils.formatDate(dto.getEndTime(), "HH:mm")); | |||
| dto.setStartTimeStr(MyDateUtils.formatDate(dto.getStartTime(), MyDateUtils.DEFAULT_TIME_PATTERN)); | |||
| dto.setOrderDateStr(MyDateUtils.formatDate(dto.getOrderDate(), MyDateUtils.DEFAULT_DATE_PATTERN)); | |||
| dto.setEndTimeStr(MyDateUtils.formatDate(dto.getEndTime(), MyDateUtils.DEFAULT_TIME_PATTERN)); | |||
| } | |||
| @@ -68,20 +70,18 @@ public class DmMeetingOrdersServiceImpl extends BaseServiceImpl<DmMeetingOrdersQ | |||
| @Override | |||
| public Map<Long, List<DmMeetingOrdersPo>> selectOrderedList(Long deptId, String dateStr) { | |||
| List<DmMeetingOrdersPo> 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<DmMeetingOrdersPo> 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<Long, List<DmMeetingOrdersPo>> groupedByRoom = list.stream() | |||
| return list.stream() | |||
| .collect(Collectors.groupingBy(DmMeetingOrdersPo::getSpaceId)); | |||
| return groupedByRoom; | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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; | |||
| @@ -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(); | |||
| @@ -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<String, String[]> paramMap = request.getParameterMap(); | |||
| // 將參數轉換為TreeMap並按照key排序 | |||
| TreeMap<String, String> sortedParamMap = new TreeMap<>(); | |||
| for (Map.Entry<String, String[]> 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<String, String[]> requestMap = objectMapper.readValue(requestBody, new TypeReference<Map<String, String[]>>(){}); | |||
| TreeMap<String, String> sortedParamMap = new TreeMap<>(); | |||
| for (Map.Entry<String, String[]> 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); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -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) { | |||
| @@ -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); | |||
| } | |||
| } | |||
| @@ -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<DmEmpAttendanceQue | |||
| Date start = null; | |||
| Date end = null; | |||
| try { | |||
| start = DateUtils.parseLongToDate(query.getSTimestamp()); | |||
| end = DateUtils.parseLongToDate(query.getETimestamp()); | |||
| start = MyDateUtils.parseLongToDate(query.getSTimestamp()); | |||
| end = MyDateUtils.parseLongToDate(query.getETimestamp()); | |||
| } catch (ParseException e) { | |||
| throw new RuntimeException(e); | |||
| } | |||
| String sTime = DateUtils.formatDate(start,"yyyy-MM-dd"); | |||
| String eTime = DateUtils.formatDate(end,"yyyy-MM-dd"); | |||
| String sTime = MyDateUtils.formatDate(start,MyDateUtils.DEFAULT_DATE_PATTERN); | |||
| String eTime = MyDateUtils.formatDate(end,MyDateUtils.DEFAULT_DATE_PATTERN); | |||
| wrapper.between("date_str",sTime, eTime); | |||
| } | |||
| if (query != null && query.getDeptId() !=null && query.getDeptId() > 0) { | |||
| @@ -181,13 +181,13 @@ public class DmEmpAttendanceController extends BaseController<DmEmpAttendanceQue | |||
| try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build()) { | |||
| QueryWrapper<DmEmpAttendancePo> 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) { | |||
| @@ -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); | |||
| @@ -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(); | |||
| } | |||
| } | |||
| @@ -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 | |||
| @@ -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); | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -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<List<String>> head(Date startDate, Date endDate) { | |||
| List<String> base = Arrays.asList("考勤记录", DateUtils.formatDate(startDate,"yyyy年MM月dd日")+" 到 "+DateUtils.formatDate(endDate,"yyyy年MM月dd日")); | |||
| List<String> base = Arrays.asList("考勤记录", MyDateUtils.formatDate(startDate,"yyyy年MM月dd日")+" 到 "+ MyDateUtils.formatDate(endDate,"yyyy年MM月dd日")); | |||
| List<List<String>> head = ListUtils.newArrayList(); | |||
| List<String> _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<String> headRow = ListUtils.newArrayList(base); | |||
| headRow.add(DateUtils.formatDate(startDate, "MM月dd日")); | |||
| headRow.add(MyDateUtils.formatDate(startDate, "MM月dd日")); | |||
| List<String> 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; | |||
| } | |||
| @@ -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<DmRecognizedRecordsDto> passRecords(String userName, Long userId, Integer type, LocalDate startDate, LocalDate endDate){ | |||
| QueryWrapper<DmRecognizedRecordsPo> 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()); | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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<DmVisitorsDto> visitors(Long id, String name, Integer type, String phone){ | |||
| return mapper.selectList(null).stream().map(t->converter.mapperDto(t)).collect(Collectors.toList()); | |||
| QueryWrapper<DmVisitorsPo> 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(); | |||
| } | |||
| } | |||
| @@ -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<DmStaffQuery, DmStaffDto | |||
| return totalCount.longValue(); | |||
| } | |||
| public void initEmpAttendance(DmStaffPo po) { | |||
| // 初始化员工考勤信息 | |||
| DmEmpAttendancePo attendancePo = new DmEmpAttendancePo(); | |||
| attendancePo.setUserId(po.getId()); | |||
| attendancePo.setUserName(po.getUserName()); | |||
| attendancePo.setDateStr(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN)); | |||
| dmEmpAttendanceMapper.insert(attendancePo); | |||
| } | |||
| @TenantIgnore(tenantLine = true) | |||
| public void initEmpAttendances(Long tenantId) { | |||
| List<DmStaffPo> lists = staffMapper.selectList(new QueryWrapper<DmStaffPo>().eq("tenant_id", tenantId)); | |||
| List<DmEmpAttendancePo> 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<DmStaffQuery, DmStaffDto | |||
| return ; | |||
| } | |||
| Date checkTime = checkRecords.getRecognizedTime(); | |||
| String checkTimeDateStr = DateUtils.formatDate(checkTime, "yyyy-MM-dd"); | |||
| Date checkTime = MyDateUtils.localDateTimeToDate(checkRecords.getRecognizedTime()); | |||
| String checkTimeDateStr = MyDateUtils.formatDate(checkTime, MyDateUtils.DEFAULT_DATE_PATTERN); | |||
| if (StringUtils.isEmpty(checkTimeDateStr)) { | |||
| return ; | |||
| } | |||
| @@ -154,11 +184,11 @@ public class DmStaffServiceImpl extends BaseServiceImpl<DmStaffQuery, DmStaffDto | |||
| if (null!=empAttendance.getCheckInTime() && null != empAttendance.getCheckOutTime()) { | |||
| Date cin = empAttendance.getCheckInTime(); | |||
| Date cout = empAttendance.getCheckOutTime(); | |||
| Integer diffMin = DateUtils.dateDiffMin(cin, cout); | |||
| Integer diffMin = MyDateUtils.dateDiffMin(cin, cout); | |||
| empAttendance.setWorkDuration(diffMin); | |||
| } | |||
| if (DateUtils.formatDate(checkTime, "HH:mm").compareTo(ext.getOffDutyHourStart()) < 0) { | |||
| if (MyDateUtils.formatDate(checkTime, MyDateUtils.DEFAULT_TIME_PATTERN).compareTo(ext.getOffDutyHourStart()) < 0) { | |||
| if (statusMap.get("NORMAL") == empAttendance.getDescStatus()) { | |||
| empAttendance.setDescStatus(statusMap.get("LEAVE_EARLY")); | |||
| } else if (statusMap.get("BE_LATER") == empAttendance.getDescStatus()){ | |||
| @@ -177,10 +207,10 @@ public class DmStaffServiceImpl extends BaseServiceImpl<DmStaffQuery, DmStaffDto | |||
| } else { | |||
| DmEmpAttendancePo ea = new DmEmpAttendancePo(); | |||
| Date checkDate = DateUtils.parseStrToDate(DateUtils.formatDate(checkTime, "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd HH:mm:ss"); | |||
| Date checkDate = checkTime; | |||
| ea.setCheckInTime(checkDate); | |||
| DmHolidayPo holidayPo = holidayService.isHoliday(checkDate); | |||
| if (DateUtils.formatDate(checkDate, "HH:mm").compareTo(ext.getOnDutyHourEnd()) > 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<DmStaffQuery, DmStaffDto | |||
| } | |||
| } | |||
| ea.setDateStr(DateUtils.formatDate(new Date(), "yyyy-MM-dd")); | |||
| ea.setDateStr(MyDateUtils.formatDate(new Date(), MyDateUtils.DEFAULT_DATE_PATTERN)); | |||
| ea.setUserId(userId); | |||
| ea.setUserName(emp.getUserName()); | |||
| ea.setUserType(Long.parseLong(emp.getUserType())); | |||
| ea.setDeptId(emp.getDeptId()); | |||
| ea.setWorkDuration(0); | |||
| ea.setCreateTime(DateUtils.currentDateToLocalDateTime()); | |||
| ea.setUpdateTime(DateUtils.currentDateToLocalDateTime()); | |||
| ea.setCreateTime(MyDateUtils.currentDateToLocalDateTime()); | |||
| ea.setUpdateTime(MyDateUtils.currentDateToLocalDateTime()); | |||
| dmEmpAttendanceService.updRedisCount(); | |||
| dmEmpAttendanceMapper.insert(ea); | |||
| @@ -0,0 +1,21 @@ | |||
| extend type Query { | |||
| passRecords( | |||
| userName:String | |||
| userId:Long | |||
| type:Int | |||
| startDate:Date | |||
| endDate:Date | |||
| ): [PassRecord!] | |||
| passRecord(id:Long!): PassRecord | |||
| } | |||
| type PassRecord { | |||
| id: Long | |||
| userName: String | |||
| userId: Long | |||
| faceUrl: String | |||
| recognizedTime: Date | |||
| type: Int | |||
| } | |||