From 86a7af2e3db4706f8693d542014be070d1aa4756 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 09:39:49 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E6=96=B0=E5=88=86=E6=94=AF=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index 33a4736d..96a3e60e 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -379,6 +379,6 @@ public class AlarmsTask { } public static String generateExpressAlarmInformation(String oid, String validity, String name) { - return "工单 【" + oid + "】 寄件超时【" + validity + "】,请联系工程师【" + name + "尽快处理!"; + return "工单 【" + oid + "】 寄件超时【" + validity + "】,请联系工程师【" + name + "】尽快处理!"; } } -- Gitee From c624771d2aeaf071e1024902eecda76582271f16 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 11:20:00 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uav/alarms/entity/AlarmsParameter.java | 2 + .../uav/alarms/enums/AlarmTypeEnums.java | 11 +- .../uav/alarms/task/AlarmsTask.java | 122 +++++++++++++++++- .../uav/order/repository/OrderRepository.java | 2 + 4 files changed, 125 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/entity/AlarmsParameter.java b/src/main/java/com/thinglinks/uav/alarms/entity/AlarmsParameter.java index 2587b4c7..c032b63e 100644 --- a/src/main/java/com/thinglinks/uav/alarms/entity/AlarmsParameter.java +++ b/src/main/java/com/thinglinks/uav/alarms/entity/AlarmsParameter.java @@ -19,6 +19,8 @@ public class AlarmsParameter extends BaseEntity { private String unit; @Column(name = "value") private Integer value; + @Column(name = "remark") + private String remark; public AlarmsParameter() { } diff --git a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java index 450f4035..a6155357 100644 --- a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java +++ b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java @@ -6,11 +6,12 @@ public enum AlarmTypeEnums { INSURANCECONFIRM("insuranceConfirm", "保险待确认预警"), LOSSASSESSMENT("lossAssessment", "定损超时预警"), FIX("fix","维修超时预警"), - EXPRESSES("expresses","寄件超时预警"), - RECEIVE("receive","接单预警"), - FEES("fees","费用预警"), - EXPRESS("express", "快递预警"), - TOTAL("total", "总预警"), + EXPRESS("express", "寄件超时预警"), + INSURANCEFIRSTWAITINGSUBMIT("insuranceFirstWaitingSubmit", "初版资料待提交超时预警"), + FIRSTREJECT("firstReject", "初版资料驳回修改超时预警"), + INSURANCELASTWAITINGSUBMIT("insuranceLastWaitingSubmit", "终版资料提交超时预警"), + FEES("fees","预付款工单处理预警"), + INVENTORY("inventory", "库存预警"), PROJECT("project", "项目预警"); private final String name; diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index 96a3e60e..bfc6785e 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -10,6 +10,7 @@ import com.thinglinks.uav.common.utils.CommonUtils; import com.thinglinks.uav.insurance.entity.Insurance; import com.thinglinks.uav.insurance.repository.InsuranceRepository; import com.thinglinks.uav.order.entity.Order; +import com.thinglinks.uav.order.enums.InsuranceStatusEnums; import com.thinglinks.uav.order.enums.OrderStatusEnums; import com.thinglinks.uav.order.repository.OrderRepository; import com.thinglinks.uav.project.entity.Project; @@ -19,6 +20,7 @@ import com.thinglinks.uav.user.repository.UserRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.util.StopWatch; import javax.annotation.Resource; import java.util.Calendar; @@ -81,6 +83,9 @@ public class AlarmsTask { @Scheduled(fixedRate = 3600000) public void insuranceExpirationEarlyWarningTask() { try { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + long now = System.currentTimeMillis(); // 获取预警参数信息 AlarmsParameter parameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCE.name()); @@ -105,6 +110,9 @@ public class AlarmsTask { } else { log.warn("Warning time is null, skipping insurance expiration early warning task."); } + + stopWatch.stop(); + log.info("doInsuranceExpirationEarlyWarningTask spend: {}ms", stopWatch.getLastTaskTimeMillis()); } catch (Exception e) { log.error("保险到期预警任务执行失败: {}", e.getMessage()); } @@ -114,6 +122,9 @@ public class AlarmsTask { @Scheduled(fixedRate = 3600000) public void serviceExpirationEarlyWarningTask() { try { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + long now = System.currentTimeMillis(); // 保险待确认超时 List insuranceWaitConfirmList = orderRepository.findByStatus(OrderStatusEnums.ORDER_STATUS_WAIT_CONFIRM_INSURANCE.getCode()); @@ -159,11 +170,11 @@ public class AlarmsTask { // 寄件超时 List waitExpressesList = orderRepository.findByStatus(OrderStatusEnums.ORDER_STATUS_WAITING_CUSTOMER_EXPRESSES.getCode()); if(!waitExpressesList.isEmpty()){ - AlarmsParameter expressList = alarmsParameterRepository.findByName(AlarmTypeEnums.EXPRESS.name()); + AlarmsParameter expressAlarmsParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.EXPRESS.name()); waitExpressesList.forEach(order -> { - long daysDifference = (now - order.getUt()) / getUnitTimestamp(expressList.getUnit()); - if (daysDifference % expressList.getValue() == 0) { - String timeOut = daysDifference + expressList.getUnit(); + long daysDifference = (now - order.getUt()) / getUnitTimestamp(expressAlarmsParameter.getUnit()); + if (daysDifference % expressAlarmsParameter.getValue() == 0) { + String timeOut = daysDifference + expressAlarmsParameter.getUnit(); String returnSendUid = order.getReturnSendUid(); User user = userRepository.findByUid(returnSendUid); createExpressAlarm(order, timeOut, user.getUserName()); @@ -172,12 +183,54 @@ public class AlarmsTask { } - // 初版保险资料不齐超时预警:系统后台创建工单从确认收件开始每3个工作日提醒一次,资料驳回修改每2个工作日提醒一次。 - - // 终版资料不齐超时预警:从发送报价开始每5个工作日提醒一次 + // 初版保险资料不齐超时预警 驳回修改超时 + List firstWaitingSubmit = orderRepository.findByReviewInsuranceStatus(InsuranceStatusEnums.INSURANCE_FIRST_WAITING_SUBMIT.getCode()); + if(!firstWaitingSubmit.isEmpty()){ + AlarmsParameter firstAlarmsParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCEFIRSTWAITINGSUBMIT.name()); + firstWaitingSubmit.forEach(order -> { + long daysDifference = (now - order.getUt()) / getUnitTimestamp(firstAlarmsParameter.getUnit()); + if (daysDifference % firstAlarmsParameter.getValue() == 0) { + String timeOut = daysDifference + firstAlarmsParameter.getUnit(); + String uid = order.getUid(); + User user = userRepository.findByUid(uid); + createFirstWaitingSubmitAlarm(order, timeOut, user.getUserName()); + } + }); + } + // 初版保险资料驳回修改超时 + List firstRejectList = orderRepository.findByReviewInsuranceStatus(InsuranceStatusEnums.INSURANCE_FIRST_REJECT.getCode()); + if(!firstWaitingSubmit.isEmpty()){ + AlarmsParameter firstRejectParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.FIRSTREJECT.name()); + firstRejectList.forEach(order -> { + long daysDifference = (now - order.getUt()) / getUnitTimestamp(firstRejectParameter.getUnit()); + if (daysDifference % firstRejectParameter.getValue() == 0) { + String timeOut = daysDifference + firstRejectParameter.getUnit(); + String uid = order.getUid(); + User user = userRepository.findByUid(uid); + createFirstRejectAlarm(order, timeOut, user.getUserName()); + } + }); + } + // 终版资料不齐超时预警 + List lastWaitingSubmitList = orderRepository.findByReviewInsuranceStatus(InsuranceStatusEnums.INSURANCE_LAST_WAITING_SUBMIT.getCode()); + if(!lastWaitingSubmitList.isEmpty()) { + AlarmsParameter lastWaitingSubmitParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCELASTWAITINGSUBMIT.name()); + lastWaitingSubmitList.forEach(order -> { + long daysDifference = (now - order.getUt()) / getUnitTimestamp(lastWaitingSubmitParameter.getUnit()); + if (daysDifference % lastWaitingSubmitParameter.getValue() == 0) { + String timeOut = daysDifference + lastWaitingSubmitParameter.getUnit(); + String uid = order.getUid(); + User user = userRepository.findByUid(uid); + createLastWaitingSubmitAlarm(order, timeOut, user.getUserName()); + } + }); + } // 预付款工单处理预警:第一次6个工作日预警一次,之后每3个工作日预警一次 + + stopWatch.stop(); + log.info("doServiceAlarmTask spend: {}ms", stopWatch.getLastTaskTimeMillis()); } catch (Exception e) { log.error("服务超时预警任务执行失败: {}", e.getMessage()); } @@ -187,6 +240,9 @@ public class AlarmsTask { @Scheduled(fixedRate = 3600000) public void projectExpirationEarlyWarningTask() { try { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + long now = System.currentTimeMillis(); // 获取首次预警参数信息 AlarmsParameter parameter = alarmsParameterRepository.findByName(AlarmTypeEnums.PROJECT.name()); @@ -210,6 +266,9 @@ public class AlarmsTask { } else { log.warn("Warning time is null, skipping project expiration early warning task."); } + + stopWatch.stop(); + log.info("doProjectAlarmTask spend: {}ms", stopWatch.getLastTaskTimeMillis()); } catch (Exception e) { log.error("项目预警任务执行失败: {}", e.getMessage()); } @@ -291,6 +350,43 @@ public class AlarmsTask { } } + // 生成初版资料提交超时预警信息 + private void createFirstWaitingSubmitAlarm(Order order, String validity, String userName) { + if (!alarmsRepository.existsByContent(generateFirstWaitingSubmitInformation(order.getOrdid(),validity,userName))) { + Alarms alarm = new Alarms(); + alarm.setAlarmid(CommonUtils.uuid()); + alarm.setType(SERVICE_TYPE); + alarm.setContent(generateFirstWaitingSubmitInformation(order.getOrdid(),validity,userName)); + alarm.setStatus(false); + alarmsRepository.save(alarm); + } + } + + // 生成初版驳回修改超时预警信息 + private void createFirstRejectAlarm(Order order, String validity, String userName) { + if (!alarmsRepository.existsByContent(generateFirstRejectAlarmInformation(order.getOrdid(),validity,userName))) { + Alarms alarm = new Alarms(); + alarm.setAlarmid(CommonUtils.uuid()); + alarm.setType(SERVICE_TYPE); + alarm.setContent(generateFirstRejectAlarmInformation(order.getOrdid(),validity,userName)); + alarm.setStatus(false); + alarmsRepository.save(alarm); + } + } + + // 生成初版驳回修改超时预警信息 + private void createLastWaitingSubmitAlarm(Order order, String validity, String userName) { + if (!alarmsRepository.existsByContent(generateLastWaitingSubmitInformation(order.getOrdid(),validity,userName))) { + Alarms alarm = new Alarms(); + alarm.setAlarmid(CommonUtils.uuid()); + alarm.setType(SERVICE_TYPE); + alarm.setContent(generateLastWaitingSubmitInformation(order.getOrdid(),validity,userName)); + alarm.setStatus(false); + alarmsRepository.save(alarm); + } + } + + private Long calculatedWarningTime(AlarmsParameter parameter) { if (parameter.getUnit().equals(UnitTypeEnums.MONTH.getCode())) { return calculateMonthsLater(System.currentTimeMillis(), parameter.getValue()); @@ -381,4 +477,16 @@ public class AlarmsTask { public static String generateExpressAlarmInformation(String oid, String validity, String name) { return "工单 【" + oid + "】 寄件超时【" + validity + "】,请联系工程师【" + name + "】尽快处理!"; } + + public static String generateFirstWaitingSubmitInformation(String oid, String validity, String name) { + return "工单 【" + oid + "】 保险初版资料提交超时【" + validity + "】,请联系用户【" + name + "】尽快处理!"; + } + + public static String generateFirstRejectAlarmInformation(String oid, String validity, String name) { + return "工单 【" + oid + "】 保险初版资料驳回修改超时【" + validity + "】,请联系用户【" + name + "】尽快处理!"; + } + + public static String generateLastWaitingSubmitInformation(String oid, String validity, String name) { + return "工单 【" + oid + "】 保险终版资料提交超时【" + validity + "】,请联系用户【" + name + "】尽快处理!"; + } } diff --git a/src/main/java/com/thinglinks/uav/order/repository/OrderRepository.java b/src/main/java/com/thinglinks/uav/order/repository/OrderRepository.java index 154d4eed..b37455ed 100644 --- a/src/main/java/com/thinglinks/uav/order/repository/OrderRepository.java +++ b/src/main/java/com/thinglinks/uav/order/repository/OrderRepository.java @@ -63,4 +63,6 @@ public interface OrderRepository extends JpaRepository, JpaSpeci boolean existsByCidIn(List ids); List findByStatus(String status); + + List findByReviewInsuranceStatus(String reviewInsuranceStatus); } -- Gitee From 66e03960ea00e42dfde829c0733f78469bba8a5f Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 11:48:34 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uav/alarms/enums/UnitTypeEnums.java | 9 ++++++ .../uav/alarms/task/AlarmsTask.java | 30 +++++++++---------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java b/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java index 40adc1db..b7186555 100644 --- a/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java +++ b/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java @@ -27,4 +27,13 @@ public enum UnitTypeEnums { this.name = name; } + public static UnitTypeEnums getUnitTypeEnums(String code) { + for (UnitTypeEnums unitTypeEnums : UnitTypeEnums.values()) { + if (unitTypeEnums.getCode().equals(code)) { + return unitTypeEnums; + } + } + return null; + } + } diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index bfc6785e..d163b8b2 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -39,17 +39,17 @@ public class AlarmsTask { private static final String PROJECT_TYPE = "5"; // 保险二次预警 30天 - private static final AlarmsParameter SECOND_INSURANCE_REMINDER_THRESHOLD = new AlarmsParameter(30, UnitTypeEnums.DAY.name()); + private static final AlarmsParameter SECOND_INSURANCE_REMINDER_THRESHOLD = new AlarmsParameter(30, UnitTypeEnums.DAY.getCode()); // 基础保养预警周期 - private static final AlarmsParameter BASE_MAINTENANCE_WARNING_THRESHOLD = new AlarmsParameter(6, UnitTypeEnums.MONTH.name()); + private static final AlarmsParameter BASE_MAINTENANCE_WARNING_THRESHOLD = new AlarmsParameter(6, UnitTypeEnums.MONTH.getCode()); // 常规保养预警周期 - private static final AlarmsParameter REGULAR_MAINTENANCE_WARNING_THRESHOLD = new AlarmsParameter(12, UnitTypeEnums.MONTH.name()); + private static final AlarmsParameter REGULAR_MAINTENANCE_WARNING_THRESHOLD = new AlarmsParameter(12, UnitTypeEnums.MONTH.getCode()); // 深度保养预警周期 - private static final AlarmsParameter DEEP_MAINTENANCE_WARNING_THRESHOLD = new AlarmsParameter(12, UnitTypeEnums.MONTH.name()); + private static final AlarmsParameter DEEP_MAINTENANCE_WARNING_THRESHOLD = new AlarmsParameter(12, UnitTypeEnums.MONTH.getCode()); // 项目二次预警 2个月 - private static final AlarmsParameter SECOND_PROJECT_REMINDER_THRESHOLD = new AlarmsParameter(2, UnitTypeEnums.MONTH.name()); + private static final AlarmsParameter SECOND_PROJECT_REMINDER_THRESHOLD = new AlarmsParameter(2, UnitTypeEnums.MONTH.getCode()); @Resource private AlarmsRepository alarmsRepository; @@ -80,7 +80,7 @@ public class AlarmsTask { } // 保险到期预警 - @Scheduled(fixedRate = 3600000) + @Scheduled(fixedRate = 60000) public void insuranceExpirationEarlyWarningTask() { try { StopWatch stopWatch = new StopWatch(); @@ -119,7 +119,7 @@ public class AlarmsTask { } // 服务超时预警 - @Scheduled(fixedRate = 3600000) + @Scheduled(fixedRate = 60000) public void serviceExpirationEarlyWarningTask() { try { StopWatch stopWatch = new StopWatch(); @@ -237,7 +237,7 @@ public class AlarmsTask { } // 项目到期预警 - @Scheduled(fixedRate = 3600000) + @Scheduled(fixedRate = 60000) public void projectExpirationEarlyWarningTask() { try { StopWatch stopWatch = new StopWatch(); @@ -387,7 +387,7 @@ public class AlarmsTask { } - private Long calculatedWarningTime(AlarmsParameter parameter) { + private static Long calculatedWarningTime(AlarmsParameter parameter) { if (parameter.getUnit().equals(UnitTypeEnums.MONTH.getCode())) { return calculateMonthsLater(System.currentTimeMillis(), parameter.getValue()); } @@ -407,33 +407,33 @@ public class AlarmsTask { } - private long calculateMonthsLater(long now, int months) { + private static long calculateMonthsLater(long now, int months) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(now); calendar.add(Calendar.MONTH, months); return calendar.getTimeInMillis(); } - private long calculateWeeksLater(long now, int weeks) { + private static long calculateWeeksLater(long now, int weeks) { return now + weeks * 7 * 24 * 60 * 60 * 1000L; } - private long calculateDaysLater(long now, int days) { + private static long calculateDaysLater(long now, int days) { return now + days * 24 * 60 * 60 * 1000L; } - private long calculateHoursLater(long now, int hours) { + private static long calculateHoursLater(long now, int hours) { return now + hours * 60 * 60 * 1000L; } - private long calculateMinutesLater(long now, int minutes) { + private static long calculateMinutesLater(long now, int minutes) { return now + minutes * 60 * 1000L; } private long getUnitTimestamp(String unit) { try { - UnitTypeEnums type = UnitTypeEnums.valueOf(unit); + UnitTypeEnums type = UnitTypeEnums.getUnitTypeEnums(unit); switch (type) { case MONTH: return 30L * 1000 * 60 * 60 * 24; -- Gitee From a74e9997ffb773f5ccaf174f84412296be8f70b1 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 13:58:23 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E5=BE=85=E5=8A=9E=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uav/workbench/service/impl/WorkbenchServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java b/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java index c752c120..9581491c 100644 --- a/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java @@ -151,8 +151,9 @@ public class WorkbenchServiceImpl implements WorkbenchService { personalToDoVO.addAll(testingEngineer()); personalToDoVO.addAll(sender()); } - - return BaseResponse.success(new ArrayList<>(personalToDoVO)); + ArrayList personalToDoVOS = new ArrayList<>(personalToDoVO); + personalToDoVOS.sort(Comparator.comparingInt(PersonalToDoVO::getCount).reversed()); + return BaseResponse.success(personalToDoVOS); } // 收寄人员 -- Gitee From 1a0e3d49805a0ca03ae325e13e3e9eefad25aec7 Mon Sep 17 00:00:00 2001 From: huiyong chen <1685170900@qq.com> Date: Tue, 30 Jul 2024 06:11:16 +0000 Subject: [PATCH 05/15] =?UTF-8?q?Revert=20"=E5=B7=A5=E4=BD=9C=E5=8F=B0?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=BE=85=E5=8A=9E=E6=8E=92=E5=BA=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a74e9997ffb773f5ccaf174f84412296be8f70b1. --- .../uav/workbench/service/impl/WorkbenchServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java b/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java index 9581491c..c752c120 100644 --- a/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java @@ -151,9 +151,8 @@ public class WorkbenchServiceImpl implements WorkbenchService { personalToDoVO.addAll(testingEngineer()); personalToDoVO.addAll(sender()); } - ArrayList personalToDoVOS = new ArrayList<>(personalToDoVO); - personalToDoVOS.sort(Comparator.comparingInt(PersonalToDoVO::getCount).reversed()); - return BaseResponse.success(personalToDoVOS); + + return BaseResponse.success(new ArrayList<>(personalToDoVO)); } // 收寄人员 -- Gitee From 76d3ba62b2932add81776dcda03fbd1e949c1e3b Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 16:20:24 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E8=AD=A6=E5=91=8A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alarms/controller/AlarmsController.java | 14 +++- .../thinglinks/uav/alarms/dto/AlarmDTO.java | 9 +++ .../uav/alarms/dto/QueryAlarmDTO.java | 4 +- .../uav/alarms/enums/UnitTypeEnums.java | 11 +++ .../uav/alarms/service/AlarmsService.java | 7 +- .../service/impl/AlarmsServiceImpl.java | 33 ++++++++- .../uav/alarms/task/AlarmsTask.java | 67 ++++++++++--------- .../service/impl/WorkbenchServiceImpl.java | 5 +- 8 files changed, 106 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java diff --git a/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java b/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java index 95f40631..14a55bfa 100644 --- a/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java +++ b/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java @@ -1,12 +1,12 @@ package com.thinglinks.uav.alarms.controller; import com.thinglinks.uav.alarms.dto.*; -import com.thinglinks.uav.alarms.entity.Alarms; import com.thinglinks.uav.alarms.entity.AlarmsParameter; import com.thinglinks.uav.alarms.service.AlarmsParameterService; import com.thinglinks.uav.alarms.service.AlarmsService; import com.thinglinks.uav.common.dto.BasePageResponse; import com.thinglinks.uav.common.dto.BaseResponse; +import com.thinglinks.uav.common.dto.IdsRequest; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.*; @@ -26,7 +26,7 @@ public class AlarmsController { private AlarmsParameterService alarmsParameterService; @GetMapping - public BasePageResponse getAlarmsList(@Valid QueryAlarmDTO request) { + public BasePageResponse getAlarmsList(@Valid QueryAlarmDTO request) { return alarmsService.getPage(request); } @@ -35,16 +35,26 @@ public class AlarmsController { return alarmsService.getStatistics(); } + // 预警处理 @PostMapping("{alarmid}") public BaseResponse alarmHandle(@PathVariable String alarmid,@RequestBody @Valid AlarmsHandleDTO request) { return alarmsService.alarmHandle(alarmid,request); } + // 批量预警处理 + @PostMapping("/batchAlarmHandle") + public BaseResponse batchAlarmHandle(@RequestBody @Valid IdsRequest ids) { + return alarmsService.batchAlarmHandle(ids); + } + + + // 获取预警参数 @GetMapping("/settings") public BaseResponse> getAlarmsParameters() { return alarmsParameterService.getAlarmsParameters(); } + // 修改预警参数 @PatchMapping("/settings") public BaseResponse editAlarmsParameters(@RequestBody EditAlarmsParameterDTO request) { return alarmsParameterService.editAlarmsParameters(request); diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java new file mode 100644 index 00000000..83acad6e --- /dev/null +++ b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java @@ -0,0 +1,9 @@ +package com.thinglinks.uav.alarms.dto; + +import com.thinglinks.uav.alarms.entity.Alarms; +import lombok.Data; + +@Data +public class AlarmDTO extends Alarms { + private long updateAt; +} diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java index f5dd2cee..12f98b58 100644 --- a/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java +++ b/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java @@ -7,9 +7,9 @@ import javax.validation.constraints.NotNull; @Data public class QueryAlarmDTO extends BasePageRequest { - private String startTime; + private long startTime; - private String endTime; + private long endTime; @NotNull(message = "告警类型不能为空") private String type; diff --git a/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java b/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java index b7186555..12e94c7f 100644 --- a/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java +++ b/src/main/java/com/thinglinks/uav/alarms/enums/UnitTypeEnums.java @@ -2,6 +2,9 @@ package com.thinglinks.uav.alarms.enums; import lombok.Getter; +import java.util.Arrays; +import java.util.Optional; + public enum UnitTypeEnums { MONTH("month", "月"), WEEK("week", "周"), @@ -11,6 +14,7 @@ public enum UnitTypeEnums { @Getter private final String code; + @Getter private final String name; public static boolean exists(String code) { @@ -36,4 +40,11 @@ public enum UnitTypeEnums { return null; } + public static Optional getNameByCode(String code) { + return Arrays.stream(values()) + .filter(unit -> unit.getCode().equals(code)) + .map(UnitTypeEnums::getName) + .findFirst(); + } + } diff --git a/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java b/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java index 06258ec5..0225090d 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java @@ -1,19 +1,22 @@ package com.thinglinks.uav.alarms.service; +import com.thinglinks.uav.alarms.dto.AlarmDTO; import com.thinglinks.uav.alarms.dto.AlarmsCount; import com.thinglinks.uav.alarms.dto.AlarmsHandleDTO; import com.thinglinks.uav.alarms.dto.QueryAlarmDTO; -import com.thinglinks.uav.alarms.entity.Alarms; import com.thinglinks.uav.common.dto.BasePageResponse; import com.thinglinks.uav.common.dto.BaseResponse; +import com.thinglinks.uav.common.dto.IdsRequest; import java.util.List; public interface AlarmsService { - BasePageResponse getPage(QueryAlarmDTO request); + BasePageResponse getPage(QueryAlarmDTO request); BaseResponse> getStatistics(); BaseResponse alarmHandle(String alarmid,AlarmsHandleDTO alarmsHandleDTO); + + BaseResponse batchAlarmHandle(IdsRequest ids); } diff --git a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java index dd836f95..1c8a8d1f 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java @@ -1,5 +1,6 @@ package com.thinglinks.uav.alarms.service.impl; +import com.thinglinks.uav.alarms.dto.AlarmDTO; import com.thinglinks.uav.alarms.dto.AlarmsCount; import com.thinglinks.uav.alarms.dto.AlarmsHandleDTO; import com.thinglinks.uav.alarms.dto.QueryAlarmDTO; @@ -8,8 +9,10 @@ import com.thinglinks.uav.alarms.repository.AlarmsRepository; import com.thinglinks.uav.alarms.service.AlarmsService; import com.thinglinks.uav.common.dto.BasePageResponse; import com.thinglinks.uav.common.dto.BaseResponse; +import com.thinglinks.uav.common.dto.IdsRequest; import com.thinglinks.uav.common.utils.CommonUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; @@ -34,7 +37,7 @@ public class AlarmsServiceImpl implements AlarmsService { * @return */ @Override - public BasePageResponse getPage(QueryAlarmDTO request) { + public BasePageResponse getPage(QueryAlarmDTO request) { PageRequest pageRequest = request.of(); Specification specification = (root, criteriaQuery, criteriaBuilder) -> { ArrayList predicates = new ArrayList<>(); @@ -45,13 +48,18 @@ public class AlarmsServiceImpl implements AlarmsService { predicates.add(criteriaBuilder.equal(root.get("status"), request.getStatus())); } if(Objects.nonNull(request.getStartTime()) && Objects.nonNull(request.getEndTime())){ - predicates.add(criteriaBuilder.between(root.get("createTime"), request.getStartTime(), request.getEndTime())); + predicates.add(criteriaBuilder.between(root.get("ut"), request.getStartTime(), request.getEndTime())); } Predicate[] p = new Predicate[predicates.size()]; return criteriaBuilder.and(predicates.toArray(p)); }; Page page = alarmsRepository.findAll(specification, pageRequest); - List result = page.stream().collect(Collectors.toList()); + List result = page.stream().map(alarm -> { + AlarmDTO alarmDTO = new AlarmDTO(); + BeanUtils.copyProperties(alarm, alarmDTO); + alarmDTO.setUpdateAt(alarm.getUt()); + return alarmDTO; + }).collect(Collectors.toList()); return BasePageResponse.success(page, result); } @@ -76,4 +84,23 @@ public class AlarmsServiceImpl implements AlarmsService { alarmsRepository.save(alarm); return BaseResponse.success(); } + + /** + * @param ids + * @return + */ + @Override + public BaseResponse batchAlarmHandle(IdsRequest ids) { + String uid = CommonUtils.getUid(); + ids.getIds().forEach(id -> { + Alarms alarm = alarmsRepository.findByAlarmid(id); + if(Objects.nonNull(alarm)){ + alarm.setStatus(true); + alarm.setHandleAt(System.currentTimeMillis()); + alarm.setUid(uid); + alarmsRepository.save(alarm); + } + }); + return BaseResponse.success(); + } } diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index d163b8b2..17bb7b78 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -89,12 +89,12 @@ public class AlarmsTask { long now = System.currentTimeMillis(); // 获取预警参数信息 AlarmsParameter parameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCE.name()); - String validity = parameter.getValue() + parameter.getUnit(); + String validity = parameter.getValue() + UnitTypeEnums.getNameByCode(parameter.getUnit()).get(); Long warningTime = calculatedWarningTime(parameter); List activeInsurances = insuranceRepository.findActiveInsurances(now); // 二次预警参数 Long secondWarningTime = calculatedWarningTime(SECOND_INSURANCE_REMINDER_THRESHOLD); - String secondValidity = SECOND_INSURANCE_REMINDER_THRESHOLD.getValue() + SECOND_INSURANCE_REMINDER_THRESHOLD.getUnit(); + String secondValidity = SECOND_INSURANCE_REMINDER_THRESHOLD.getValue() + UnitTypeEnums.getNameByCode(SECOND_INSURANCE_REMINDER_THRESHOLD.getUnit()).get(); if (warningTime != null && secondWarningTime != null) { List expiringDays = activeInsurances.stream() .filter(insurance -> insurance.getInsuranceExpireAt() <= warningTime) @@ -133,8 +133,9 @@ public class AlarmsTask { insuranceWaitConfirmList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(alarmsParameter.getUnit()); - if (daysDifference % alarmsParameter.getValue() == 0) { - String timeOut = daysDifference + alarmsParameter.getUnit(); + if (daysDifference != 0 && daysDifference % alarmsParameter.getValue() == 0) { + + String timeOut = daysDifference + UnitTypeEnums.getNameByCode(alarmsParameter.getUnit()).get(); createInsuranceWaitConfirmAlarm(order, timeOut); } }); @@ -145,8 +146,8 @@ public class AlarmsTask { AlarmsParameter lossAssessmentParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.LOSSASSESSMENT.name()); waitConfirmLossList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(lossAssessmentParameter.getUnit()); - if (daysDifference % lossAssessmentParameter.getValue() == 0) { - String timeOut = daysDifference + lossAssessmentParameter.getUnit(); + if (daysDifference != 0 && daysDifference % lossAssessmentParameter.getValue() == 0) { + String timeOut = daysDifference + UnitTypeEnums.getNameByCode(lossAssessmentParameter.getUnit()).get(); String lossUid = order.getLossUid(); User user = userRepository.findByUid(lossUid); createLossAssessmentAlarm(order, timeOut, user.getUserName()); @@ -159,8 +160,8 @@ public class AlarmsTask { AlarmsParameter fixParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.FIX.name()); maintainingList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(fixParameter.getUnit()); - if (daysDifference % fixParameter.getValue() == 0) { - String timeOut = daysDifference + fixParameter.getUnit(); + if (daysDifference != 0 && daysDifference % fixParameter.getValue() == 0) { + String timeOut = daysDifference + UnitTypeEnums.getNameByCode(fixParameter.getUnit()).get(); String maintainerUid = order.getMaintainerUid(); User user = userRepository.findByUid(maintainerUid); createFixAlarm(order, timeOut, user.getUserName()); @@ -173,8 +174,8 @@ public class AlarmsTask { AlarmsParameter expressAlarmsParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.EXPRESS.name()); waitExpressesList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(expressAlarmsParameter.getUnit()); - if (daysDifference % expressAlarmsParameter.getValue() == 0) { - String timeOut = daysDifference + expressAlarmsParameter.getUnit(); + if (daysDifference != 0 && daysDifference % expressAlarmsParameter.getValue() == 0) { + String timeOut = daysDifference + UnitTypeEnums.getNameByCode(expressAlarmsParameter.getUnit()).get(); String returnSendUid = order.getReturnSendUid(); User user = userRepository.findByUid(returnSendUid); createExpressAlarm(order, timeOut, user.getUserName()); @@ -189,8 +190,8 @@ public class AlarmsTask { AlarmsParameter firstAlarmsParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCEFIRSTWAITINGSUBMIT.name()); firstWaitingSubmit.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(firstAlarmsParameter.getUnit()); - if (daysDifference % firstAlarmsParameter.getValue() == 0) { - String timeOut = daysDifference + firstAlarmsParameter.getUnit(); + if (daysDifference != 0 && daysDifference % firstAlarmsParameter.getValue() == 0) { + String timeOut = daysDifference + UnitTypeEnums.getNameByCode(firstAlarmsParameter.getUnit()).get(); String uid = order.getUid(); User user = userRepository.findByUid(uid); createFirstWaitingSubmitAlarm(order, timeOut, user.getUserName()); @@ -203,8 +204,8 @@ public class AlarmsTask { AlarmsParameter firstRejectParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.FIRSTREJECT.name()); firstRejectList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(firstRejectParameter.getUnit()); - if (daysDifference % firstRejectParameter.getValue() == 0) { - String timeOut = daysDifference + firstRejectParameter.getUnit(); + if (daysDifference != 0 && daysDifference % firstRejectParameter.getValue() == 0) { + String timeOut = daysDifference + UnitTypeEnums.getNameByCode(firstRejectParameter.getUnit()).get(); String uid = order.getUid(); User user = userRepository.findByUid(uid); createFirstRejectAlarm(order, timeOut, user.getUserName()); @@ -218,8 +219,8 @@ public class AlarmsTask { AlarmsParameter lastWaitingSubmitParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCELASTWAITINGSUBMIT.name()); lastWaitingSubmitList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(lastWaitingSubmitParameter.getUnit()); - if (daysDifference % lastWaitingSubmitParameter.getValue() == 0) { - String timeOut = daysDifference + lastWaitingSubmitParameter.getUnit(); + if (daysDifference != 0 && daysDifference % lastWaitingSubmitParameter.getValue() == 0) { + String timeOut = daysDifference + UnitTypeEnums.getNameByCode(lastWaitingSubmitParameter.getUnit()).get(); String uid = order.getUid(); User user = userRepository.findByUid(uid); createLastWaitingSubmitAlarm(order, timeOut, user.getUserName()); @@ -246,12 +247,12 @@ public class AlarmsTask { long now = System.currentTimeMillis(); // 获取首次预警参数信息 AlarmsParameter parameter = alarmsParameterRepository.findByName(AlarmTypeEnums.PROJECT.name()); - String validity = parameter.getValue() + parameter.getUnit(); + String validity = parameter.getValue() + UnitTypeEnums.getNameByCode(parameter.getUnit()).get(); Long warningTime = calculatedWarningTime(parameter); List activeProjects = projectRepository.findActiveProjects(now); // 二次预警参数 Long secondWarningTime = calculatedWarningTime(SECOND_PROJECT_REMINDER_THRESHOLD); - String secondValidity = SECOND_PROJECT_REMINDER_THRESHOLD.getValue() + SECOND_PROJECT_REMINDER_THRESHOLD.getUnit(); + String secondValidity = SECOND_PROJECT_REMINDER_THRESHOLD.getValue() + UnitTypeEnums.getNameByCode(SECOND_PROJECT_REMINDER_THRESHOLD.getUnit()).get(); if (warningTime != null && secondWarningTime != null) { List expiringDays = activeProjects.stream() .filter(project -> project.getEndTime() <= warningTime) @@ -304,11 +305,11 @@ public class AlarmsTask { // 生成保险待确认超时预警信息 private void createInsuranceWaitConfirmAlarm(Order order, String timeOut) { - if (!alarmsRepository.existsByContent(generateInsuranceWaitConfirmWarningInformation(order.getOrdid(), timeOut))) { + if (!alarmsRepository.existsByContent(generateInsuranceWaitConfirmWarningInformation(order.getInnerCode(), timeOut))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateInsuranceWaitConfirmWarningInformation(order.getOrdid(), timeOut)); + alarm.setContent(generateInsuranceWaitConfirmWarningInformation(order.getInnerCode(), timeOut)); alarm.setStatus(false); alarmsRepository.save(alarm); } @@ -316,11 +317,11 @@ public class AlarmsTask { // 生成定损超时预警信息 private void createLossAssessmentAlarm(Order order, String timeOut, String userName) { - if (!alarmsRepository.existsByContent(generateLossAssessmentInformation(order.getOrdid(), timeOut, userName))) { + if (!alarmsRepository.existsByContent(generateLossAssessmentInformation(order.getInnerCode(), timeOut, userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateLossAssessmentInformation(order.getOrdid(), timeOut, userName)); + alarm.setContent(generateLossAssessmentInformation(order.getInnerCode(), timeOut, userName)); alarm.setStatus(false); alarmsRepository.save(alarm); } @@ -328,11 +329,11 @@ public class AlarmsTask { // 生成维修超时预警信息 private void createFixAlarm(Order order, String validity,String name) { - if (!alarmsRepository.existsByContent(generateFixAlarmInformation(order.getOrdid(),validity,name))) { + if (!alarmsRepository.existsByContent(generateFixAlarmInformation(order.getInnerCode(),validity,name))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateFixAlarmInformation(order.getOrdid(),validity,name)); + alarm.setContent(generateFixAlarmInformation(order.getInnerCode(),validity,name)); alarm.setStatus(false); alarmsRepository.save(alarm); } @@ -340,11 +341,11 @@ public class AlarmsTask { // 生成寄件超时预警信息 private void createExpressAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateExpressAlarmInformation(order.getOrdid(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateExpressAlarmInformation(order.getInnerCode(),validity,userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateExpressAlarmInformation(order.getOrdid(),validity,userName)); + alarm.setContent(generateExpressAlarmInformation(order.getInnerCode(),validity,userName)); alarm.setStatus(false); alarmsRepository.save(alarm); } @@ -352,11 +353,11 @@ public class AlarmsTask { // 生成初版资料提交超时预警信息 private void createFirstWaitingSubmitAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateFirstWaitingSubmitInformation(order.getOrdid(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateFirstWaitingSubmitInformation(order.getInnerCode(),validity,userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateFirstWaitingSubmitInformation(order.getOrdid(),validity,userName)); + alarm.setContent(generateFirstWaitingSubmitInformation(order.getInnerCode(),validity,userName)); alarm.setStatus(false); alarmsRepository.save(alarm); } @@ -364,11 +365,11 @@ public class AlarmsTask { // 生成初版驳回修改超时预警信息 private void createFirstRejectAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateFirstRejectAlarmInformation(order.getOrdid(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateFirstRejectAlarmInformation(order.getInnerCode(),validity,userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateFirstRejectAlarmInformation(order.getOrdid(),validity,userName)); + alarm.setContent(generateFirstRejectAlarmInformation(order.getInnerCode(),validity,userName)); alarm.setStatus(false); alarmsRepository.save(alarm); } @@ -376,11 +377,11 @@ public class AlarmsTask { // 生成初版驳回修改超时预警信息 private void createLastWaitingSubmitAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateLastWaitingSubmitInformation(order.getOrdid(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateLastWaitingSubmitInformation(order.getInnerCode(),validity,userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateLastWaitingSubmitInformation(order.getOrdid(),validity,userName)); + alarm.setContent(generateLastWaitingSubmitInformation(order.getInnerCode(),validity,userName)); alarm.setStatus(false); alarmsRepository.save(alarm); } @@ -431,7 +432,7 @@ public class AlarmsTask { return now + minutes * 60 * 1000L; } - private long getUnitTimestamp(String unit) { + private static long getUnitTimestamp(String unit) { try { UnitTypeEnums type = UnitTypeEnums.getUnitTypeEnums(unit); switch (type) { diff --git a/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java b/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java index c752c120..9581491c 100644 --- a/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/workbench/service/impl/WorkbenchServiceImpl.java @@ -151,8 +151,9 @@ public class WorkbenchServiceImpl implements WorkbenchService { personalToDoVO.addAll(testingEngineer()); personalToDoVO.addAll(sender()); } - - return BaseResponse.success(new ArrayList<>(personalToDoVO)); + ArrayList personalToDoVOS = new ArrayList<>(personalToDoVO); + personalToDoVOS.sort(Comparator.comparingInt(PersonalToDoVO::getCount).reversed()); + return BaseResponse.success(personalToDoVOS); } // 收寄人员 -- Gitee From 844f3ccb80d4a2506720407c3ca7209c1bba0b16 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 17:42:35 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E8=AD=A6=E5=91=8A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AlarmsServiceImpl.java | 2 +- .../uav/alarms/task/AlarmsTask.java | 46 +++++++++++++++++++ .../uav/stock/repository/StockRepository.java | 4 ++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java index 1c8a8d1f..f2e229fc 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java @@ -47,7 +47,7 @@ public class AlarmsServiceImpl implements AlarmsService { if (Objects.nonNull(request.getStatus())){ predicates.add(criteriaBuilder.equal(root.get("status"), request.getStatus())); } - if(Objects.nonNull(request.getStartTime()) && Objects.nonNull(request.getEndTime())){ + if(request.getStartTime() > 0 && request.getEndTime() > 0){ predicates.add(criteriaBuilder.between(root.get("ut"), request.getStartTime(), request.getEndTime())); } Predicate[] p = new Predicate[predicates.size()]; diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index 17bb7b78..3e28b56a 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -15,6 +15,8 @@ import com.thinglinks.uav.order.enums.OrderStatusEnums; import com.thinglinks.uav.order.repository.OrderRepository; import com.thinglinks.uav.project.entity.Project; import com.thinglinks.uav.project.repository.ProjectRepository; +import com.thinglinks.uav.stock.entity.Stock; +import com.thinglinks.uav.stock.repository.StockRepository; import com.thinglinks.uav.user.entity.User; import com.thinglinks.uav.user.repository.UserRepository; import lombok.extern.slf4j.Slf4j; @@ -36,6 +38,8 @@ public class AlarmsTask { private static final String SERVICE_TYPE = "3"; + private static final String STOCK_TYPE = "4"; + private static final String PROJECT_TYPE = "5"; // 保险二次预警 30天 @@ -69,6 +73,10 @@ public class AlarmsTask { @Resource private UserRepository userRepository; + @Resource + private StockRepository stockRepository; + + // 保养到期预警 TODO 目前还没保养订单 待确认 @Scheduled(fixedRate = 3600000) public void maintenanceExpirationEarlyWarningTask() { @@ -237,6 +245,28 @@ public class AlarmsTask { } } + // 配件库存预警 + @Scheduled(fixedRate = 60000) + public void partStockEarlyWarningTask() { + try{ + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + List stocksWithLowCount = stockRepository.findStocksWithLowCount(); + if(!stocksWithLowCount.isEmpty()){ + stocksWithLowCount.forEach(stock -> { + createStockEarlyWarningAlarm(stock.getPName(),stock.getCount(),stock.getMinLimit()); + }); + } + + + stopWatch.stop(); + log.info("doPartStockEarlyWarningTask spend: {}ms", stopWatch.getLastTaskTimeMillis()); + }catch (Exception e){ + log.error("配件库存预警任务执行失败: {}", e.getMessage()); + } + } + // 项目到期预警 @Scheduled(fixedRate = 60000) public void projectExpirationEarlyWarningTask() { @@ -387,6 +417,18 @@ public class AlarmsTask { } } + // 生成备件库存预警信息 + private void createStockEarlyWarningAlarm(String pName, Integer count, Integer minLimit){ + if (!alarmsRepository.existsByContent(generateStockEarlyWarningAlarmInformation(pName,count,minLimit))) { + Alarms alarm = new Alarms(); + alarm.setAlarmid(CommonUtils.uuid()); + alarm.setType(STOCK_TYPE); + alarm.setContent(generateStockEarlyWarningAlarmInformation(pName,count,minLimit)); + alarm.setStatus(false); + alarmsRepository.save(alarm); + } + } + private static Long calculatedWarningTime(AlarmsParameter parameter) { if (parameter.getUnit().equals(UnitTypeEnums.MONTH.getCode())) { @@ -490,4 +532,8 @@ public class AlarmsTask { public static String generateLastWaitingSubmitInformation(String oid, String validity, String name) { return "工单 【" + oid + "】 保险终版资料提交超时【" + validity + "】,请联系用户【" + name + "】尽快处理!"; } + + public static String generateStockEarlyWarningAlarmInformation(String pName, Integer count, Integer minLimit) { + return "备件 【" + pName + "】 库存数量【" + count + "】,已经小于下限值【" + minLimit + "】请即时采购!"; + } } diff --git a/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java b/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java index 0b7c1780..4e8ac48b 100644 --- a/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java +++ b/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java @@ -3,6 +3,7 @@ package com.thinglinks.uav.stock.repository; import com.thinglinks.uav.stock.entity.Stock; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; import java.util.List; @@ -19,4 +20,7 @@ public interface StockRepository extends JpaRepository, JpaSpecific boolean existsByPidIn(List pidList); List findByStoreid(String storeId); + + @Query("SELECT s FROM Stock s WHERE s.count < s.minLimit") + List findStocksWithLowCount(); } -- Gitee From 1dbcc02029afe83fb1be76a0f11b46fec460e595 Mon Sep 17 00:00:00 2001 From: iwiFool <1249758797@qq.com> Date: Tue, 30 Jul 2024 21:16:03 +0800 Subject: [PATCH 08/15] =?UTF-8?q?style(insurance):=E7=94=A8=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E7=B1=BB=E5=9E=8B=E6=9B=BF=E6=8D=A2=E9=AD=94=E6=B3=95?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uav/common/enums/InsuranceEnum.java | 21 +++++++++++++++++++ .../service/impl/InsuranceServiceImpl.java | 5 +++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java diff --git a/src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java b/src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java new file mode 100644 index 00000000..f0c54f7d --- /dev/null +++ b/src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java @@ -0,0 +1,21 @@ +package com.thinglinks.uav.common.enums; + +import lombok.Getter; + +/** + * @author iwiFool + * @date 2024/7/30 + */ +@Getter +public enum InsuranceEnum { + + DingHe("8", "鼎和保险"); + + private final String code; + private final String name; + + InsuranceEnum(String code, String name) { + this.code = code; + this.name = name; + } +} diff --git a/src/main/java/com/thinglinks/uav/insurance/service/impl/InsuranceServiceImpl.java b/src/main/java/com/thinglinks/uav/insurance/service/impl/InsuranceServiceImpl.java index 708f0543..1a26867d 100644 --- a/src/main/java/com/thinglinks/uav/insurance/service/impl/InsuranceServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/insurance/service/impl/InsuranceServiceImpl.java @@ -8,6 +8,7 @@ import com.alibaba.excel.util.ListUtils; import com.thinglinks.uav.common.constants.CustomerConstants; import com.thinglinks.uav.common.dto.BasePageResponse; import com.thinglinks.uav.common.dto.BaseResponse; +import com.thinglinks.uav.common.enums.InsuranceEnum; import com.thinglinks.uav.common.utils.*; import com.thinglinks.uav.customer.entity.Customer; import com.thinglinks.uav.customer.repository.CustomersRepository; @@ -76,7 +77,7 @@ public class InsuranceServiceImpl implements InsuranceService { insurance.setIid(iid); insurance.setUid(CommonUtils.getUid()); // 保险类型系统默认只有鼎和保险 - insurance.setInsuranceType("8"); + insurance.setInsuranceType(InsuranceEnum.DingHe.getCode()); insurance.setInsuranceCode(insuranceCode); insuranceRepository.save(insurance); @@ -230,7 +231,7 @@ public class InsuranceServiceImpl implements InsuranceService { } insurance.setUid(CommonUtils.getUid()); - insurance.setInsuranceType("8"); + insurance.setInsuranceType(InsuranceEnum.DingHe.getCode()); iid = insurance.getIid(); insuranceRepository.save(insurance); } -- Gitee From 04141c77e37af262be33b4045f8da7849588db34 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 21:17:40 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thinglinks/uav/alarms/dto/AlarmDTO.java | 5 +++ .../thinglinks/uav/alarms/entity/Alarms.java | 4 ++ .../alarms/repository/AlarmsRepository.java | 2 + .../uav/alarms/task/AlarmsTask.java | 41 ++++++++++++++++++- 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java index 83acad6e..d1d8362c 100644 --- a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java +++ b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java @@ -2,8 +2,13 @@ package com.thinglinks.uav.alarms.dto; import com.thinglinks.uav.alarms.entity.Alarms; import lombok.Data; +import lombok.EqualsAndHashCode; +@EqualsAndHashCode(callSuper = true) @Data public class AlarmDTO extends Alarms { + + + private long updateAt; } diff --git a/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java b/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java index c2761ef9..1e90acc0 100644 --- a/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java +++ b/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java @@ -64,4 +64,8 @@ public class Alarms extends BaseEntity { @Column(name = "ordid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单ID'") @ApiModelProperty(value = "订单ID") private String ordid; + + @Column(name = "iid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单ID'") + @ApiModelProperty(value = "保险id") + private String iid; } diff --git a/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java b/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java index 694ac962..2337fa9f 100644 --- a/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java +++ b/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java @@ -16,4 +16,6 @@ public interface AlarmsRepository extends JpaRepository, JpaSpe @Query("SELECT a.type, COUNT(a) FROM Alarms a WHERE a.status = false GROUP BY a.type") List countAlarmsByTypeWithUntreated(); + + boolean existsByOrdid(String ordid); } diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index 3e28b56a..931cd5aa 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -127,7 +127,7 @@ public class AlarmsTask { } // 服务超时预警 - @Scheduled(fixedRate = 60000) + @Scheduled(fixedRate = 30000) public void serviceExpirationEarlyWarningTask() { try { StopWatch stopWatch = new StopWatch(); @@ -314,6 +314,7 @@ public class AlarmsTask { alarm.setType(INSURANCE_TYPE); alarm.setContent(generateInsuranceEarlyWarningInformation(insurance.getIid(), validityPeriod)); alarm.setStatus(false); + alarm.setIid(insurance.getIid()); alarmsRepository.save(alarm); } }); @@ -340,7 +341,13 @@ public class AlarmsTask { alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); alarm.setContent(generateInsuranceWaitConfirmWarningInformation(order.getInnerCode(), timeOut)); + alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + + // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 + if (alarmsRepository.existsByOrdid(order.getOrdid())){ + orderRepository.deleteByOrdid(order.getOrdid()); + } alarmsRepository.save(alarm); } } @@ -352,7 +359,12 @@ public class AlarmsTask { alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); alarm.setContent(generateLossAssessmentInformation(order.getInnerCode(), timeOut, userName)); + alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 + if (alarmsRepository.existsByOrdid(order.getOrdid())){ + orderRepository.deleteByOrdid(order.getOrdid()); + } alarmsRepository.save(alarm); } } @@ -364,7 +376,12 @@ public class AlarmsTask { alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); alarm.setContent(generateFixAlarmInformation(order.getInnerCode(),validity,name)); + alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 + if (alarmsRepository.existsByOrdid(order.getOrdid())){ + orderRepository.deleteByOrdid(order.getOrdid()); + } alarmsRepository.save(alarm); } } @@ -376,7 +393,12 @@ public class AlarmsTask { alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); alarm.setContent(generateExpressAlarmInformation(order.getInnerCode(),validity,userName)); + alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 + if (alarmsRepository.existsByOrdid(order.getOrdid())){ + orderRepository.deleteByOrdid(order.getOrdid()); + } alarmsRepository.save(alarm); } } @@ -388,7 +410,12 @@ public class AlarmsTask { alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); alarm.setContent(generateFirstWaitingSubmitInformation(order.getInnerCode(),validity,userName)); + alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 + if (alarmsRepository.existsByOrdid(order.getOrdid())){ + orderRepository.deleteByOrdid(order.getOrdid()); + } alarmsRepository.save(alarm); } } @@ -400,19 +427,29 @@ public class AlarmsTask { alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); alarm.setContent(generateFirstRejectAlarmInformation(order.getInnerCode(),validity,userName)); + alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 + if (alarmsRepository.existsByOrdid(order.getOrdid())){ + orderRepository.deleteByOrdid(order.getOrdid()); + } alarmsRepository.save(alarm); } } - // 生成初版驳回修改超时预警信息 + // 生成终版资料提交超时预警信息 private void createLastWaitingSubmitAlarm(Order order, String validity, String userName) { if (!alarmsRepository.existsByContent(generateLastWaitingSubmitInformation(order.getInnerCode(),validity,userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); alarm.setContent(generateLastWaitingSubmitInformation(order.getInnerCode(),validity,userName)); + alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 + if (alarmsRepository.existsByOrdid(order.getOrdid())){ + orderRepository.deleteByOrdid(order.getOrdid()); + } alarmsRepository.save(alarm); } } -- Gitee From d1b0749cba50d60130ac8661dab2dde008e24732 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Tue, 30 Jul 2024 23:45:13 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thinglinks/uav/alarms/dto/AlarmDTO.java | 39 ++++++++++++++++--- .../thinglinks/uav/alarms/entity/Alarms.java | 30 +++++++------- .../uav/alarms/enums/AlarmTypeEnums.java | 20 ++++++++++ .../service/impl/AlarmsServiceImpl.java | 23 ++++++++++- .../uav/alarms/task/AlarmsTask.java | 11 +++++- .../uav/common/enums/InsuranceEnum.java | 8 ++++ 6 files changed, 110 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java index d1d8362c..69c0639f 100644 --- a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java +++ b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java @@ -1,14 +1,43 @@ package com.thinglinks.uav.alarms.dto; -import com.thinglinks.uav.alarms.entity.Alarms; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.EqualsAndHashCode; -@EqualsAndHashCode(callSuper = true) @Data -public class AlarmDTO extends Alarms { +public class AlarmDTO{ + @ApiModelProperty(value = "预警id") + private String alarmid; + @ApiModelProperty(value = "预警类型") + private String alarmType; + @ApiModelProperty(value = "预警标签") + private String tag; - private long updateAt; + @ApiModelProperty(value = "预警详细内用") + private String content; + + @ApiModelProperty(value = "展示预警内容") + private String displayWarningContent; + + @ApiModelProperty(value = "保险类型") + private String insuranceType; + + @ApiModelProperty(value = "保单号") + private String insuranceCode; + + @ApiModelProperty(value = "告警处理结果") + private String result; + + @ApiModelProperty(value = "处理状态") + private Boolean status; + + @ApiModelProperty(value = "预警时间") + private long alarmTime; + + @ApiModelProperty(value = "处理时间") + private long handleAt; + + @ApiModelProperty(value = "处理备注") + private String remark; } diff --git a/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java b/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java index 1e90acc0..70efe8dd 100644 --- a/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java +++ b/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java @@ -17,55 +17,59 @@ import java.util.Date; @Data public class Alarms extends BaseEntity { - @Column(name = "alarmid", unique = true, columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '告警内部ID 唯一'") + @Column(name = "alarmid", unique = true, columnDefinition = "告警内部ID 唯一") private String alarmid; - @Column(name = "type", columnDefinition = "varchar(255) NOT NULL COMMENT '告警类型 1:保险到期 2:保养到期 3:服务超时 4:库存告警'") + @Column(name = "type", columnDefinition = "告警类型 1:保险到期 2:保养到期 3:服务超时 4:库存告警") @ApiModelProperty(value = "告警类型,1:保险到期,2:保养到期,3:服务超时,4:库存告警") private String type; - @Column(name = "content", columnDefinition = "text NOT NULL COMMENT '告警内容'") + @Column(name = "tag", columnDefinition = "列表展示的 预警类型 如保险即将到期、保险已到期 基础保养、常规保养、深度保养 保险待确认超时、定损超时、维修超时、寄件超时、初版保险资料不齐超时预警、终版资料不齐超时预警、预付款工单处理预警'") + @ApiModelProperty(value = "告警内容") + private String tag; + + @Column(name = "content", columnDefinition = "告警内容'") @ApiModelProperty(value = "告警内容") private String content; - @Column(name = "status", columnDefinition = "tinyint(1) DEFAULT '0' COMMENT '处理状态 true:已处理 false:未处理'") + @Column(name = "status", columnDefinition = "'处理状态 true:已处理 false:未处理'") @ApiModelProperty(value = "处理状态,true:已处理,false:未处理") private Boolean status; - @Column(name = "result", columnDefinition = "varchar(255) DEFAULT NULL COMMENT '告警处理结果 1:保养 2:不保养 3:续保 4:不续保'") + @Column(name = "result", columnDefinition = "告警处理结果 1:保养 2:不保养 3:续保 4:不续保") @ApiModelProperty(value = "告警处理结果,1:保养,2:不保养,3:续保,4:不续保") private String result; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @Column(name = "handle_at", columnDefinition = "datetime DEFAULT NULL COMMENT '告警处理时间'") + @Column(name = "handle_at", columnDefinition = "告警处理时间") @ApiModelProperty(value = "告警处理时间") private Long handleAt; - @Column(name = "remark", columnDefinition = "varchar(255) DEFAULT NULL COMMENT '处理备注'") + @Column(name = "remark", columnDefinition = "处理备注") @ApiModelProperty(value = "处理备注") private String remark; - @Column(name = "cpid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '相关公司ID'") + @Column(name = "cpid", columnDefinition = "相关公司ID") @ApiModelProperty(value = "相关公司ID") private String cpid; - @Column(name = "uid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户ID'") + @Column(name = "uid", columnDefinition = "预警处理 用户ID") @ApiModelProperty(value = "用户ID") private String uid; - @Column(name = "devid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '设备ID'") + @Column(name = "devid", columnDefinition = "设备ID") @ApiModelProperty(value = "设备ID") private String devid; - @Column(name = "stcid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '库存ID'") + @Column(name = "stcid", columnDefinition = "库存ID") @ApiModelProperty(value = "库存ID") private String stcid; - @Column(name = "ordid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单ID'") + @Column(name = "ordid", columnDefinition = "订单ID") @ApiModelProperty(value = "订单ID") private String ordid; - @Column(name = "iid", columnDefinition = "char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单ID'") + @Column(name = "iid", columnDefinition = "订单ID") @ApiModelProperty(value = "保险id") private String iid; } diff --git a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java index a6155357..06829e67 100644 --- a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java +++ b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java @@ -1,6 +1,15 @@ package com.thinglinks.uav.alarms.enums; +import lombok.Getter; + public enum AlarmTypeEnums { + // 大预警类容 + INSURANCETYPE("保险到期预警", "1"), + MAINTAINTYPE("保养到期预警", "2"), + SERVICETYPE("服务超时", "3"), + INVENTORYTYPE("保养到期预警", "4"), + PROJECTTYPE("保养到期预警", "5"), + INSURANCE("insurance","保险到期预警"), MAINTENANCE("maintenance", "保养到期预警"), INSURANCECONFIRM("insuranceConfirm", "保险待确认预警"), @@ -14,7 +23,9 @@ public enum AlarmTypeEnums { INVENTORY("inventory", "库存预警"), PROJECT("project", "项目预警"); + @Getter private final String name; + @Getter private final String remark; public static boolean isExist(String name) { @@ -30,4 +41,13 @@ public enum AlarmTypeEnums { this.name = name; this.remark = remark; } + + public static String getNameByRemark(String remark) { + for (AlarmTypeEnums alarmTypeEnums : AlarmTypeEnums.values()) { + if (alarmTypeEnums.remark.equals(remark)) { + return alarmTypeEnums.name; + } + } + return null; + } } diff --git a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java index f2e229fc..b3c79672 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java @@ -5,12 +5,16 @@ import com.thinglinks.uav.alarms.dto.AlarmsCount; import com.thinglinks.uav.alarms.dto.AlarmsHandleDTO; import com.thinglinks.uav.alarms.dto.QueryAlarmDTO; import com.thinglinks.uav.alarms.entity.Alarms; +import com.thinglinks.uav.alarms.enums.AlarmTypeEnums; import com.thinglinks.uav.alarms.repository.AlarmsRepository; import com.thinglinks.uav.alarms.service.AlarmsService; import com.thinglinks.uav.common.dto.BasePageResponse; import com.thinglinks.uav.common.dto.BaseResponse; import com.thinglinks.uav.common.dto.IdsRequest; +import com.thinglinks.uav.common.enums.InsuranceEnum; import com.thinglinks.uav.common.utils.CommonUtils; +import com.thinglinks.uav.insurance.entity.Insurance; +import com.thinglinks.uav.insurance.repository.InsuranceRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Page; @@ -32,6 +36,9 @@ public class AlarmsServiceImpl implements AlarmsService { @Resource private AlarmsRepository alarmsRepository; + @Resource + private InsuranceRepository insuranceRepository; + /** * @param request * @return @@ -56,8 +63,20 @@ public class AlarmsServiceImpl implements AlarmsService { Page page = alarmsRepository.findAll(specification, pageRequest); List result = page.stream().map(alarm -> { AlarmDTO alarmDTO = new AlarmDTO(); - BeanUtils.copyProperties(alarm, alarmDTO); - alarmDTO.setUpdateAt(alarm.getUt()); + alarmDTO.setAlarmid(alarm.getAlarmid()); + alarmDTO.setAlarmType(AlarmTypeEnums.getNameByRemark(alarm.getType())); + alarmDTO.setContent(alarm.getContent()); + alarmDTO.setStatus(alarm.getStatus()); + alarmDTO.setResult(alarm.getResult()); + alarmDTO.setRemark(alarm.getRemark()); + alarmDTO.setTag(alarm.getTag()); + alarmDTO.setHandleAt(alarm.getUt()); + if (Objects.nonNull(alarm.getIid())){ + Insurance insurance = insuranceRepository.findByIid(alarm.getIid()); + alarmDTO.setInsuranceCode(insurance.getInsuranceCode()); + alarmDTO.setInsuranceType(InsuranceEnum.getNameByCode(insurance.getInsuranceType())); + } + return alarmDTO; }).collect(Collectors.toList()); return BasePageResponse.success(page, result); diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index 931cd5aa..92801e5e 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -314,6 +314,7 @@ public class AlarmsTask { alarm.setType(INSURANCE_TYPE); alarm.setContent(generateInsuranceEarlyWarningInformation(insurance.getIid(), validityPeriod)); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.INSURANCE.getRemark()); alarm.setIid(insurance.getIid()); alarmsRepository.save(alarm); } @@ -329,6 +330,7 @@ public class AlarmsTask { alarm.setType(PROJECT_TYPE); alarm.setContent(generateProjectWarningInformation(project.getPjid(), validityPeriod)); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.PROJECT.getRemark()); alarmsRepository.save(alarm); } }); @@ -343,7 +345,7 @@ public class AlarmsTask { alarm.setContent(generateInsuranceWaitConfirmWarningInformation(order.getInnerCode(), timeOut)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); - + alarm.setTag(AlarmTypeEnums.INSURANCECONFIRM.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -361,6 +363,7 @@ public class AlarmsTask { alarm.setContent(generateLossAssessmentInformation(order.getInnerCode(), timeOut, userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.LOSSASSESSMENT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -378,6 +381,7 @@ public class AlarmsTask { alarm.setContent(generateFixAlarmInformation(order.getInnerCode(),validity,name)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.FIX.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -395,6 +399,7 @@ public class AlarmsTask { alarm.setContent(generateExpressAlarmInformation(order.getInnerCode(),validity,userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.EXPRESS.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -412,6 +417,7 @@ public class AlarmsTask { alarm.setContent(generateFirstWaitingSubmitInformation(order.getInnerCode(),validity,userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.INSURANCEFIRSTWAITINGSUBMIT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -429,6 +435,7 @@ public class AlarmsTask { alarm.setContent(generateFirstRejectAlarmInformation(order.getInnerCode(),validity,userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.FIRSTREJECT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -446,6 +453,7 @@ public class AlarmsTask { alarm.setContent(generateLastWaitingSubmitInformation(order.getInnerCode(),validity,userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.INSURANCELASTWAITINGSUBMIT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -461,6 +469,7 @@ public class AlarmsTask { alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(STOCK_TYPE); alarm.setContent(generateStockEarlyWarningAlarmInformation(pName,count,minLimit)); + alarm.setTag(AlarmTypeEnums.INVENTORY.getRemark()); alarm.setStatus(false); alarmsRepository.save(alarm); } diff --git a/src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java b/src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java index f0c54f7d..9056eff5 100644 --- a/src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java +++ b/src/main/java/com/thinglinks/uav/common/enums/InsuranceEnum.java @@ -18,4 +18,12 @@ public enum InsuranceEnum { this.code = code; this.name = name; } + public static String getNameByCode(String code) { + for (InsuranceEnum insuranceEnum : InsuranceEnum.values()){ + if (insuranceEnum.getCode().equals(code)){ + return insuranceEnum.getName(); + } + } + return null; + } } -- Gitee From 03b1186ea3764684cba2e08138e1e1bd09b5daa1 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Wed, 31 Jul 2024 09:36:17 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E8=AD=A6=E5=91=8A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thinglinks/uav/alarms/dto/AlarmDTO.java | 25 +++++++- .../service/impl/AlarmsServiceImpl.java | 60 +++++++++++++++++-- 2 files changed, 78 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java index 69c0639f..cbf8d443 100644 --- a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java +++ b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java @@ -17,8 +17,8 @@ public class AlarmDTO{ @ApiModelProperty(value = "预警详细内用") private String content; - @ApiModelProperty(value = "展示预警内容") - private String displayWarningContent; +// @ApiModelProperty(value = "展示预警内容") +// private String displayWarningContent; @ApiModelProperty(value = "保险类型") private String insuranceType; @@ -40,4 +40,25 @@ public class AlarmDTO{ @ApiModelProperty(value = "处理备注") private String remark; + + @ApiModelProperty(value = "订单id") + private String ordid; + + @ApiModelProperty(value = "客户单位") + private String customer; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "联系方式") + private String phone; + + @ApiModelProperty(value = "产品名称") + private String product; + + @ApiModelProperty(value = "设备sn码") + private String snCode; + + @ApiModelProperty(value = "接单人") + private String receiver; } diff --git a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java index b3c79672..22aed3a4 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java @@ -13,10 +13,20 @@ import com.thinglinks.uav.common.dto.BaseResponse; import com.thinglinks.uav.common.dto.IdsRequest; import com.thinglinks.uav.common.enums.InsuranceEnum; import com.thinglinks.uav.common.utils.CommonUtils; +import com.thinglinks.uav.customer.entity.Customer; +import com.thinglinks.uav.customer.entity.Device; +import com.thinglinks.uav.customer.repository.CustomersRepository; +import com.thinglinks.uav.customer.repository.DeviceRepository; import com.thinglinks.uav.insurance.entity.Insurance; import com.thinglinks.uav.insurance.repository.InsuranceRepository; +import com.thinglinks.uav.order.entity.Order; +import com.thinglinks.uav.order.repository.OrderRepository; +import com.thinglinks.uav.product.entity.Product; +import com.thinglinks.uav.product.repository.ProductRepository; +import com.thinglinks.uav.user.entity.User; +import com.thinglinks.uav.user.repository.UserRepository; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; @@ -39,6 +49,20 @@ public class AlarmsServiceImpl implements AlarmsService { @Resource private InsuranceRepository insuranceRepository; + @Resource + private OrderRepository orderRepository; + @Resource + private UserRepository userRepository; + + @Resource + private CustomersRepository customersRepository; + + @Resource + private DeviceRepository deviceRepository; + + @Resource + private ProductRepository productRepository; + /** * @param request * @return @@ -71,12 +95,16 @@ public class AlarmsServiceImpl implements AlarmsService { alarmDTO.setRemark(alarm.getRemark()); alarmDTO.setTag(alarm.getTag()); alarmDTO.setHandleAt(alarm.getUt()); - if (Objects.nonNull(alarm.getIid())){ - Insurance insurance = insuranceRepository.findByIid(alarm.getIid()); - alarmDTO.setInsuranceCode(insurance.getInsuranceCode()); - alarmDTO.setInsuranceType(InsuranceEnum.getNameByCode(insurance.getInsuranceType())); + if (!StringUtils.isBlank(alarm.getIid())){ + getInsuranceInformation(alarmDTO, alarm); } + if (!StringUtils.isBlank(alarm.getOrdid())){ + getOrderInformation(alarmDTO, alarm); + } + + + return alarmDTO; }).collect(Collectors.toList()); return BasePageResponse.success(page, result); @@ -122,4 +150,26 @@ public class AlarmsServiceImpl implements AlarmsService { }); return BaseResponse.success(); } + + public void getInsuranceInformation(AlarmDTO alarmDTO, Alarms alarm){ + Insurance insurance = insuranceRepository.findByIid(alarm.getIid()); + alarmDTO.setInsuranceCode(insurance.getInsuranceCode()); + alarmDTO.setInsuranceType(InsuranceEnum.getNameByCode(insurance.getInsuranceType())); + } + + public void getOrderInformation(AlarmDTO alarmDTO, Alarms alarm){ + Order order = orderRepository.findByOrdid(alarm.getOrdid()); + User user = userRepository.findByUid(order.getCuid()); + User receiveUser = userRepository.findByUid(order.getReceiveUid()); + alarmDTO.setReceiver(receiveUser.getNickName()); + Customer customer = customersRepository.findByCid(user.getCid()); + alarmDTO.setOrdid(order.getOrdid()); + alarmDTO.setCustomer(customer.getName()); + alarmDTO.setName(user.getNickName()); + alarmDTO.setPhone(user.getMobile()); + Device device = deviceRepository.findByDevid(order.getDevid()); + alarmDTO.setSnCode(device.getCode()); + Product product = productRepository.findByPid(device.getPid()); + alarmDTO.setProduct(product.getName()); + } } -- Gitee From 84398a3e5b3f54c5b5a71ba9e819e8bb63181b5a Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Wed, 31 Jul 2024 10:42:43 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E8=AD=A6=E5=91=8A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alarms/controller/AlarmsController.java | 7 +++++ .../uav/alarms/enums/AlarmTypeEnums.java | 3 +- .../alarms/repository/AlarmsRepository.java | 3 ++ .../uav/alarms/task/AlarmsTask.java | 30 +++++++++++++++++++ .../repository/InsuranceRepository.java | 3 ++ 5 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java b/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java index 14a55bfa..46e24cab 100644 --- a/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java +++ b/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java @@ -8,6 +8,7 @@ import com.thinglinks.uav.common.dto.BasePageResponse; import com.thinglinks.uav.common.dto.BaseResponse; import com.thinglinks.uav.common.dto.IdsRequest; import io.swagger.annotations.Api; +import io.swagger.v3.oas.annotations.Operation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -26,23 +27,27 @@ public class AlarmsController { private AlarmsParameterService alarmsParameterService; @GetMapping + @Operation(summary = "获取预警列表") public BasePageResponse getAlarmsList(@Valid QueryAlarmDTO request) { return alarmsService.getPage(request); } @GetMapping("/statistics") + @Operation(summary = "获取预警数据统计") public BaseResponse> getStatistics() { return alarmsService.getStatistics(); } // 预警处理 @PostMapping("{alarmid}") + @Operation(summary = "预警处理") public BaseResponse alarmHandle(@PathVariable String alarmid,@RequestBody @Valid AlarmsHandleDTO request) { return alarmsService.alarmHandle(alarmid,request); } // 批量预警处理 @PostMapping("/batchAlarmHandle") + @Operation(summary = "批量预警处理") public BaseResponse batchAlarmHandle(@RequestBody @Valid IdsRequest ids) { return alarmsService.batchAlarmHandle(ids); } @@ -50,12 +55,14 @@ public class AlarmsController { // 获取预警参数 @GetMapping("/settings") + @Operation(summary = "获取预警参数") public BaseResponse> getAlarmsParameters() { return alarmsParameterService.getAlarmsParameters(); } // 修改预警参数 @PatchMapping("/settings") + @Operation(summary = "修改预警参数") public BaseResponse editAlarmsParameters(@RequestBody EditAlarmsParameterDTO request) { return alarmsParameterService.editAlarmsParameters(request); } diff --git a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java index 06829e67..78f95d96 100644 --- a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java +++ b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java @@ -10,7 +10,8 @@ public enum AlarmTypeEnums { INVENTORYTYPE("保养到期预警", "4"), PROJECTTYPE("保养到期预警", "5"), - INSURANCE("insurance","保险到期预警"), + INSURANCE("insurance","保险即将到期预警"), + INSURANCEEXPIRED("insuranceExpired","保险已到期预警"), MAINTENANCE("maintenance", "保养到期预警"), INSURANCECONFIRM("insuranceConfirm", "保险待确认预警"), LOSSASSESSMENT("lossAssessment", "定损超时预警"), diff --git a/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java b/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java index 2337fa9f..b8dc9345 100644 --- a/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java +++ b/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java @@ -18,4 +18,7 @@ public interface AlarmsRepository extends JpaRepository, JpaSpe List countAlarmsByTypeWithUntreated(); boolean existsByOrdid(String ordid); + + void deleteByIid(String iid); + void deleteByOrdid(String ordid); } diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index 92801e5e..cdfaa78f 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -119,6 +119,13 @@ public class AlarmsTask { log.warn("Warning time is null, skipping insurance expiration early warning task."); } + // 已过期保险 + List expiredInsurances = insuranceRepository.findExpiredInsurances(now); + if (!expiredInsurances.isEmpty()) { + expiredInsurances.forEach(this::createInsuranceExpiredAlarm); + // todo 过期保险推送系统消息 + } + stopWatch.stop(); log.info("doInsuranceExpirationEarlyWarningTask spend: {}ms", stopWatch.getLastTaskTimeMillis()); } catch (Exception e) { @@ -315,12 +322,30 @@ public class AlarmsTask { alarm.setContent(generateInsuranceEarlyWarningInformation(insurance.getIid(), validityPeriod)); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.INSURANCE.getRemark()); + alarm.setTag(AlarmTypeEnums.INSURANCE.getRemark()); alarm.setIid(insurance.getIid()); + + alarmsRepository.deleteByIid(insurance.getIid()); alarmsRepository.save(alarm); } }); } + // 生成保险过期预警 + private void createInsuranceExpiredAlarm(Insurance insurance) { + if (!alarmsRepository.existsByContent(generateInsuranceExpiredWarningInformation(insurance.getIid()))){ + Alarms alarms = new Alarms(); + alarms.setAlarmid(CommonUtils.uuid()); + alarms.setType(INSURANCE_TYPE); + alarms.setContent(generateInsuranceExpiredWarningInformation(insurance.getIid())); + alarms.setStatus(false); + alarms.setTag(AlarmTypeEnums.INSURANCEEXPIRED.getRemark()); + alarms.setIid(insurance.getIid()); + alarmsRepository.deleteByIid(insurance.getIid()); + alarmsRepository.save(alarms); + } + } + // 生成项目预警信息 private void createProjectAlarm(List projects, String validityPeriod) { projects.forEach(project -> { @@ -346,6 +371,7 @@ public class AlarmsTask { alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.INSURANCECONFIRM.getRemark()); + alarm.setTag(AlarmTypeEnums.INSURANCECONFIRM.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 if (alarmsRepository.existsByOrdid(order.getOrdid())){ orderRepository.deleteByOrdid(order.getOrdid()); @@ -547,6 +573,10 @@ public class AlarmsTask { return "保险 【" + iid + "】 剩余有效期【" + validity + "】"; } + public static String generateInsuranceExpiredWarningInformation(String iid) { + return "保险 【" + iid + "】 已到期"; + } + public static String generateProjectWarningInformation(String pjid, String validity) { return "项目 【" + pjid + "】 距离结束剩余【" + validity + "】"; } diff --git a/src/main/java/com/thinglinks/uav/insurance/repository/InsuranceRepository.java b/src/main/java/com/thinglinks/uav/insurance/repository/InsuranceRepository.java index 72554292..cff7ef5c 100644 --- a/src/main/java/com/thinglinks/uav/insurance/repository/InsuranceRepository.java +++ b/src/main/java/com/thinglinks/uav/insurance/repository/InsuranceRepository.java @@ -29,6 +29,9 @@ public interface InsuranceRepository extends JpaRepository, @Query("SELECT i FROM Insurance i WHERE i.insuranceExpireAt >= :now") List findActiveInsurances(@Param("now") Long now); + + @Query("SELECT i FROM Insurance i WHERE i.insuranceExpireAt < :now") + List findExpiredInsurances(@Param("now") Long now); } -- Gitee From 0d3c57ec5ef396ee6cb34062e9b694aceb161073 Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Wed, 31 Jul 2024 11:59:19 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E8=AD=A6=E5=91=8A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thinglinks/uav/alarms/dto/AlarmDTO.java | 10 +++++++ .../thinglinks/uav/alarms/entity/Alarms.java | 5 +++- .../uav/alarms/enums/AlarmTypeEnums.java | 7 +++-- .../alarms/repository/AlarmsRepository.java | 1 + .../service/impl/AlarmsServiceImpl.java | 30 +++++++++++++++++-- .../uav/alarms/task/AlarmsTask.java | 27 +++++++++++++---- .../uav/stock/repository/StockRepository.java | 2 ++ 7 files changed, 70 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java index cbf8d443..aed3f8fe 100644 --- a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java +++ b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDTO.java @@ -61,4 +61,14 @@ public class AlarmDTO{ @ApiModelProperty(value = "接单人") private String receiver; + + + @ApiModelProperty(value = "配件名称") + private String stockName; + + @ApiModelProperty(value = "配件数量") + private Integer stockNumber; + + @ApiModelProperty(value = "项目名称") + private String projectName; } diff --git a/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java b/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java index 70efe8dd..355116a0 100644 --- a/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java +++ b/src/main/java/com/thinglinks/uav/alarms/entity/Alarms.java @@ -9,7 +9,6 @@ import lombok.EqualsAndHashCode; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; -import java.util.Date; @EqualsAndHashCode(callSuper = true) @Entity @@ -72,4 +71,8 @@ public class Alarms extends BaseEntity { @Column(name = "iid", columnDefinition = "订单ID") @ApiModelProperty(value = "保险id") private String iid; + + @Column(name = "pjid", columnDefinition = "项目ID") + @ApiModelProperty(value = "项目id") + private String pjid; } diff --git a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java index 78f95d96..48671f03 100644 --- a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java +++ b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java @@ -4,11 +4,11 @@ import lombok.Getter; public enum AlarmTypeEnums { // 大预警类容 - INSURANCETYPE("保险到期预警", "1"), + INSURANCETYPE("保险预警", "1"), MAINTAINTYPE("保养到期预警", "2"), SERVICETYPE("服务超时", "3"), - INVENTORYTYPE("保养到期预警", "4"), - PROJECTTYPE("保养到期预警", "5"), + INVENTORYTYPE("库存预警", "4"), + PROJECTTYPE("项目预警", "5"), INSURANCE("insurance","保险即将到期预警"), INSURANCEEXPIRED("insuranceExpired","保险已到期预警"), @@ -22,6 +22,7 @@ public enum AlarmTypeEnums { INSURANCELASTWAITINGSUBMIT("insuranceLastWaitingSubmit", "终版资料提交超时预警"), FEES("fees","预付款工单处理预警"), INVENTORY("inventory", "库存预警"), + INVENTORYCONTENT("inventoryContent", "配件已低于安全库存设置"), PROJECT("project", "项目预警"); @Getter diff --git a/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java b/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java index b8dc9345..6607702d 100644 --- a/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java +++ b/src/main/java/com/thinglinks/uav/alarms/repository/AlarmsRepository.java @@ -21,4 +21,5 @@ public interface AlarmsRepository extends JpaRepository, JpaSpe void deleteByIid(String iid); void deleteByOrdid(String ordid); + void deleteByPjid(String pjid); } diff --git a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java index 22aed3a4..ff57658a 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java @@ -23,10 +23,15 @@ import com.thinglinks.uav.order.entity.Order; import com.thinglinks.uav.order.repository.OrderRepository; import com.thinglinks.uav.product.entity.Product; import com.thinglinks.uav.product.repository.ProductRepository; +import com.thinglinks.uav.project.entity.Project; +import com.thinglinks.uav.project.repository.ProjectRepository; +import com.thinglinks.uav.stock.entity.Stock; +import com.thinglinks.uav.stock.repository.StockRepository; import com.thinglinks.uav.user.entity.User; import com.thinglinks.uav.user.repository.UserRepository; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; @@ -63,6 +68,11 @@ public class AlarmsServiceImpl implements AlarmsService { @Resource private ProductRepository productRepository; + @Resource + private StockRepository stockRepository; + @Autowired + private ProjectRepository projectRepository; + /** * @param request * @return @@ -98,11 +108,15 @@ public class AlarmsServiceImpl implements AlarmsService { if (!StringUtils.isBlank(alarm.getIid())){ getInsuranceInformation(alarmDTO, alarm); } - if (!StringUtils.isBlank(alarm.getOrdid())){ getOrderInformation(alarmDTO, alarm); } - + if (!StringUtils.isBlank(alarm.getStcid())){ + getStockInformation(alarmDTO, alarm); + } + if (!StringUtils.isBlank(alarm.getPjid())){ + getProjectInformation(alarmDTO, alarm); + } return alarmDTO; @@ -172,4 +186,16 @@ public class AlarmsServiceImpl implements AlarmsService { Product product = productRepository.findByPid(device.getPid()); alarmDTO.setProduct(product.getName()); } + + public void getStockInformation(AlarmDTO alarmDTO, Alarms alarm){ + Stock stock = stockRepository.findByStcid(alarm.getStcid()); + Product product = productRepository.findByPid(stock.getPid()); + alarmDTO.setStockName(product.getName()); + alarmDTO.setStockNumber(stock.getCount()); + } + + public void getProjectInformation(AlarmDTO alarmDTO, Alarms alarm){ + Project project = projectRepository.findByPjid(alarm.getPjid()); + alarmDTO.setProjectName(project.getName()); + } } diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index cdfaa78f..c998840e 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -22,6 +22,7 @@ import com.thinglinks.uav.user.repository.UserRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StopWatch; import javax.annotation.Resource; @@ -78,6 +79,7 @@ public class AlarmsTask { // 保养到期预警 TODO 目前还没保养订单 待确认 + @Transactional(rollbackFor = Exception.class) @Scheduled(fixedRate = 3600000) public void maintenanceExpirationEarlyWarningTask() { try { @@ -88,7 +90,8 @@ public class AlarmsTask { } // 保险到期预警 - @Scheduled(fixedRate = 60000) + @Scheduled(fixedRate = 30000) + @Transactional(rollbackFor = Exception.class) public void insuranceExpirationEarlyWarningTask() { try { StopWatch stopWatch = new StopWatch(); @@ -135,6 +138,7 @@ public class AlarmsTask { // 服务超时预警 @Scheduled(fixedRate = 30000) + @Transactional(rollbackFor = Exception.class) public void serviceExpirationEarlyWarningTask() { try { StopWatch stopWatch = new StopWatch(); @@ -253,7 +257,8 @@ public class AlarmsTask { } // 配件库存预警 - @Scheduled(fixedRate = 60000) + @Transactional(rollbackFor = Exception.class) + @Scheduled(fixedRate = 30000) public void partStockEarlyWarningTask() { try{ StopWatch stopWatch = new StopWatch(); @@ -262,7 +267,7 @@ public class AlarmsTask { List stocksWithLowCount = stockRepository.findStocksWithLowCount(); if(!stocksWithLowCount.isEmpty()){ stocksWithLowCount.forEach(stock -> { - createStockEarlyWarningAlarm(stock.getPName(),stock.getCount(),stock.getMinLimit()); + createStockEarlyWarningAlarm(stock.getStcid(),stock.getPName(),stock.getCount(),stock.getMinLimit()); }); } @@ -275,7 +280,8 @@ public class AlarmsTask { } // 项目到期预警 - @Scheduled(fixedRate = 60000) + @Scheduled(fixedRate = 30000) + @Transactional(rollbackFor = Exception.class) public void projectExpirationEarlyWarningTask() { try { StopWatch stopWatch = new StopWatch(); @@ -356,6 +362,10 @@ public class AlarmsTask { alarm.setContent(generateProjectWarningInformation(project.getPjid(), validityPeriod)); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.PROJECT.getRemark()); + alarm.setPjid(project.getPjid()); + + alarmsRepository.deleteByPjid(project.getPjid()); + alarmsRepository.save(alarm); } }); @@ -489,14 +499,19 @@ public class AlarmsTask { } // 生成备件库存预警信息 - private void createStockEarlyWarningAlarm(String pName, Integer count, Integer minLimit){ + private void createStockEarlyWarningAlarm(String stcid, String pName, Integer count, Integer minLimit){ if (!alarmsRepository.existsByContent(generateStockEarlyWarningAlarmInformation(pName,count,minLimit))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(STOCK_TYPE); alarm.setContent(generateStockEarlyWarningAlarmInformation(pName,count,minLimit)); - alarm.setTag(AlarmTypeEnums.INVENTORY.getRemark()); + alarm.setTag(AlarmTypeEnums.INVENTORYCONTENT.getRemark()); alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.INVENTORYCONTENT.getRemark()); + + alarm.setStcid(stcid); + + stockRepository.deleteByStcid(stcid); alarmsRepository.save(alarm); } } diff --git a/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java b/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java index 4e8ac48b..a4e17ee5 100644 --- a/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java +++ b/src/main/java/com/thinglinks/uav/stock/repository/StockRepository.java @@ -23,4 +23,6 @@ public interface StockRepository extends JpaRepository, JpaSpecific @Query("SELECT s FROM Stock s WHERE s.count < s.minLimit") List findStocksWithLowCount(); + + void deleteByStcid(String stcId); } -- Gitee From b549963d6d98cca88529c7a4d7108199504e6cce Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Wed, 31 Jul 2024 16:33:10 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E8=AD=A6=E5=91=8A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alarms/controller/AlarmsController.java | 6 + .../uav/alarms/dto/AlarmDetailDTO.java | 11 ++ .../uav/alarms/dto/QueryAlarmDTO.java | 3 + .../uav/alarms/enums/AlarmTypeEnums.java | 35 ++++-- .../uav/alarms/service/AlarmsService.java | 7 +- .../service/impl/AlarmsServiceImpl.java | 21 +++- .../uav/alarms/task/AlarmsTask.java | 109 ++++++++++++------ .../common/constants/MessageConstants.java | 2 + .../uav/message/service/MessageService.java | 8 ++ .../service/impl/MessageServiceImpl.java | 26 +++++ .../project/repository/ProjectRepository.java | 3 + .../com/thinglinks/uav/RepositoryTest.java | 5 +- 12 files changed, 179 insertions(+), 57 deletions(-) create mode 100644 src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java diff --git a/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java b/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java index 46e24cab..4f08c548 100644 --- a/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java +++ b/src/main/java/com/thinglinks/uav/alarms/controller/AlarmsController.java @@ -32,6 +32,12 @@ public class AlarmsController { return alarmsService.getPage(request); } + @GetMapping("{alarmid}") + @Operation(summary = "获取预警详情") + public BaseResponse getAlarmsDetail(@PathVariable("alarmid") String alarmid) { + return alarmsService.getAlarmsDetail(alarmid); + } + @GetMapping("/statistics") @Operation(summary = "获取预警数据统计") public BaseResponse> getStatistics() { diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java new file mode 100644 index 00000000..0010dcc1 --- /dev/null +++ b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java @@ -0,0 +1,11 @@ +package com.thinglinks.uav.alarms.dto; + +import com.thinglinks.uav.alarms.entity.Alarms; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AlarmDetailDTO extends Alarms { + +} diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java index 12f98b58..ad7b979b 100644 --- a/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java +++ b/src/main/java/com/thinglinks/uav/alarms/dto/QueryAlarmDTO.java @@ -7,6 +7,9 @@ import javax.validation.constraints.NotNull; @Data public class QueryAlarmDTO extends BasePageRequest { + + private String tag; + private long startTime; private long endTime; diff --git a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java index 48671f03..783124a1 100644 --- a/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java +++ b/src/main/java/com/thinglinks/uav/alarms/enums/AlarmTypeEnums.java @@ -3,27 +3,42 @@ package com.thinglinks.uav.alarms.enums; import lombok.Getter; public enum AlarmTypeEnums { - // 大预警类容 + // 预警类型 INSURANCETYPE("保险预警", "1"), MAINTAINTYPE("保养到期预警", "2"), SERVICETYPE("服务超时", "3"), INVENTORYTYPE("库存预警", "4"), PROJECTTYPE("项目预警", "5"), - INSURANCE("insurance","保险即将到期预警"), + // 保险预警 + INSURANCE("insurance","保险预警"), + INSURANCEISABOUTTOEXPIRE("insuranceIsAboutToExpire","保险即将到期预警"), INSURANCEEXPIRED("insuranceExpired","保险已到期预警"), + + // 保养预警 MAINTENANCE("maintenance", "保养到期预警"), - INSURANCECONFIRM("insuranceConfirm", "保险待确认预警"), - LOSSASSESSMENT("lossAssessment", "定损超时预警"), - FIX("fix","维修超时预警"), - EXPRESS("express", "寄件超时预警"), - INSURANCEFIRSTWAITINGSUBMIT("insuranceFirstWaitingSubmit", "初版资料待提交超时预警"), - FIRSTREJECT("firstReject", "初版资料驳回修改超时预警"), - INSURANCELASTWAITINGSUBMIT("insuranceLastWaitingSubmit", "终版资料提交超时预警"), + BASEMAINTENANCE("baseMaintenance", "基础保养"), + ROUTINEMAINTENANCE("routineMaintenance", "常规保养"), + INDEPTHMAINTENANCE("InDepthMaintenance", "深度保养"), + + // 服务预警 + INSURANCECONFIRM("insuranceConfirm", "保险待确认超时"), + LOSSASSESSMENT("lossAssessment", "定损超时"), + FIX("fix","维修超时"), + EXPRESS("express", "寄件超时"), + INSURANCEFIRSTWAITINGSUBMIT("insuranceFirstWaitingSubmit", "初版资料待提交超时"), + FIRSTREJECT("firstReject", "初版资料驳回修改超时"), + INSURANCELASTWAITINGSUBMIT("insuranceLastWaitingSubmit", "终版资料提交超时"), FEES("fees","预付款工单处理预警"), + + // 库存预警 INVENTORY("inventory", "库存预警"), INVENTORYCONTENT("inventoryContent", "配件已低于安全库存设置"), - PROJECT("project", "项目预警"); + + // 项目预警 + PROJECT("project", "项目预警"), + PROJECTISABOUTTOEXPIRE("projectIsAboutToExpire", "合同即将到期"), + PROJECTEXPIRED("projectExpired", "合同已到期"); @Getter private final String name; diff --git a/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java b/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java index 0225090d..fb96e764 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/AlarmsService.java @@ -1,9 +1,6 @@ package com.thinglinks.uav.alarms.service; -import com.thinglinks.uav.alarms.dto.AlarmDTO; -import com.thinglinks.uav.alarms.dto.AlarmsCount; -import com.thinglinks.uav.alarms.dto.AlarmsHandleDTO; -import com.thinglinks.uav.alarms.dto.QueryAlarmDTO; +import com.thinglinks.uav.alarms.dto.*; import com.thinglinks.uav.common.dto.BasePageResponse; import com.thinglinks.uav.common.dto.BaseResponse; import com.thinglinks.uav.common.dto.IdsRequest; @@ -19,4 +16,6 @@ public interface AlarmsService { BaseResponse alarmHandle(String alarmid,AlarmsHandleDTO alarmsHandleDTO); BaseResponse batchAlarmHandle(IdsRequest ids); + + BaseResponse getAlarmsDetail(String alarmid); } diff --git a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java index ff57658a..21a0e009 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java @@ -1,9 +1,6 @@ package com.thinglinks.uav.alarms.service.impl; -import com.thinglinks.uav.alarms.dto.AlarmDTO; -import com.thinglinks.uav.alarms.dto.AlarmsCount; -import com.thinglinks.uav.alarms.dto.AlarmsHandleDTO; -import com.thinglinks.uav.alarms.dto.QueryAlarmDTO; +import com.thinglinks.uav.alarms.dto.*; import com.thinglinks.uav.alarms.entity.Alarms; import com.thinglinks.uav.alarms.enums.AlarmTypeEnums; import com.thinglinks.uav.alarms.repository.AlarmsRepository; @@ -31,6 +28,7 @@ import com.thinglinks.uav.user.entity.User; import com.thinglinks.uav.user.repository.UserRepository; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -91,6 +89,9 @@ public class AlarmsServiceImpl implements AlarmsService { if(request.getStartTime() > 0 && request.getEndTime() > 0){ predicates.add(criteriaBuilder.between(root.get("ut"), request.getStartTime(), request.getEndTime())); } + if(StringUtils.isNotBlank(request.getTag())){ + predicates.add(criteriaBuilder.equal(root.get("tag"), request.getTag())); + } Predicate[] p = new Predicate[predicates.size()]; return criteriaBuilder.and(predicates.toArray(p)); }; @@ -165,6 +166,18 @@ public class AlarmsServiceImpl implements AlarmsService { return BaseResponse.success(); } + /** + * @param alarmid + * @return + */ + @Override + public BaseResponse getAlarmsDetail(String alarmid) { + AlarmDetailDTO alarmDetailDTO = new AlarmDetailDTO(); + Alarms alarm = alarmsRepository.findByAlarmid(alarmid); + BeanUtils.copyProperties(alarm, alarmDetailDTO); + return BaseResponse.success(alarmDetailDTO); + } + public void getInsuranceInformation(AlarmDTO alarmDTO, Alarms alarm){ Insurance insurance = insuranceRepository.findByIid(alarm.getIid()); alarmDTO.setInsuranceCode(insurance.getInsuranceCode()); diff --git a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java index c998840e..0e4cf68f 100644 --- a/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java +++ b/src/main/java/com/thinglinks/uav/alarms/task/AlarmsTask.java @@ -9,6 +9,7 @@ import com.thinglinks.uav.alarms.repository.AlarmsRepository; import com.thinglinks.uav.common.utils.CommonUtils; import com.thinglinks.uav.insurance.entity.Insurance; import com.thinglinks.uav.insurance.repository.InsuranceRepository; +import com.thinglinks.uav.message.service.MessageService; import com.thinglinks.uav.order.entity.Order; import com.thinglinks.uav.order.enums.InsuranceStatusEnums; import com.thinglinks.uav.order.enums.OrderStatusEnums; @@ -77,6 +78,9 @@ public class AlarmsTask { @Resource private StockRepository stockRepository; + @Resource + private MessageService messageService; + // 保养到期预警 TODO 目前还没保养订单 待确认 @Transactional(rollbackFor = Exception.class) @@ -189,7 +193,7 @@ public class AlarmsTask { } // 寄件超时 List waitExpressesList = orderRepository.findByStatus(OrderStatusEnums.ORDER_STATUS_WAITING_CUSTOMER_EXPRESSES.getCode()); - if(!waitExpressesList.isEmpty()){ + if (!waitExpressesList.isEmpty()) { AlarmsParameter expressAlarmsParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.EXPRESS.name()); waitExpressesList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(expressAlarmsParameter.getUnit()); @@ -203,9 +207,9 @@ public class AlarmsTask { } - // 初版保险资料不齐超时预警 驳回修改超时 + // 初版保险资料不齐超时预警 List firstWaitingSubmit = orderRepository.findByReviewInsuranceStatus(InsuranceStatusEnums.INSURANCE_FIRST_WAITING_SUBMIT.getCode()); - if(!firstWaitingSubmit.isEmpty()){ + if (!firstWaitingSubmit.isEmpty()) { AlarmsParameter firstAlarmsParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCEFIRSTWAITINGSUBMIT.name()); firstWaitingSubmit.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(firstAlarmsParameter.getUnit()); @@ -219,7 +223,7 @@ public class AlarmsTask { } // 初版保险资料驳回修改超时 List firstRejectList = orderRepository.findByReviewInsuranceStatus(InsuranceStatusEnums.INSURANCE_FIRST_REJECT.getCode()); - if(!firstWaitingSubmit.isEmpty()){ + if (!firstWaitingSubmit.isEmpty()) { AlarmsParameter firstRejectParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.FIRSTREJECT.name()); firstRejectList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(firstRejectParameter.getUnit()); @@ -234,7 +238,7 @@ public class AlarmsTask { // 终版资料不齐超时预警 List lastWaitingSubmitList = orderRepository.findByReviewInsuranceStatus(InsuranceStatusEnums.INSURANCE_LAST_WAITING_SUBMIT.getCode()); - if(!lastWaitingSubmitList.isEmpty()) { + if (!lastWaitingSubmitList.isEmpty()) { AlarmsParameter lastWaitingSubmitParameter = alarmsParameterRepository.findByName(AlarmTypeEnums.INSURANCELASTWAITINGSUBMIT.name()); lastWaitingSubmitList.forEach(order -> { long daysDifference = (now - order.getUt()) / getUnitTimestamp(lastWaitingSubmitParameter.getUnit()); @@ -260,21 +264,21 @@ public class AlarmsTask { @Transactional(rollbackFor = Exception.class) @Scheduled(fixedRate = 30000) public void partStockEarlyWarningTask() { - try{ + try { StopWatch stopWatch = new StopWatch(); stopWatch.start(); List stocksWithLowCount = stockRepository.findStocksWithLowCount(); - if(!stocksWithLowCount.isEmpty()){ + if (!stocksWithLowCount.isEmpty()) { stocksWithLowCount.forEach(stock -> { - createStockEarlyWarningAlarm(stock.getStcid(),stock.getPName(),stock.getCount(),stock.getMinLimit()); + createStockEarlyWarningAlarm(stock.getStcid(), stock.getPName(), stock.getCount(), stock.getMinLimit()); }); } stopWatch.stop(); log.info("doPartStockEarlyWarningTask spend: {}ms", stopWatch.getLastTaskTimeMillis()); - }catch (Exception e){ + } catch (Exception e) { log.error("配件库存预警任务执行失败: {}", e.getMessage()); } } @@ -311,6 +315,12 @@ public class AlarmsTask { log.warn("Warning time is null, skipping project expiration early warning task."); } + // 已经到期项目 + List expiredProjects = projectRepository.findExpiredProjects(now); + if (!expiredProjects.isEmpty()) { + expiredProjects.forEach(this::createProjectExpiredAlarm); + } + stopWatch.stop(); log.info("doProjectAlarmTask spend: {}ms", stopWatch.getLastTaskTimeMillis()); } catch (Exception e) { @@ -327,8 +337,7 @@ public class AlarmsTask { alarm.setType(INSURANCE_TYPE); alarm.setContent(generateInsuranceEarlyWarningInformation(insurance.getIid(), validityPeriod)); alarm.setStatus(false); - alarm.setTag(AlarmTypeEnums.INSURANCE.getRemark()); - alarm.setTag(AlarmTypeEnums.INSURANCE.getRemark()); + alarm.setTag(AlarmTypeEnums.INSURANCEISABOUTTOEXPIRE.getRemark()); alarm.setIid(insurance.getIid()); alarmsRepository.deleteByIid(insurance.getIid()); @@ -339,7 +348,7 @@ public class AlarmsTask { // 生成保险过期预警 private void createInsuranceExpiredAlarm(Insurance insurance) { - if (!alarmsRepository.existsByContent(generateInsuranceExpiredWarningInformation(insurance.getIid()))){ + if (!alarmsRepository.existsByContent(generateInsuranceExpiredWarningInformation(insurance.getIid()))) { Alarms alarms = new Alarms(); alarms.setAlarmid(CommonUtils.uuid()); alarms.setType(INSURANCE_TYPE); @@ -352,7 +361,7 @@ public class AlarmsTask { } } - // 生成项目预警信息 + // 生成项目即将到期预警信息 private void createProjectAlarm(List projects, String validityPeriod) { projects.forEach(project -> { if (!alarmsRepository.existsByContent(generateProjectWarningInformation(project.getPjid(), validityPeriod))) { @@ -361,7 +370,7 @@ public class AlarmsTask { alarm.setType(PROJECT_TYPE); alarm.setContent(generateProjectWarningInformation(project.getPjid(), validityPeriod)); alarm.setStatus(false); - alarm.setTag(AlarmTypeEnums.PROJECT.getRemark()); + alarm.setTag(AlarmTypeEnums.PROJECTISABOUTTOEXPIRE.getRemark()); alarm.setPjid(project.getPjid()); alarmsRepository.deleteByPjid(project.getPjid()); @@ -371,6 +380,23 @@ public class AlarmsTask { }); } + // 生成项目已到期预警信息 + private void createProjectExpiredAlarm(Project project) { + if (!alarmsRepository.existsByContent(generateProjectExpiredInformation(project.getPjid()))) { + Alarms alarm = new Alarms(); + alarm.setAlarmid(CommonUtils.uuid()); + alarm.setType(PROJECT_TYPE); + alarm.setContent(generateProjectExpiredInformation(project.getPjid())); + alarm.setStatus(false); + alarm.setTag(AlarmTypeEnums.PROJECTEXPIRED.getRemark()); + alarm.setPjid(project.getPjid()); + + alarmsRepository.deleteByPjid(project.getPjid()); + + alarmsRepository.save(alarm); + } + } + // 生成保险待确认超时预警信息 private void createInsuranceWaitConfirmAlarm(Order order, String timeOut) { if (!alarmsRepository.existsByContent(generateInsuranceWaitConfirmWarningInformation(order.getInnerCode(), timeOut))) { @@ -383,7 +409,7 @@ public class AlarmsTask { alarm.setTag(AlarmTypeEnums.INSURANCECONFIRM.getRemark()); alarm.setTag(AlarmTypeEnums.INSURANCECONFIRM.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 - if (alarmsRepository.existsByOrdid(order.getOrdid())){ + if (alarmsRepository.existsByOrdid(order.getOrdid())) { orderRepository.deleteByOrdid(order.getOrdid()); } alarmsRepository.save(alarm); @@ -401,7 +427,7 @@ public class AlarmsTask { alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.LOSSASSESSMENT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 - if (alarmsRepository.existsByOrdid(order.getOrdid())){ + if (alarmsRepository.existsByOrdid(order.getOrdid())) { orderRepository.deleteByOrdid(order.getOrdid()); } alarmsRepository.save(alarm); @@ -409,17 +435,17 @@ public class AlarmsTask { } // 生成维修超时预警信息 - private void createFixAlarm(Order order, String validity,String name) { - if (!alarmsRepository.existsByContent(generateFixAlarmInformation(order.getInnerCode(),validity,name))) { + private void createFixAlarm(Order order, String validity, String name) { + if (!alarmsRepository.existsByContent(generateFixAlarmInformation(order.getInnerCode(), validity, name))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateFixAlarmInformation(order.getInnerCode(),validity,name)); + alarm.setContent(generateFixAlarmInformation(order.getInnerCode(), validity, name)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.FIX.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 - if (alarmsRepository.existsByOrdid(order.getOrdid())){ + if (alarmsRepository.existsByOrdid(order.getOrdid())) { orderRepository.deleteByOrdid(order.getOrdid()); } alarmsRepository.save(alarm); @@ -428,16 +454,16 @@ public class AlarmsTask { // 生成寄件超时预警信息 private void createExpressAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateExpressAlarmInformation(order.getInnerCode(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateExpressAlarmInformation(order.getInnerCode(), validity, userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateExpressAlarmInformation(order.getInnerCode(),validity,userName)); + alarm.setContent(generateExpressAlarmInformation(order.getInnerCode(), validity, userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.EXPRESS.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 - if (alarmsRepository.existsByOrdid(order.getOrdid())){ + if (alarmsRepository.existsByOrdid(order.getOrdid())) { orderRepository.deleteByOrdid(order.getOrdid()); } alarmsRepository.save(alarm); @@ -446,16 +472,16 @@ public class AlarmsTask { // 生成初版资料提交超时预警信息 private void createFirstWaitingSubmitAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateFirstWaitingSubmitInformation(order.getInnerCode(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateFirstWaitingSubmitInformation(order.getInnerCode(), validity, userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateFirstWaitingSubmitInformation(order.getInnerCode(),validity,userName)); + alarm.setContent(generateFirstWaitingSubmitInformation(order.getInnerCode(), validity, userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.INSURANCEFIRSTWAITINGSUBMIT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 - if (alarmsRepository.existsByOrdid(order.getOrdid())){ + if (alarmsRepository.existsByOrdid(order.getOrdid())) { orderRepository.deleteByOrdid(order.getOrdid()); } alarmsRepository.save(alarm); @@ -464,16 +490,16 @@ public class AlarmsTask { // 生成初版驳回修改超时预警信息 private void createFirstRejectAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateFirstRejectAlarmInformation(order.getInnerCode(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateFirstRejectAlarmInformation(order.getInnerCode(), validity, userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateFirstRejectAlarmInformation(order.getInnerCode(),validity,userName)); + alarm.setContent(generateFirstRejectAlarmInformation(order.getInnerCode(), validity, userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.FIRSTREJECT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 - if (alarmsRepository.existsByOrdid(order.getOrdid())){ + if (alarmsRepository.existsByOrdid(order.getOrdid())) { orderRepository.deleteByOrdid(order.getOrdid()); } alarmsRepository.save(alarm); @@ -482,16 +508,16 @@ public class AlarmsTask { // 生成终版资料提交超时预警信息 private void createLastWaitingSubmitAlarm(Order order, String validity, String userName) { - if (!alarmsRepository.existsByContent(generateLastWaitingSubmitInformation(order.getInnerCode(),validity,userName))) { + if (!alarmsRepository.existsByContent(generateLastWaitingSubmitInformation(order.getInnerCode(), validity, userName))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(SERVICE_TYPE); - alarm.setContent(generateLastWaitingSubmitInformation(order.getInnerCode(),validity,userName)); + alarm.setContent(generateLastWaitingSubmitInformation(order.getInnerCode(), validity, userName)); alarm.setOrdid(order.getOrdid()); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.INSURANCELASTWAITINGSUBMIT.getRemark()); // 写入新预警信息之前 删除该工单ID的旧预警信息 保证最大深度的预警信息 - if (alarmsRepository.existsByOrdid(order.getOrdid())){ + if (alarmsRepository.existsByOrdid(order.getOrdid())) { orderRepository.deleteByOrdid(order.getOrdid()); } alarmsRepository.save(alarm); @@ -499,12 +525,12 @@ public class AlarmsTask { } // 生成备件库存预警信息 - private void createStockEarlyWarningAlarm(String stcid, String pName, Integer count, Integer minLimit){ - if (!alarmsRepository.existsByContent(generateStockEarlyWarningAlarmInformation(pName,count,minLimit))) { + private void createStockEarlyWarningAlarm(String stcid, String pName, Integer count, Integer minLimit) { + if (!alarmsRepository.existsByContent(generateStockEarlyWarningAlarmInformation(pName, count, minLimit))) { Alarms alarm = new Alarms(); alarm.setAlarmid(CommonUtils.uuid()); alarm.setType(STOCK_TYPE); - alarm.setContent(generateStockEarlyWarningAlarmInformation(pName,count,minLimit)); + alarm.setContent(generateStockEarlyWarningAlarmInformation(pName, count, minLimit)); alarm.setTag(AlarmTypeEnums.INVENTORYCONTENT.getRemark()); alarm.setStatus(false); alarm.setTag(AlarmTypeEnums.INVENTORYCONTENT.getRemark()); @@ -592,8 +618,17 @@ public class AlarmsTask { return "保险 【" + iid + "】 已到期"; } - public static String generateProjectWarningInformation(String pjid, String validity) { - return "项目 【" + pjid + "】 距离结束剩余【" + validity + "】"; + public String generateProjectWarningInformation(String pjid, String validity) { + validity = "距离合同到期剩余【" + validity + "】"; + Project project = projectRepository.findByPjid(pjid); + if (project != null) { + return messageService.generateProjectAlarmContent(project, validity); + } + return ""; + } + + public static String generateProjectExpiredInformation(String pjid) { + return "项目 【" + pjid + "】 合同已到期"; } public static String generateInsuranceWaitConfirmWarningInformation(String oid, String validity) { diff --git a/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java b/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java index 908f42bb..f05cdfdb 100644 --- a/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java +++ b/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java @@ -26,6 +26,8 @@ public class MessageConstants { */ public static final String PERSONAL_ORDER_URL = "/personal/orderDetail?ordid="; + public static final String PROJECT_URL = "/api/projects/"; + /** * 个人级 */ diff --git a/src/main/java/com/thinglinks/uav/message/service/MessageService.java b/src/main/java/com/thinglinks/uav/message/service/MessageService.java index bf164354..50a87c07 100644 --- a/src/main/java/com/thinglinks/uav/message/service/MessageService.java +++ b/src/main/java/com/thinglinks/uav/message/service/MessageService.java @@ -1,5 +1,6 @@ package com.thinglinks.uav.message.service; +import com.thinglinks.uav.project.entity.Project; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -71,6 +72,13 @@ public interface MessageService { * @param uidList 接收者ID列表 */ void sendOrderMessage(String title, String content, String level, String ordid, List uidList); + + /** + * 生成项目消息内容 + * @param project 项目 + * @return 消息内容 + */ + String generateProjectAlarmContent(Project project,String content); } diff --git a/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java b/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java index 2544dbc5..61375bf0 100644 --- a/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java @@ -9,6 +9,7 @@ import com.thinglinks.uav.message.repository.MessageRepository; import com.thinglinks.uav.message.service.MessageService; import com.thinglinks.uav.order.entity.Order; import com.thinglinks.uav.order.repository.OrderRepository; +import com.thinglinks.uav.project.entity.Project; import com.thinglinks.uav.system.config.CustomConfig; import com.thinglinks.uav.user.entity.User; import com.thinglinks.uav.user.repository.UserRepository; @@ -101,6 +102,20 @@ public class MessageServiceImpl implements MessageService { messageService.sendMessage(title, content, MessageConstants.TYPE_ORDER, level, ordid, uidList); } + /** + * @param project 项目 + * @return + */ + @Override + public String generateProjectAlarmContent(Project project,String content) { + if (project != null) { + String url = buildProjectUrl(project, MessageConstants.PROJECT_URL); + content = "
项目" + "【" + url + "】" + content +"
"; + return content; + } + return ""; + } + /** * 根据级别和接收者ID获取用户ID列表 */ @@ -141,6 +156,17 @@ public class MessageServiceImpl implements MessageService { return String.format("%s", jumpUrl, order.getOrdid(), innerCode); } + /** + * 构造项目详情跳转链接 + */ + private String buildProjectUrl(Project project, String jumpUrl) { + String pjid = project.getPjid(); + jumpUrl = "http://" + customConfig.getUavServiceIp() + jumpUrl; + return String.format("%s", jumpUrl, project.getPjid(), project.getName()); + } + + + } diff --git a/src/main/java/com/thinglinks/uav/project/repository/ProjectRepository.java b/src/main/java/com/thinglinks/uav/project/repository/ProjectRepository.java index 1deb1197..cb143823 100644 --- a/src/main/java/com/thinglinks/uav/project/repository/ProjectRepository.java +++ b/src/main/java/com/thinglinks/uav/project/repository/ProjectRepository.java @@ -32,4 +32,7 @@ public interface ProjectRepository extends JpaRepository , Jpa @Query("SELECT p FROM Project p WHERE p.endTime >= :now") List findActiveProjects(@Param("now") Long now); + + @Query("SELECT p FROM Project p WHERE p.endTime < :now") + List findExpiredProjects(@Param("now") Long now); } diff --git a/src/test/java/com/thinglinks/uav/RepositoryTest.java b/src/test/java/com/thinglinks/uav/RepositoryTest.java index 16fd1e2a..bb78c728 100644 --- a/src/test/java/com/thinglinks/uav/RepositoryTest.java +++ b/src/test/java/com/thinglinks/uav/RepositoryTest.java @@ -2,6 +2,7 @@ package com.thinglinks.uav; import com.thinglinks.uav.address.repository.AddressRepository; import com.thinglinks.uav.alarms.dto.AlarmsCount; +import com.thinglinks.uav.alarms.entity.Alarms; import com.thinglinks.uav.alarms.entity.AlarmsParameter; import com.thinglinks.uav.alarms.repository.AlarmsParameterRepository; import com.thinglinks.uav.alarms.repository.AlarmsRepository; @@ -173,7 +174,7 @@ public class RepositoryTest { @Test public void repositoryTest() { - List ordersWithInsurancePendingConfirmation = orderRepository.findByStatus("0001"); - System.out.println(ordersWithInsurancePendingConfirmation.size()); + Alarms byAlarmid = alarmsRepository.findByAlarmid("15a565400aee4a1dbf4b2d6bc0fd14c5"); + System.out.println(byAlarmid); } } -- Gitee From dbfb647df7a8d7b8cd16f5a03938c24892529a0e Mon Sep 17 00:00:00 2001 From: chy <1685170900@qq.com> Date: Wed, 31 Jul 2024 23:03:36 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uav/alarms/dto/AlarmDetailDTO.java | 39 +++++++++++++++-- .../service/impl/AlarmsServiceImpl.java | 43 +++++++++++++++++-- .../common/constants/MessageConstants.java | 2 +- .../repository/DepartmentsRepository.java | 2 + .../service/impl/MessageServiceImpl.java | 2 +- 5 files changed, 79 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java index 0010dcc1..c64fe49e 100644 --- a/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java +++ b/src/main/java/com/thinglinks/uav/alarms/dto/AlarmDetailDTO.java @@ -1,11 +1,42 @@ package com.thinglinks.uav.alarms.dto; -import com.thinglinks.uav.alarms.entity.Alarms; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.EqualsAndHashCode; -@EqualsAndHashCode(callSuper = true) @Data -public class AlarmDetailDTO extends Alarms { +public class AlarmDetailDTO { + + @ApiModelProperty(value = "预警类型") + private String alarmType; + + @ApiModelProperty(value = "处理状态") + private Boolean status; + + @ApiModelProperty(value = "预警经办人") + private String agent; + + @ApiModelProperty(value = "经办部门") + private String agentDepartment; + + @ApiModelProperty(value = "保险类型") + private String insuranceType; + + @ApiModelProperty(value = "保险到期时间") + private long insuranceExpireAt; + + @ApiModelProperty(value = "预警内容") + private String content; + + @ApiModelProperty(value = "预警处理时间") + private long handleAt; + + @ApiModelProperty(value = "预警处理结果") + private String result; + + @ApiModelProperty(value = "预警处理备注") + private String remark; + + @ApiModelProperty(value = "预警时间") + private long alarmTime; } diff --git a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java index 21a0e009..d10fdadd 100644 --- a/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/alarms/service/impl/AlarmsServiceImpl.java @@ -14,6 +14,8 @@ import com.thinglinks.uav.customer.entity.Customer; import com.thinglinks.uav.customer.entity.Device; import com.thinglinks.uav.customer.repository.CustomersRepository; import com.thinglinks.uav.customer.repository.DeviceRepository; +import com.thinglinks.uav.departments.entity.Department; +import com.thinglinks.uav.departments.repository.DepartmentsRepository; import com.thinglinks.uav.insurance.entity.Insurance; import com.thinglinks.uav.insurance.repository.InsuranceRepository; import com.thinglinks.uav.order.entity.Order; @@ -68,9 +70,13 @@ public class AlarmsServiceImpl implements AlarmsService { @Resource private StockRepository stockRepository; - @Autowired + + @Resource private ProjectRepository projectRepository; + @Resource + private DepartmentsRepository departmentsRepository; + /** * @param request * @return @@ -174,8 +180,39 @@ public class AlarmsServiceImpl implements AlarmsService { public BaseResponse getAlarmsDetail(String alarmid) { AlarmDetailDTO alarmDetailDTO = new AlarmDetailDTO(); Alarms alarm = alarmsRepository.findByAlarmid(alarmid); - BeanUtils.copyProperties(alarm, alarmDetailDTO); - return BaseResponse.success(alarmDetailDTO); + if (Objects.nonNull(alarm)){ + if (StringUtils.isNotBlank(alarm.getUid())){ + alarmDetailDTO.setContent(alarm.getContent()); + alarmDetailDTO.setAlarmTime(alarm.getCt()); + alarmDetailDTO.setStatus(alarm.getStatus()); + alarmDetailDTO.setAlarmType(AlarmTypeEnums.getNameByRemark(alarm.getType())); + if (StringUtils.isNotBlank(alarm.getResult())){ + alarmDetailDTO.setResult(alarm.getResult()); + } + if (Objects.nonNull(alarm.getRemark())){ + alarmDetailDTO.setRemark(alarm.getRemark()); + } + if (Objects.nonNull(alarm.getHandleAt()) && alarm.getHandleAt()>0){ + alarmDetailDTO.setHandleAt(alarm.getHandleAt()); + } + User user = userRepository.findByUid(alarm.getUid()); + if (StringUtils.isNotBlank(user.getDid())){ + Department department = departmentsRepository.findByDid(user.getDid()); + alarmDetailDTO.setAgentDepartment(department.getName()); + } + alarmDetailDTO.setAgent(user.getUserName()); + } + if (alarm.getType().equals(AlarmTypeEnums.INSURANCETYPE.getRemark())){ + Insurance insurance = insuranceRepository.findByIid(alarm.getIid()); + alarmDetailDTO.setInsuranceType(InsuranceEnum.getNameByCode(insurance.getInsuranceType())); + alarmDetailDTO.setInsuranceExpireAt(insurance.getInsuranceExpireAt()); + } + + + return BaseResponse.success(alarmDetailDTO); + + } + return BaseResponse.fail("预警信息不存在"); } public void getInsuranceInformation(AlarmDTO alarmDTO, Alarms alarm){ diff --git a/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java b/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java index f05cdfdb..e6310bce 100644 --- a/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java +++ b/src/main/java/com/thinglinks/uav/common/constants/MessageConstants.java @@ -26,7 +26,7 @@ public class MessageConstants { */ public static final String PERSONAL_ORDER_URL = "/personal/orderDetail?ordid="; - public static final String PROJECT_URL = "/api/projects/"; + public static final String PROJECT_URL = "/projects/"; /** * 个人级 diff --git a/src/main/java/com/thinglinks/uav/departments/repository/DepartmentsRepository.java b/src/main/java/com/thinglinks/uav/departments/repository/DepartmentsRepository.java index 888d0731..6f1ad065 100644 --- a/src/main/java/com/thinglinks/uav/departments/repository/DepartmentsRepository.java +++ b/src/main/java/com/thinglinks/uav/departments/repository/DepartmentsRepository.java @@ -31,4 +31,6 @@ public interface DepartmentsRepository extends JpaRepository ids); Department findByName(String organizationName); + + Department findByDid(String did); } \ No newline at end of file diff --git a/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java b/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java index 61375bf0..b64986e9 100644 --- a/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java +++ b/src/main/java/com/thinglinks/uav/message/service/impl/MessageServiceImpl.java @@ -161,7 +161,7 @@ public class MessageServiceImpl implements MessageService { */ private String buildProjectUrl(Project project, String jumpUrl) { String pjid = project.getPjid(); - jumpUrl = "http://" + customConfig.getUavServiceIp() + jumpUrl; +// jumpUrl = "http://" + customConfig.getUavServiceIp() + jumpUrl; return String.format("%s", jumpUrl, project.getPjid(), project.getName()); } -- Gitee