From 6e2d793c1811aa9dcb99aea6b6cb8157f0867cd6 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Mon, 12 Jan 2026 15:39:11 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0pad=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9A=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E8=BD=AC=E5=8D=95=E3=80=81=E5=8D=8F=E5=8A=A9=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../directiveorder/api/ServiceOrderApi.java | 17 +- .../modules/order/api/IDirectiveOrderApi.java | 3 + .../impl/DirectiveOrderPadServiceImpl.java | 145 ++++++++++++------ 3 files changed, 120 insertions(+), 45 deletions(-) diff --git a/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveorder/api/ServiceOrderApi.java b/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveorder/api/ServiceOrderApi.java index 2aa3b833..c3cc7ea7 100644 --- a/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveorder/api/ServiceOrderApi.java +++ b/nursing-unit-api/src/main/java/com/nu/modules/pad/directiveorder/api/ServiceOrderApi.java @@ -110,7 +110,22 @@ public class ServiceOrderApi { @ApiOperation(value="服务指令工单-转单", notes="服务指令工单-转单") @AutoLog(value = "服务指令工单-转单",clientType="app", operateType = 3) @PostMapping(value = "/transferOrder") - public Result transferOrder(@RequestBody DirectiveOrderEntity directiveOrderEntity) { + public Result transferOrder(@RequestBody DirectiveOrderSubEntity dto) { + if(StringUtils.isBlank(dto.getMainId()) ){ + return Result.error("缺少参数"); + } + directiveOrderApi.transferOrder(dto); + return Result.OK("操作成功!"); + } + + @ApiOperation(value="服务指令工单-协助执行", notes="服务指令工单-协助执行") + @AutoLog(value = "服务指令工单-协助执行",clientType="app", operateType = 3) + @PostMapping(value = "/assistOrder") + public Result assistOrder(@RequestBody DirectiveOrderSubEntity dto) { + if(StringUtils.isBlank(dto.getMainId()) ){ + return Result.error("缺少参数"); + } + directiveOrderApi.assistOrder(dto); return Result.OK("操作成功!"); } } diff --git a/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/order/api/IDirectiveOrderApi.java b/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/order/api/IDirectiveOrderApi.java index 1f5650fd..7fa4980f 100644 --- a/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/order/api/IDirectiveOrderApi.java +++ b/nursing-unit-services/nu-services-api/nu-services-local-api/src/main/java/com/nu/modules/order/api/IDirectiveOrderApi.java @@ -51,4 +51,7 @@ public interface IDirectiveOrderApi { Map generateOrdersInstant(DirectiveOrderEntity directiveOrderEntity); + void transferOrder(DirectiveOrderSubEntity dto); + + void assistOrder(DirectiveOrderSubEntity dto); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderPadServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderPadServiceImpl.java index fa8568c0..e6e46d6d 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderPadServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/impl/DirectiveOrderPadServiceImpl.java @@ -3,6 +3,7 @@ package com.nu.modules.biz.order.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -29,7 +30,7 @@ import java.util.*; /** * @Description: 服务指令工单主表 * @Author: caolei - * @Date: 2025-11-18 + * @Date: 2025-11-18 * @Version: V1.0 */ @Service @@ -54,20 +55,20 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl queryOrderList(Integer pageNo, Integer pageSize, DirectiveOrderEntity directiveOrderEntity, HttpServletRequest req) { DirectiveOrder directiveOrder = new DirectiveOrder(); - BeanUtils.copyProperties(directiveOrderEntity,directiveOrder); + BeanUtils.copyProperties(directiveOrderEntity, directiveOrder); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("nu_id",directiveOrderEntity.getNuId()); - queryWrapper.eq("iz_finish","N"); - queryWrapper.eq(StringUtils.isNotBlank(directiveOrderEntity.getEmployeeId()),"employee_id",directiveOrderEntity.getEmployeeId()); + queryWrapper.eq("nu_id", directiveOrderEntity.getNuId()); + queryWrapper.eq("iz_finish", "N"); + queryWrapper.eq(StringUtils.isNotBlank(directiveOrderEntity.getEmployeeId()), "employee_id", directiveOrderEntity.getEmployeeId()); Page page = new Page<>(pageNo, pageSize); - List list = baseMapper.selectList(page,queryWrapper); + List list = baseMapper.selectList(page, queryWrapper); IPage entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal()); entityPage.setRecords(BeanUtil.copyToList(list, DirectiveOrderEntity.class)); return entityPage; @@ -76,7 +77,7 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl queryOrderInfoList(DirectiveOrderSubEntity directiveOrderSubEntity, HttpServletRequest req) { DirectiveOrderSub directiveOrderSub = new DirectiveOrderSub(); - BeanUtils.copyProperties(directiveOrderSubEntity,directiveOrderSub); + BeanUtils.copyProperties(directiveOrderSubEntity, directiveOrderSub); QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(directiveOrderSub, req.getParameterMap()); List list = directiveOrderSubMapper.selectList(queryWrapper); List list1 = new ArrayList<>(); @@ -92,17 +93,17 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("success",true); - map.put("message","操作成功"); - map.put("directiveOrder",directiveOrder); - map.put("directiveOrderSub",directiveOrderSub); + map.put("success", true); + map.put("message", "操作成功"); + map.put("directiveOrder", directiveOrder); + map.put("directiveOrderSub", directiveOrderSub); return map; } @@ -117,8 +118,8 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl list = directiveOrderSubMapper.selectList(new QueryWrapper().eq("main_id",directiveOrder.getId()).ne("iz_finish","Y")); - if(list.size()==0){ + List list = directiveOrderSubMapper.selectList(new QueryWrapper().eq("main_id", directiveOrder.getId()).ne("iz_finish", "Y")); + if (list.size() == 0) { directiveOrder.setIzFinish("Y"); directiveOrder.setFinishTime(new Date()); DirectiveOrder directivePrice = baseMapper.getDirectivePrice(directiveOrder.getDirectiveId());//获取服务指令价格 @@ -129,54 +130,54 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("success",true); - map.put("message","操作成功"); - map.put("directiveOrder",directiveOrder); - map.put("directiveOrderSub",directiveOrderSub); + map.put("success", true); + map.put("message", "操作成功"); + map.put("directiveOrder", directiveOrder); + map.put("directiveOrderSub", directiveOrderSub); return map; } @Override public IPage queryWorkOrderList(Integer pageNo, Integer pageSize, DirectiveOrderEntity directiveOrderEntity, HttpServletRequest req) { DirectiveOrder directiveOrder = new DirectiveOrder(); - BeanUtils.copyProperties(directiveOrderEntity,directiveOrder); + BeanUtils.copyProperties(directiveOrderEntity, directiveOrder); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("nu_id",directiveOrderEntity.getNuId()); - queryWrapper.eq(StringUtils.isNotBlank(directiveOrderEntity.getEmployeeId()),"employee_id",directiveOrderEntity.getEmployeeId()); + queryWrapper.eq("nu_id", directiveOrderEntity.getNuId()); + queryWrapper.eq(StringUtils.isNotBlank(directiveOrderEntity.getEmployeeId()), "employee_id", directiveOrderEntity.getEmployeeId()); // 方法1: 使用between查询 LocalDateTime todayStart = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0); LocalDateTime todayEnd = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59); queryWrapper.between("start_time", todayStart, todayEnd); /**工单类型 1待执行 2已执行 3已完成 4已过期 5待执行或者已执行未完成 空是全部*/ - if(StringUtils.equals("1",directiveOrderEntity.getWorkType())){ - queryWrapper.eq("iz_start","N"); - queryWrapper.eq("iz_finish","N"); + if (StringUtils.equals("1", directiveOrderEntity.getWorkType())) { + queryWrapper.eq("iz_start", "N"); + queryWrapper.eq("iz_finish", "N"); queryWrapper.apply("start_time > now()"); queryWrapper.orderByAsc("start_time"); - }else if(StringUtils.equals("2",directiveOrderEntity.getWorkType())){ - queryWrapper.eq("iz_start","Y"); - queryWrapper.eq("iz_finish","N"); + } else if (StringUtils.equals("2", directiveOrderEntity.getWorkType())) { + queryWrapper.eq("iz_start", "Y"); + queryWrapper.eq("iz_finish", "N"); queryWrapper.orderByAsc("start_time"); - }else if(StringUtils.equals("3",directiveOrderEntity.getWorkType())){ - queryWrapper.eq("iz_start","Y"); - queryWrapper.eq("iz_finish","Y"); - }else if(StringUtils.equals("4",directiveOrderEntity.getWorkType())){ - queryWrapper.eq("iz_start","N"); - queryWrapper.eq("iz_finish","N"); + } else if (StringUtils.equals("3", directiveOrderEntity.getWorkType())) { + queryWrapper.eq("iz_start", "Y"); + queryWrapper.eq("iz_finish", "Y"); + } else if (StringUtils.equals("4", directiveOrderEntity.getWorkType())) { + queryWrapper.eq("iz_start", "N"); + queryWrapper.eq("iz_finish", "N"); queryWrapper.apply("start_time < now()"); - }else if(StringUtils.equals("5",directiveOrderEntity.getWorkType())){ + } else if (StringUtils.equals("5", directiveOrderEntity.getWorkType())) { queryWrapper.apply("((iz_start = 'N' and iz_finish='N') or (iz_start='Y' and iz_finish='N'))"); } Page page = new Page<>(pageNo, pageSize); - List list = baseMapper.selectList(page,queryWrapper); + List list = baseMapper.selectList(page, queryWrapper); IPage entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal()); entityPage.setRecords(BeanUtil.copyToList(list, DirectiveOrderEntity.class)); return entityPage; } @Override - public int queryTodayFinishedTotal(String type,String nuId, String elderId) { - return baseMapper.queryTodayFinishedTotal(type,nuId, elderId); + public int queryTodayFinishedTotal(String type, String nuId, String elderId) { + return baseMapper.queryTodayFinishedTotal(type, nuId, elderId); } @Override @@ -196,8 +197,8 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("success",true); - map.put("message","操作成功"); + map.put("success", true); + map.put("message", "操作成功"); return map; } @@ -208,21 +209,77 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("success",true); - map.put("message","操作成功"); + map.put("success", true); + map.put("message", "操作成功"); return map; } /** * 生成即时服务指令工单 + * * @param directiveOrderEntity * @return */ @Override - public Map generateOrdersInstant(DirectiveOrderEntity directiveOrderEntity){ + public Map generateOrdersInstant(DirectiveOrderEntity directiveOrderEntity) { DirectiveOrder directiveOrder = new DirectiveOrder(); - BeanUtils.copyProperties(directiveOrderEntity,directiveOrder); + BeanUtils.copyProperties(directiveOrderEntity, directiveOrder); return directiveOrderService.generateOrdersInstant(directiveOrder); } + @Override + public void transferOrder(DirectiveOrderSubEntity dto) { + DirectiveOrder main = new DirectiveOrder(); + DirectiveOrderSub sub = new DirectiveOrderSub(); + + String optType = "3";//转单 + + //执行类型 + main.setOptType(optType); + sub.setOptType(optType); + //主要执行人 + main.setEmployeeId(dto.getEmployeeId()); + main.setEmployeeName(dto.getEmployeeName()); + sub.setEmployeeId(dto.getEmployeeId()); + sub.setEmployeeName(dto.getEmployeeName()); + //实际执行人 + main.setOptIds(dto.getEmployeeId()); + main.setOptNames(dto.getEmployeeName()); + sub.setOptIds(dto.getEmployeeId()); + sub.setOptNames(dto.getEmployeeName()); + + //修改主表 + main.setId(dto.getMainId()); + directiveOrderService.updateById(main); + //修改子表 + UpdateWrapper subUW = new UpdateWrapper<>(); + subUW.eq("main_id",dto.getMainId()); + directiveOrderSubMapper.update(sub,subUW); + } + + + @Override + public void assistOrder(DirectiveOrderSubEntity dto) { + DirectiveOrder main = new DirectiveOrder(); + DirectiveOrderSub sub = new DirectiveOrderSub(); + + String optType = "2";//协助 + + //执行类型 + main.setOptType(optType); + sub.setOptType(optType); + //实际执行人 + main.setOptIds(dto.getOptIds()); + main.setOptNames(dto.getOptNames()); + sub.setOptIds(dto.getOptIds()); + sub.setOptNames(dto.getOptNames()); + + //修改主表 + main.setId(dto.getMainId()); + directiveOrderService.updateById(main); + //修改子表 + UpdateWrapper subUW = new UpdateWrapper<>(); + subUW.eq("main_id",dto.getMainId()); + directiveOrderSubMapper.update(sub,subUW); + } } 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 2/6] =?UTF-8?q?=E6=B4=BE=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=8C=87=E4=BB=A4=E5=B7=A5=E5=8D=95=E6=97=B6=E5=8F=91=E9=80=81?= =?UTF-8?q?websocket?= 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(); From 4190b077b98fde3ee6497c6d7d714e8f001505a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Mon, 12 Jan 2026 17:13:04 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4-?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=8D=B3=E6=97=B6=E6=8C=87=E4=BB=A4=E5=B7=A5?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IInvoicingDataPoolService.java | 3 - .../order/mapper/DirectiveOrderMapper.java | 2 + .../order/mapper/DirectiveOrderSubMapper.java | 4 + .../order/mapper/xml/DirectiveOrderMapper.xml | 20 +- .../mapper/xml/DirectiveOrderSubMapper.xml | 54 ++++ .../service/IDirectiveOrderSubService.java | 4 + .../impl/DirectiveOrderServiceImpl.java | 243 ++++++++++++++++-- .../impl/DirectiveOrderSubServiceImpl.java | 10 + .../impl/CareDirectivePlanServiceImpl.java | 12 - 9 files changed, 318 insertions(+), 34 deletions(-) diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/datapool/service/IInvoicingDataPoolService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/datapool/service/IInvoicingDataPoolService.java index a3f99200..ec14ef99 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/datapool/service/IInvoicingDataPoolService.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/datapool/service/IInvoicingDataPoolService.java @@ -37,7 +37,4 @@ public interface IInvoicingDataPoolService extends IService { */ void editDataPool(InvoicingDirectivePlan invoicingDirectivePlan); -// Result addInstant(InvoicingDataPool dataPool); - - } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderMapper.java index c651c589..8366d6b8 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderMapper.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderMapper.java @@ -38,4 +38,6 @@ public interface DirectiveOrderMapper extends BaseMapper { List queryCurrent(@Param("dto") CareDirectiveEntity dto); DirectiveOrder getDirectiveById(DirectiveOrder orders); + + DirectiveOrder getEmployeeById(@Param("employeeId") String employeeId); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderSubMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderSubMapper.java index 15122167..c230e0e6 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderSubMapper.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/DirectiveOrderSubMapper.java @@ -3,6 +3,8 @@ package com.nu.modules.biz.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.nu.modules.biz.order.entity.DirectiveOrder; import com.nu.modules.biz.order.entity.DirectiveOrderSub; +import org.apache.ibatis.annotations.Param; + import java.util.List; /** @@ -13,4 +15,6 @@ import java.util.List; */ public interface DirectiveOrderSubMapper extends BaseMapper { List queryDataPoolSubList(DirectiveOrder orders); + List getDirectiveList(@Param("directiveId") String directiveId); + List getSubDirectiveList(@Param("packageId") String packageId); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderMapper.xml index 1eb09706..ac871413 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderMapper.xml +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderMapper.xml @@ -116,6 +116,7 @@ select - id, - nu_id as nuId, - nu_name as nuName, + m.id as bizId, + m.nu_id as nuId, + m.nu_name as nuName, elder_id as elderId, elder_name as elderName, directive_id as directiveId, directive_name as directiveName, + '3' as cycleTypeId, + (select item_text from sys_dict_item where dict_id = '1900374791386140674' and item_value = '3') as cycleType, preview_file as previewFile, net_preview_file as netPreviewFile, preview_file_small as previewFileSmall, @@ -443,9 +446,18 @@ net_mp4_file as netMp4File, service_duration as serviceDuration, service_content as serviceContent, - iz_package + iz_package, + (case when b.orderly is null then 2 else 1 end) as orderEmp from ${tableName} m + left join nu_biz_elder_info b on m.elder_id = b.id where m.id = #{id} + + diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderSubMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderSubMapper.xml index 5458a351..9b915f0e 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderSubMapper.xml +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/mapper/xml/DirectiveOrderSubMapper.xml @@ -5,6 +5,7 @@ + + + + \ No newline at end of file diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/IDirectiveOrderSubService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/IDirectiveOrderSubService.java index d16a877c..fdf68521 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/IDirectiveOrderSubService.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/order/service/IDirectiveOrderSubService.java @@ -3,6 +3,8 @@ package com.nu.modules.biz.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.nu.modules.biz.order.entity.DirectiveOrder; import com.nu.modules.biz.order.entity.DirectiveOrderSub; +import org.apache.ibatis.annotations.Param; + import java.util.List; /** @@ -13,4 +15,6 @@ import java.util.List; */ public interface IDirectiveOrderSubService extends IService { List queryDataPoolSubList(DirectiveOrder orders); + List getDirectiveList(String directiveId); + List getSubDirectiveList(String packageId); } 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 505392fb..e6db5cd6 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 @@ -50,6 +50,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl ruleSubList; private String allowedTimeout; + private String serverNetUrl; @Autowired private SdWebsocket sdWebsocket; @@ -167,8 +168,8 @@ 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) { - String orderNo = getOrderNo(); + DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),employeeIds,orders.getStartTime()); + if(employee!=null){ + String orderNo = getOrderNo(orders.getOrderType()); orders.setOrderNo(orderNo); orders.setEmployeeId(employee.getEmployeeId()); orders.setEmployeeName(employee.getEmployeeName()); @@ -223,7 +227,10 @@ public class DirectiveOrderServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); qw.likeRight("order_no", todayPrefix); qw.select("order_no"); @@ -668,19 +688,212 @@ public class DirectiveOrderServiceImpl extends ServiceImpl packageSubList = null; + String employeeId = ""; + String employeeName = ""; + Calendar c = Calendar.getInstance(); + Date startTime = c.getTime(); + String duration = orders.getServiceDuration(); + if(duration.equals("")||duration.equals("0")){ + c.set(Calendar.YEAR,3000); + c.set(Calendar.MONTH,Calendar.DECEMBER); + c.set(Calendar.DAY_OF_MONTH,31); + c.set(Calendar.HOUR_OF_DAY,0); + c.set(Calendar.MINUTE,0); + c.set(Calendar.SECOND,0); + c.set(Calendar.MILLISECOND,0); + }else{ + c.add(Calendar.MINUTE,Integer.valueOf(duration)); + } + Date endTime = c.getTime(); + orders.setStartTime(startTime); + orders.setEndTime(endTime); + if(orders.getIzPackage().equals("N")){ + packageSubList = ordersSubService.getDirectiveList(orders.getDirectiveId()); + String directiveIds = packageSubList.stream().map(DirectiveOrderSub::getDirectiveId).collect(Collectors.joining(",")); + if(!directiveOrder.getTriggerMode().equals("1")){ + DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),null,orders.getStartTime()); + employeeId = employee.getEmployeeId(); + employeeName = employee.getEmployeeName(); + } + }else{ + orders.setPackageId(orders.getDirectiveId()); + orders.setPackageName(orders.getDirectiveName()); + orders.setDirectiveId(null); + orders.setDirectiveName(null); + packageSubList = ordersSubService.getSubDirectiveList(orders.getPackageId()); + String directiveIds = packageSubList.stream().map(DirectiveOrderSub::getDirectiveId).collect(Collectors.joining(",")); + if(!directiveOrder.getTriggerMode().equals("1")){ + List emps = baseMapper.getPermissionEmps(directiveIds);//获取服务标签中的员工和数量 + if(packageSubList!=null){ + int size = packageSubList.size(); + emps.removeIf(data -> data.getOwnCn() < size);//删除没有权限的数据 + } + String employeeIds = emps.stream().map(DirectiveOrder::getEmployeeId).collect(Collectors.joining(",")); + DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),employeeIds,orders.getStartTime()); + employeeId = employee.getEmployeeId(); + employeeName = employee.getEmployeeName(); + } + } if (directiveOrder.getTriggerMode().equals("1")) { //直接派单给发起人 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - String employeeId = sysUser.getEmployessId(); - } else { - //按规则派单 - getSendOrderRule(); - + employeeId = sysUser.getEmployessId(); + employeeName = getEmployeeName(employeeId); } + + getNetImages(orders); + String orderNo = getOrderNo(orderType); + orders.setOrderNo(orderNo); + orders.setOrderType(orderType); + orders.setOptType("1"); + orders.setEmployeeId(employeeId); + orders.setEmployeeName(employeeName); + orders.setIzStart("N"); + orders.setIzFinish("N"); + orders.setOptIds(employeeId); + orders.setOptNames(employeeName); + orders.setServiceAllowedTimeout(allowedTimeout); + orders.setDelFlag("0"); + this.save(orders);//生成工单主表 + if(packageSubList!=null){ + for(int i=0;i queryDataPoolSubList(DirectiveOrder orders){ return baseMapper.queryDataPoolSubList(orders); } + + @Override + public List getDirectiveList(String directiveId){ + return baseMapper.getDirectiveList(directiveId); + } + + @Override + public List getSubDirectiveList(String packageId){ + return baseMapper.getSubDirectiveList(packageId); + } } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java index 62e435b2..cdefabcb 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/plan/care/service/impl/CareDirectivePlanServiceImpl.java @@ -363,18 +363,6 @@ public class CareDirectivePlanServiceImpl extends ServiceImpl Date: Tue, 13 Jan 2026 09:54:04 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4-?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=8D=B3=E6=97=B6=E6=8C=87=E4=BB=A4=E5=B7=A5?= =?UTF-8?q?=E5=8D=95bug=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/order/service/impl/DirectiveOrderServiceImpl.java | 8 ++++++++ 1 file changed, 8 insertions(+) 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 e6db5cd6..24fc139d 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 @@ -177,6 +177,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl emps = baseMapper.getPermissionEmps(directiveIds);//获取服务标签中的员工和数量 if(packageSubList!=null){ int size = packageSubList.size(); @@ -754,6 +760,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl Date: Tue, 13 Jan 2026 09:55:20 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4websock?= =?UTF-8?q?et=E5=8F=91=E6=B6=88=E6=81=AF=E5=A2=9E=E5=8A=A0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/nu/websocket/WebSocketMessageController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/WebSocketMessageController.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/WebSocketMessageController.java index ad1e638b..118faf91 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/WebSocketMessageController.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/WebSocketMessageController.java @@ -80,6 +80,7 @@ public class WebSocketMessageController { } catch (Exception e) { log.error("发送消息失败", e); + e.printStackTrace(); return Result.error("发送失败: " + e.getMessage()); } } From d635db503abc16cb2b552d26e17878b97f3b8e73 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Tue, 13 Jan 2026 10:10:04 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=AE=8C=E5=96=84websocket=E5=8F=91?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nu/websocket/SdWebsocket.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java index c952eb26..5f4693d1 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java @@ -112,9 +112,25 @@ public class SdWebsocket { * @param message */ public void sendMessage(String userId, String message) { - log.info("【系统 SdWebsocket】广播,userId:"+userId+",消息:"+message); + log.info("【系统 SdWebsocket】向用户 {} 发送消息: {}", userId, message); + + // 打印所有在线用户 + StringBuilder userList = new StringBuilder(); + for (String user : sessionPool.keySet()) { + if (userList.length() > 0) { + userList.append(", "); + } + userList.append(user); + } + log.info("【系统 SdWebsocket】当前在线用户: [{}] 共 {} 人", userList.toString(), sessionPool.size()); + Session session = sessionPool.get(userId); - session.getAsyncRemote().sendText(message); + if (session != null && session.isOpen()) { + session.getAsyncRemote().sendText(message); + log.debug("【系统 SdWebsocket】消息发送成功"); + } else { + log.warn("【系统 SdWebsocket】用户 {} 不在线或连接已关闭,无法发送消息", userId); + } } /**