瀏覽代碼

1,graphQL 完善考勤

2,修改代码规范
3,考勤增加缺勤记录
tags/B.2.6.6_20240106_base^2
yk 1 年之前
父節點
當前提交
1266567bc9
共有 32 個文件被更改,包括 398 次插入273 次删除
  1. +2
    -2
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/pass/domain/po/DmRecognizedRecordsPo.java
  2. +3
    -0
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java
  3. +30
    -18
      xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/MyDateUtils.java
  4. +35
    -5
      xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/task/DgmanTask.java
  5. +3
    -3
      xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java
  6. +4
    -4
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java
  7. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/api/DmMenuApiController.java
  8. +2
    -1
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/service/impl/DmManDeviceServiceImpl.java
  9. +3
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/controller/DmExceptionLogController.java
  10. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/service/HeartBeatMessageHandler.java
  11. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/service/LogUploadMessageHandler.java
  12. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java
  13. +40
    -40
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingInnerApiController.java
  14. +12
    -12
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/service/impl/DmMeetingOrdersServiceImpl.java
  15. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/organize/controller/api/SysDeptApiController.java
  16. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java
  17. +6
    -5
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java
  18. +0
    -113
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/BaseApiController.java
  19. +1
    -6
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/DmResourcesCommonApiController.java
  20. +62
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/MyBaseApiController.java
  21. +10
    -10
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmEmpAttendanceController.java
  22. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java
  23. +10
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java
  24. +2
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java
  25. +7
    -8
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorInnerApiController.java
  26. +3
    -6
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/dto/DmEmpAttendanceDto.java
  27. +8
    -6
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/domain/po/DmEmpAttendancePo.java
  28. +59
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/PassRecordsGraphQLQueryResolver.java
  29. +0
    -1
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLMutationResolver.java
  30. +21
    -3
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java
  31. +40
    -10
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java
  32. +21
    -0
      xueyi-modules/xueyi-system/src/main/resources/graphql/passRecords.graphqls

+ 2
- 2
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")


+ 3
- 0
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();



xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/utils/DateUtils.java → 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 "周一";

+ 35
- 5
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<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("=======考勤数据初始化完成。。。========");
}
}

+ 3
- 3
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));


+ 4
- 4
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 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();


+ 2
- 2
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/api/DmMenuApiController.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.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);



+ 2
- 1
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/service/impl/DmManDeviceServiceImpl.java 查看文件

@@ -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());
// 当前未解除预警数


+ 3
- 2
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<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();


+ 2
- 2
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/service/HeartBeatMessageHandler.java 查看文件

@@ -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)) {


+ 2
- 2
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/emcs/service/LogUploadMessageHandler.java 查看文件

@@ -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);


+ 2
- 2
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java 查看文件

@@ -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


+ 40
- 40
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingInnerApiController.java 查看文件

@@ -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);


+ 12
- 12
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<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;
}
}

+ 2
- 2
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;


+ 2
- 2
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;


+ 6
- 5
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();


+ 0
- 113
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/api/BaseApiController.java 查看文件

@@ -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
- 6
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) {


+ 62
- 0
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);
}



}

+ 10
- 10
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<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) {


+ 2
- 2
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);



+ 10
- 2
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();
}

}

+ 2
- 2
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


+ 7
- 8
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);
}


+ 3
- 6
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);
}




+ 8
- 6
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<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;
}


+ 59
- 0
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<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());
}
}

+ 0
- 1
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;


+ 21
- 3
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<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();
}
}

+ 40
- 10
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<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);


+ 21
- 0
xueyi-modules/xueyi-system/src/main/resources/graphql/passRecords.graphqls 查看文件

@@ -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
}

Loading…
取消
儲存