From 583512ab04a6e0b387ac0e9656f8c9b7a1f7ede1 Mon Sep 17 00:00:00 2001 From: buaixuexideshitongxue <2936013465@qq.com> Date: Fri, 13 Feb 2026 16:09:32 +0800 Subject: [PATCH] =?UTF-8?q?fix--=E4=B8=AA=E4=BA=BA=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E6=A0=B8=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/BusinessPoliceMapper.java | 11 +- .../service/BusinessDepartService.java | 3 +- .../service/BusinessPoliceService.java | 530 +++++++++++------- .../resources/mapper/BusinessPoliceMapper.xml | 28 + src/main/resources/mapper/GBaseCJDMapper.xml | 8 +- 5 files changed, 381 insertions(+), 199 deletions(-) diff --git a/src/main/java/com/biutag/supervision/mapper/BusinessPoliceMapper.java b/src/main/java/com/biutag/supervision/mapper/BusinessPoliceMapper.java index 18aff6a..883f677 100644 --- a/src/main/java/com/biutag/supervision/mapper/BusinessPoliceMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/BusinessPoliceMapper.java @@ -1,6 +1,6 @@ package com.biutag.supervision.mapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,5 +9,12 @@ import com.biutag.supervision.pojo.model.BusinessPoliceModel; import org.apache.ibatis.annotations.Param; public interface BusinessPoliceMapper extends BaseMapper { - Page queryPage(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); +// Page queryPage(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + + + Page queryPage(Page page, + @Param(Constants.WRAPPER) Wrapper ew, + @Param("sortKey") String sortKey, + @Param("sortOrder") String sortOrder); } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/service/BusinessDepartService.java b/src/main/java/com/biutag/supervision/service/BusinessDepartService.java index ca9f071..5918da2 100644 --- a/src/main/java/com/biutag/supervision/service/BusinessDepartService.java +++ b/src/main/java/com/biutag/supervision/service/BusinessDepartService.java @@ -114,8 +114,7 @@ public class BusinessDepartService extends ServiceImpl jjdExternalIds = gBaseJJDSList.stream().filter(Objects::nonNull).map(GBaseJJD::getGxdwdm).filter(StrUtil::isNotBlank).toList(); - // 1.2 执法办案(CASE):SA 用 BADWIDdm,LA 用 LADWBMdm,PA 用 PADWBMdm - // 注意:这里 externalId 口径就是你明确的对齐规则,后续任何地方不要再随意换字段 + // 1.2 执法办案(CASE):都用BADWIDdm List caseExternalIds = new ArrayList<>(); caseExternalIds.addAll(gBaseAJJBXXListSA.stream().filter(Objects::nonNull).map(GBaseAJJBXX::getBADWIDdm).filter(StrUtil::isNotBlank).toList()); caseExternalIds.addAll(gBaseAJJBXXListLA.stream().filter(Objects::nonNull).map(GBaseAJJBXX::getBADWIDdm).filter(StrUtil::isNotBlank).toList()); diff --git a/src/main/java/com/biutag/supervision/service/BusinessPoliceService.java b/src/main/java/com/biutag/supervision/service/BusinessPoliceService.java index c4c65c8..305e7f7 100644 --- a/src/main/java/com/biutag/supervision/service/BusinessPoliceService.java +++ b/src/main/java/com/biutag/supervision/service/BusinessPoliceService.java @@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.biutag.supervision.mapper.*; -import com.biutag.supervision.pojo.entity.BusinessLog; -import com.biutag.supervision.pojo.entity.BusinessPolice; -import com.biutag.supervision.pojo.entity.GBaseAJJBXX; -import com.biutag.supervision.pojo.entity.GBaseCJD; +import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.pojo.model.BusinessPoliceModel; import com.biutag.supervision.pojo.param.BusinessQueryParam; import lombok.RequiredArgsConstructor; @@ -23,9 +20,10 @@ import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.function.BiConsumer; import java.util.stream.Collectors; @Slf4j @@ -45,26 +43,27 @@ public class BusinessPoliceService extends ServiceImpl page(BusinessQueryParam businessQueryParam) { - if (businessQueryParam.getDepartName()!=null && businessQueryParam.getDepartName().equals("开始导入今年所有的数据")) { - LocalDate start = LocalDate.parse("2024-01-01"); - LocalDate end = LocalDate.parse("2024-12-25"); - for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) { - List happenTime = new ArrayList<>(); - Date startDate = Date.from(date.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()); - Date endDate = Date.from(date.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant()); - happenTime.add(startDate); - happenTime.add(endDate); - generate(happenTime); - log.info("已经导入{}的个人数据", date.format(DateTimeFormatter.ofPattern("yyyy年M月d日"))); - } - } else if (businessQueryParam.getDepartName() != null && businessQueryParam.getDepartName().equals("开始导入今天所有的数据")) { - List happenTime = new ArrayList<>(); - Date start = Date.from(LocalDateTime.parse("2024-09-02T00:00:00", DateTimeFormatter.ISO_DATE_TIME).atZone(ZoneId.systemDefault()).toInstant()); - Date end = Date.from(LocalDateTime.parse("2024-10-14T09:59:59", DateTimeFormatter.ISO_DATE_TIME).atZone(ZoneId.systemDefault()).toInstant()); - happenTime.add(start); - happenTime.add(end); + if ("测试导入".equals(businessQueryParam.getPoliceName()) && businessQueryParam.getHappenTime() != null && businessQueryParam.getHappenTime().size() == 2) { + Date startInput = businessQueryParam.getHappenTime().get(0); + Date endInput = businessQueryParam.getHappenTime().get(1); + ZoneId zoneId = ZoneId.systemDefault(); + LocalDate startDate = startInput.toInstant().atZone(zoneId).toLocalDate(); + LocalDateTime startOfDay = startDate.atStartOfDay(); + LocalDate endDate = endInput.toInstant().atZone(zoneId).toLocalDate(); + LocalDateTime endOfDay = endDate.atTime(LocalTime.MAX); + List happenTime = new ArrayList<>(2); + happenTime.add(Date.from(startOfDay.atZone(zoneId).toInstant())); + happenTime.add(Date.from(endOfDay.atZone(zoneId).toInstant())); + log.info("【个人业务-测试导入】归一化后时间范围=[{} ~ {}]", happenTime.get(0), happenTime.get(1)); generate(happenTime); + log.info("【个人业务-测试导入】导入执行完成"); } String empNo = ""; if (businessQueryParam.getEmpNo() != null && !businessQueryParam.getEmpNo().isEmpty()) { @@ -74,13 +73,18 @@ public class BusinessPoliceService extends ServiceImpl happenTime) { @@ -101,45 +105,74 @@ public class BusinessPoliceService extends ServiceImpl gBaseAJJBXXMapPR = new HashMap<>(); // 生成案件信息的映射 generateAJJBXXMap(zfbaresult, gBaseAJJBXXMapSR, gBaseAJJBXXMapLR, gBaseAJJBXXMapPR); - List departIds = new ArrayList<>(); - // 生成管辖单位代码 - generateDepartIds(gBaseCJDSList, departIds, zfbaresult); - if (departIds.isEmpty()) { - return; - } - // 通过管辖单位代码从数据库中获取单位 ID 和内部 ID和 内部名字 - List> idsByDepartIds = supExternalDepartMapper.getIdsByDepartIds(departIds);// 430100221100-1011 - Map resultMap2 = idsByDepartIds.stream().filter(map -> map.get("external_id") != null).collect(Collectors.toMap( - map -> (String) map.get("external_id"), - map -> map.get("internal_id") == null ? "" : (String) map.get("internal_id") - )); - List values = resultMap2.values().stream().filter(Objects::nonNull).toList();// 1011 - Map resultMap3 = idsByDepartIds.stream().filter(map -> map.get("external_id") != null).collect(Collectors.toMap( - map -> (String) map.get("external_id"), - map -> map.get("internal_short_name") == null ? "" : (String) map.get("internal_short_name") - )); - List> resultList = statisticsDepartMapper.getGroupIdsByDepartIds(values); - Map resultMap = resultList.stream().collect(Collectors.toMap( - map -> (String) map.get("departId"), - map -> (Long) map.get("groupId") - )); - List groupIds = new ArrayList<>(); - - generateBusinessPoliceList(happenTime, gBaseCJDSList, resultMap, resultMap2, resultMap3, groupIds, businessPoliceList, gBaseAJJBXXMapSR, gBaseAJJBXXMapLR, gBaseAJJBXXMapPR); - List> nameList = statisticsGroupMapper.getNameByGroupIds(groupIds); - Map names = nameList.stream().collect(Collectors.toMap( - map -> (Long) map.get("groupId"), - map -> (String) map.get("name") - )); - for (BusinessPolice businessPolice : businessPoliceList) { - businessPolice.setGroupName(names.get(businessPolice.getGroupId())); - businessPolice.setCreateTime(LocalDateTime.now()); + + List qzxExternalIds = gBaseCJDSList.stream() + .filter(Objects::nonNull) + .map(GBaseCJD::getCjdxssdwdm) + .filter(StrUtil::isNotBlank) + .toList(); + List zfbaExternalIds = new ArrayList<>(); + zfbaExternalIds.addAll(gBaseAJJBXXMapSR.values().stream().map(GBaseAJJBXX::getBADWIDdm).filter(StrUtil::isNotBlank).toList()); + zfbaExternalIds.addAll(gBaseAJJBXXMapLR.values().stream().map(GBaseAJJBXX::getBADWIDdm).filter(StrUtil::isNotBlank).toList()); + zfbaExternalIds.addAll(gBaseAJJBXXMapPR.values().stream().map(GBaseAJJBXX::getBADWIDdm).filter(StrUtil::isNotBlank).toList()); + DepartMapping qzxMapping = buildMapping(qzxExternalIds, "情指行"); + DepartMapping zfbaMapping = buildMapping(zfbaExternalIds, "执法办案"); + appendCjdBusiness(businessPoliceList, gBaseCJDSList, qzxMapping); + appendZfbaBusiness(businessPoliceList, gBaseAJJBXXMapSR.values(), zfbaMapping, 4); + appendZfbaBusiness(businessPoliceList, gBaseAJJBXXMapLR.values(), zfbaMapping, 5); + appendZfbaBusiness(businessPoliceList, gBaseAJJBXXMapPR.values(), zfbaMapping, 6); + + + Map groupMap = statisticsGroupService.groupIdMap(); + for (BusinessPolice bp : businessPoliceList) { + StatisticsGroup g = groupMap.get(String.valueOf(bp.getGroupId())); + bp.setGroupName(g != null ? g.getName() : null); + bp.setCreateTime(LocalDateTime.now()); } log.info("个人业务数据准备插入:{}", businessPoliceList.size()); List insert = baseMapper.insert(businessPoliceList); log.info("个人业务数据插入成功"); int actualNum = (int) Arrays.stream(insert.get(0).getUpdateCounts()).parallel().filter(num -> num != 0).count(); - businessLogMapper.insert(new BusinessLog().setType("个人业务数据").setNum(gBaseCJDSList.size()).setActualNum(actualNum).setCreateTime(LocalDateTime.now())); + businessLogMapper.insert(new BusinessLog().setType("个人业务数据").setNum(businessPoliceList.size()).setActualNum(actualNum).setCreateTime(LocalDateTime.now())); +// List departIds = new ArrayList<>(); +// // 生成管辖单位代码 +// generateDepartIds(gBaseCJDSList, departIds, zfbaresult); +// if (departIds.isEmpty()) { +// return; +// } +// // 通过管辖单位代码从数据库中获取单位 ID 和内部 ID和 内部名字 +// List> idsByDepartIds = supExternalDepartMapper.getIdsByDepartIds(departIds);// 430100221100-1011 +// Map resultMap2 = idsByDepartIds.stream().filter(map -> map.get("external_id") != null).collect(Collectors.toMap( +// map -> (String) map.get("external_id"), +// map -> map.get("internal_id") == null ? "" : (String) map.get("internal_id") +// )); +// List values = resultMap2.values().stream().filter(Objects::nonNull).toList();// 1011 +// Map resultMap3 = idsByDepartIds.stream().filter(map -> map.get("external_id") != null).collect(Collectors.toMap( +// map -> (String) map.get("external_id"), +// map -> map.get("internal_short_name") == null ? "" : (String) map.get("internal_short_name") +// )); +// List> resultList = statisticsDepartMapper.getGroupIdsByDepartIds(values); +// Map resultMap = resultList.stream().collect(Collectors.toMap( +// map -> (String) map.get("departId"), +// map -> (Long) map.get("groupId") +// )); +// List groupIds = new ArrayList<>(); +// +// generateBusinessPoliceList(happenTime, gBaseCJDSList, resultMap, resultMap2, resultMap3, groupIds, businessPoliceList, gBaseAJJBXXMapSR, gBaseAJJBXXMapLR, gBaseAJJBXXMapPR); +// List> nameList = statisticsGroupMapper.getNameByGroupIds(groupIds); +// Map names = nameList.stream().collect(Collectors.toMap( +// map -> (Long) map.get("groupId"), +// map -> (String) map.get("name") +// )); +// for (BusinessPolice businessPolice : businessPoliceList) { +// businessPolice.setGroupName(names.get(businessPolice.getGroupId())); +// businessPolice.setCreateTime(LocalDateTime.now()); +// } +// log.info("个人业务数据准备插入:{}", businessPoliceList.size()); +// List insert = baseMapper.insert(businessPoliceList); +// log.info("个人业务数据插入成功"); +// int actualNum = (int) Arrays.stream(insert.get(0).getUpdateCounts()).parallel().filter(num -> num != 0).count(); +// businessLogMapper.insert(new BusinessLog().setType("个人业务数据").setNum(gBaseCJDSList.size()).setActualNum(actualNum).setCreateTime(LocalDateTime.now())); } private static void generateBusinessPoliceList(List happenTime, List gBaseCJDSList, Map resultMap, Map resultMap2, Map resultMap3, List groupIds, List businessPoliceList, Map gBaseAJJBXXMapSR, Map gBaseAJJBXXMapLR, Map gBaseAJJBXXMapPR) { @@ -205,157 +238,55 @@ public class BusinessPoliceService extends ServiceImpl gBaseAJJBXXMapSR, Map gBaseAJJBXXMapLR, Map gBaseAJJBXXMapPR) { - for (Map bar : zfbaresult.bar1()) { - if (bar.get("BAR1ID") == null) { - continue; - } - if (gBaseAJJBXXMapSR.containsKey((String)bar.get("BAR1ID"))) { - GBaseAJJBXX gBaseAJJBXX = gBaseAJJBXXMapSR.get((String) bar.get("BAR1ID")); - gBaseAJJBXX.setBARNum(gBaseAJJBXX.getBARNum() + Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXXMapSR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } else { - GBaseAJJBXX gBaseAJJBXX = new GBaseAJJBXX(); - gBaseAJJBXX.setBARID((String)bar.get("BAR1ID")); - gBaseAJJBXX.setBADWIDdm((String)bar.get("BADWIDdm")); - gBaseAJJBXX.setBADWIDmc((String)bar.get("BADWIDmc")); - gBaseAJJBXX.setXM((String)bar.get("XM")); - gBaseAJJBXX.setBARNum(Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXX.setJH((String)bar.get("JH")); - gBaseAJJBXXMapSR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } - } - for (Map bar : zfbaresult.bar2()) { - if (bar.get("BAR2ID") == null) { - continue; - } - if (gBaseAJJBXXMapSR.containsKey((String)bar.get("BAR2ID"))) { - GBaseAJJBXX gBaseAJJBXX = gBaseAJJBXXMapSR.get((String) bar.get("BAR2ID")); - gBaseAJJBXX.setBARNum(gBaseAJJBXX.getBARNum() + Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXXMapSR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } else { - GBaseAJJBXX gBaseAJJBXX = new GBaseAJJBXX(); - gBaseAJJBXX.setBARID((String)bar.get("BAR2ID")); - gBaseAJJBXX.setBADWIDdm((String)bar.get("BADWIDdm")); - gBaseAJJBXX.setBADWIDmc((String)bar.get("BADWIDmc")); - gBaseAJJBXX.setXM((String)bar.get("XM")); - gBaseAJJBXX.setBARNum(Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXX.setJH((String)bar.get("JH")); - gBaseAJJBXXMapSR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } - } - for (Map bar : zfbaresult.bar3()) { - if (bar.get("BAR1ID") == null) { - continue; - } - if (gBaseAJJBXXMapLR.containsKey((String)bar.get("BAR1ID"))) { - GBaseAJJBXX gBaseAJJBXX = gBaseAJJBXXMapLR.get((String) bar.get("BAR1ID")); - gBaseAJJBXX.setBARNum(gBaseAJJBXX.getBARNum() + Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXXMapLR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } else { - GBaseAJJBXX gBaseAJJBXX = new GBaseAJJBXX(); - gBaseAJJBXX.setBARID((String)bar.get("BAR1ID")); - gBaseAJJBXX.setBADWIDdm((String)bar.get("BADWIDdm")); - gBaseAJJBXX.setBADWIDmc((String)bar.get("BADWIDmc")); - gBaseAJJBXX.setXM((String)bar.get("XM")); - gBaseAJJBXX.setBARNum(Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXX.setJH((String)bar.get("JH")); - gBaseAJJBXXMapLR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } - } - for (Map bar : zfbaresult.bar4()) { - if (bar.get("BAR2ID") == null) { - continue; - } - if (gBaseAJJBXXMapLR.containsKey((String)bar.get("BAR2ID"))) { - GBaseAJJBXX gBaseAJJBXX = gBaseAJJBXXMapLR.get((String) bar.get("BAR2ID")); - gBaseAJJBXX.setBARNum(gBaseAJJBXX.getBARNum() + Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXXMapLR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } else { - GBaseAJJBXX gBaseAJJBXX = new GBaseAJJBXX(); - gBaseAJJBXX.setBARID((String)bar.get("BAR2ID")); - gBaseAJJBXX.setBADWIDdm((String)bar.get("BADWIDdm")); - gBaseAJJBXX.setBADWIDmc((String)bar.get("BADWIDmc")); - gBaseAJJBXX.setXM((String)bar.get("XM")); - gBaseAJJBXX.setBARNum(Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXX.setJH((String)bar.get("JH")); - gBaseAJJBXXMapLR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } - } - for (Map bar : zfbaresult.bar5()) { - if (bar.get("BAR1ID") == null) { - continue; - } - if (gBaseAJJBXXMapPR.containsKey((String)bar.get("BAR1ID"))) { - GBaseAJJBXX gBaseAJJBXX = gBaseAJJBXXMapPR.get((String) bar.get("BAR1ID")); - gBaseAJJBXX.setBARNum(gBaseAJJBXX.getBARNum() + Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXXMapPR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } else { - GBaseAJJBXX gBaseAJJBXX = new GBaseAJJBXX(); - gBaseAJJBXX.setBARID((String)bar.get("BAR1ID")); - gBaseAJJBXX.setBADWIDdm((String)bar.get("BADWIDdm")); - gBaseAJJBXX.setBADWIDmc((String)bar.get("BADWIDmc")); - gBaseAJJBXX.setXM((String)bar.get("XM")); - gBaseAJJBXX.setBARNum(Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXX.setJH((String)bar.get("JH")); - gBaseAJJBXXMapPR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } - } - for (Map bar : zfbaresult.bar6()) { - if (bar.get("BAR2ID") == null) { - continue; - } - if (gBaseAJJBXXMapPR.containsKey((String)bar.get("BAR2ID"))) { - GBaseAJJBXX gBaseAJJBXX = gBaseAJJBXXMapPR.get((String) bar.get("BAR2ID")); - gBaseAJJBXX.setBARNum(gBaseAJJBXX.getBARNum() + Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXXMapPR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } else { - GBaseAJJBXX gBaseAJJBXX = new GBaseAJJBXX(); - gBaseAJJBXX.setBARID((String)bar.get("BAR2ID")); - gBaseAJJBXX.setBADWIDdm((String)bar.get("BADWIDdm")); - gBaseAJJBXX.setBADWIDmc((String)bar.get("BADWIDmc")); - gBaseAJJBXX.setXM((String)bar.get("XM")); - gBaseAJJBXX.setBARNum(Math.toIntExact((Long) bar.get("num"))); - gBaseAJJBXX.setJH((String)bar.get("JH")); - gBaseAJJBXXMapPR.put(gBaseAJJBXX.getBARID(), gBaseAJJBXX); - } - } + + // 受案:bar1(BAR1ID) + bar2(BAR2ID) → SLRQ + mergeZfbaBars(zfbaresult.bar1(), "BAR1ID", gBaseAJJBXXMapSR, GBaseAJJBXX::setSLRQ); + mergeZfbaBars(zfbaresult.bar2(), "BAR2ID", gBaseAJJBXXMapSR, GBaseAJJBXX::setSLRQ); + + // 立案:bar3(BAR1ID) + bar4(BAR2ID) → LARQ + mergeZfbaBars(zfbaresult.bar3(), "BAR1ID", gBaseAJJBXXMapLR, GBaseAJJBXX::setLARQ); + mergeZfbaBars(zfbaresult.bar4(), "BAR2ID", gBaseAJJBXXMapLR, GBaseAJJBXX::setLARQ); + + // 破案:bar5(BAR1ID) + bar6(BAR2ID) → PARQ + mergeZfbaBars(zfbaresult.bar5(), "BAR1ID", gBaseAJJBXXMapPR, GBaseAJJBXX::setPARQ); + mergeZfbaBars(zfbaresult.bar6(), "BAR2ID", gBaseAJJBXXMapPR, GBaseAJJBXX::setPARQ); } private ZFBAResult getZfbaResult(List happenTime) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 4:受案 - List> bar1 = modelClueDataMapper.selectByUniqueKeys("select COUNT(a.BAR1ID) as num, a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + + List> bar1 = modelClueDataMapper.selectByUniqueKeys("select CAST(DATE(a.SLRQ) AS DATETIME) AS statDate, COUNT(1) as num, a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + "FROM dwd_asj_zfba_ajjbxx a " + "LEFT JOIN dwd_ry_zfba_baryxx b ON a.BAR1ID = b.ZJ " + - "WHERE a.SLRQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 " + - "GROUP BY a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); - List> bar2 = modelClueDataMapper.selectByUniqueKeys("select COUNT(a.BAR2ID) as num, a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + + "WHERE a.SLRQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 AND a.BAR1ID IS NOT NULL " + + "GROUP BY DATE(a.SLRQ), a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); + List> bar2 = modelClueDataMapper.selectByUniqueKeys("select CAST(DATE(a.SLRQ) AS DATETIME) AS statDate, COUNT(1) as num, a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + "FROM dwd_asj_zfba_ajjbxx a " + "LEFT JOIN dwd_ry_zfba_baryxx b ON a.BAR2ID = b.ZJ " + - "WHERE a.SLRQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 " + - "GROUP BY a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); + "WHERE a.SLRQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 AND a.BAR2ID IS NOT NULL " + + "GROUP BY DATE(a.SLRQ), a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); // 5:立案 - List> bar3 = modelClueDataMapper.selectByUniqueKeys("select COUNT(a.BAR1ID) as num, a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + + List> bar3 = modelClueDataMapper.selectByUniqueKeys("select CAST(DATE(a.LARQ) AS DATETIME) AS statDate, COUNT(1) as num, a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + "FROM dwd_asj_zfba_ajjbxx a " + "LEFT JOIN dwd_ry_zfba_baryxx b ON a.BAR1ID = b.ZJ " + - "WHERE a.LARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 " + - "GROUP BY a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); - List> bar4 = modelClueDataMapper.selectByUniqueKeys("select COUNT(a.BAR2ID) as num, a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + + "WHERE a.LARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 AND a.BAR1ID IS NOT NULL " + + "GROUP BY DATE(a.LARQ), a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); + List> bar4 = modelClueDataMapper.selectByUniqueKeys("select CAST(DATE(a.LARQ) AS DATETIME) AS statDate, COUNT(1) as num, a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + "FROM dwd_asj_zfba_ajjbxx a " + "LEFT JOIN dwd_ry_zfba_baryxx b ON a.BAR2ID = b.ZJ " + - "WHERE a.LARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 " + - "GROUP BY a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); + "WHERE a.LARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 AND a.BAR2ID IS NOT NULL " + + "GROUP BY DATE(a.LARQ), a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); // 6:破案 - List> bar5 = modelClueDataMapper.selectByUniqueKeys("select COUNT(a.BAR1ID) as num, a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + + List> bar5 = modelClueDataMapper.selectByUniqueKeys("select CAST(DATE(a.PARQ) AS DATETIME) AS statDate, COUNT(1) as num, a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + "FROM dwd_asj_zfba_ajjbxx a " + "LEFT JOIN dwd_ry_zfba_baryxx b ON a.BAR1ID = b.ZJ " + - "WHERE a.PARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 " + - "GROUP BY a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); - List> bar6 = modelClueDataMapper.selectByUniqueKeys("select COUNT(a.BAR2ID) as num, a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + + "WHERE a.PARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 AND a.BAR1ID IS NOT NULL " + + "GROUP BY DATE(a.PARQ), a.BAR1ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); + List> bar6 = modelClueDataMapper.selectByUniqueKeys("select CAST(DATE(a.PARQ) AS DATETIME) AS statDate, COUNT(1) as num, a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH " + "FROM dwd_asj_zfba_ajjbxx a " + "LEFT JOIN dwd_ry_zfba_baryxx b ON a.BAR2ID = b.ZJ " + - "WHERE a.PARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 " + - "GROUP BY a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); + "WHERE a.PARQ BETWEEN '" + formatter.format(happenTime.get(0)) + "' AND '" + formatter.format(happenTime.get(1)) + "' AND a.AJBZdm !=3 AND a.BAR2ID IS NOT NULL " + + "GROUP BY DATE(a.PARQ), a.BAR2ID, a.BADWIDdm, a.BADWIDmc, b.XM, b.JH;"); ZFBAResult zfbaresult = new ZFBAResult(bar1, bar2, bar3, bar4, bar5, bar6); return zfbaresult; } @@ -414,7 +345,7 @@ public class BusinessPoliceService extends ServiceImpl> rows, String barIdKey, Map targetMap, BiConsumer dateSetter + ) { + if (rows == null || rows.isEmpty()) return; + + for (Map bar : rows) { + if (bar.get(barIdKey) == null) { + continue; + } + + Date statDate = (Date) bar.get("statDate"); + String barId = (String) bar.get(barIdKey); + String key = statDate.getTime() + "_" + barId; + + if (targetMap.containsKey(key)) { + GBaseAJJBXX gBaseAJJBXX = targetMap.get(key); + gBaseAJJBXX.setBARNum(gBaseAJJBXX.getBARNum() + Math.toIntExact((Long) bar.get("num"))); + } else { + GBaseAJJBXX gBaseAJJBXX = new GBaseAJJBXX(); + gBaseAJJBXX.setBARID(barId); + dateSetter.accept(gBaseAJJBXX, statDate); + + gBaseAJJBXX.setBADWIDdm((String) bar.get("BADWIDdm")); + gBaseAJJBXX.setBADWIDmc((String) bar.get("BADWIDmc")); + gBaseAJJBXX.setXM((String) bar.get("XM")); + gBaseAJJBXX.setBARNum(Math.toIntExact((Long) bar.get("num"))); + gBaseAJJBXX.setJH((String) bar.get("JH")); + + targetMap.put(key, gBaseAJJBXX); + } + } + } + + + private DepartMapping buildMapping(Collection externalIds, String source) { + if (externalIds == null || externalIds.isEmpty()) { + return new DepartMapping(Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap()); + } + + List distinctExternalIds = externalIds.stream() + .filter(StrUtil::isNotBlank) + .distinct() + .toList(); + + if (distinctExternalIds.isEmpty()) { + return new DepartMapping(Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap()); + } + + List> rows = supExternalDepartMapper.getIdsByExternalIdsAndSource(distinctExternalIds, source); + + Map externalToInternalId = (rows == null ? Collections.>emptyList() : rows) + .stream() + .filter(m -> m != null && m.get("external_id") != null) + .collect(Collectors.toMap( + m -> String.valueOf(m.get("external_id")), + m -> m.get("internal_id") == null ? null : String.valueOf(m.get("internal_id")), + (a, b) -> StrUtil.isNotBlank(a) ? a : b + )); + + Map externalToInternalShortName = (rows == null ? Collections.>emptyList() : rows) + .stream() + .filter(m -> m != null && m.get("external_id") != null) + .collect(Collectors.toMap( + m -> String.valueOf(m.get("external_id")), + m -> m.get("internal_short_name") == null ? null : String.valueOf(m.get("internal_short_name")), + (a, b) -> StrUtil.isNotBlank(a) ? a : b + )); + + List internalIds = externalToInternalId.values().stream() + .filter(StrUtil::isNotBlank) + .distinct() + .toList(); + + if (internalIds.isEmpty()) { + return new DepartMapping(externalToInternalId, externalToInternalShortName, Collections.emptyMap()); + } + + List> groupRows = supDepartMapper.getGroupIdsByDepartIds(internalIds); + + Map internalIdToGroupId = (groupRows == null ? Collections.>emptyList() : groupRows) + .stream() + .filter(m -> m != null && m.get("departId") != null && m.get("groupId") != null) + .collect(Collectors.toMap( + m -> String.valueOf(m.get("departId")), + m -> ((Number) m.get("groupId")).longValue(), + (a, b) -> a + )); + + return new DepartMapping(externalToInternalId, externalToInternalShortName, internalIdToGroupId); + } + + public static class DepartMapping { + private final Map externalToInternalId; + private final Map externalToInternalShortName; + private final Map internalIdToGroupId; + + private DepartMapping(Map externalToInternalId, + Map externalToInternalShortName, + Map internalIdToGroupId) { + this.externalToInternalId = externalToInternalId; + this.externalToInternalShortName = externalToInternalShortName; + this.internalIdToGroupId = internalIdToGroupId; + } + + public Long resolveGroupId(String externalId) { + if (StrUtil.isBlank(externalId)) return null; + String internalId = externalToInternalId.get(externalId); + if (StrUtil.isBlank(internalId)) return null; + return internalIdToGroupId.get(internalId); + } + + public String resolveInternalId(String externalId) { + return StrUtil.isBlank(externalId) ? null : externalToInternalId.get(externalId); + } + + public String resolveInternalShortName(String externalId) { + return StrUtil.isBlank(externalId) ? null : externalToInternalShortName.get(externalId); + } + + public Set mappedExternalIds() { + return externalToInternalId.keySet(); + } + } + + + private void appendCjdBusiness(List out, + List list, + DepartMapping mapping) { + if (out == null || list == null || list.isEmpty()) return; + + for (GBaseCJD cjd : list) { + if (cjd == null) continue; + + String externalId = cjd.getCjdxssdwdm(); + if (StrUtil.isBlank(externalId)) continue; + + Long groupId = mapping.resolveGroupId(externalId); + if (groupId == null) continue; + + BusinessPolice bp = new BusinessPolice(); + bp.setDate(cjd.getCjsj()); + bp.setDepartId(mapping.resolveInternalId(externalId)); + bp.setDepartName(mapping.resolveInternalShortName(externalId)); + bp.setGroupId(groupId); + + bp.setNumber(cjd.getCjdxdmTotal()); + bp.setPoliceName(cjd.getCjdxname()); + bp.setEmpNo(cjd.getCjdxdm()); + bp.setPoliceIdCode(hashConcatenatedStrings(bp.getPoliceName(), bp.getEmpNo())); + + if (groupId == 10L) { + bp.setBusinessType("1"); + bp.setBusinessTypeName("110接处警"); + } else if (groupId == 11L) { + bp.setBusinessType("2"); + bp.setBusinessTypeName("122接处警"); + } else { + continue; + } + + out.add(bp); + } + } + + private void appendZfbaBusiness(List out, + Collection list, + DepartMapping mapping, + int type /* 4/5/6 */) { + if (out == null || list == null || list.isEmpty()) return; + + for (GBaseAJJBXX a : list) { + if (a == null) continue; + + String externalId = a.getBADWIDdm(); + if (StrUtil.isBlank(externalId)) continue; + + Long groupId = mapping.resolveGroupId(externalId); + if (groupId == null) continue; + + BusinessPolice bp = new BusinessPolice(); + // ✅ date 按类型取你聚合出来的当天 + if (type == 4) { + bp.setDate(a.getSLRQ()); + bp.setBusinessType("4"); + bp.setBusinessTypeName("执法办案(受案)"); + } else if (type == 5) { + bp.setDate(a.getLARQ()); + bp.setBusinessType("5"); + bp.setBusinessTypeName("执法办案(立案)"); + } else if (type == 6) { + bp.setDate(a.getPARQ()); + bp.setBusinessType("6"); + bp.setBusinessTypeName("执法办案(破案)"); + } else { + continue; + } + + bp.setDepartId(mapping.resolveInternalId(externalId)); + bp.setDepartName(mapping.resolveInternalShortName(externalId)); + bp.setGroupId(groupId); + + bp.setNumber(a.getBARNum()); + bp.setPoliceName(a.getXM()); + bp.setEmpNo(a.getJH()); + bp.setPoliceIdCode(hashConcatenatedStrings(bp.getPoliceName(), bp.getEmpNo())); + + out.add(bp); + } + } + + } diff --git a/src/main/resources/mapper/BusinessPoliceMapper.xml b/src/main/resources/mapper/BusinessPoliceMapper.xml index b6d9836..0ebc3e1 100644 --- a/src/main/resources/mapper/BusinessPoliceMapper.xml +++ b/src/main/resources/mapper/BusinessPoliceMapper.xml @@ -18,7 +18,35 @@ SUM(CASE WHEN business_type = 10 THEN number ELSE 0 END) AS jiashirenkaoshi from business_police ${ew.getCustomSqlSegment} + GROUP BY police_name, emp_no, depart_name, group_name + + + ORDER BY police_name + ORDER BY emp_no + ORDER BY depart_name + ORDER BY group_name + + ORDER BY jiechujing110 + ORDER BY jiechujing122 + ORDER BY shenfenzhengyewu + ORDER BY zhifabananSA + ORDER BY zhifabananLA + ORDER BY zhifabananPA + ORDER BY hukouyewu + ORDER BY churujingyewu + ORDER BY cheliangshangpai + ORDER BY jiashirenkaoshi + + ORDER BY jiechujing110 + + + + ASC + DESC + + + \ No newline at end of file diff --git a/src/main/resources/mapper/GBaseCJDMapper.xml b/src/main/resources/mapper/GBaseCJDMapper.xml index dc15c3f..746f4b2 100644 --- a/src/main/resources/mapper/GBaseCJDMapper.xml +++ b/src/main/resources/mapper/GBaseCJDMapper.xml @@ -5,7 +5,13 @@