diff --git a/src/main/java/com/biutag/supervision/constants/enums/MailTrendSourcesEnum.java b/src/main/java/com/biutag/supervision/constants/enums/MailTrendSourcesEnum.java new file mode 100644 index 0000000..3718bbf --- /dev/null +++ b/src/main/java/com/biutag/supervision/constants/enums/MailTrendSourcesEnum.java @@ -0,0 +1,25 @@ +package com.biutag.supervision.constants.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum MailTrendSourcesEnum { + ONE(1, 21), + TWO(2, 22), + THREE(3, 23), + FOUR(4, 24); + + private final int code; // 前端传来的code + private final int mappedCode; // 后端需要用到的code + + public static int getMappedCodeByCode(int code) { + for (MailTrendSourcesEnum value : MailTrendSourcesEnum.values()) { + if (value.code == code) { + return value.getMappedCode(); + } + } + throw new IllegalArgumentException("Invalid sourcesCode: " + code); + } +} diff --git a/src/main/java/com/biutag/supervision/controller/datav/DataPetitionComplaintViewController.java b/src/main/java/com/biutag/supervision/controller/datav/DataPetitionComplaintViewController.java index ff0bbdf..d2769f0 100644 --- a/src/main/java/com/biutag/supervision/controller/datav/DataPetitionComplaintViewController.java +++ b/src/main/java/com/biutag/supervision/controller/datav/DataPetitionComplaintViewController.java @@ -11,15 +11,17 @@ import com.biutag.supervision.mapper.DataPetitionComplaintMapper; import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.dto.CaseVerifDepart; import com.biutag.supervision.pojo.entity.DataPetitionComplaint; +import com.biutag.supervision.pojo.vo.RecentMailTrendVo; import com.biutag.supervision.service.DataPetitionComplaintService; import lombok.RequiredArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -75,5 +77,42 @@ public class DataPetitionComplaintViewController { return Result.success(data); } + /** + * 信访数据大屏信访趋势统计 + */ + @GetMapping("/getRecentlyMailTrend") + public Result getRecentlyMailTrend(@RequestParam Integer sourcesCode, + @RequestParam Integer days, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime + ) { + JSONObject jsonObject = new JSONObject(); + // 库中的数据 2024/10/24 22 + List recentMailTrendVoList = dataPetitionComplaintService.getRecentlyMailTrend(sourcesCode, days, endTime); + ArrayList dayList = new ArrayList<>(); + ArrayList totalList = new ArrayList<>(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + LocalDate previousDate = null; + for (RecentMailTrendVo recentMailTrendVo : recentMailTrendVoList) { + // 获取当前日期 + LocalDate currentDate = LocalDate.parse(recentMailTrendVo.getDayTime(), formatter); + if (previousDate != null) { + while (ChronoUnit.DAYS.between(previousDate, currentDate) > 1) { + previousDate = previousDate.plusDays(1); // 日期加1 + String res = previousDate.format(formatter); // 格式化日期 + dayList.add(res.substring(res.indexOf('/') + 1)); // 添加到dayList + totalList.add("0"); // 插入没有数据的日期,总数为0 + } + } + String res = currentDate.format(formatter); + dayList.add(res.substring(res.indexOf('/') + 1)); + totalList.add(recentMailTrendVo.getTotal()); + previousDate = currentDate; + } + jsonObject.fluentPut("dayList", dayList); + jsonObject.fluentPut("totalList", totalList); + return Result.success(jsonObject); + } + } diff --git a/src/main/java/com/biutag/supervision/mapper/DataPetitionComplaintMapper.java b/src/main/java/com/biutag/supervision/mapper/DataPetitionComplaintMapper.java index b45bd53..96eb1c0 100644 --- a/src/main/java/com/biutag/supervision/mapper/DataPetitionComplaintMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/DataPetitionComplaintMapper.java @@ -3,6 +3,7 @@ package com.biutag.supervision.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.biutag.supervision.pojo.dto.CaseVerifDepart; import com.biutag.supervision.pojo.entity.DataPetitionComplaint; +import com.biutag.supervision.pojo.vo.RecentMailTrendVo; import org.apache.ibatis.annotations.Select; import java.util.Date; @@ -71,4 +72,13 @@ public interface DataPetitionComplaintMapper extends BaseMapper selectMassMail(Integer id, int isMass, Date beginTime, Date endTime); + + @Select("SELECT DATE_FORMAT(dpc.discovery_time, '%Y/%m/%d') AS dayTime, COUNT(*) total " + + "FROM data_petition_complaint dpc " + + "WHERE dpc.discovery_time BETWEEN #{frontDay} AND #{currentDay} " + + "AND problem_sources_code = #{sourcesCode} " + + "GROUP BY dayTime " + + "ORDER BY dpc.discovery_time asc;") + List selectRecentlyMailTrend(Integer sourcesCode, String frontDay, String currentDay); + } diff --git a/src/main/java/com/biutag/supervision/mapper/RpcApplyMapper.java b/src/main/java/com/biutag/supervision/mapper/RpcApplyMapper.java index 293a8e0..88445f0 100644 --- a/src/main/java/com/biutag/supervision/mapper/RpcApplyMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/RpcApplyMapper.java @@ -19,7 +19,7 @@ public interface RpcApplyMapper extends BaseMapper { "WHERE b.apply_date BETWEEN #{beginTime} AND #{endTime} AND b.type = 2") List getHitPeople(Date beginTime, Date endTime); - @Select("SELECT SUM(a.provide_relief) FROM rpc_apply_person a LEFT JOIN rpc_apply b ON a.rpc_id = b.rpc_id " + + @Select("SELECT COALESCE(SUM(a.provide_relief), 0.0) FROM rpc_apply_person a LEFT JOIN rpc_apply b ON a.rpc_id = b.rpc_id " + "WHERE b.apply_date BETWEEN #{beginTime} AND #{endTime} AND b.type = 2") Double countComfortMoney(Date beginTime, Date endTime); diff --git a/src/main/java/com/biutag/supervision/pojo/entity/SupPolice.java b/src/main/java/com/biutag/supervision/pojo/entity/SupPolice.java index 1d22bc8..7950426 100644 --- a/src/main/java/com/biutag/supervision/pojo/entity/SupPolice.java +++ b/src/main/java/com/biutag/supervision/pojo/entity/SupPolice.java @@ -7,12 +7,11 @@ import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; -import java.io.Serializable; import java.time.LocalDate; @Setter @Getter -public class SupPolice implements Serializable { +public class SupPolice { // diff --git a/src/main/java/com/biutag/supervision/pojo/vo/RecentMailTrendVo.java b/src/main/java/com/biutag/supervision/pojo/vo/RecentMailTrendVo.java new file mode 100644 index 0000000..6d8598a --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/vo/RecentMailTrendVo.java @@ -0,0 +1,11 @@ +package com.biutag.supervision.pojo.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class RecentMailTrendVo { + private String dayTime; // 10/01 + private String total; // 10 +} diff --git a/src/main/java/com/biutag/supervision/service/DataPetitionComplaintService.java b/src/main/java/com/biutag/supervision/service/DataPetitionComplaintService.java index 713cfdf..3676f3d 100644 --- a/src/main/java/com/biutag/supervision/service/DataPetitionComplaintService.java +++ b/src/main/java/com/biutag/supervision/service/DataPetitionComplaintService.java @@ -13,12 +13,16 @@ import com.biutag.supervision.mapper.DataPetitionComplaintMapper; import com.biutag.supervision.pojo.dto.*; import com.biutag.supervision.pojo.entity.DataPetitionComplaint; import com.biutag.supervision.pojo.param.DataPetitionComplaintQueryParam; +import com.biutag.supervision.pojo.vo.RecentMailTrendVo; import lombok.RequiredArgsConstructor; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; @@ -202,5 +206,15 @@ public class DataPetitionComplaintService extends ServiceImpl getRecentlyMailTrend(Integer sourcesCode, Integer days, Date endTime) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + // 将 endTime 转换为 LocalDate + LocalDate endLocalDate = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + String currentDay = endLocalDate.format(formatter); // 前端页面的最后查询日期 + LocalDate frontDateDay = endLocalDate.minusDays(days); // days天前 + String frontDay = frontDateDay.format(formatter); + List recentMailTrendVos = + dataPetitionComplaintMapper.selectRecentlyMailTrend(MailTrendSourcesEnum.getMappedCodeByCode(sourcesCode), frontDay, currentDay); + return recentMailTrendVos; + } } diff --git a/src/main/java/com/biutag/supervision/service/ModelClueService.java b/src/main/java/com/biutag/supervision/service/ModelClueService.java index 96a08bd..393680d 100644 --- a/src/main/java/com/biutag/supervision/service/ModelClueService.java +++ b/src/main/java/com/biutag/supervision/service/ModelClueService.java @@ -27,6 +27,7 @@ import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -162,18 +163,20 @@ public class ModelClueService extends ServiceImpl { public void generate(Integer modelId) { Model model = modelMapper.selectById(modelId); List modelClues = new ArrayList<>(); - if (!Objects.isNull(model)) { - if (model.getModelSql() != null) { - modelClues.addAll(getModelClueBySql(model.getModelSql(), modelId)); - } + if (!Objects.isNull(model) && model.getModelSql() != null) { + modelClues.addAll(getModelClueBySql(model.getModelSql(), modelId)); } if (!modelClues.isEmpty()) { + List result = new ArrayList<>(); for (ModelClue modelClue : modelClues) { modelClue.setModelId(modelId); modelClue.setCreateTime(LocalDateTime.now()); + if (modelClue.getInvolveDepartName() != null && !modelClue.getInvolveDepartName().isEmpty()) { + result.add(modelClue); + } } - modelClueMapper.insert(modelClues); - modelClueRecordMapper.insert(new ModelClueRecord().setModelId(modelId).setSize(modelClues.size()).setCreateTime(LocalDateTime.now()).setState("success")); + modelClueMapper.insert(result); + modelClueRecordMapper.insert(new ModelClueRecord().setModelId(modelId).setSize(result.size()).setCreateTime(LocalDateTime.now()).setState("success")); } else { modelClueRecordMapper.insert(new ModelClueRecord().setModelId(modelId).setSize(0).setCreateTime(LocalDateTime.now()).setState("fail").setErrMsg("数据为空")); } @@ -219,7 +222,7 @@ public class ModelClueService extends ServiceImpl { modelClue.setInvolveDepartId(supExternalDepart.getInternalId()); } setPerson(modelId, modelClue, data); - generateZFBAThingDesc(modelId, modelClue, data); + generateThingDesc(modelId, modelClue, data); break; } } @@ -229,83 +232,49 @@ public class ModelClueService extends ServiceImpl { private void setPerson(Integer modelId, ModelClue modelClue, Map data) { if (modelId == 3) { // 执法区域人员表 - if (data.get("bar1") != null && !data.get("bar1").equals("")) { - if (data.get("bar2") != null && !data.get("bar2").equals("")) { - modelClue.setInvolvePoliceName(data.get("bar1") + "," + data.get("bar2")); - } else { - modelClue.setInvolvePoliceName((String) data.get("bar1")); - } - } else { - if (data.get("bar2") != null && !data.get("bar2").equals("")) { - modelClue.setInvolvePoliceName((String) data.get("bar2")); - } else { - modelClue.setInvolvePoliceName("无数据"); - } - } - if (data.get("bar1jh") != null && !data.get("bar1jh").equals("")) { - if (data.get("bar2jh") != null && !data.get("bar2jh").equals("")) { - modelClue.setInvolvePoliceEmpNo(data.get("bar1jh") + "," + data.get("bar2jh")); + String bar1 = (String) data.get("bar1"); + String bar2 = (String) data.get("bar2"); + String involvePoliceName = (bar1 != null && !bar1.isEmpty() && bar2 != null && !bar2.isEmpty()) + ? bar1 + "," + bar2 + : (bar1 != null && !bar1.isEmpty()) ? bar1 + : (bar2 != null && !bar2.isEmpty()) ? bar2 : "无数据"; + modelClue.setInvolvePoliceName(involvePoliceName); + String bar1jh = (String) data.get("bar1jh"); + String bar2jh = (String) data.get("bar2jh"); + if (bar1jh != null && !bar1jh.isEmpty()) { + if (bar2jh != null && !bar2jh.isEmpty()) { + modelClue.setInvolvePoliceEmpNo(bar1jh + "," + bar2jh); } else { - modelClue.setInvolvePoliceEmpNo((String) data.get("bar1jh")); + modelClue.setInvolvePoliceEmpNo(bar1jh); } + } else if (bar2jh != null && !bar2jh.isEmpty()) { + modelClue.setInvolvePoliceEmpNo(bar2jh); } else { - if (data.get("bar2jh") != null && !data.get("bar2jh").equals("")) { - modelClue.setInvolvePoliceEmpNo((String) data.get("bar2jh")); - } else { - modelClue.setInvolvePoliceEmpNo("无数据"); - } + modelClue.setInvolvePoliceEmpNo("无数据"); } } if (modelId == 10 || modelId == 11 || modelId == 12 || modelId == 13 || modelId == 14 || modelId == 15) { // 案件基本信息表 - Map bar1; - Map bar2; - if (data.get("BAR1ID") != null && !data.get("BAR1ID").equals("")) { - bar1 = modelClueDataMapper.selectBAR((String) data.get("BAR1ID")); - if (data.get("BAR2ID") != null && !data.get("BAR2ID").equals("")) { - bar2 = modelClueDataMapper.selectBAR((String) data.get("BAR2ID")); - if (bar1 != null) { - if (bar2 != null) { - modelClue.setInvolvePoliceEmpNo(bar1.get("JH") + "," + bar2.get("JH")); - modelClue.setInvolvePoliceName(bar1.get("XM") + "," + bar2.get("XM")); - } else { - modelClue.setInvolvePoliceEmpNo((String) bar1.get("JH")); - modelClue.setInvolvePoliceName((String) bar1.get("XM")); - } - } else if (bar2 != null) { - modelClue.setInvolvePoliceEmpNo((String) bar2.get("JH")); - modelClue.setInvolvePoliceName((String) bar2.get("XM")); - } else { - modelClue.setInvolvePoliceEmpNo("无数据"); - modelClue.setInvolvePoliceName("无数据"); - } - } else { - if (bar1 != null) { - modelClue.setInvolvePoliceEmpNo((String) bar1.get("JH")); - modelClue.setInvolvePoliceName((String) bar1.get("XM")); - } else { - modelClue.setInvolvePoliceEmpNo("无数据"); - modelClue.setInvolvePoliceName("无数据"); - } - } + String bar1Id = (String) data.get("BAR1ID"); + String bar2Id = (String) data.get("BAR2ID"); + Map bar1 = bar1Id != null && !bar1Id.isEmpty() ? modelClueDataMapper.selectBAR(bar1Id) : null; + Map bar2 = bar2Id != null && !bar2Id.isEmpty() ? modelClueDataMapper.selectBAR(bar2Id) : null; + if (bar1 != null && bar2 != null) { + modelClue.setInvolvePoliceEmpNo(bar1.get("JH") + "," + bar2.get("JH")); + modelClue.setInvolvePoliceName(bar1.get("XM") + "," + bar2.get("XM")); + } else if (bar1 != null) { + modelClue.setInvolvePoliceEmpNo((String) bar1.get("JH")); + modelClue.setInvolvePoliceName((String) bar1.get("XM")); + } else if (bar2 != null) { + modelClue.setInvolvePoliceEmpNo((String) bar2.get("JH")); + modelClue.setInvolvePoliceName((String) bar2.get("XM")); } else { - if (data.get("bar2jh") != null && !data.get("bar2jh").equals("")) { - bar2 = modelClueDataMapper.selectBAR((String) data.get("BAR2ID")); - if (bar2 != null) { - modelClue.setInvolvePoliceEmpNo((String) bar2.get("JH")); - modelClue.setInvolvePoliceName((String) bar2.get("XM")); - } else { - modelClue.setInvolvePoliceEmpNo("无数据"); - modelClue.setInvolvePoliceName("无数据"); - } - } else { - modelClue.setInvolvePoliceEmpNo("无数据"); - modelClue.setInvolvePoliceName("无数据"); - } + modelClue.setInvolvePoliceEmpNo("无数据"); + modelClue.setInvolvePoliceName("无数据"); } } } - private static void generateZFBAThingDesc(Integer modelId, ModelClue modelClue, Map data) { + private static void generateThingDesc(Integer modelId, ModelClue modelClue, Map data) { if (modelId == 1) { // 1号模型:行政、刑事案件受理30天仍未立案问题监督模型 String thingDesc = modelClue.getThingDesc(); modelClue.setThingDesc("该" + data.get("AJBZmc") @@ -331,13 +300,21 @@ public class ModelClueService extends ServiceImpl { + ",没有离开时间。"); } } else if (modelId == 10) { // 10号模型:案件受理不及时的异常数据 - modelClue.setThingDesc("该" + data.get("AJBZmc") - + "案件编号为" + getAjbh(data) - + ",报案日期为" + getDateString(data.get("BARQ")) - + ",受理日期为" + getDateString(data.get("SLRQ")) - + ",当前案件状态为“" + data.get("AJZTmc") - + "”,超过" + "3" - + "日未受理。"); + String calculateDays = calculateDaysBetween(data.get("BARQ"), data.get("SLRQ")); + if (calculateDays != null) { + modelClue.setThingDesc( + "发现编号为" + getAjbh(data) + + "的" + data.get("AJBZmc") + "案件,报案日期为" + getDateString(data.get("BARQ")) + + ",但受理日期为" + getDateString(data.get("SLRQ")) + + ",受理时间超过了报案日期" + calculateDaysBetween(data.get("BARQ"), data.get("SLRQ")) + + "日,当前案件状态为“" + data.get("AJZTmc") + "”,存在案件受理不及时的问题。"); + } else { + modelClue.setThingDesc( + "发现编号为" + getAjbh(data) + + "的" + data.get("AJBZmc") + "案件,报案日期为" + getDateString(data.get("BARQ")) + + ",但受理日期为" + getDateString(data.get("SLRQ")) + + ",受理时间超过了报案日期,当前案件状态为“" + data.get("AJZTmc") + "”,存在案件受理不及时的问题。"); + } } else if (modelId == 11) { // 11号模型:立案不及时的异常数据(7天) modelClue.setThingDesc("该" + data.get("AJBZmc") + "案件编号为" + getAjbh(data) @@ -378,13 +355,8 @@ public class ModelClueService extends ServiceImpl { } private static String getAjbh(Map data) { - String AJBH; - if (data.get("AJBH") == null || data.get("AJBH").equals("")) { - AJBH = "空"; - } else { - AJBH = (String) data.get("AJBH"); - } - return AJBH; + String ajbh = (String) data.get("AJBH"); + return ajbh == null || ajbh.isEmpty() ? "无案件编号数据" : ajbh; } private List getModelCluesForModel4(String param, List modelClues) { @@ -496,7 +468,7 @@ public class ModelClueService extends ServiceImpl { private void getModelCluesForModel16(String param, List modelClues) { System.out.println("模型16开始查询数据库"); List params = parseSqlForModel2(param); - String selectSfzh = "SELECT count(sfzh) as num, sfzh FROM dwd_wp_zfba_qbhsjds WHERE STR_TO_DATE(pzrq, '%Y%m%d%H%i%s') BETWEEN '" + params.get(0) + " 00:00:00' AND '" + params.get(1) + " 00:00:00' GROUP BY sfzh HAVING count(sfzh) > 2;"; + String selectSfzh = "SELECT count(sfzh) as num, sfzh FROM dwd_wp_zfba_qbhsjds WHERE STR_TO_DATE(pzrq, '%Y%m%d%H%i%s') BETWEEN '" + params.get(0) + " 00:00:00' AND '" + params.get(1) + " 00:00:00' GROUP BY sfzh, ajbh HAVING count(sfzh) > 2;"; List> sfzhList = modelClueDataMapper.selectByUniqueKeys(selectSfzh); Map sfzhMap = sfzhList.stream().filter(map -> map.get("sfzh") != null).collect(Collectors.toMap( map -> (String) map.get("sfzh"), @@ -530,38 +502,32 @@ public class ModelClueService extends ServiceImpl { } } } - if (modelClue.get("bar1xm") != null) { - if (modelClue.get("bar2xm") != null) { - newModelClue.setInvolvePoliceName(modelClue.get("bar1xm") + "、" + modelClue.get("bar2xm")); - } else { + if (modelClue.get("bar1xm") != null && modelClue.get("bar2xm") != null) { + newModelClue.setInvolvePoliceName(modelClue.get("bar1xm") + "、" + modelClue.get("bar2xm")); + } else if (modelClue.get("bar1xm") != null){ newModelClue.setInvolvePoliceName((String) modelClue.get("bar1xm")); - } - } else { - if (modelClue.get("bar2xm") != null) { + } else if (modelClue.get("bar2xm") != null){ newModelClue.setInvolvePoliceName((String) modelClue.get("bar2xm")); - } else { + } else { newModelClue.setInvolvePoliceName("无数据"); - } } Map bar1 = modelClueDataMapper.selectBAR((String) modelClue.get("bar1id")); Map bar2 = modelClueDataMapper.selectBAR((String) modelClue.get("bar2id")); - if (bar1 != null && bar1.get("JH") != null) { - if (bar2 != null && bar2.get("JH") != null) { - newModelClue.setInvolvePoliceEmpNo(bar1.get("JH") + "、" + bar2.get("JH")); - } else { - newModelClue.setInvolvePoliceEmpNo((String) bar1.get("JH")); - } + String jh1 = bar1 == null ? null : (String) bar1.get("JH"); + String jh2 = bar2 == null ? null : (String) bar2.get("JH"); + if (jh1 != null && jh2 != null) { + newModelClue.setInvolvePoliceEmpNo(jh1 + "、" + jh2); + } else if (jh1 != null) { + newModelClue.setInvolvePoliceEmpNo(jh1); + } else if (jh2 != null) { + newModelClue.setInvolvePoliceEmpNo(jh2); } else { - if (bar2 != null && bar2.get("JH") != null) { - newModelClue.setInvolvePoliceEmpNo((String) bar2.get("JH")); - } else { - newModelClue.setInvolvePoliceEmpNo("无数据"); - } + newModelClue.setInvolvePoliceEmpNo("无数据"); } newModelClue.setData(JSONObject.toJSONString(modelClue)); newModelClue.setStatus(0); newModelClue.setThingDesc("在" + params.get(0) + "到" + params.get(1) + "之间," - + (String) modelClue.get("xm") + + modelClue.get("xm") + "(身份证号:" + modelClue.get("sfzh") + ")的取保次数为" + sfzhMap.get((String) modelClue.get("sfzh")) + "次,大于2次,属于多次取保异常数据。"); modelClues.add(newModelClue); @@ -675,23 +641,15 @@ public class ModelClueService extends ServiceImpl { List modelClues1 = modelClueDataMapper.selectDataByDynamicSql(preSql + "盗" + postSql); System.out.println("模型2开始查询数据库 骗"); List modelClues2 = modelClueDataMapper.selectDataByDynamicSql(preSql + "骗" + postSql); - System.out.println("模型2开始查询数据库 强奸"); List modelClues3 = modelClueDataMapper.selectDataByDynamicSql(preSql + "强奸" + postSql); - System.out.println("模型2开始查询数据库 抢"); List modelClues4 = modelClueDataMapper.selectDataByDynamicSql(preSql + "抢" + postSql); System.out.println("模型2开始查询数据库 10岁"); List modelClues5 = modelClueDataMapper.selectDataByDynamicSql(preSql + "10岁" + postSql); - System.out.println("模型2开始查询数据库 11岁"); List modelClues6 = modelClueDataMapper.selectDataByDynamicSql(preSql + "11岁" + postSql); - System.out.println("模型2开始查询数据库 12岁"); List modelClues7 = modelClueDataMapper.selectDataByDynamicSql(preSql + "12岁" + postSql); - System.out.println("模型2开始查询数据库 13岁"); List modelClues8 = modelClueDataMapper.selectDataByDynamicSql(preSql + "13岁" + postSql); - System.out.println("模型2开始查询数据库 14岁"); List modelClues9 = modelClueDataMapper.selectDataByDynamicSql(preSql + "14岁" + postSql); - System.out.println("模型2开始查询数据库 15岁"); List modelClues10 = modelClueDataMapper.selectDataByDynamicSql(preSql + "15岁" + postSql); - System.out.println("模型2开始查询数据库 16岁"); List modelClues11 = modelClueDataMapper.selectDataByDynamicSql(preSql + "16岁" + postSql); System.out.println("模型2开始查询数据库 未成年"); List modelClues12 = modelClueDataMapper.selectDataByDynamicSql(preSql + "未成年" + postSql); @@ -712,7 +670,7 @@ public class ModelClueService extends ServiceImpl { Instant instant = parse.toInstant(); ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分"); return formatter.format(localDateTime); } catch (Exception e) { try { @@ -722,7 +680,7 @@ public class ModelClueService extends ServiceImpl { Instant instant = parse.toInstant(); ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分"); return formatter.format(localDateTime); } catch (Exception ex) { log.info("日期转换异常{}", time, ex); @@ -732,6 +690,36 @@ public class ModelClueService extends ServiceImpl { return " 无时间数据 "; } + public static String calculateDaysBetween(Object param1, Object param2) { + if (param1 == null || param2 == null) { + return null; + } + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + Date date1 = sdf.parse(String.valueOf(param1)); + Date date2 = sdf.parse(String.valueOf(param2)); + LocalDateTime dateTime1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + LocalDateTime dateTime2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + LocalDateTime nextDay = dateTime1.plusDays(1); + long daysBetween = ChronoUnit.DAYS.between(nextDay, dateTime2); + return String.valueOf(daysBetween); + } catch (Exception e) { + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); + Date date1 = sdf.parse(String.valueOf(param1)); + Date date2 = sdf.parse(String.valueOf(param2)); + LocalDateTime dateTime1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + LocalDateTime dateTime2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + LocalDateTime nextDay = dateTime1.plusDays(1); + long daysBetween = ChronoUnit.DAYS.between(nextDay, dateTime2); + return String.valueOf(daysBetween); + } catch (Exception ex) { + ex.printStackTrace(); + return null; + } + } + } + public static String generateNewSql(String originalSql, List uniqueKeys) { Pattern tablePattern = Pattern.compile("FROM\\s+(\\w+)", Pattern.CASE_INSENSITIVE); Matcher tableMatcher = tablePattern.matcher(originalSql);