From 2deb9b96f9ba6dbd51e69e079bc14eb2c7da8de7 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Thu, 7 Aug 2025 11:24:50 +0800 Subject: [PATCH] 1 --- .../AttendanceArrangementServiceImpl.java | 43 ++++++++++++++++-- .../sis/controller/SisDataSyncController.java | 45 +++++++++++++++++++ .../org/dromara/sis/task/DataSyncTask.java | 24 +++++++++- 3 files changed, 108 insertions(+), 4 deletions(-) create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDataSyncController.java diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java index e7838ac5..2acd2a14 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java @@ -62,10 +62,16 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS */ @Override public AttendanceArrangementVo queryById(Long id) { + AttendanceArrangementVo vo = baseMapper.selectVoById(id); + //根据id查询出groupId + Long groupId = baseMapper.selectById(id).getGroupId(); + //根据groupId查询出考勤组信息 + AttendanceGroup attendanceGroup = attendanceGroupMapper.selectById(groupId); + vo.setAttendanceGroup(attendanceGroup); + //根据id查询排班人员信息 List userGroupList = userGroupMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, id)); //将排班人员信息添加到排班信息中 - AttendanceArrangementVo vo = baseMapper.selectVoById(id); vo.setUserGroupList(userGroupList); return vo; } @@ -497,8 +503,39 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS */ private void validEntityBeforeSave(AttendanceArrangement entity) { //TODO 做一些数据校验,如唯一约束 - //新增时判断在该时间段内是否有排班 - +// //新增时判断在该时间段内是否有排班 +// //1.查询所有的排班信息 +// List arrangementList = baseMapper.selectList(); +// +// //使用between查询排班的开始时间在新增的开始时间和结束时间的排班信息 +// List startResult = baseMapper.selectVoList(Wrappers.lambdaQuery() +// .between(AttendanceArrangement::getStartDate, entity.getStartDate(), entity.getStartDate().plusDays(1)) +// .eq(AttendanceArrangement::getGroupId, entity.getGroupId())); +// //查询排班的结束时间在新增的开始时间和结束时间的排班信息 +// List endResult = baseMapper.selectList(Wrappers.lambdaQuery() +// .between(AttendanceArrangement::getEndDate, entity.getStartDate(), entity.getStartDate().plusDays(1)) +// .eq(AttendanceArrangement::getGroupId, entity.getGroupId())); +// +// //将两个集合进行合并 +// List result = new ArrayList<>(startResult.stream().distinct().toList()); +// result.addAll(endResult.stream().map(vo -> { +// AttendanceArrangementVo newVo = MapstructUtils.convert(vo, AttendanceArrangementVo.class); +// newVo.setStartDate(vo.getStartDate()); +// newVo.setEndDate(vo.getEndDate()); +// return newVo; +// }).toList()); +// +// //去重 +// result = result.stream().distinct().toList(); +// +// +// +// //2.遍历排班信息,判断是否有时间冲突 +// for (AttendanceArrangement arrangement : arrangementList) { +// //如果时间 +// if () +// } +// } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDataSyncController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDataSyncController.java new file mode 100644 index 00000000..c814f0ce --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDataSyncController.java @@ -0,0 +1,45 @@ +package org.dromara.sis.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.web.core.BaseController; +import org.dromara.sis.domain.bo.SisAuthRecordBo; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 主动推送的同步数据 + * 前端访问路由地址为:/sis/dataSync + * + * @author lsm + * @since 2025-07-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/dataSync") +public class SisDataSyncController extends BaseController { + +// private + + + @SaCheckPermission("sis:dataSync:add") + @Log(title = "人员库授权", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/add") + public R add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo, HttpServletRequest request) { +// return toAjax(); + return R.ok(); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java index 1aef66ad..53eae686 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java @@ -5,8 +5,11 @@ import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.property.api.RemoteFloorService; import org.dromara.property.api.domain.vo.RemoteFloorVo; import org.dromara.sis.domain.AlarmRecord; +import org.dromara.sis.domain.SisAlarmEvents; +import org.dromara.sis.domain.bo.SisAlarmEventsBo; import org.dromara.sis.service.AlarmRecordService; import org.dromara.sis.service.ApiService; +import org.dromara.sis.service.ISisAlarmEventsService; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -24,13 +27,15 @@ public class DataSyncTask { private final ApiService apiService; private final AlarmRecordService alarmRecordService; + private final ISisAlarmEventsService sisAlarmEventsService; @Value("${sync.pageSize:100}") private int pageSize; - public DataSyncTask(ApiService apiService, AlarmRecordService alarmRecordService) { + public DataSyncTask(ApiService apiService, AlarmRecordService alarmRecordService, ISisAlarmEventsService sisAlarmEventsService) { this.apiService = apiService; this.alarmRecordService = alarmRecordService; + this.sisAlarmEventsService = sisAlarmEventsService; } /** @@ -77,6 +82,23 @@ public class DataSyncTask { if (operators != null && !operators.isEmpty()) { operatorMap.put(recordId, operators); } + + //同步成功后,将两张表的数据合并到alarmEvents表中 + SisAlarmEventsBo sisAlarmEvents = new SisAlarmEventsBo(); + sisAlarmEvents.setId(recordId); + sisAlarmEvents.setType(Long.valueOf((Integer) recordMap.get("Type"))); + sisAlarmEvents.setLevel(Long.valueOf((Integer) recordMap.get("Level"))); +// //报警设备ip +// sisAlarmEvents.setDeviceIp(); + sisAlarmEvents.setDeviceName(recordMap.get("DeviceName").toString()); + sisAlarmEvents.setDeviceGroupId(Long.valueOf((Integer) recordMap.get("GroupId"))); + sisAlarmEvents.setDeviceGroupName(recordMap.get("GroupName").toString()); + sisAlarmEvents.setReportTime((Date) recordMap.get("StartTime")); + sisAlarmEvents.setState((Integer) recordMap.get("State")); + sisAlarmEvents.setWorkOrderId(Long.valueOf((Integer) recordMap.get("WorkOrderId"))); + //保存报警事件 + sisAlarmEventsService.insertByBo(sisAlarmEvents); + } // 保存数据(包含操作记录)