diff --git a/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java index ae159559..c65fe117 100644 --- a/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java +++ b/nursing-unit-common/src/main/java/com/nu/entity/DirectiveOrderEntity.java @@ -324,4 +324,10 @@ public class DirectiveOrderEntity implements Serializable { */ @TableField(exist = false) private java.math.BigDecimal totalPrice; + + /** + * 指令集子列表(用于存储同一个指令集下的多个指令) + */ + @TableField(exist = false) + private List directiveList; } 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 40e705fd..4f7c4088 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 @@ -586,7 +586,9 @@ ) - ORDER BY t.serv_start_time ASC + ORDER BY t.serv_start_time ASC, + CASE WHEN t.service_attribute = 'ds' THEN 0 ELSE 1 END, + CASE WHEN CAST(t.service_duration AS UNSIGNED) = 0 THEN 999999 ELSE CAST(t.service_duration AS UNSIGNED) END 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 f1159841..143f509c 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 @@ -28,10 +28,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @Description: 服务指令工单主表 @@ -81,8 +78,92 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl queryOrderList(Integer pageNo, Integer pageSize, DirectiveOrderEntity directiveOrderEntity, HttpServletRequest req) { Page page = new Page<>(pageNo, pageSize); - //workType工单类型 1待执行 2已执行 3已完成 4已过期 5待执行或者已执行未完成 空是全部 - return baseMapper.queryOrderList(page, directiveOrderEntity); + + // 查询原始数据 + IPage resultPage = baseMapper.queryOrderList(page, directiveOrderEntity); + List records = resultPage.getRecords(); + + // 处理数据,将指令集合并 + List processedRecords = mergeDirectiveSet(records); + + // 重新设置处理后的数据 + resultPage.setRecords(processedRecords); + + return resultPage; + } + + /** + * 合并指令集数据 + * + * @param records 原始查询结果 + * @return 处理后的结果集 + */ + private List mergeDirectiveSet(List records) { + if (records == null || records.isEmpty()) { + return records; + } + + // 用于存储合并后的结果 + List result = new ArrayList<>(); + // 用于临时存储指令集的主对象(key: serv_start_time) + Map directiveSetMap = new LinkedHashMap<>(); + + for (DirectiveOrderEntity entity : records) { + // 判断是否是指令集(iz_multi = 'Y') + if ("Y".equals(entity.getIzMulti())) { + // 使用serv_start_time作为key + String key = entity.getServStartTime() != null ? entity.getServStartTime().toString() : ""; + + DirectiveOrderEntity mainEntity = directiveSetMap.get(key); + if (mainEntity == null) { + // 创建新的主对象,只包含指定字段 + mainEntity = createDirectiveSetMainEntity(entity); + mainEntity.setDirectiveList(new ArrayList<>()); + directiveSetMap.put(key, mainEntity); + result.add(mainEntity); + } + // 将完整指令信息添加到子列表中 + mainEntity.getDirectiveList().add(entity); + } else { + // 非指令集,直接添加到结果中 + result.add(entity); + } + } + + return result; + } + + /** + * 创建指令集主对象(只包含必要的公共字段) + * + * @param source 源对象 + * @return 主对象 + */ + private DirectiveOrderEntity createDirectiveSetMainEntity(DirectiveOrderEntity source) { + DirectiveOrderEntity mainEntity = new DirectiveOrderEntity(); + + // 只设置你指定的公共字段 + mainEntity.setNuId(source.getNuId()); + mainEntity.setNuName(source.getNuName()); + mainEntity.setElderId(source.getElderId()); + mainEntity.setElderName(source.getElderName()); + mainEntity.setBodyTagIds(source.getBodyTagIds()); + mainEntity.setBodyTagNames(source.getBodyTagNames()); + mainEntity.setBodyTagPrice(source.getBodyTagPrice()); + mainEntity.setEmotionTagIds(source.getEmotionTagIds()); + mainEntity.setEmotionTagNames(source.getEmotionTagNames()); + mainEntity.setEmotionTagPrice(source.getEmotionTagPrice()); + mainEntity.setEmployeeId(source.getEmployeeId()); + mainEntity.setEmployeeName(source.getEmployeeName()); + mainEntity.setOptType(source.getOptType()); + mainEntity.setEmployeeIds(source.getEmployeeIds()); + mainEntity.setEmployeeNames(source.getEmployeeNames()); + mainEntity.setInstructionId(source.getInstructionId()); + mainEntity.setInstructionName(source.getInstructionName()); + mainEntity.setServStartTime(source.getServStartTime()); + mainEntity.setIzMulti(source.getIzMulti()); + + return mainEntity; } @Override