Consumer.java
28.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
//package com.trash.casefile.kafka;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.trash.casefile.domain.KafkaCompensation;
//import com.trash.casefile.domain.ViolationWarningInformation;
//import com.trash.casefile.mapper.KafkaCompensationMapper;
//import com.trash.casefile.mapper.ViolationWarningInformationMapper;
//import com.trash.casefile.service.IViolationWarningInformationService;
//import com.trash.common.config.trashConfig;
//import com.trash.common.core.redis.RedisCache;
//import com.trash.common.utils.DateUtils;
//import com.trash.common.utils.RemoteServerUtils;
//import com.trash.common.utils.StringUtils;
//import com.trash.common.utils.spring.SpringUtils;
//import com.trash.framework.web.service.SysLoginService;
//import org.apache.commons.lang3.time.DateFormatUtils;
//import org.apache.kafka.clients.consumer.ConsumerRecord;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.kafka.annotation.KafkaListener;
//import org.springframework.kafka.support.Acknowledgment;
//import org.springframework.kafka.support.KafkaHeaders;
//import org.springframework.messaging.handler.annotation.Header;
//import org.springframework.messaging.handler.annotation.Payload;
//import org.springframework.stereotype.Component;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.io.IOException;
//import java.time.LocalTime;
//import java.time.format.DateTimeFormatter;
//import java.util.*;
//import java.util.concurrent.TimeUnit;
//
//@Component
//public class Consumer {
// private static final Logger log = LoggerFactory.getLogger(Consumer.class);
//
// @Autowired
// private IViolationWarningInformationService violationWarningInformationService;
//
// @KafkaListener(topics = "record_process_alarm")
// public void consume(ConsumerRecord<?, ?> record, Acknowledgment ack) throws InterruptedException, IOException {
// log.info("kafka消费数据成功,offset:"+ record.offset() +",data:" + record.value());
// String id = insertKafkaCompensation(record.value().toString());
// autoViolationWarning(record.value().toString(),id);
// //手动提交offset
// ack.acknowledge();
// }
//
// @Autowired
// trashConfig trashConfig;
//
// @Autowired
// SysLoginService loginService;
//
// @Autowired
// RedisCache redisCache;
//
// public void autoViolationWarning(String data,String id) throws InterruptedException, IOException {
//
// String[] code = {"44030020=工地预警-未报开工作业", "44030021=工地预警-视频设备离线超时报警", "44030022=工地预警-三无车辆进入工地", "44030023=工地预警-未按时间作业",
// "44030024=处理场所预警-未报开工作业", "44030025=处理场所预警-视频设备离线超时报警", "44030026=处理场所预警-三无车辆进入处理场所", "44030027=处理场所预警-未到指定的处理场所作业",
// "44030028=离线运输报警(工)", "44030029=离线运输报警(消)", "44030030=未激活车辆作业", "44030031=未核准作业车辆作业", "44030032=未按线路行驶",
// "44030033=闯禁行驶", "44030034=失信车辆作业", "44030035=卫星定位异常"};
//
//
// JSONObject jsonObject = JSONObject.parseObject(data);
// //报警时间
// Date alarmTime = new Date(jsonObject.getLong("alarmTime")*1000L);
//
// //这一块是一天内同一工地,同一类型的报警,只报有一条数据,不重复报工,只累加
// String nowHour = DateFormatUtils.format(alarmTime, "HH");
// String nowDate = null;
// String tomorrowDate = null;
// if(Integer.valueOf(nowHour)<8){
// nowDate = DateFormatUtils.format(DateUtils.addDays(alarmTime, -1), "yyyy-MM-dd");
// tomorrowDate = DateFormatUtils.format(alarmTime, "yyyy-MM-dd");
// }else{
// nowDate = DateFormatUtils.format(alarmTime, "yyyy-MM-dd");
// tomorrowDate = DateFormatUtils.format(DateUtils.addDays(alarmTime, 1), "yyyy-MM-dd");
// }
//
//
//
//
// //违规类型code
// String violationTypeCode = jsonObject.getString("alarmType");
// //违规类型
// String violationType = jsonObject.getString("alarmName");
// if(RemoteServerUtils.remote==null){
// //登录
// RemoteServerUtils.remote = trashConfig.getRemotePath();
// loginService.loginByRemote(trashConfig.getToken());
// }
// ViolationWarningInformation violationWarningInformation1 = null;
// JSONArray company1 = null;
// JSONObject basevehicleInfo = null;
// //这些类型无需累加
// if(violationTypeCode.equals("44030021") || violationTypeCode.equals("44030025")||violationTypeCode.equals("44030023")){
// violationWarningInformation1 = null;
// }else if(violationTypeCode.equals("44030033")||violationTypeCode.equals("44030034")){//这两种类型根据公司累加
// company1 = redisCache.getCacheObject("companyList");
// basevehicleInfo = RemoteServerUtils.getBasevehicleInfo(jsonObject.getString("vehicleId"),trashConfig.getToken());
// if(company1==null){
// throw new RuntimeException("获取公司列表失败!!!");
// }
//
// if(basevehicleInfo==null){
// throw new RuntimeException("获取公司详情失败!vehicleId:"+jsonObject.getString("vehicleId"));
// }
// }else{//其他都是根据工地/消纳站累加
// String project = jsonObject.getString("siteName");
// violationWarningInformation1 = SpringUtils.getBean(ViolationWarningInformationMapper.class).selectViolationWarningInformation(null,project, violationType, nowDate, tomorrowDate);
// }
// String siteName = jsonObject.getString("siteName");
// //判断该类型,该工地,该时间段是否已经存在报警信息,如果存在则不再新增,如果不存在则新增
// if (violationWarningInformation1 == null) {
// ViolationWarningInformation violationWarningInformation = new ViolationWarningInformation();
// String siteType = jsonObject.getString("siteType");
// if ("2".equals(siteType)) {//消纳场
// violationWarningInformation.setViolationObjectType("1");
// }
// //所属区域
// violationWarningInformation.setOwningRegion(jsonObject.getString("areaName"));
// //案卷编码
// String number = DateFormatUtils.format(alarmTime, "yyyyMMddHHmmssSSS");
// violationWarningInformation.setNumber(number.substring(2));
// //公司名称
// violationWarningInformation.setCompanyName(jsonObject.getString("enterpriseName"));
// //违规类型
// violationWarningInformation.setViolationType(jsonObject.getString("alarmName"));
// //发送人
// violationWarningInformation.setCreateBy("长沙市建筑垃圾智慧监管平台");
// //推送对象
// violationWarningInformation.setViolationGrade("一般类");
// //项目名称(工地名称,处理场所名称)
//
// violationWarningInformation.setSendObject("区管理部门");
// String describe = "";
// String alarmTimeString = DateFormatUtils.format(alarmTime,"HH:mm");
// //根据不同违规类型,走不同流程
// switch (violationTypeCode) {
// case "44030020"://工地预警-未报开工作业
// //获取报警次数
// int count44030020 = redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030020")==null?1:Integer.parseInt(redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030020").toString())+1;
// //获取累计报警描述
// String describe44030020 = redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030020describe")==null?"":redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030020describe").toString();
// if(!StringUtils.isEmpty(describe44030020)){
// describe44030020 = describe44030020 + ";\n" + DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }else{
// describe44030020 = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }
// //报警次数等于5推送案卷
// if(count44030020==5){
// violationWarningInformation.setViolationObjectType("0");
// violationWarningInformation.setSendObject("区管理部门");
// violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe44030020);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// }
// //次数+1
// redisCache.setCacheObject(nowDate+jsonObject.getString("siteId")+"44030020",count44030020,24, TimeUnit.HOURS);
// //累计描述
// redisCache.setCacheObject(nowDate+jsonObject.getString("siteId")+"44030020describe",describe44030020,24, TimeUnit.HOURS);
// break;
// case "44030023"://工地预警-未按时间作业
// try{
// //获取工地信息
// JSONObject object = RemoteServerUtils.getConstructionLicenseById(jsonObject.getString("siteId"), trashConfig.getToken());
// String transportEndTime = object.getString("transportEndTime");
// String transportStartTime = object.getString("transportStartTime");
// String endTime = manipulateTime(transportEndTime,30);
// String startTime = manipulateTime(transportStartTime,-30);
// //获取结束运输报警次数
// String countKey = nowDate+jsonObject.getString("siteId")+"44030023"+transportEndTime;
// int count44030023 = redisCache.getCacheObject(countKey)==null?1:Integer.parseInt(redisCache.getCacheObject(countKey).toString())+1;
// //获取结束运输累计报警描述
// String describeKey = nowDate+jsonObject.getString("siteId")+"44030023describe"+transportEndTime;
// String describe44030023 = redisCache.getCacheObject(describeKey)==null?"":redisCache.getCacheObject(describeKey).toString();
// //获取结束运输报警次数
// String countEKey = nowDate+jsonObject.getString("siteId")+"44030023"+transportStartTime;
// int countE = redisCache.getCacheObject(countEKey)==null?1:Integer.parseInt(redisCache.getCacheObject(countEKey).toString())+1;
// //获取结束运输累计报警描述
// String describeEKey = nowDate+jsonObject.getString("siteId")+"44030023describe"+transportStartTime;
// String describeE = redisCache.getCacheObject(describeEKey)==null?"":redisCache.getCacheObject(describeEKey).toString();
//
// if(!StringUtils.isEmpty(describe44030023)){
// describe44030023 = describe44030023 + ";\n" + DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }else{
// describe44030023 = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }
// //报警次数等于5推送案卷
// if(count44030023==5){
// violationWarningInformation.setViolationObjectType("0");
// violationWarningInformation.setSendObject("区管理部门");
// violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
//
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe44030023);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// }
//
// if(!StringUtils.isEmpty(describeE)){
// describeE = describeE + ";\n" + DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }else{
// describeE = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }
// //报警次数等于5推送案卷
// if(countE==5){
// violationWarningInformation.setViolationObjectType("0");
// violationWarningInformation.setSendObject("区管理部门");
// violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
//
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describeE);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// }
//
//
// //判断结束运输
// if(isTimeWithinRange(alarmTimeString,transportEndTime,endTime)){
// //次数+1
// redisCache.setCacheObject(countKey,count44030023,12, TimeUnit.HOURS);
// //累计描述
// redisCache.setCacheObject(describeKey,describe44030023,12, TimeUnit.HOURS);
// }else if(isTimeWithinRange(alarmTimeString,startTime,transportStartTime)){
// //次数+1
// redisCache.setCacheObject(countEKey,countE,12, TimeUnit.HOURS);
// //累计描述
// redisCache.setCacheObject(describeEKey,describeE,12, TimeUnit.HOURS);
// }
// }catch (NullPointerException e){
// throw e;
// }
// break;
//
// case "44030030"://未激活车辆作业
// case "44030031"://未核准作业车辆作业
// case "44030022"://工地预警-三无车辆进入工地
// case "44030021"://工地预警-视频设备离线超时报警
// case "44030028"://离线运输报警(工)
//
// violationWarningInformation.setViolationObjectType("0");
// violationWarningInformation.setSendObject("区管理部门");
// violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
// describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// break;
//
// case "44030024"://处理场所预警-未报开工作业
// //获取报警次数
// int count44030024 = redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030024")==null?1:Integer.parseInt(redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030024").toString())+1;
// //获取累计报警描述
// String describe44030024 = redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030024describe")==null?"":redisCache.getCacheObject(nowDate+jsonObject.getString("siteId")+"44030024describe").toString();
// if(!StringUtils.isEmpty(describe44030024)){
// describe44030024 = describe44030024 + ";\n" + DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }else{
// describe44030024 = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// }
// //报警次数等于5推送案卷
// if(count44030024==5){
// violationWarningInformation.setViolationObjectType("1");
// violationWarningInformation.setSendObject("区管理部门");
// violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
//
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe44030024);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// }
//
//
// //次数+1
// redisCache.setCacheObject(nowDate+jsonObject.getString("siteId")+"44030024",count44030024,24, TimeUnit.HOURS);
// //累计描述
// redisCache.setCacheObject(nowDate+jsonObject.getString("siteId")+"44030024describe",describe44030024,24, TimeUnit.HOURS);
// break;
// case "44030027"://处理场所预警-未到指定的处理场所作业
// case "44030026"://处理场所预警-三无车辆进入处理场所
// case "44030029"://离线运输报警(消)
// case "44030025"://处理场所预警-视频设备离线超时报警
// violationWarningInformation.setViolationObjectType("1");
// violationWarningInformation.setSendObject("区管理部门");
// violationWarningInformation.setProjectName(jsonObject.getString("siteName"));
// describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// break;
// case "44030032"://未按线路行驶
// violationWarningInformation.setViolationObjectType("0");
// violationWarningInformation.setViolationGrade("重点类");
// violationWarningInformation.setSendObject("区管理部门");
// describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + violationWarningInformation.getViolationType();
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// break;
// case "44030033"://闯禁行驶
// violationWarningInformation.setViolationObjectType("0");
// violationWarningInformation.setSendObject("区管理部门");
// describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "出现" + violationWarningInformation.getViolationType();
// //设置公司简称
// for(Object o:company1){
// JSONObject jo = (JSONObject) o;
// if(basevehicleInfo.getString("companyID").equals(jo.getString("id"))){
// violationWarningInformation.setAbbreviation(jo.getString("abbreviation"));
// }
// }
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// break;
//
// case "44030034"://失信车辆作业
// violationWarningInformation.setViolationObjectType("2");
// violationWarningInformation.setSendObject("运输企业");
// describe = DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + violationWarningInformation.getCompanyName() + " " + jsonObject.get("licenseplateNo") + "出现" + violationWarningInformation.getViolationType();
// //设置公司简称
// for(Object o:company1){
// JSONObject jo = (JSONObject) o;
// if(basevehicleInfo.getString("companyID").equals(jo.getString("id"))){
// violationWarningInformation.setAbbreviation(jo.getString("abbreviation"));
// }
// }
// violationWarningInformation.setCreateTime(alarmTime);
// violationWarningInformation.setDescribe(describe);
// // 业务逻辑
// violationWarningInformationService.insertViolationWarningInformation(null, violationWarningInformation);
// break;
// }
//
//
//
//
// } else {
// String describe = "";
// if(violationTypeCode.equals("44030033")||violationTypeCode.equals("44030034")){
// describe = violationWarningInformation1.getDescribe() + ";\n" + DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + jsonObject.getString("enterpriseName") + " " + jsonObject.get("licenseplateNo") + "出现" + jsonObject.getString("alarmName");
// }else{
// describe = violationWarningInformation1.getDescribe() + ";\n" + DateFormatUtils.format(alarmTime, "yyyy/MM/dd HH:mm:ss") + " "
// + jsonObject.getString("enterpriseName") + " " + jsonObject.get("licenseplateNo") + "在" +
// jsonObject.get("siteName") + "出现" + jsonObject.getString("alarmName");
// }
//
// violationWarningInformation1.setDescribe(describe);
// SpringUtils.getBean(ViolationWarningInformationMapper.class).updateViolationWarningInformation(violationWarningInformation1);
// }
// //kafka消费成功
// KafkaCompensation kafkaCompensation = new KafkaCompensation();
// kafkaCompensation.setId(Long.valueOf(id));
// kafkaCompensation.setStatus(1);
// SpringUtils.getBean(KafkaCompensationMapper.class).updateKafkaCompensation(kafkaCompensation);
//
// }
//
// public String insertKafkaCompensation(String data){
// KafkaCompensation kafkaCompensation = new KafkaCompensation();
// kafkaCompensation.setData(data);
// kafkaCompensation.setCreateTime(DateUtils.getNowDate());
// kafkaCompensation.setStatus(0);
// SpringUtils.getBean(KafkaCompensationMapper.class).insertKafkaCompensation(kafkaCompensation);
// return kafkaCompensation.getId().toString();
// }
//
// /**
// * 对HH:mm格式时间进行分钟的加减
// * @param timeStr
// * @param minutesToAddOrSubtract
// * @return
// */
// public String manipulateTime(String timeStr, int minutesToAddOrSubtract) {
// // 定义输入时间格式的日期时间格式器
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
//
// // 解析输入的时间字符串为 LocalTime 对象
// LocalTime time = LocalTime.parse(timeStr, formatter);
//
// // 执行加减分钟的操作
// LocalTime modifiedTime = time.plusMinutes(minutesToAddOrSubtract);
//
// // 将修改后的时间格式化为 HH:mm 格式
// String formattedModifiedTime = modifiedTime.format(formatter);
//
// return formattedModifiedTime;
// }
//
// /**
// * 判断timeStr是否在startTimeStr-endTimeStr区间
// * @param timeStr
// * @param startTimeStr
// * @param endTimeStr
// * @return
// */
// public boolean isTimeWithinRange(String timeStr, String startTimeStr, String endTimeStr) {
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
// LocalTime time = LocalTime.parse(timeStr, formatter);
// LocalTime startTime = LocalTime.parse(startTimeStr, formatter);
// LocalTime endTime = LocalTime.parse(endTimeStr, formatter);
//
// return !time.isBefore(startTime) && !time.isAfter(endTime);
//
// }
//}