From 3bac43403bbb2395cf6bd4638053064c9d5ae947 Mon Sep 17 00:00:00 2001 From: LEED Date: Wed, 28 May 2025 17:17:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9=20=20=20?= =?UTF-8?q?=20=E4=B8=8B=E4=B8=80=E6=AD=A5=E8=BF=9B=E8=A1=8C=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 18 ++++++ .../common/core/domain/model/LoginBody.java | 12 ++++ .../web/service/SysLoginService.java | 3 + .../impl/InspectionPlanServiceImpl.java | 63 ++++++++++++++++++- .../main/java/com/xinda/iot/domain/Alert.java | 10 +++ .../iot/service/impl/AlertServiceImpl.java | 17 ++++- .../main/resources/mapper/iot/AlertMapper.xml | 11 +++- 7 files changed, 127 insertions(+), 7 deletions(-) diff --git a/xinda-admin/src/main/java/com/xinda/web/controller/system/SysLoginController.java b/xinda-admin/src/main/java/com/xinda/web/controller/system/SysLoginController.java index 0885727..6624608 100644 --- a/xinda-admin/src/main/java/com/xinda/web/controller/system/SysLoginController.java +++ b/xinda-admin/src/main/java/com/xinda/web/controller/system/SysLoginController.java @@ -51,6 +51,24 @@ public class SysLoginController private IAppPreferencesService appPreferencesService; + /** + * 登录方法 + * + * @param loginBody 登录信息 + * @return 结果 + */ +// @ApiOperation("机构用户登录") +// @PostMapping("/deptLogin") +// public AjaxResult deptLogin(HttpServletRequest request, @RequestBody LoginBody loginBody) +// { +// AjaxResult ajax = AjaxResult.success(); +// // 生成令牌 +// String token = loginService.deptLogin(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), +// loginBody.getUuid(), loginBody.getSourceType(), request.getHeader(LANGUAGE)); +// ajax.put(Constants.TOKEN, token); +// return ajax; +// } + /** * 登录方法 * diff --git a/xinda-common/src/main/java/com/xinda/common/core/domain/model/LoginBody.java b/xinda-common/src/main/java/com/xinda/common/core/domain/model/LoginBody.java index 44e55c2..552f33a 100644 --- a/xinda-common/src/main/java/com/xinda/common/core/domain/model/LoginBody.java +++ b/xinda-common/src/main/java/com/xinda/common/core/domain/model/LoginBody.java @@ -7,6 +7,10 @@ package com.xinda.common.core.domain.model; */ public class LoginBody { + /** + * 机构ID + */ + private Long deptId; /** * 用户名 */ @@ -42,6 +46,14 @@ public class LoginBody */ private String smsCode; + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + public String getSmsCode() { return smsCode; } diff --git a/xinda-framework/src/main/java/com/xinda/framework/web/service/SysLoginService.java b/xinda-framework/src/main/java/com/xinda/framework/web/service/SysLoginService.java index d893a78..b769d21 100644 --- a/xinda-framework/src/main/java/com/xinda/framework/web/service/SysLoginService.java +++ b/xinda-framework/src/main/java/com/xinda/framework/web/service/SysLoginService.java @@ -119,6 +119,7 @@ public class SysLoginService { return tokenService.createToken(loginUser); } + /** * 第三方验证后,调用登录方法 * @@ -233,4 +234,6 @@ public class SysLoginService { // 生成token return tokenService.createToken(loginUser); } + + } diff --git a/xinda-itsm/src/main/java/com/xinda/itsm/service/impl/InspectionPlanServiceImpl.java b/xinda-itsm/src/main/java/com/xinda/itsm/service/impl/InspectionPlanServiceImpl.java index 65499ab..8ed0bf2 100644 --- a/xinda-itsm/src/main/java/com/xinda/itsm/service/impl/InspectionPlanServiceImpl.java +++ b/xinda-itsm/src/main/java/com/xinda/itsm/service/impl/InspectionPlanServiceImpl.java @@ -1,7 +1,16 @@ package com.xinda.itsm.service.impl; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Date; +import java.util.Calendar; import java.util.List; +import java.util.function.Consumer; + import com.xinda.common.utils.DateUtils; +import com.xinda.itsm.domain.InspectionRecord; +import com.xinda.itsm.mapper.InspectionRecordMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.xinda.itsm.mapper.InspectionPlanMapper; @@ -19,7 +28,8 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService { @Autowired private InspectionPlanMapper inspectionPlanMapper; - + @Autowired + private InspectionRecordMapper inspectionRecordMapper; /** * 查询巡检计划 * @@ -53,8 +63,17 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService @Override public int insertInspectionPlan(InspectionPlan inspectionPlan) { + inspectionPlan.setCreateTime(DateUtils.getNowDate()); - return inspectionPlanMapper.insertInspectionPlan(inspectionPlan); + int num = inspectionPlanMapper.insertInspectionPlan(inspectionPlan); + // 收集日期范围内的所有日期 + List dateList = new ArrayList<>(); + processDateRange(inspectionPlan.getStartDate(), inspectionPlan.getEndDate(), dateList::add); + for(Date date : dateList){ + InspectionRecord inspectionRecord = getBasicRecord(inspectionPlan, date, "日"); + inspectionRecordMapper.insertInspectionRecord(inspectionRecord); + } + return num; } /** @@ -93,4 +112,44 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService { return inspectionPlanMapper.deleteInspectionPlanById(id); } + + /** + * 处理指定日期范围内的每一天(使用java.util.Date类型) + * @param startDate 开始日期 + * @param endDate 结束日期 + * @param dateConsumer 处理每一天的函数式接口 + */ + public static void processDateRange(Date startDate, Date endDate, Consumer dateConsumer) { + // 验证日期顺序 + if (startDate.after(endDate)) { + throw new IllegalArgumentException("开始日期不能晚于结束日期"); + } + + // 使用Calendar进行日期计算 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + + Date currentDate = startDate; + while (!currentDate.after(endDate)) { + dateConsumer.accept(currentDate); + // 增加一天 + calendar.add(Calendar.DAY_OF_MONTH, 1); + currentDate = calendar.getTime(); + } + } + + + private InspectionRecord getBasicRecord(InspectionPlan inspectionPlan, Date now, String cycle) { + InspectionRecord record = new InspectionRecord(); + record.setPlanName(inspectionPlan.getPlanName()); + record.setPlanContent(inspectionPlan.getPlanContent()); + record.setProjectName(inspectionPlan.getProjectName()); + record.setPlanTime(DateUtils.parseDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, now) + " " + inspectionPlan.getSetTime())); + record.setInspectionPerson(inspectionPlan.getInspectionPerson()); + record.setPlanId(inspectionPlan.getId()); + record.setUserId(inspectionPlan.getUserId()); + record.setInspectionCycle(cycle); + record.setCycle(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, now)); + return record; + } } diff --git a/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/domain/Alert.java b/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/domain/Alert.java index 2444590..0e1d8ef 100644 --- a/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/domain/Alert.java +++ b/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/domain/Alert.java @@ -46,6 +46,8 @@ public class Alert extends BaseEntity { @Excel(name = "告警状态", readConverterExp = "1=-启动,2-停止") private Integer status; + private Integer type; + /** * 通知方式 格式:"1,2,3" */ @@ -106,6 +108,14 @@ public class Alert extends BaseEntity { this.notifyTemplateList = notifyTemplateList; } + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + public List getScenes() { return scenes; } diff --git a/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/service/impl/AlertServiceImpl.java b/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/service/impl/AlertServiceImpl.java index eaeb5b6..53fa061 100644 --- a/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/service/impl/AlertServiceImpl.java +++ b/xinda-service/xinda-iot-service/src/main/java/com/xinda/iot/service/impl/AlertServiceImpl.java @@ -243,8 +243,12 @@ public class AlertServiceImpl implements IAlertService { alertMapper.deleteAlertSceneByAlertIds(alertIds); } // 将 List 转换为 Long[] - Long[] sceneIds = alertMapper.selectSceneByAlert(alertIds).toArray(new Long[0]); - sceneService.deleteSceneBySceneIds(sceneIds); + List sceneIdList= alertMapper.selectSceneByAlert(alertIds); + if(sceneIdList.size()>0){ + Long[] sceneIds = convertToList(sceneIdList); + sceneService.deleteSceneBySceneIds(sceneIds); + } + // 批量删除告警场景 alertMapper.deleteAlertSceneByAlertIds(alertIds); // 批量删除告警通知模版配置 @@ -253,6 +257,15 @@ public class AlertServiceImpl implements IAlertService { return alertMapper.deleteAlertByAlertIds(alertIds); } + + public Long[] convertToList(List sceneIdList) { + if (sceneIdList == null) { + return new Long[0]; // 返回空数组而非 null + } + return sceneIdList.toArray(new Long[0]); + } + + /** * 删除设备告警信息 * diff --git a/xinda-service/xinda-iot-service/src/main/resources/mapper/iot/AlertMapper.xml b/xinda-service/xinda-iot-service/src/main/resources/mapper/iot/AlertMapper.xml index e8f31ec..a5eb9a0 100644 --- a/xinda-service/xinda-iot-service/src/main/resources/mapper/iot/AlertMapper.xml +++ b/xinda-service/xinda-iot-service/src/main/resources/mapper/iot/AlertMapper.xml @@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -45,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select alert_id, alert_name, alert_level, status, notify, create_by, create_time, update_by, update_time, remark, tenant_id, tenant_name,serial_number from iot_alert + select alert_id, alert_name, alert_level, status,type, notify, create_by, create_time, update_by, update_time, remark, tenant_id, tenant_name,serial_number from iot_alert - select p.alert_id, p.alert_name, p.alert_level, p.status, p.notify, p.create_by, p.create_time, + select p.alert_id, p.alert_name, p.alert_level, p.status, p.type,p.notify, p.create_by, p.create_time, p.update_by, p.update_time, p.remark, p.tenant_id, p.tenant_name,p.serial_number from iot_alert p and p.alert_name like concat('%', #{alertName}, '%') and p.alert_level = #{alertLevel} and p.status = #{status} + and p.type = #{type} and p.notify = #{notify} and p.tenant_id = #{tenantId} @@ -99,7 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"