diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/admin/InspectionBusinessMeetAddressRecordController.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/admin/InspectionBusinessMeetAddressRecordController.java new file mode 100644 index 00000000..46d95b90 --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/admin/InspectionBusinessMeetAddressRecordController.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.inspection.controller.admin; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.inspection.entity.InspectionBusinessMeetAddressRecord; +import cn.iocoder.yudao.module.inspection.service.InspectionBusinessMeetAddressRecordService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/inspection-business-meet-address-record") +@RequiredArgsConstructor +public class InspectionBusinessMeetAddressRecordController { + + private final InspectionBusinessMeetAddressRecordService inspectionBusinessMeetAddressRecordService; + + /** + * 获取地址列表 + * + * @param userId 用户ID + * @return 列表 + */ + @GetMapping("/list") + public CommonResult list(Long userId) { + return CommonResult.success(inspectionBusinessMeetAddressRecordService.list(Wrappers.lambdaQuery() + .eq(InspectionBusinessMeetAddressRecord::getUserId, userId))); + } +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessMeetAddressRecord.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessMeetAddressRecord.java new file mode 100644 index 00000000..2c51257e --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessMeetAddressRecord.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.inspection.entity; + +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import lombok.Data; + +@Data +public class InspectionBusinessMeetAddressRecord extends TenantBaseDO { + /** + * id + */ + private Long id; + + /** + * 业务经理的userId + */ + private Long userId; + + /** + * 上门接车地址 + */ + private String address; +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionBusinessMeetAddressRecordMapper.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionBusinessMeetAddressRecordMapper.java new file mode 100644 index 00000000..50469e66 --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionBusinessMeetAddressRecordMapper.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.inspection.mapper; + +import cn.iocoder.yudao.module.inspection.entity.InspectionBusinessMeetAddressRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface InspectionBusinessMeetAddressRecordMapper extends BaseMapper { +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionInfoMapper.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionInfoMapper.java index 7136168e..68358b6a 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionInfoMapper.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionInfoMapper.java @@ -98,5 +98,5 @@ public interface InspectionInfoMapper extends BaseMapper IPage geStelectInspectionByBusiness(@Param("page") Page page,@Param("info") InspectionInfo inspectionInfo); - List selectMeetCarList(); + List selectMeetCarList(@Param("datetimeRange") List datetimeRange); } diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionInfoService.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionInfoService.java index 96a075da..5376bf39 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionInfoService.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionInfoService.java @@ -176,5 +176,5 @@ public interface IInspectionInfoService extends IService Map getBusinessCountByType(Integer partnerId); - List selectMeetCarList(); + List selectMeetCarList(List datetimeRange); } diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/InspectionBusinessMeetAddressRecordService.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/InspectionBusinessMeetAddressRecordService.java new file mode 100644 index 00000000..4db5bc18 --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/InspectionBusinessMeetAddressRecordService.java @@ -0,0 +1,7 @@ +package cn.iocoder.yudao.module.inspection.service; + +import cn.iocoder.yudao.module.inspection.entity.InspectionBusinessMeetAddressRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface InspectionBusinessMeetAddressRecordService extends IService { +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java index af9ee3fc..1ed76ef2 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/AppInspectionPartnerServiceImpl.java @@ -2302,7 +2302,7 @@ public class AppInspectionPartnerServiceImpl extends ServiceImpl> getStaffCount(DlInspectionProject dlInspectionProject) { List> staffCount = inspectionWorkNodeService.getStaffCount(dlInspectionProject); // 根据userId查询检测工单表 接车人 - List list = inspectionInfoService.selectMeetCarList(); + List list = inspectionInfoService.selectMeetCarList(dlInspectionProject.getDatetimeRange()); // 统计每个 meetManId 的数量,避免 null key 异常 Map> meetManIdCountMap = list.stream() .filter(info -> info.getMeetManId() != null) // 过滤 null 值 @@ -2317,17 +2317,27 @@ public class AppInspectionPartnerServiceImpl extends ServiceImpl stringObjectMap : staffCount) { + Set inspectionInfoIds = new HashSet<>(); + Long userId = (Long) stringObjectMap.get("userId"); List> children = (List>) stringObjectMap.get("children"); -// stringObjectMap.put("meetCarCount", meetManIdCountMap.get(userId)); + inspectionInfoIds.addAll( + children.stream() + .map(map -> (String) map.get("inspectionInfoId")) // 获取逗号分隔的字符串 + .flatMap(idsStr -> Arrays.stream(idsStr.split(","))) // 拆分成单个ID字符串 + .map(String::trim) // 去除前后空格 + .filter(idStr -> !idStr.isEmpty()) // 过滤空字符串 + .map(Long::valueOf) // 转换为Long类型 + .collect(Collectors.toList()) + ); // 获取所有接车信息 List inspectionInfos = meetManIdCountMap.get(userId); - stringObjectMap.put("totalCount", (Long) stringObjectMap.get("totalCount") == null ? 0 : (Long) stringObjectMap.get("totalCount") + (meetManIdCountMap.get(userId) == null ? 0 : meetManIdCountMap.get(userId).size())); long meetCount = 0; long meetGoCount = 0; if (CollUtil.isNotEmpty(inspectionInfos)) { meetCount = inspectionInfos.stream().filter(inspectionInfo -> Integer.valueOf(0).equals(inspectionInfo.getMeetType())).count(); meetGoCount = inspectionInfos.stream().filter(inspectionInfo -> Integer.valueOf(1).equals(inspectionInfo.getMeetType())).count(); + inspectionInfoIds.addAll(inspectionInfos.stream().map(InspectionInfo::getId).collect(Collectors.toList())); } HashMap objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("count", meetCount); @@ -2344,6 +2354,8 @@ public class AppInspectionPartnerServiceImpl extends ServiceImpl i.getReturnType() != null && i.getReturnType() == 1) .count(); } - stringObjectMap.put("totalCount", (Long) stringObjectMap.get("totalCount") == null ? 0 : (Long) stringObjectMap.get("totalCount") + (returnCarUserIdCountMap.get(userId) == null ? 0 : returnCarUserIdCountMap.get(userId).size())); + stringObjectMap.put("totalCount", Long.parseLong(String.valueOf(inspectionInfoIds.size()))); + Map objectObjectHashMap1 = new HashMap<>(); objectObjectHashMap1.put("count", returnCount); objectObjectHashMap1.put("projectName", "还车拍照"); diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionBusinessMeetAddressRecordServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionBusinessMeetAddressRecordServiceImpl.java new file mode 100644 index 00000000..81620992 --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionBusinessMeetAddressRecordServiceImpl.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.inspection.service.impl; + +import cn.iocoder.yudao.module.inspection.entity.InspectionBusinessMeetAddressRecord; +import cn.iocoder.yudao.module.inspection.mapper.InspectionBusinessMeetAddressRecordMapper; +import cn.iocoder.yudao.module.inspection.service.InspectionBusinessMeetAddressRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class InspectionBusinessMeetAddressRecordServiceImpl extends ServiceImpl implements InspectionBusinessMeetAddressRecordService { +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java index 3ef6d261..6217da31 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java @@ -1070,8 +1070,8 @@ public class InspectionInfoServiceImpl extends ServiceImpl selectMeetCarList() { - return baseMapper.selectMeetCarList(); + public List selectMeetCarList(List datetimeRange) { + return baseMapper.selectMeetCarList(datetimeRange); } /** diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionWorkNodeServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionWorkNodeServiceImpl.java index 5aec607c..fa89ca97 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionWorkNodeServiceImpl.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionWorkNodeServiceImpl.java @@ -445,6 +445,7 @@ public class InspectionWorkNodeServiceImpl extends ServiceImpl> getStaffCount(DlInspectionProject dlInspectionProject) { Map> tempMap = new LinkedHashMap<>(); List staffCount = baseMapper.getStaffCount(dlInspectionProject); + for (StaffProjectCountVO vo : staffCount) { Map userEntry = tempMap.computeIfAbsent(vo.getUserId(), k -> { Map m = new HashMap<>(); @@ -464,6 +465,7 @@ public class InspectionWorkNodeServiceImpl extends ServiceImpl Predicate distinctByKey(Function keyExtractor) { + Set seen = ConcurrentHashMap.newKeySet(); + return t -> { + Object key = keyExtractor.apply(t); + return key != null && seen.add(key); // 关键是这一行 + }; + } +} diff --git a/dl-module-inspection/src/main/resources/mapper/InspectionWorkNodeMapper.xml b/dl-module-inspection/src/main/resources/mapper/InspectionWorkNodeMapper.xml index c332215d..9270dedc 100644 --- a/dl-module-inspection/src/main/resources/mapper/InspectionWorkNodeMapper.xml +++ b/dl-module-inspection/src/main/resources/mapper/InspectionWorkNodeMapper.xml @@ -242,10 +242,40 @@