From f281fd86b70dd3cd8c40053adda596ac00c75b46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Wed, 3 Dec 2025 16:59:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=B4=BE=E5=8D=95=E8=A7=84?= =?UTF-8?q?=E5=88=99=E8=B0=83=E6=95=B4=E6=B4=BE=E5=8D=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CareOrdersServiceImpl.java | 42 +++------ .../impl/LogisticsOrdersServiceImpl.java | 93 +++++++++++++++---- 2 files changed, 92 insertions(+), 43 deletions(-) diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/care/order/service/impl/CareOrdersServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/care/order/service/impl/CareOrdersServiceImpl.java index ba13e6af..dac9b1cf 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/care/order/service/impl/CareOrdersServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/care/order/service/impl/CareOrdersServiceImpl.java @@ -109,30 +109,31 @@ public class CareOrdersServiceImpl extends ServiceImpl ordersSubList = ordersSubService.queryDataPoolSubList(orders); + String directiveIds = ordersSubList.stream().map(CareOrdersSub::getDirectiveId).collect(Collectors.joining(",")); if(orders.getIzPackage().equals("N")){ - CareOrdersSub ordersSub = ordersSubList.get(0); //获取满足条件的员工 - CareOrders employee = employeeScreening(ordersSub.getDirectiveId(),orders.getCustomerId(),null,orders.getStartTime()); + CareOrders employee = employeeScreening(directiveIds,orders.getCustomerId(),null,orders.getStartTime()); if(employee!=null){ orders.setEmployeeId(employee.getEmployeeId()); orders.setEmployeeName(employee.getEmployeeName()); orders.setIzStart("N"); orders.setIzFinish("N"); this.save(orders);//生成工单主表 - - ordersSub.setMainId(orders.getId()); - ordersSub.setEmployeeId(employee.getEmployeeId()); - ordersSub.setEmployeeName(employee.getEmployeeName()); - ordersSub.setIzStart("N"); - ordersSub.setIzFinish("N"); - ordersSubService.save(ordersSub);//生成工单子表 + for(int i=0;i emps = baseMapper.getPermissionEmps(directiveIds);//获取服务标签中的员工和数量 emps.removeIf(data -> data.getOwnCn() < ordersSubList.size());//删除没有权限的数据 String employeeIds = emps.stream().map(CareOrders::getEmployeeId).collect(Collectors.joining(",")); @@ -172,13 +173,9 @@ public class CareOrdersServiceImpl extends ServiceImpl getByOrderly(empList,customerId); + if(ruleSubList.size()>0){ for(SendOrderRuleSub ruleSub : ruleSubList){ switch (ruleSub.getPriorityCode()) { @@ -294,16 +293,6 @@ public class CareOrdersServiceImpl extends ServiceImpl empList = getEmpPermissionAndOnline(directiveId,startTime); + if (empList.size() > 0) { + for(int i=0;i + getByOrderly(empList,customerId); + if(ruleSubList.size()>0){ + for(SendOrderRuleSub ruleSub : ruleSubList){ + switch (ruleSub.getPriorityCode()) { + case 1: + //空闲积分 + sortByIzFree(empList,ruleSub.getCoefficient()); + break; + case 2: + //单次积分 + sortByNumAndSetLevel(empList,ruleSub.getCoefficient()); + break; + case 3: + //收益积分 + sortByPriceAndSetLevel(empList,ruleSub.getCoefficient()); + break; + case 4: + //服务时长积分 + sortByDurationAndSetLevel(empList,ruleSub.getCoefficient()); + break; + case 5: + //最后接单时间积分 + sortByMaxTimeAndSetLevel(empList,ruleSub.getCoefficient()); + break; + case 6: + //超出上限积分 + sortByLimit(empList,ruleSub.getCoefficient()); + break; + } + } + //获取员工信息 + sortEmpList(empList); + return empList.get(0); + }else{ + //随机获取一个员工 + Random random = new Random(); + return empList.get(random.nextInt(empList.size())); + } + } return null; } @@ -377,4 +411,31 @@ public class LogisticsOrdersServiceImpl extends ServiceImpl empList,String customerId) { + List newList = new ArrayList(); + for (int i = 0; i < empList.size(); i++) { + LogisticsOrders emp = empList.get(i); + String employeeId = emp.getEmployeeId(); + Map orderlyMap = getEmpOrderly(customerId); + if (orderlyMap != null) { + String orderlyId = orderlyMap.get(employeeId); + if (orderlyId != null && !orderlyId.equals("")) { + newList.add(emp); + } + } + + } + empList.clear(); + empList.addAll(newList); + for(int i=0;i