From 824bfd9140cd5f67a794c25bcff9b0bf451b9790 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com>
Date: Tue, 2 Dec 2025 13:31:56 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8B=A4=E7=B1=BB=E6=B4=BE=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/xml/LogisticsDataPoolMapper.xml | 6 +-
.../impl/LogisticsDataPoolServiceImpl.java | 84 ++---
.../order/entity/LogisticsOrders.java | 155 +++++++++
.../order/job/LogisticsOrdersJob.java | 27 ++
.../order/mapper/LogisticsOrdersMapper.java | 21 ++
.../mapper/xml/LogisticsOrdersMapper.xml | 104 ++++++
.../service/ILogisticsOrdersService.java | 15 +
.../impl/LogisticsOrdersServiceImpl.java | 319 ++++++++++++++++++
...zNuCustomerLogisticsServerServiceImpl.java | 11 +-
9 files changed, 683 insertions(+), 59 deletions(-)
create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/entity/LogisticsOrders.java
create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/job/LogisticsOrdersJob.java
create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/LogisticsOrdersMapper.java
create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/xml/LogisticsOrdersMapper.xml
create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/ILogisticsOrdersService.java
create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/impl/LogisticsOrdersServiceImpl.java
diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/mapper/xml/LogisticsDataPoolMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/mapper/xml/LogisticsDataPoolMapper.xml
index 63e9187..3ff750f 100644
--- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/mapper/xml/LogisticsDataPoolMapper.xml
+++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/mapper/xml/LogisticsDataPoolMapper.xml
@@ -256,7 +256,7 @@
start_time,
end_time,
iz_start
- from nu_biz_nu_care_directive_order
+ from nu_biz_nu_logistics_directive_order
where pool_id = #{id}
AND iz_start = #{izStart}
@@ -264,12 +264,12 @@
insert into ${tableName}
select a.*,#{remarks}
- from nu_biz_nu_care_directive_order a
+ from nu_biz_nu_logistics_directive_order a
where id = #{id}
- delete from nu_biz_nu_care_directive_order
+ delete from nu_biz_nu_logistics_directive_order
where id = #{id}
diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/service/impl/LogisticsDataPoolServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/service/impl/LogisticsDataPoolServiceImpl.java
index 06befa0..5c5cf1e 100644
--- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/service/impl/LogisticsDataPoolServiceImpl.java
+++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/datapool/service/impl/LogisticsDataPoolServiceImpl.java
@@ -28,10 +28,6 @@ import java.util.List;
@Service
@Slf4j
public class LogisticsDataPoolServiceImpl extends ServiceImpl implements ILogisticsDataPoolService {
-
- @Autowired
- private ISysConfigApi sysConfigApi;
- private String serverNetUrl;
/**
* 批量生成数据池
@@ -87,7 +83,8 @@ public class LogisticsDataPoolServiceImpl extends ServiceImpl1){
+ String[] values = cycleValue.split(",");
+ if(values[0].length()>1){
//月周期
addMonthDay(dataPool);
}else{
@@ -113,20 +110,25 @@ public class LogisticsDataPoolServiceImpl extends ServiceImpl0){
- cv = cv -7;
- }
- //计划执行星期几是当天,则入指令池
- if(dayOfWeek == cv){
- //入指令池主表
- this.save(dataPool);
+ Integer cv = Integer.valueOf(value);
+ //处理js星期,使其能和java的星期进行比较
+ cv = cv + 2;
+ if(cv-7>0){
+ cv = cv -7;
+ }
+ //计划执行星期几是当天,则入指令池
+ if(dayOfWeek == cv){
+ //入指令池主表
+ this.save(dataPool);
+ }
}
+
}
/**
@@ -134,18 +136,20 @@ public class LogisticsDataPoolServiceImpl extends ServiceImpl result = service.generateOrdersBatch();
+ log.error("OrdersJob:{}-{}", DateUtils.now(),result.getMessage());
+ }
+}
diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/LogisticsOrdersMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/LogisticsOrdersMapper.java
new file mode 100644
index 0000000..39b07c6
--- /dev/null
+++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/LogisticsOrdersMapper.java
@@ -0,0 +1,21 @@
+package com.nu.modules.biz.logistics.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nu.modules.biz.logistics.order.entity.LogisticsOrders;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: 后勤类服务指令工单主表
+ * @Author: caolei
+ * @Date: 2025-11-18
+ * @Version: V1.0
+ */
+public interface LogisticsOrdersMapper extends BaseMapper {
+ List queryDataPoolList(LogisticsOrders orders);
+ List getEmpPermissionAndOnline(@Param("directiveId") String directiveId, @Param("startTime") Date startTime);
+ LogisticsOrders getEmpOrderly(@Param("customerId") String customerId);
+ List getPermissionEmps(@Param("directiveIds") String directiveIds);
+}
diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/xml/LogisticsOrdersMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/xml/LogisticsOrdersMapper.xml
new file mode 100644
index 0000000..7946453
--- /dev/null
+++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/mapper/xml/LogisticsOrdersMapper.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/ILogisticsOrdersService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/ILogisticsOrdersService.java
new file mode 100644
index 0000000..5a8e08f
--- /dev/null
+++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/ILogisticsOrdersService.java
@@ -0,0 +1,15 @@
+package com.nu.modules.biz.logistics.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.nu.modules.biz.logistics.order.entity.LogisticsOrders;
+import org.jeecg.common.api.vo.Result;
+
+/**
+ * @Description: 后勤类服务指令工单主表
+ * @Author: caolei
+ * @Date: 2025-12-1
+ * @Version: V1.0
+ */
+public interface ILogisticsOrdersService extends IService {
+ Result> generateOrdersBatch();
+}
diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/impl/LogisticsOrdersServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/impl/LogisticsOrdersServiceImpl.java
new file mode 100644
index 0000000..9f4b7b7
--- /dev/null
+++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/order/service/impl/LogisticsOrdersServiceImpl.java
@@ -0,0 +1,319 @@
+package com.nu.modules.biz.logistics.order.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.nu.modules.biz.logistics.order.entity.LogisticsOrders;
+import com.nu.modules.biz.logistics.order.mapper.LogisticsOrdersMapper;
+import com.nu.modules.biz.logistics.order.service.ILogisticsOrdersService;
+import com.nu.modules.config.sendorderpriority.entity.SendOrderRule;
+import com.nu.modules.config.sendorderpriority.service.ISendOrderRuleService;
+import com.nu.modules.mediamanage.entity.MediaManage;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 后勤类服务指令工单主表
+ * @Author: caolei
+ * @Date: 2025-12-1
+ * @Version: V1.0
+ */
+@Service
+@Slf4j
+public class LogisticsOrdersServiceImpl extends ServiceImpl implements ILogisticsOrdersService {
+
+ @Autowired
+ ISendOrderRuleService sendOrderRuleService;
+
+ /**
+ * 获取在线,有指令权限的员工,并获取员工的接单上限、收益、服务时长、单次
+ * @param directiveId
+ * @return
+ */
+ private List getEmpPermissionAndOnline(String directiveId, Date startTime){
+ return baseMapper.getEmpPermissionAndOnline(directiveId,startTime);
+ }
+
+ /**
+ * 获取长者指定所有护理员
+ * @param customerId
+ * @return
+ */
+ private Map getEmpOrderly(String customerId){
+ Map map = null;
+ LogisticsOrders orders = baseMapper.getEmpOrderly(customerId);
+ if(orders!=null){
+ String empIds = orders.getEmployeeIds();
+ if(empIds!=null&&!empIds.equals("")){
+ String[] pairs = empIds.split(",");
+ if(pairs.length>0){
+ map = new HashMap<>();
+ for (String pair : pairs) {
+ map.put(pair, pair);
+ }
+ }
+ }
+ }
+ return map;
+ }
+
+ /**
+ * 指令池批量生成工单-定时调用
+ * @return
+ */
+ @Override
+ public Result> generateOrdersBatch(){
+ List ordersList = baseMapper.queryDataPoolList(null);
+ for(int i=0;i qw = new QueryWrapper<>();
+ qw.eq("izEnabled", "Y");
+ SendOrderRule one = sendOrderRuleService.getOne(qw);
+ if(one.getPriorityCode().equals("1")){
+ return getByPriority();
+ }
+ if(one.getPriorityCode().equals("2")){
+ return getByHeadCount();
+ }
+ if(one.getPriorityCode().equals("3")){
+ return getBySpecial();
+ }
+
+ List empList = getEmpPermissionAndOnline(directiveId,startTime);
+ Map orderlyMap = getEmpOrderly(customerId);
+ if(empList.size()>0){
+ for(int i=0;i empList) {
+ // 根据orderNum倒序排序,并为level顺序赋值
+ List sortedEmployees = empList.stream()
+ .sorted(Comparator.comparing(LogisticsOrders::getOrderNum).reversed())
+ .collect(Collectors.toList());
+
+ // 为level字段顺序赋值1,2,3...
+ for (int i = 0; i < sortedEmployees.size(); i++) {
+ Integer levle = sortedEmployees.get(i).getLevel()+i+1;
+ sortedEmployees.get(i).setLevel(levle);
+ }
+
+ // 如果需要返回新列表,可以返回sortedEmployees
+ // 如果要在原列表上修改,可以清空原列表并添加所有元素
+ empList.clear();
+ empList.addAll(sortedEmployees);
+ }
+
+ /**
+ * 通过总收益排序数据来设置优先级
+ * @param empList
+ */
+ public void sortByPriceAndSetLevel(List empList) {
+ // 根据totalComPrice倒序排序,并为level顺序赋值
+ List sortedEmployees = empList.stream()
+ .sorted(Comparator.comparing(LogisticsOrders::getTotalComPrice).reversed())
+ .collect(Collectors.toList());
+
+ // 为level字段顺序赋值1,2,3...
+ for (int i = 0; i < sortedEmployees.size(); i++) {
+ Integer levle = sortedEmployees.get(i).getLevel()+i+1;
+ sortedEmployees.get(i).setLevel(levle);
+ }
+
+ // 如果需要返回新列表,可以返回sortedEmployees
+ // 如果要在原列表上修改,可以清空原列表并添加所有元素
+ empList.clear();
+ empList.addAll(sortedEmployees);
+ }
+
+ /**
+ * 通过服务时长排序数据来设置优先级
+ * @param empList
+ */
+ public void sortByDurationAndSetLevel(List empList) {
+ // 根据totalDuration倒序排序,并为level顺序赋值
+ List sortedEmployees = empList.stream()
+ .sorted(Comparator.comparing(LogisticsOrders::getTotalDuration).reversed())
+ .collect(Collectors.toList());
+
+ // 为level字段顺序赋值1,2,3...
+ for (int i = 0; i < sortedEmployees.size(); i++) {
+ Integer levle = sortedEmployees.get(i).getLevel()+i+1;
+ sortedEmployees.get(i).setLevel(levle);
+ }
+
+ // 如果需要返回新列表,可以返回sortedEmployees
+ // 如果要在原列表上修改,可以清空原列表并添加所有元素
+ empList.clear();
+ empList.addAll(sortedEmployees);
+ }
+
+ /**
+ * 通过最后一次接收派单时间排序数据来设置优先级
+ * @param empList
+ */
+ public void sortByMaxTimeAndSetLevel(List empList) {
+ // 根据maxTime倒序排序,并为level顺序赋值
+ List sortedEmployees = empList.stream()
+ .sorted(Comparator.comparing(
+ LogisticsOrders::getMaxTime,
+ Comparator.nullsLast(Comparator.reverseOrder())
+ ))
+ .collect(Collectors.toList());
+
+ // 为level字段顺序赋值1,2,3...
+ for (int i = 0; i < sortedEmployees.size(); i++) {
+ Integer levle = sortedEmployees.get(i).getLevel()+i+1;
+ sortedEmployees.get(i).setLevel(levle);
+ }
+
+ // 如果需要返回新列表,可以返回sortedEmployees
+ // 如果要在原列表上修改,可以清空原列表并添加所有元素
+ empList.clear();
+ empList.addAll(sortedEmployees);
+ }
+
+ /**
+ * 按优先级排序数据
+ * @param empList
+ */
+ public void sortByLevel(List empList) {
+ for (int i = 0; i < empList.size(); i++) {
+ //工单超出接单上限,降4N级
+ if(empList.get(i).getOwnCn()>=empList.get(i).getOrderCap()){
+ Integer levle = empList.get(i).getLevel()-empList.size()*4;
+ empList.get(i).setLevel(levle);
+ }
+ }
+ //为level顺序
+ List sortedEmployees = empList.stream()
+ .sorted(Comparator.comparing(LogisticsOrders::getLevel).reversed())
+ .collect(Collectors.toList());
+
+ // 如果需要返回新列表,可以返回sortedEmployees
+ // 如果要在原列表上修改,可以清空原列表并添加所有元素
+ empList.clear();
+ empList.addAll(sortedEmployees);
+ }
+}
diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/plan/service/impl/PlanBizNuCustomerLogisticsServerServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/plan/service/impl/PlanBizNuCustomerLogisticsServerServiceImpl.java
index c90bd64..f8211bf 100644
--- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/plan/service/impl/PlanBizNuCustomerLogisticsServerServiceImpl.java
+++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/biz/logistics/plan/service/impl/PlanBizNuCustomerLogisticsServerServiceImpl.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.entity.LogisticsDirectiveEntity;
+import com.nu.modules.biz.logistics.datapool.service.ILogisticsDataPoolService;
import com.nu.modules.biz.logistics.plan.entity.PlanBizNuCustomerLogisticsServer;
import com.nu.modules.biz.logistics.plan.mapper.PlanBizNuCustomerLogisticsServerMapper;
import com.nu.modules.biz.logistics.plan.service.IPlanBizNuCustomerLogisticsServerService;
@@ -27,8 +28,8 @@ public class PlanBizNuCustomerLogisticsServerServiceImpl extends ServiceImpl getPlanList(LogisticsDirectiveEntity logisticsDirectiveEntity) {
@@ -50,7 +51,7 @@ public class PlanBizNuCustomerLogisticsServerServiceImpl extends ServiceImpl