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