From 944858c74e49baf88ee9838a7c045f6deefc85c2 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Mon, 12 Jan 2026 16:59:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BE=E5=8F=91=E6=9C=8D=E5=8A=A1=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E5=B7=A5=E5=8D=95=E6=97=B6=E5=8F=91=E9=80=81websocket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DirectiveOrderServiceImpl.java | 183 ++++++++++-------- 1 file changed, 105 insertions(+), 78 deletions(-) diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderServiceImpl.java index 1d622030..505392fb 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderServiceImpl.java @@ -13,6 +13,7 @@ import com.nu.modules.config.sendorderrule.entity.SendOrderRuleSub; import com.nu.modules.config.sendorderrule.service.ISendOrderRuleService; import com.nu.modules.config.sendorderrule.service.ISendOrderRuleSubService; import com.nu.modules.sysconfig.ISysConfigApi; +import com.nu.websocket.SdWebsocket; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; @@ -29,7 +30,7 @@ import java.util.stream.Collectors; /** * @Description: 服务指令工单主表 * @Author: caolei - * @Date: 2025-11-18 + * @Date: 2025-11-18 * @Version: V1.0 */ @Service @@ -50,6 +51,9 @@ public class DirectiveOrderServiceImpl extends ServiceImpl ruleSubList; private String allowedTimeout; + @Autowired + private SdWebsocket sdWebsocket; + /** * 获取容错时长 * @@ -62,7 +66,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); qw.eq("iz_enabled", "Y"); sendOrderRule = sendOrderRuleService.getOne(qw); @@ -85,26 +89,28 @@ public class DirectiveOrderServiceImpl extends ServiceImpl getEmpPermissionAndOnline(String directiveId, String employeeIds, Date startTime){ - return baseMapper.getEmpPermissionAndOnline(directiveId,employeeIds,startTime); + private List getEmpPermissionAndOnline(String directiveId, String employeeIds, Date startTime) { + return baseMapper.getEmpPermissionAndOnline(directiveId, employeeIds, startTime); } /** * 获取长者指定所有护理员 + * * @param elderId * @return */ - private Map getEmpOrderly(String elderId){ + private Map getEmpOrderly(String elderId) { Map map = null; DirectiveOrder orders = baseMapper.getEmpOrderly(elderId); - if(orders!=null){ + if (orders != null) { String empIds = orders.getEmployeeIds(); - if(empIds!=null&&!empIds.equals("")){ + if (empIds != null && !empIds.equals("")) { String[] pairs = empIds.split(","); - if(pairs.length>0){ + if (pairs.length > 0) { map = new HashMap<>(); for (String pair : pairs) { map.put(pair, pair); @@ -117,34 +123,51 @@ public class DirectiveOrderServiceImpl extends ServiceImpl generateOrdersBatch(){ + public Result generateOrdersBatch() { //获取派单规则 getSendOrderRule(); getAllowedTimeout(); List ordersList = baseMapper.queryDataPoolList(null); - for(int i=0;i ordersSubList = ordersSubService.queryDataPoolSubList(orders); String directiveIds = ordersSubList.stream().map(DirectiveOrderSub::getDirectiveId).collect(Collectors.joining(",")); - if(orders.getIzPackage().equals("N")){ + if (orders.getIzPackage().equals("N")) { //获取满足条件的员工 - DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),null,orders.getStartTime()); - if(employee!=null){ + DirectiveOrder employee = employeeScreening(directiveIds, orders.getElderId(), null, orders.getStartTime()); + if (employee != null) { String orderNo = getOrderNo(); orders.setOrderNo(orderNo); orders.setEmployeeId(employee.getEmployeeId()); @@ -157,7 +180,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl emps = baseMapper.getPermissionEmps(directiveIds);//获取服务标签中的员工和数量 emps.removeIf(data -> data.getOwnCn() < ordersSubList.size());//删除没有权限的数据 String employeeIds = emps.stream().map(DirectiveOrder::getEmployeeId).collect(Collectors.joining(",")); - DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),employeeIds,orders.getStartTime()); - if(employee!=null){ + DirectiveOrder employee = employeeScreening(directiveIds, orders.getElderId(), employeeIds, orders.getStartTime()); + if (employee != null) { String orderNo = getOrderNo(); orders.setOrderNo(orderNo); orders.setEmployeeId(employee.getEmployeeId()); @@ -192,7 +215,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl empList = getEmpPermissionAndOnline(directiveIds,employeeIds,startTime); + List empList = getEmpPermissionAndOnline(directiveIds, employeeIds, startTime); if (empList.size() > 0) { - for(int i=0;i0){ - for(SendOrderRuleSub ruleSub : ruleSubList){ + if (ruleSubList.size() > 0) { + for (SendOrderRuleSub ruleSub : ruleSubList) { switch (ruleSub.getRuleCode()) { case 1: //空闲积分 - sortByIzFree(empList,ruleSub.getCoefficient()); + sortByIzFree(empList, ruleSub.getCoefficient()); break; case 2: //专员积分 - sortByOrderly(empList,ruleSub.getCoefficient(),elderId); + sortByOrderly(empList, ruleSub.getCoefficient(), elderId); break; case 3: //单次积分 - sortByNumAndSetLevel(empList,ruleSub.getCoefficient()); + sortByNumAndSetLevel(empList, ruleSub.getCoefficient()); break; case 4: //收益积分 - sortByPriceAndSetLevel(empList,ruleSub.getCoefficient()); + sortByPriceAndSetLevel(empList, ruleSub.getCoefficient()); break; case 5: //服务时长积分 - sortByDurationAndSetLevel(empList,ruleSub.getCoefficient()); + sortByDurationAndSetLevel(empList, ruleSub.getCoefficient()); break; case 6: //最后接单时间积分 - sortByMaxTimeAndSetLevel(empList,ruleSub.getCoefficient()); + sortByMaxTimeAndSetLevel(empList, ruleSub.getCoefficient()); break; case 7: //超出上限积分 - sortByLimit(empList,ruleSub.getCoefficient()); + sortByLimit(empList, ruleSub.getCoefficient()); break; } } //获取员工信息 sortEmpList(empList); return empList.get(0); - }else{ + } else { //随机获取一个员工 Random random = new Random(); return empList.get(random.nextInt(empList.size())); @@ -292,17 +316,17 @@ public class DirectiveOrderServiceImpl extends ServiceImpl empList = getEmpPermissionAndOnline(directiveIds,employeeIds,startTime); + List empList = getEmpPermissionAndOnline(directiveIds, employeeIds, startTime); if (empList.size() > 0) { List newList = new ArrayList(); newList.addAll(empList); - for(int i=0;i - getByOrderly(empList,elderId); + getByOrderly(empList, elderId); if (empList.size() > 0) { if (ruleSubList.size() > 0) { for (SendOrderRuleSub ruleSub : ruleSubList) { @@ -341,7 +365,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); qw.likeRight("order_no", mainOrderNo); qw.select("order_no"); @@ -601,53 +627,54 @@ public class DirectiveOrderServiceImpl extends ServiceImpl generateOrdersInstant(DirectiveOrder directiveOrder){ + public Map generateOrdersInstant(DirectiveOrder directiveOrder) { Map map = new HashMap<>(); - map.put("success",true); - map.put("message","操作成功"); + map.put("success", true); + map.put("message", "操作成功"); String orderType = directiveOrder.getOrderType(); - if(orderType.equals("1")){ + if (orderType.equals("1")) { //护理即时 directiveOrder.setTableName("nu_biz_nu_care_directive_plan_instant"); } - if(orderType.equals("2")){ + if (orderType.equals("2")) { //医疗即时 directiveOrder.setTableName("nu_biz_nu_medical_directive_plan_instant"); } - if(orderType.equals("3")){ + if (orderType.equals("3")) { //仓库即时 directiveOrder.setTableName("nu_biz_nu_invoicing_directive_plan_instant"); } - if(orderType.equals("4")){ + if (orderType.equals("4")) { //后勤即时 directiveOrder.setTableName("nu_biz_nu_logistics_directive_plan_instant"); } DirectiveOrder directiveInfo = baseMapper.getDirectiveById(directiveOrder); - if(directiveOrder.getTriggerMode().equals("1")){ + if (directiveOrder.getTriggerMode().equals("1")) { //直接派单给发起人 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String employeeId = sysUser.getEmployessId(); - }else{ + } else { //按规则派单 getSendOrderRule();