From d46423ec1c3400bf609f1d0a74353408bc82aa63 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Fri, 5 Dec 2025 09:37:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E8=B4=A7=E6=8C=87=E4=BB=A4=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2=EF=BC=9A=E8=BF=94=E5=9B=9E=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=A2=9E=E5=8A=A0=E6=93=8D=E4=BD=9C=E5=8E=86=E5=8F=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nu/entity/InvoicingThdLogEntity.java | 85 +++++++++++++++++++ .../com/nu/entity/InvoicingThdMainEntity.java | 3 + .../thd/mapper/NuInvoicingThdLogMapper.java | 10 ++- .../mapper/xml/NuInvoicingThdLogMapper.xml | 17 +++- .../thd/service/impl/ThdServiceImpl.java | 68 +++++++++------ 5 files changed, 154 insertions(+), 29 deletions(-) create mode 100644 nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdLogEntity.java diff --git a/nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdLogEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdLogEntity.java new file mode 100644 index 00000000..d3e61305 --- /dev/null +++ b/nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdLogEntity.java @@ -0,0 +1,85 @@ +package com.nu.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 进销存-退货-日志 + * @Author: jeecg-boot + * @Date: 2025-12-04 + * @Version: V1.0 + */ +@Data +public class InvoicingThdLogEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + /** + * createBy + */ + private String createBy; + /** + * createTime + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + /** + * updateBy + */ + private String updateBy; + /** + * updateTime + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + /** + * 退货单id nu_invoicing_thd_main.id + */ + private String thdId; + /** + * 退货单单号 + */ + private String thdNo; + /** + * 退货状态 0待执行 1已开始 2已入库 3已完成 + */ + private String status; + /** + * 操作人 + */ + private String opeBy; + /** + * 提交时间 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date opeTime; + /** + * nuid nu_base_info.nu_id + */ + private String nuId; + /** + * 长者id nu_biz_elder_info.id + */ + private String elderId; + + private String opeByName;//操作人 + private String statusText;//操作节点名称 +} diff --git a/nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdMainEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdMainEntity.java index b0d129ca..fe1c0e8f 100644 --- a/nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdMainEntity.java +++ b/nursing-unit-common/src/main/java/com/nu/entity/InvoicingThdMainEntity.java @@ -6,6 +6,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * @Description: 进销存-退货单-主表 @@ -97,4 +98,6 @@ public class InvoicingThdMainEntity implements Serializable { */ private String statusText; + private List logList; + } diff --git a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/NuInvoicingThdLogMapper.java b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/NuInvoicingThdLogMapper.java index 7e553ead..914bc7a9 100644 --- a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/NuInvoicingThdLogMapper.java +++ b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/NuInvoicingThdLogMapper.java @@ -1,10 +1,11 @@ package com.nu.modules.thd.mapper; -import java.util.List; - -import org.apache.ibatis.annotations.Param; -import com.nu.modules.thd.entity.NuInvoicingThdLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nu.entity.InvoicingThdLogEntity; +import com.nu.modules.thd.entity.NuInvoicingThdLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @Description: 进销存-退货-日志 @@ -14,4 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface NuInvoicingThdLogMapper extends BaseMapper { + List selectLogsByThdNos(@Param("thdIds") List thdIds); } diff --git a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/xml/NuInvoicingThdLogMapper.xml b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/xml/NuInvoicingThdLogMapper.xml index 96788c0d..6d36a8a5 100644 --- a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/xml/NuInvoicingThdLogMapper.xml +++ b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/mapper/xml/NuInvoicingThdLogMapper.xml @@ -2,4 +2,19 @@ - \ No newline at end of file + + diff --git a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/service/impl/ThdServiceImpl.java b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/service/impl/ThdServiceImpl.java index c08df2b2..e28483fa 100644 --- a/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/service/impl/ThdServiceImpl.java +++ b/nursing-unit-invoicing/nu-invoicing-biz/src/main/java/com/nu/modules/thd/service/impl/ThdServiceImpl.java @@ -6,11 +6,10 @@ 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.google.common.collect.Maps; -import com.nu.entity.InvoicingOrdersEntity; import com.nu.entity.InvoicingThdGwcEntity; +import com.nu.entity.InvoicingThdLogEntity; import com.nu.entity.InvoicingThdMainEntity; import com.nu.entity.NuKcslEntity; -import com.nu.modules.care.api.IInvoicingOrdersApi; import com.nu.modules.cgd.entity.NuWarehouseMaterialCrkInfo; import com.nu.modules.cgd.service.INuWarehouseMaterialCrkInfoService; import com.nu.modules.invoicing.api.ITuiHuoApi; @@ -19,9 +18,6 @@ import com.nu.modules.nu.entity.NuInvoicingNuKcsl; import com.nu.modules.nu.mapper.NuInvoicingNuKcslMapper; import com.nu.modules.nu.service.INuInvoicingNuCrkLogService; import com.nu.modules.nu.service.INuInvoicingNuKcslService; -import com.nu.modules.qld.entity.NuInvoicingQldInfo; -import com.nu.modules.qld.entity.NuInvoicingQldLog; -import com.nu.modules.qld.entity.NuInvoicingQldMain; import com.nu.modules.thd.entity.NuInvoicingThdGwc; import com.nu.modules.thd.entity.NuInvoicingThdInfo; import com.nu.modules.thd.entity.NuInvoicingThdLog; @@ -44,9 +40,7 @@ import org.springframework.util.CollectionUtils; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -81,8 +75,45 @@ public class ThdServiceImpl implements ITuiHuoApi { @Override public IPage thdList(Integer pageNo, Integer pageSize, InvoicingThdMainEntity dto) { + // 退货指令(退货单) Page page = new Page<>(pageNo, pageSize); - return thdMainMapper.thdList(page, dto); + IPage result = thdMainMapper.thdList(page, dto); + + // 操作日志 + List mainList = result.getRecords(); + if (!CollectionUtils.isEmpty(mainList)) { + List ids = mainList.stream().map(InvoicingThdMainEntity::getId).collect(Collectors.toList()); + List logList = thdLogMapper.selectLogsByThdNos(ids); + + // 按 thdId 分组日志 + Map> logGroupMap = logList.stream() + .collect(Collectors.groupingBy( + InvoicingThdLogEntity::getThdId, + Collectors.collectingAndThen( + Collectors.toList(), + logs -> logs.stream() + .sorted(Comparator.comparing(InvoicingThdLogEntity::getCreateTime)) // 时间正序 + .collect(Collectors.collectingAndThen( + Collectors.toList(), + list -> { + int size = list.size(); + return size <= 2 ? list : list.subList(size - 2, size); + } + )) + ) + )); + + // 为每个主表实体设置对应的日志列表 + for (InvoicingThdMainEntity main : mainList) { + List logsForMain = logGroupMap.getOrDefault(main.getId(), new ArrayList<>()); + main.setLogList(logsForMain); + } + + // 将处理后的主表列表放回结果中 + result.setRecords(mainList); + } + + return result; } @Override @@ -213,9 +244,7 @@ public class ThdServiceImpl implements ITuiHuoApi { //检测购物车各物料是否大于护理单元库存 List validateList = thdGwcMapper.validateNum(dto); if (!CollectionUtils.isEmpty(validateList)) { - String wls = validateList.stream() - .map(InvoicingThdGwcEntity::getF1) - .collect(Collectors.joining(",")); + String wls = validateList.stream().map(InvoicingThdGwcEntity::getF1).collect(Collectors.joining(",")); result.put("status", "wlError"); result.put("message", "以下物料退货数量大于护理单元库存数量:" + wls); return result; @@ -322,14 +351,7 @@ public class ThdServiceImpl implements ITuiHuoApi { QueryWrapper kcQW = new QueryWrapper<>(); kcQW.in("wl_id", wlList); List kfnumList = warehouseMaterialInfoService.list(kcQW); - Map> kfWlSlMap = kfnumList.stream() - .collect(Collectors.groupingBy( - BlWarehouseMaterialInfo::getNuId, - Collectors.toMap( - BlWarehouseMaterialInfo::getWlId, - BlWarehouseMaterialInfo::getKcsl - ) - )); + Map> kfWlSlMap = kfnumList.stream().collect(Collectors.groupingBy(BlWarehouseMaterialInfo::getNuId, Collectors.toMap(BlWarehouseMaterialInfo::getWlId, BlWarehouseMaterialInfo::getKcsl))); List kfCrkLogList = Lists.newArrayList(); for (int i = 0; i < infoList.size(); i++) { NuInvoicingThdInfo item = infoList.get(i); @@ -353,8 +375,7 @@ public class ThdServiceImpl implements ITuiHuoApi { warehouseMaterialCrkInfoService.saveBatch(kfCrkLogList); //库房库存调整 - Map thdWlNumMap = infoList.stream() - .collect(Collectors.toMap(NuInvoicingThdInfo::getWlId, NuInvoicingThdInfo::getThNum)); + Map thdWlNumMap = infoList.stream().collect(Collectors.toMap(NuInvoicingThdInfo::getWlId, NuInvoicingThdInfo::getThNum)); List kfUpdateList = Lists.newArrayList(); kfnumList.stream().forEach(item -> { if (thdWlNumMap.get(item.getWlId()) != null) { @@ -389,8 +410,7 @@ public class ThdServiceImpl implements ITuiHuoApi { List nuKcslList = invoicingNuKcslService.list(nuKcslQW); List needUpdateList = Lists.newArrayList(); if (!CollectionUtils.isEmpty(nuKcslList)) { - Map nuKcslMap = nuKcslList.stream() - .collect(Collectors.toMap(NuInvoicingNuKcsl::getWlId, kcsl -> kcsl)); + Map nuKcslMap = nuKcslList.stream().collect(Collectors.toMap(NuInvoicingNuKcsl::getWlId, kcsl -> kcsl)); infoList.stream().forEach(item -> { NuInvoicingNuKcsl nuInvoicingNuKcsl = new NuInvoicingNuKcsl(); nuInvoicingNuKcsl.setNuId(item.getNuId());