退货指令列表查询:返回结果增加操作历史
This commit is contained in:
parent
d784dc8862
commit
d46423ec1c
|
|
@ -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;//操作节点名称
|
||||
}
|
||||
|
|
@ -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<InvoicingThdLogEntity> logList;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<NuInvoicingThdLog> {
|
||||
|
||||
List<InvoicingThdLogEntity> selectLogsByThdNos(@Param("thdIds") List<String> thdIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,4 +2,19 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nu.modules.thd.mapper.NuInvoicingThdLogMapper">
|
||||
|
||||
</mapper>
|
||||
<select id="selectLogsByThdNos" resultType="com.nu.entity.InvoicingThdLogEntity">
|
||||
SELECT
|
||||
log.*,
|
||||
emp.realname AS opeByName,
|
||||
logStatus.item_text AS statusText
|
||||
FROM nu_invoicing_thd_log log
|
||||
LEFT JOIN sys_user emp ON log.ope_by = emp.id
|
||||
LEFT JOIN sys_dict dict ON dict.dict_code = 'thd_status'
|
||||
LEFT JOIN sys_dict_item logStatus ON logStatus.dict_id = dict.id AND logStatus.item_value = log.status
|
||||
WHERE log.thd_id IN
|
||||
<foreach collection="thdIds" item="thdId" open="(" separator="," close=")">
|
||||
#{thdId}
|
||||
</foreach>
|
||||
ORDER BY log.create_time asc
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -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<InvoicingThdMainEntity> thdList(Integer pageNo, Integer pageSize, InvoicingThdMainEntity dto) {
|
||||
// 退货指令(退货单)
|
||||
Page<NuInvoicingThdMain> page = new Page<>(pageNo, pageSize);
|
||||
return thdMainMapper.thdList(page, dto);
|
||||
IPage<InvoicingThdMainEntity> result = thdMainMapper.thdList(page, dto);
|
||||
|
||||
// 操作日志
|
||||
List<InvoicingThdMainEntity> mainList = result.getRecords();
|
||||
if (!CollectionUtils.isEmpty(mainList)) {
|
||||
List<String> ids = mainList.stream().map(InvoicingThdMainEntity::getId).collect(Collectors.toList());
|
||||
List<InvoicingThdLogEntity> logList = thdLogMapper.selectLogsByThdNos(ids);
|
||||
|
||||
// 按 thdId 分组日志
|
||||
Map<String, List<InvoicingThdLogEntity>> 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<InvoicingThdLogEntity> 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<InvoicingThdGwcEntity> 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<BlWarehouseMaterialInfo> kcQW = new QueryWrapper<>();
|
||||
kcQW.in("wl_id", wlList);
|
||||
List<BlWarehouseMaterialInfo> kfnumList = warehouseMaterialInfoService.list(kcQW);
|
||||
Map<String, Map<String, String>> kfWlSlMap = kfnumList.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
BlWarehouseMaterialInfo::getNuId,
|
||||
Collectors.toMap(
|
||||
BlWarehouseMaterialInfo::getWlId,
|
||||
BlWarehouseMaterialInfo::getKcsl
|
||||
)
|
||||
));
|
||||
Map<String, Map<String, String>> kfWlSlMap = kfnumList.stream().collect(Collectors.groupingBy(BlWarehouseMaterialInfo::getNuId, Collectors.toMap(BlWarehouseMaterialInfo::getWlId, BlWarehouseMaterialInfo::getKcsl)));
|
||||
List<NuWarehouseMaterialCrkInfo> 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<String, Integer> thdWlNumMap = infoList.stream()
|
||||
.collect(Collectors.toMap(NuInvoicingThdInfo::getWlId, NuInvoicingThdInfo::getThNum));
|
||||
Map<String, Integer> thdWlNumMap = infoList.stream().collect(Collectors.toMap(NuInvoicingThdInfo::getWlId, NuInvoicingThdInfo::getThNum));
|
||||
List<BlWarehouseMaterialInfo> kfUpdateList = Lists.newArrayList();
|
||||
kfnumList.stream().forEach(item -> {
|
||||
if (thdWlNumMap.get(item.getWlId()) != null) {
|
||||
|
|
@ -389,8 +410,7 @@ public class ThdServiceImpl implements ITuiHuoApi {
|
|||
List<NuInvoicingNuKcsl> nuKcslList = invoicingNuKcslService.list(nuKcslQW);
|
||||
List<NuInvoicingNuKcsl> needUpdateList = Lists.newArrayList();
|
||||
if (!CollectionUtils.isEmpty(nuKcslList)) {
|
||||
Map<String, NuInvoicingNuKcsl> nuKcslMap = nuKcslList.stream()
|
||||
.collect(Collectors.toMap(NuInvoicingNuKcsl::getWlId, kcsl -> kcsl));
|
||||
Map<String, NuInvoicingNuKcsl> nuKcslMap = nuKcslList.stream().collect(Collectors.toMap(NuInvoicingNuKcsl::getWlId, kcsl -> kcsl));
|
||||
infoList.stream().forEach(item -> {
|
||||
NuInvoicingNuKcsl nuInvoicingNuKcsl = new NuInvoicingNuKcsl();
|
||||
nuInvoicingNuKcsl.setNuId(item.getNuId());
|
||||
|
|
|
|||
Loading…
Reference in New Issue