From 1a2caf9857d6532ddbb37f216f439c7d03d824d9 Mon Sep 17 00:00:00 2001 From: Zangzhipeng Date: Sat, 3 Aug 2024 18:37:49 +0800 Subject: [PATCH] =?UTF-8?q?0803=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/HighDangerController.java | 335 +++++++++++------- .../server_api/mapper/HighDangerMapper.java | 2 +- .../resources/sql-mapper/HighDangerMapper.xml | 163 ++++++--- .../hiatmp/model/common/HighDangerBase.java | 6 + 4 files changed, 324 insertions(+), 182 deletions(-) diff --git a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java index 8b4ac69..c8f035e 100644 --- a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java +++ b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java @@ -27,7 +27,10 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.math.BigDecimal; +import java.time.Duration; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @Slf4j @RestController @@ -129,6 +132,7 @@ public class HighDangerController { @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(defaultValue = "") String search, + @RequestParam(defaultValue = "") String reportDept, HttpServletRequest request ) { log.info("/getHigDangerDealt(查询首页各个状态的数据列表)接口被调用,调用ip: {}, 入参:{},{},{},{}", request.getRemoteAddr(), highDangerBaseVO, pageNum, pageSize, search); @@ -146,7 +150,7 @@ public class HighDangerController { //Page page = new Page<>(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize); // 将要查询的状态和部门id查询数据库,获得隐患排查表 - List statusCounts = highDangerMapper.getHigDangerDealt(highDangerBaseVO.getStatus(), cdepartmentid, search); + List statusCounts = highDangerMapper.getHigDangerDealt(highDangerBaseVO.getStatus(), cdepartmentid, search,reportDept); // 待办 /*if("20".equals(highDangerBaseVO.getStatus())){ @@ -154,131 +158,218 @@ public class HighDangerController { statusCounts.addAll(statusCount); }*/ - for (HighDangerBase base : statusCounts) { - Date nowDate = new Date(); - Date pcEndTime = base.getPcEndTime(); - Date pcStartTime = base.getPcStartTime(); - - if (pcEndTime != null) { - long diff = nowDate.getTime() - pcEndTime.getTime(); - // 时间差,天数 - long diffDays = diff / (24 * 60 * 60 * 1000); - diffDays = Math.abs(diffDays); - - // 小时 - long remainingHours = (diff % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000); - remainingHours = Math.abs(remainingHours); - - // 判断不足一小时 - long diffHours = diff / (60 * 60 * 1000); - diffHours = Math.abs(diffHours); - - int comparison = nowDate.compareTo(pcEndTime); - if (comparison > 0) { // 超期逻辑 - if (diffHours < 1) { - base.setDeadlineStatus("超期不足一小时"); - base.setDeadlineType("1"); - continue; - } - if(diffDays == 0){ - base.setDeadlineStatus("超期" + remainingHours + "小时"); - base.setDeadlineType("1"); - continue; - }else if(remainingHours == 0){ - base.setDeadlineStatus("超期" + diffDays + "天"); - base.setDeadlineType("1"); - continue; - } - base.setDeadline(diffDays); - base.setDeadlineStatus("超期" + diffDays + "天" + remainingHours + "小时"); - base.setDeadlineType("1"); - } else if (comparison < 0 && diffDays <= 3) { // 临期逻辑 - if (diffHours < 1) { - base.setDeadlineStatus("临期不足一小时"); - base.setDeadlineType("2"); - continue; - } - base.setDeadline(diffDays); - if(diffDays == 0){ - base.setDeadlineStatus("临期" + remainingHours + "小时"); - base.setDeadlineType("2"); - continue; - }else if(remainingHours == 0){ - base.setDeadlineStatus("临期" + diffDays + "天"); - base.setDeadlineType("2"); - continue; - } - base.setDeadlineStatus("临期" + diffDays + "天" + remainingHours + "小时"); - base.setDeadlineType("2"); - } else { // 正常 - base.setDeadline(diffDays); - base.setDeadlineStatus("正常"); - base.setDeadlineType("3"); + for (HighDangerBase base : statusCounts) { + if(base.getTimeStatus() == null || base.getTimeStatus().equals("9")){ + base.setDeadlineStatus("正常"); + base.setDeadlineType("3"); + } + // 超期 + if(Objects.equals(base.getTimeStatus(), "1")){ + + double timeDiffSeconds = Double.parseDouble(base.getTimeDiffEnd()); + // 计算天数 + int days = (int) (timeDiffSeconds / (24 * 3600)); +// 计算剩余的秒数 + int remainingSeconds = (int) (timeDiffSeconds % (24 * 3600)); +// 计算小时数 + int hours = remainingSeconds / 3600; + + if(days == 0){ + base.setDeadlineStatus("超期" + hours + "小时"); + }else if(hours == 0){ + base.setDeadlineStatus("超期" + days + "天"); + }else if(days == 0 && hours == 0){ + base.setDeadlineStatus("超期不足一小时"); + }else{ + base.setDeadlineStatus("超期" + days + "天" + hours + "小时"); } - // 排查开始时间判断 - } else if(pcStartTime != null){ - // 无排查结束时间,根据开始时间判断 - long diff = nowDate.getTime() - pcStartTime.getTime(); - - // 时间差,天数 - long diffDays = diff / (24 * 60 * 60 * 1000); - diffDays = Math.abs(diffDays); - - // 小时 - long remainingHours = (diff % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000); - remainingHours = Math.abs(remainingHours); - - // 判断不足一小时 - long diffHours = diff / (60 * 60 * 1000); - diffHours = Math.abs(diffHours); - - int comparison = nowDate.compareTo(pcStartTime); - if (comparison > 0) { // 超期 - if (diffHours < 1) { - base.setDeadlineStatus("超期不足一小时"); - base.setDeadlineType("1"); - continue; - } - if(diffDays == 0){ - base.setDeadlineStatus("超期" + remainingHours + "小时"); - base.setDeadlineType("1"); - continue; - }else if(remainingHours == 0){ - base.setDeadlineStatus("超期" + diffDays + "天"); - base.setDeadlineType("1"); - continue; - } - base.setDeadline(diffDays); - base.setDeadlineStatus("超期" + diffDays + "天" + remainingHours + "小时"); - base.setDeadlineType("1"); - } else if (comparison < 0 && diffDays <= termTime) { // 临期 - if (diffHours < 1) { - base.setDeadlineStatus("临期不足一小时"); - base.setDeadlineType("2"); - continue; - } - base.setDeadline(diffDays); - if (diffDays == 0) { - base.setDeadlineStatus("临期" + remainingHours + "小时"); - base.setDeadlineType("2"); - continue; - } else if (remainingHours == 0) { - base.setDeadlineStatus("临期" + diffDays + "天"); - base.setDeadlineType("2"); - continue; - } - base.setDeadlineStatus("临期" + diffDays + "天" + remainingHours + "小时"); - base.setDeadlineType("2"); + base.setDeadlineType("1"); +// System.out.println("时间差为 " + days + " 天 " + hours + " 小时"); + +// String[] split = base.getTimeDiffEnd().split(" "); +// if(split.length > 1){ +// base.setDeadlineStatus("正常"); +// base.setDeadlineType("3"); +// } + +// +// // 使用正则表达式匹配天数和小时数 +// Pattern pattern = Pattern.compile("(\\d+) days (\\d+):(\\d+):(\\d+\\.\\d+)"); +// Matcher matcher = pattern.matcher(base.getTimeDiffEnd()); +// +// if (matcher.find()) { +// int days = Integer.parseInt(matcher.group(1)); +// int hours = Integer.parseInt(matcher.group(2)); +// int minutes = Integer.parseInt(matcher.group(3)); +// int seconds = Integer.parseInt(matcher.group(4)); +// base.setDeadlineStatus("超期" + days + " 天 " + hours + " 小时"); +// base.setDeadlineType("1"); +// System.out.println("时间差为: " + days + " 天 " + hours + " 小时 " + minutes + " 分钟 " + seconds + " 秒"); +// } else { +// System.out.println("无法匹配时间差格式"); +// } + +// Duration timeDiffEnd = Duration.parse(base.getTimeDiffEnd()); +// // 获取总的秒数 +// long totalSeconds = timeDiffEnd.getSeconds(); +// +// // 计算天数 +// long days = totalSeconds / (24 * 3600); +// // 计算剩余小时数 +// long hours = (totalSeconds % (24 * 3600)) / 3600; +// +// base.setDeadlineStatus("超期" + days + " 天 " + hours + " 小时"); +// +//// System.out.println("时间差为: " + days + " 天 " + hours + " 小时"); +// base.setDeadlineType("1"); +// continue; + } + if(Objects.equals(base.getTimeStatus(), "2")){ + double timeDiffSeconds = Math.abs(Double.parseDouble(base.getTimeDiffStart())); + // 计算天数 + int days = (int) (timeDiffSeconds / (24 * 3600)); +// 计算剩余的秒数 + int remainingSeconds = (int) (timeDiffSeconds % (24 * 3600)); +// 计算小时数 + int hours = remainingSeconds / 3600; + + if(days == 0){ + base.setDeadlineStatus("临期" + hours + "小时"); + }else if(hours == 0){ + base.setDeadlineStatus("临期" + days + "天"); + }else if(days == 0 && hours == 0){ + base.setDeadlineStatus("临期不足一小时"); }else{ - base.setDeadlineStatus("正常"); - base.setDeadlineType("3"); + base.setDeadlineStatus("临期" + days + "天" + hours + "小时"); } -// base.setDeadlineStatus("无排查结束时间"); -// base.setDeadlineType("3"); - }else{ - base.setDeadlineStatus("无排查结束和开始时间"); - base.setDeadlineType("3"); + base.setDeadlineType("2"); } + + +// +// Date pcEndTime = base.getPcEndTime(); +// Date pcStartTime = base.getPcStartTime(); +// +// if (pcEndTime != null) { +// long diff = nowDate.getTime() - pcEndTime.getTime(); +// // 时间差,天数 +// long diffDays = diff / (24 * 60 * 60 * 1000); +// diffDays = Math.abs(diffDays); +// +// // 小时 +// long remainingHours = (diff % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000); +// remainingHours = Math.abs(remainingHours); +// +// // 判断不足一小时 +// long diffHours = diff / (60 * 60 * 1000); +// diffHours = Math.abs(diffHours); +// +// int comparison = nowDate.compareTo(pcEndTime); +// if (comparison > 0) { // 超期逻辑 +// if (diffHours < 1) { +// base.setDeadlineStatus("超期不足一小时"); +// base.setDeadlineType("1"); +// continue; +// } +// if(diffDays == 0){ +// base.setDeadlineStatus("超期" + remainingHours + "小时"); +// base.setDeadlineType("1"); +// continue; +// }else if(remainingHours == 0){ +// base.setDeadlineStatus("超期" + diffDays + "天"); +// base.setDeadlineType("1"); +// continue; +// } +// base.setDeadline(diffDays); +// base.setDeadlineStatus("超期" + diffDays + "天" + remainingHours + "小时"); +// base.setDeadlineType("1"); +// } else if (comparison < 0 && diffDays <= 3) { // 临期逻辑 +// if (diffHours < 1) { +// base.setDeadlineStatus("临期不足一小时"); +// base.setDeadlineType("2"); +// continue; +// } +// base.setDeadline(diffDays); +// if(diffDays == 0){ +// base.setDeadlineStatus("临期" + remainingHours + "小时"); +// base.setDeadlineType("2"); +// continue; +// }else if(remainingHours == 0){ +// base.setDeadlineStatus("临期" + diffDays + "天"); +// base.setDeadlineType("2"); +// continue; +// } +// base.setDeadlineStatus("临期" + diffDays + "天" + remainingHours + "小时"); +// base.setDeadlineType("2"); +// } else { // 正常 +// base.setDeadline(diffDays); +// base.setDeadlineStatus("正常"); +// base.setDeadlineType("3"); +// } +// // 排查开始时间判断 +// } else if(pcStartTime != null){ +// // 无排查结束时间,根据开始时间判断 +// long diff = nowDate.getTime() - pcStartTime.getTime(); +// +// // 时间差,天数 +// long diffDays = diff / (24 * 60 * 60 * 1000); +// diffDays = Math.abs(diffDays); +// +// // 小时 +// long remainingHours = (diff % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000); +// remainingHours = Math.abs(remainingHours); +// +// // 判断不足一小时 +// long diffHours = diff / (60 * 60 * 1000); +// diffHours = Math.abs(diffHours); +// +// int comparison = nowDate.compareTo(pcStartTime); +// if (comparison > 0) { // 超期 +// if (diffHours < 1) { +// base.setDeadlineStatus("超期不足一小时"); +// base.setDeadlineType("1"); +// continue; +// } +// if(diffDays == 0){ +// base.setDeadlineStatus("超期" + remainingHours + "小时"); +// base.setDeadlineType("1"); +// continue; +// }else if(remainingHours == 0){ +// base.setDeadlineStatus("超期" + diffDays + "天"); +// base.setDeadlineType("1"); +// continue; +// } +// base.setDeadline(diffDays); +// base.setDeadlineStatus("超期" + diffDays + "天" + remainingHours + "小时"); +// base.setDeadlineType("1"); +// } else if (comparison < 0 && diffDays <= termTime) { // 临期 +// if (diffHours < 1) { +// base.setDeadlineStatus("临期不足一小时"); +// base.setDeadlineType("2"); +// continue; +// } +// base.setDeadline(diffDays); +// if (diffDays == 0) { +// base.setDeadlineStatus("临期" + remainingHours + "小时"); +// base.setDeadlineType("2"); +// continue; +// } else if (remainingHours == 0) { +// base.setDeadlineStatus("临期" + diffDays + "天"); +// base.setDeadlineType("2"); +// continue; +// } +// base.setDeadlineStatus("临期" + diffDays + "天" + remainingHours + "小时"); +// base.setDeadlineType("2"); +// }else{ +// base.setDeadlineStatus("正常"); +// base.setDeadlineType("3"); +// } +//// base.setDeadlineStatus("无排查结束时间"); +//// base.setDeadlineType("3"); +// }else{ +// base.setDeadlineStatus("无排查结束和开始时间"); +// base.setDeadlineType("3"); +// } } PageInfo pageInfo = new PageInfo<>(statusCounts); diff --git a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/mapper/HighDangerMapper.java b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/mapper/HighDangerMapper.java index ed75eae..f804fc0 100644 --- a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/mapper/HighDangerMapper.java +++ b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/mapper/HighDangerMapper.java @@ -21,7 +21,7 @@ public interface HighDangerMapper{ List getStatusCounts(String cdepartmentid); // - List getHigDangerDealt(String status, String cdepartmentid, String search); + List getHigDangerDealt(String status, String cdepartmentid, String search,String reportDept); List getHigDangerDying(String status, String cdepartmentid); diff --git a/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml b/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml index 83b6801..8b5c8dd 100644 --- a/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml +++ b/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml @@ -22,25 +22,22 @@ delay_count, delay_day, pc_count) - values - ( - #{nid}, - #{businessId}, - #{name}, - #{type}, - #{operator}, - #{source}, - #{findWay}, - #{area}, - #{status}, - #{findTime}, - #{pcStartTime}, - #{reportDept}, - #{handleDept}, - #{delayCount}, - #{delayDay}, - #{pcCount} - ) + values (#{nid}, + #{businessId}, + #{name}, + #{type}, + #{operator}, + #{source}, + #{findWay}, + #{area}, + #{status}, + #{findTime}, + #{pcStartTime}, + #{reportDept}, + #{handleDept}, + #{delayCount}, + #{delayDay}, + #{pcCount}) @@ -49,13 +46,10 @@ business_id, section_code, pc_count) - values - ( - #{nid}, + values (#{nid}, #{businessId}, #{sectionCode}, - #{pcCount} - ) + #{pcCount}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -544,10 +585,14 @@ \ No newline at end of file diff --git a/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/HighDangerBase.java b/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/HighDangerBase.java index f726647..6b53aac 100644 --- a/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/HighDangerBase.java +++ b/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/HighDangerBase.java @@ -200,4 +200,10 @@ public class HighDangerBase implements Serializable { // 道路名称 private String sectionName; + private String timeStatus; + + private String timeDiffEnd; + + private String timeDiffStart; + }