diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/constant/InspectionConstants.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/constant/InspectionConstants.java index adf60091..f4521fdc 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/constant/InspectionConstants.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/constant/InspectionConstants.java @@ -85,4 +85,9 @@ public class InspectionConstants { */ public static final String INSPECTION_NOTICE_TEMPLATE_ASSIGN_STAFF_MEET_CAR_NO_CAR_NO = "您有的新的接车订单需要处理 接车时间:%s 详细信息请前往接车列表"; + /** + * 检测站内信模板-提示业务经理 接车订单已被创建 + */ + public static final String INSPECTION_NOTICE_TEMPLATE_BUSINESS_MANAGER_MEET_CAR_ORDER_CREATE = "%s的工单已创建,详细信息请前往列表查看"; + } diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionInfoController.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionInfoController.java index 012f0424..649f29d9 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionInfoController.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionInfoController.java @@ -125,6 +125,19 @@ public class InspectionInfoController extends BaseController { return success(inspectionInfoService.geStelectInspection(page, inspectionInfo)); } + /** + * 根据当前登陆人获取可以选择的工单(业务经理查询) + * + * @return + */ + @GetMapping("geStelectInspectionByBusiness") + public CommonResult geStelectInspectionByBusiness(InspectionInfo inspectionInfo, + @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum, + @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNum, pageSize); + return success(inspectionInfoService.geStelectInspectionByBusiness(page, inspectionInfo)); + } + /** * 获取工单详情 * @@ -376,6 +389,17 @@ public class InspectionInfoController extends BaseController { return success(inspectionInfoService.getCountByType(partnerId)); } + /** + * 获得不同状态的数据的数量 + * + * @author 小李 + * @date 16:22 2024/12/18 + **/ + @GetMapping("/getBusinessCountByType") + public CommonResult getBusinessCountByType(@RequestParam("partnerId") Integer partnerId) { + return success(inspectionInfoService.getBusinessCountByType(partnerId)); + } + /** * 接车拍照 * diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/admin/InspectionBusinessChannelController.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/admin/InspectionBusinessChannelController.java index 453a912c..50f36871 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/admin/InspectionBusinessChannelController.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/admin/InspectionBusinessChannelController.java @@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; @RestController @RequestMapping("/channel") @@ -40,7 +42,18 @@ public class InspectionBusinessChannelController { */ @GetMapping("/{id}") public CommonResult getChannelById(@PathVariable("id") Long id) { - return CommonResult.success(inspectionBusinessChannelService.getById(id)); + InspectionBusinessChannel info = inspectionBusinessChannelService.getById(id); + + //将字符串转为集合 + if (ObjectUtil.isNotEmpty(info.getUserIds())) { + List userIdList = Arrays.stream(info.getUserIds().split(",")) + .filter(s -> s != null && !s.isEmpty()) // 可选:避免空字符串 + .map(Long::valueOf) + .collect(Collectors.toList()); + info.setUserIdList(userIdList); + + } + return CommonResult.success(info); } /** @@ -48,6 +61,13 @@ public class InspectionBusinessChannelController { */ @PutMapping("/update") public CommonResult updateChannel(@RequestBody InspectionBusinessChannel channel) { + if (ObjectUtil.isNotEmpty(channel.getUserIdList())) { + String userIds = channel.getUserIdList().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + channel.setUserIds(userIds); + + } return CommonResult.success(inspectionBusinessChannelService.updateById(channel)); } diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java index 0233bf3b..56cb2576 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java @@ -17,7 +17,12 @@ public class InspectionBusinessChannel extends TenantBaseDO { private Integer type; // 0-业务渠道 1-客户来源 + private String userIds; // 绑定的用户ID + // 子节点 @TableField(exist = false) private List children; + + @TableField(exist = false) + private List userIdList; } 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 1ffe5f61..1571737e 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 @@ -94,4 +94,7 @@ public interface InspectionInfoMapper extends BaseMapper */ IPage selectByUser(@Param("page") IPage page, @Param("roleIds") List roleIds,@Param("inspectionInfo") InspectionInfo inspectionInfo); Long countByUser(@Param("roleIds") List roleIds,@Param("inspectionInfo") InspectionInfo inspectionInfo); + + + IPage geStelectInspectionByBusiness(@Param("page") Page page,@Param("info") InspectionInfo inspectionInfo); } 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 9d41bac2..0931b460 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 @@ -165,4 +165,14 @@ public interface IInspectionInfoService extends IService * @param inspectionInfo */ void leadCar(InspectionInfo inspectionInfo); + + /** + * 获取业务方工单 + * @param page + * @param inspectionInfo + * @return + */ + IPage geStelectInspectionByBusiness(Page page, InspectionInfo inspectionInfo); + + Map getBusinessCountByType(Integer partnerId); } 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 da99bf92..820e2af7 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 @@ -419,6 +419,15 @@ public class InspectionInfoServiceImpl extends ServiceImpllambdaUpdate() .eq(InspectionInfo::getId, inspectionInfo.getId()) .set(InspectionInfo::getIsMeetCar, 1)); + + // 查询接车标 + InspectionMeetCarOrder inspectionMeetCarOrder = inspectionMeetCarOrderService.getById(inspectionInfo.getMeetCarId()); + // 判断接车类型是否是业务接车 + if (inspectionMeetCarOrder.getMeetType() == 2) { + // 给对应的业务经理发送消息 + String message = String.format(InspectionConstants.INSPECTION_NOTICE_TEMPLATE_BUSINESS_MANAGER_MEET_CAR_ORDER_CREATE, inspectionInfo.getBuyName() == null ? inspectionInfo.getBuyPhone() : inspectionInfo.getBuyName()); + noticeService.sentMessage(inspectionMeetCarOrder.getMeetManId(), message); + } } workNodeService.saveBatch(inspectionWorkNodes); @@ -974,6 +983,83 @@ public class InspectionInfoServiceImpl extends ServiceImpl geStelectInspectionByBusiness(Page page, InspectionInfo inspectionInfo) { + return baseMapper.geStelectInspectionByBusiness(page, inspectionInfo); + } + + /** + * @param partnerId + * @return + */ + @Override + public Map getBusinessCountByType(Integer partnerId) { + // 创建线程池 + ExecutorService executor = Executors.newFixedThreadPool(10); + + try { + InspectionInfo inspectionInfo = new InspectionInfo(); + inspectionInfo.setPartnerId(partnerId.longValue()); + + // 获取当前登录人 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + // 获取当前登陆人的角色 +// List byUserId = roleService.getByUserId(loginUser.getId()); +// inspectionInfo.setLeadManId(loginUser.getId()); +// List roleIds = byUserId.stream().map(UserRoleDO::getRoleId).collect(Collectors.toList()); + inspectionInfo.setUserId(loginUser.getId()); + + if (!"1".equals(inspectionInfo.getStatus())) { + inspectionInfo.setDealUserId(loginUser.getId()); + } + + Map result = new ConcurrentHashMap<>(); // 线程安全 + + // 这里 `5` 而不是 `6`,因为 i 从 `0` 开始 + CompletableFuture[] futures = new CompletableFuture[3]; + + for (int i = 0; i < 3; i++) { // 改为 `0~4` + final String status = String.valueOf(i + 1); + + // 深拷贝对象,防止多线程修改冲突 + InspectionInfo infoCopy = JSON.parseObject(JSON.toJSONString(inspectionInfo), InspectionInfo.class); + infoCopy.setStatus(status); + + Page page = new Page<>(1, 1); + + futures[i] = CompletableFuture.runAsync(() -> { + IPage inspectionInfoIPage = baseMapper.geStelectInspectionByBusiness(page, infoCopy); + Long count = inspectionInfoIPage.getTotal(); + result.put(status, count); + }, executor); + } + + // 等待所有任务完成 + CompletableFuture.allOf(futures).join(); + + return result; + + } catch (Exception e) { + throw new RuntimeException("Failed to execute tasks in parallel", e); + } finally { + executor.shutdown(); + try { + if (!executor.awaitTermination(10, TimeUnit.SECONDS)) { + executor.shutdownNow(); + } + } catch (InterruptedException e) { + executor.shutdownNow(); + } + } + } + /** * 保存引车员记录 * diff --git a/dl-module-inspection/src/main/resources/mapper/inspection/InspectionInfoMapper.xml b/dl-module-inspection/src/main/resources/mapper/inspection/InspectionInfoMapper.xml index 1c0fea41..6f371919 100644 --- a/dl-module-inspection/src/main/resources/mapper/inspection/InspectionInfoMapper.xml +++ b/dl-module-inspection/src/main/resources/mapper/inspection/InspectionInfoMapper.xml @@ -617,4 +617,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + diff --git a/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/app/controller/admin/SysLoginController.java b/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/app/controller/admin/SysLoginController.java index eee0b6c4..2aaeadc6 100644 --- a/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/app/controller/admin/SysLoginController.java +++ b/dl-module-rescue/src/main/java/cn/iocoder/yudao/module/rescue/app/controller/admin/SysLoginController.java @@ -589,6 +589,9 @@ public class SysLoginController { Map map = new HashMap<>(); map.put("partnerId", user.getTenantId()); map.put("user", user); + // 查询用户表信息 + AdminUserDO selectUser = userService.getUser(user.getId()); + map.put("userInfo", selectUser); return CommonResult.success(map); }