退货指令列表查询:返回结果增加操作历史
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.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 进销存-退货单-主表
|
* @Description: 进销存-退货单-主表
|
||||||
|
|
@ -97,4 +98,6 @@ public class InvoicingThdMainEntity implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String statusText;
|
private String statusText;
|
||||||
|
|
||||||
|
private List<InvoicingThdLogEntity> logList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
package com.nu.modules.thd.mapper;
|
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.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: 进销存-退货-日志
|
* @Description: 进销存-退货-日志
|
||||||
|
|
@ -14,4 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
*/
|
*/
|
||||||
public interface NuInvoicingThdLogMapper extends BaseMapper<NuInvoicingThdLog> {
|
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">
|
<!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 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.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.nu.entity.InvoicingOrdersEntity;
|
|
||||||
import com.nu.entity.InvoicingThdGwcEntity;
|
import com.nu.entity.InvoicingThdGwcEntity;
|
||||||
|
import com.nu.entity.InvoicingThdLogEntity;
|
||||||
import com.nu.entity.InvoicingThdMainEntity;
|
import com.nu.entity.InvoicingThdMainEntity;
|
||||||
import com.nu.entity.NuKcslEntity;
|
import com.nu.entity.NuKcslEntity;
|
||||||
import com.nu.modules.care.api.IInvoicingOrdersApi;
|
|
||||||
import com.nu.modules.cgd.entity.NuWarehouseMaterialCrkInfo;
|
import com.nu.modules.cgd.entity.NuWarehouseMaterialCrkInfo;
|
||||||
import com.nu.modules.cgd.service.INuWarehouseMaterialCrkInfoService;
|
import com.nu.modules.cgd.service.INuWarehouseMaterialCrkInfoService;
|
||||||
import com.nu.modules.invoicing.api.ITuiHuoApi;
|
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.mapper.NuInvoicingNuKcslMapper;
|
||||||
import com.nu.modules.nu.service.INuInvoicingNuCrkLogService;
|
import com.nu.modules.nu.service.INuInvoicingNuCrkLogService;
|
||||||
import com.nu.modules.nu.service.INuInvoicingNuKcslService;
|
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.NuInvoicingThdGwc;
|
||||||
import com.nu.modules.thd.entity.NuInvoicingThdInfo;
|
import com.nu.modules.thd.entity.NuInvoicingThdInfo;
|
||||||
import com.nu.modules.thd.entity.NuInvoicingThdLog;
|
import com.nu.modules.thd.entity.NuInvoicingThdLog;
|
||||||
|
|
@ -44,9 +40,7 @@ import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -81,8 +75,45 @@ public class ThdServiceImpl implements ITuiHuoApi {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<InvoicingThdMainEntity> thdList(Integer pageNo, Integer pageSize, InvoicingThdMainEntity dto) {
|
public IPage<InvoicingThdMainEntity> thdList(Integer pageNo, Integer pageSize, InvoicingThdMainEntity dto) {
|
||||||
|
// 退货指令(退货单)
|
||||||
Page<NuInvoicingThdMain> page = new Page<>(pageNo, pageSize);
|
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
|
@Override
|
||||||
|
|
@ -213,9 +244,7 @@ public class ThdServiceImpl implements ITuiHuoApi {
|
||||||
//检测购物车各物料是否大于护理单元库存
|
//检测购物车各物料是否大于护理单元库存
|
||||||
List<InvoicingThdGwcEntity> validateList = thdGwcMapper.validateNum(dto);
|
List<InvoicingThdGwcEntity> validateList = thdGwcMapper.validateNum(dto);
|
||||||
if (!CollectionUtils.isEmpty(validateList)) {
|
if (!CollectionUtils.isEmpty(validateList)) {
|
||||||
String wls = validateList.stream()
|
String wls = validateList.stream().map(InvoicingThdGwcEntity::getF1).collect(Collectors.joining(","));
|
||||||
.map(InvoicingThdGwcEntity::getF1)
|
|
||||||
.collect(Collectors.joining(","));
|
|
||||||
result.put("status", "wlError");
|
result.put("status", "wlError");
|
||||||
result.put("message", "以下物料退货数量大于护理单元库存数量:" + wls);
|
result.put("message", "以下物料退货数量大于护理单元库存数量:" + wls);
|
||||||
return result;
|
return result;
|
||||||
|
|
@ -322,14 +351,7 @@ public class ThdServiceImpl implements ITuiHuoApi {
|
||||||
QueryWrapper<BlWarehouseMaterialInfo> kcQW = new QueryWrapper<>();
|
QueryWrapper<BlWarehouseMaterialInfo> kcQW = new QueryWrapper<>();
|
||||||
kcQW.in("wl_id", wlList);
|
kcQW.in("wl_id", wlList);
|
||||||
List<BlWarehouseMaterialInfo> kfnumList = warehouseMaterialInfoService.list(kcQW);
|
List<BlWarehouseMaterialInfo> kfnumList = warehouseMaterialInfoService.list(kcQW);
|
||||||
Map<String, Map<String, String>> kfWlSlMap = kfnumList.stream()
|
Map<String, Map<String, String>> kfWlSlMap = kfnumList.stream().collect(Collectors.groupingBy(BlWarehouseMaterialInfo::getNuId, Collectors.toMap(BlWarehouseMaterialInfo::getWlId, BlWarehouseMaterialInfo::getKcsl)));
|
||||||
.collect(Collectors.groupingBy(
|
|
||||||
BlWarehouseMaterialInfo::getNuId,
|
|
||||||
Collectors.toMap(
|
|
||||||
BlWarehouseMaterialInfo::getWlId,
|
|
||||||
BlWarehouseMaterialInfo::getKcsl
|
|
||||||
)
|
|
||||||
));
|
|
||||||
List<NuWarehouseMaterialCrkInfo> kfCrkLogList = Lists.newArrayList();
|
List<NuWarehouseMaterialCrkInfo> kfCrkLogList = Lists.newArrayList();
|
||||||
for (int i = 0; i < infoList.size(); i++) {
|
for (int i = 0; i < infoList.size(); i++) {
|
||||||
NuInvoicingThdInfo item = infoList.get(i);
|
NuInvoicingThdInfo item = infoList.get(i);
|
||||||
|
|
@ -353,8 +375,7 @@ public class ThdServiceImpl implements ITuiHuoApi {
|
||||||
warehouseMaterialCrkInfoService.saveBatch(kfCrkLogList);
|
warehouseMaterialCrkInfoService.saveBatch(kfCrkLogList);
|
||||||
|
|
||||||
//库房库存调整
|
//库房库存调整
|
||||||
Map<String, Integer> thdWlNumMap = infoList.stream()
|
Map<String, Integer> thdWlNumMap = infoList.stream().collect(Collectors.toMap(NuInvoicingThdInfo::getWlId, NuInvoicingThdInfo::getThNum));
|
||||||
.collect(Collectors.toMap(NuInvoicingThdInfo::getWlId, NuInvoicingThdInfo::getThNum));
|
|
||||||
List<BlWarehouseMaterialInfo> kfUpdateList = Lists.newArrayList();
|
List<BlWarehouseMaterialInfo> kfUpdateList = Lists.newArrayList();
|
||||||
kfnumList.stream().forEach(item -> {
|
kfnumList.stream().forEach(item -> {
|
||||||
if (thdWlNumMap.get(item.getWlId()) != null) {
|
if (thdWlNumMap.get(item.getWlId()) != null) {
|
||||||
|
|
@ -389,8 +410,7 @@ public class ThdServiceImpl implements ITuiHuoApi {
|
||||||
List<NuInvoicingNuKcsl> nuKcslList = invoicingNuKcslService.list(nuKcslQW);
|
List<NuInvoicingNuKcsl> nuKcslList = invoicingNuKcslService.list(nuKcslQW);
|
||||||
List<NuInvoicingNuKcsl> needUpdateList = Lists.newArrayList();
|
List<NuInvoicingNuKcsl> needUpdateList = Lists.newArrayList();
|
||||||
if (!CollectionUtils.isEmpty(nuKcslList)) {
|
if (!CollectionUtils.isEmpty(nuKcslList)) {
|
||||||
Map<String, NuInvoicingNuKcsl> nuKcslMap = nuKcslList.stream()
|
Map<String, NuInvoicingNuKcsl> nuKcslMap = nuKcslList.stream().collect(Collectors.toMap(NuInvoicingNuKcsl::getWlId, kcsl -> kcsl));
|
||||||
.collect(Collectors.toMap(NuInvoicingNuKcsl::getWlId, kcsl -> kcsl));
|
|
||||||
infoList.stream().forEach(item -> {
|
infoList.stream().forEach(item -> {
|
||||||
NuInvoicingNuKcsl nuInvoicingNuKcsl = new NuInvoicingNuKcsl();
|
NuInvoicingNuKcsl nuInvoicingNuKcsl = new NuInvoicingNuKcsl();
|
||||||
nuInvoicingNuKcsl.setNuId(item.getNuId());
|
nuInvoicingNuKcsl.setNuId(item.getNuId());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue