fix(wms):出入库查询和导出修改
This commit is contained in:
+32
@@ -36,6 +36,7 @@ import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrder
|
||||
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
|
||||
import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo;
|
||||
import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService;
|
||||
@@ -242,7 +243,38 @@ public class StockInOrderApplicationService {
|
||||
}
|
||||
}
|
||||
List<StockInOrderPO> stockInOrderPOS = stockInOrderDomainService.queryList(stockInOrderDO);
|
||||
if (CollectionUtils.isEmpty(stockInOrderPOS)) {
|
||||
return stockInOrderPOS;
|
||||
}
|
||||
List<String> inOrderNumbers = stockInOrderPOS.stream()
|
||||
.map(StockInOrderPO::getInOrderNumber)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 列表页展示:按入库单号批量取去重后的 Invoice No
|
||||
Map<String, String> invoiceNoByNum = new HashMap<>();
|
||||
inMaterialDetailService.selectDistinctInvoiceNoForStockInList(inOrderNumbers)
|
||||
.stream()
|
||||
.filter(a -> StringUtils.isNotBlank(a.getInvoiceNo()))
|
||||
.forEach(a -> invoiceNoByNum.merge(a.getInOrderNumber(), a.getInvoiceNo().trim(), (o, n) -> o + "," + n));
|
||||
|
||||
// 导出场景(needDetail=true):批量取出完整明细树(level=1 父行 + children),按入库单号分组挂到列表
|
||||
Map<String, List<InMaterialDetailPO>> detailByNum = Collections.emptyMap();
|
||||
if (Boolean.TRUE.equals(stockInOrderDO.getNeedDetail()) && !CollectionUtils.isEmpty(inOrderNumbers)) {
|
||||
InMaterialDetailDO detailQuery = new InMaterialDetailDO();
|
||||
detailQuery.setInOrderNumberList(inOrderNumbers);
|
||||
List<InMaterialDetailPO> detailTreeList = inMaterialDetailService.queryListChildren(detailQuery);
|
||||
detailByNum = detailTreeList.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialDetailPO::getInOrderNumber));
|
||||
}
|
||||
|
||||
for (StockInOrderPO stockInOrderPO : stockInOrderPOS) {
|
||||
if (invoiceNoByNum.containsKey(stockInOrderPO.getInOrderNumber())) {
|
||||
stockInOrderPO.setInvoiceNo(invoiceNoByNum.get(stockInOrderPO.getInOrderNumber()));
|
||||
}
|
||||
if (Boolean.TRUE.equals(stockInOrderDO.getNeedDetail())) {
|
||||
stockInOrderPO.setMaterialDetailList(detailByNum.getOrDefault(stockInOrderPO.getInOrderNumber(), Collections.emptyList()));
|
||||
}
|
||||
Long inOrderId = stockInOrderPO.getInOrderId();
|
||||
List<ReceiptOrderAccount> list = receiptOrderAccountService.list(new LambdaQueryWrapper<ReceiptOrderAccount>().eq(ReceiptOrderAccount::getOrderId, inOrderId).eq(ReceiptOrderAccount::getInOrOut, "in"));
|
||||
stockInOrderPO.setReceiptOrderAccountList(list);
|
||||
|
||||
+24
@@ -253,9 +253,33 @@ public class StockOutOrderApplicationService {
|
||||
accountByOrderId = accounts.stream().collect(Collectors.groupingBy(ReceiptOrderAccount::getOrderId));
|
||||
}
|
||||
|
||||
// 列表页展示:按出库单号批量取去重后的 Invoice No
|
||||
Map<String, String> invoiceNoByNum = new HashMap<>();
|
||||
outMaterialDetailService.selectDistinctInvoiceNoForStockOutList(outOrderNumbers)
|
||||
.stream()
|
||||
.filter(a -> StringUtils.isNotBlank(a.getInvoiceNo()))
|
||||
.forEach(a -> invoiceNoByNum.merge(a.getOutOrderNumber(), a.getInvoiceNo().trim(), (o, n) -> o + "," + n));
|
||||
|
||||
// 导出场景(needDetail=true):批量取出完整明细树(level=1 父行 + children),按出库单号分组挂到列表
|
||||
Map<String, List<OutMaterialDetailPO>> detailByNum = Collections.emptyMap();
|
||||
if (Boolean.TRUE.equals(stockOutOrderDO.getNeedDetail()) && !CollectionUtils.isEmpty(outOrderNumbers)) {
|
||||
OutMaterialDetailDO detailQuery = new OutMaterialDetailDO();
|
||||
detailQuery.setOutOrderNumberList(outOrderNumbers);
|
||||
List<OutMaterialDetailPO> detailTreeList = outMaterialDetailService.queryListChildren(detailQuery);
|
||||
detailByNum = detailTreeList.stream()
|
||||
.collect(Collectors.groupingBy(OutMaterialDetailPO::getOutOrderNumber));
|
||||
}
|
||||
|
||||
for (StockOutOrderPO stockOutOrderPO : stockOutOrderPOS) {
|
||||
String outOrderNumber = stockOutOrderPO.getOutOrderNumber();
|
||||
|
||||
if (invoiceNoByNum.containsKey(outOrderNumber)) {
|
||||
stockOutOrderPO.setInvoiceNo(invoiceNoByNum.get(outOrderNumber));
|
||||
}
|
||||
if (Boolean.TRUE.equals(stockOutOrderDO.getNeedDetail())) {
|
||||
stockOutOrderPO.setMaterialDetailList(detailByNum.getOrDefault(outOrderNumber, Collections.emptyList()));
|
||||
}
|
||||
|
||||
List<DeliveryDetailsLink> list = deliveryDetailsLinkService.list(new LambdaQueryWrapper<DeliveryDetailsLink>().eq(DeliveryDetailsLink::getOrderNumber, outOrderNumber));
|
||||
stockOutOrderPO.setDeliveryDetailsLinkList(list);
|
||||
|
||||
|
||||
+6
@@ -3,6 +3,7 @@ package com.mhd.wms.domain.inMaterialDetail.repository.facade;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailBaseDO;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
|
||||
import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO;
|
||||
@@ -31,6 +32,11 @@ public interface IInMaterialDetailService extends IService<InMaterialDetail>
|
||||
*/
|
||||
public List<InMaterialDetailPO> queryListChildren(InMaterialDetailDO inMaterialDetailDO);
|
||||
|
||||
/**
|
||||
* 入库列表页:按入库单号批量取去重后的 Invoice No(仅 level=1)
|
||||
*/
|
||||
List<InStockListMaterialAgg> selectDistinctInvoiceNoForStockInList(List<String> inOrderNumbers);
|
||||
|
||||
/**
|
||||
* 新增物料明细
|
||||
*/
|
||||
|
||||
+7
@@ -3,8 +3,10 @@ package com.mhd.wms.domain.inMaterialDetail.repository.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
|
||||
import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -26,4 +28,9 @@ public interface InMaterialDetailMapper extends BaseMapper<InMaterialDetail>
|
||||
*/
|
||||
public List<InMaterialDetailPO> queryInOrderList(QueryOrderOverStockDO queryOrderOverStockDO);
|
||||
|
||||
/**
|
||||
* 入库列表页:按入库单号批量取去重后的 Invoice No(仅 level=1)
|
||||
*/
|
||||
List<InStockListMaterialAgg> selectDistinctInvoiceNoForStockInList(@Param("inOrderNumbers") List<String> inOrderNumbers);
|
||||
|
||||
}
|
||||
|
||||
+10
@@ -14,6 +14,7 @@ import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.mapper.InMaterialDetailMapper;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailBaseDO;
|
||||
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
|
||||
import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService;
|
||||
@@ -26,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -86,6 +88,14 @@ public class InMaterialDetailImpl extends ServiceImpl<InMaterialDetailMapper, In
|
||||
return inMaterialDetailPOParentList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<InStockListMaterialAgg> selectDistinctInvoiceNoForStockInList(List<String> inOrderNumbers) {
|
||||
if (CollectionUtils.isEmpty(inOrderNumbers)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return inMaterialDetailMapper.selectDistinctInvoiceNoForStockInList(inOrderNumbers);
|
||||
}
|
||||
|
||||
private List<InMaterialDetailPO> getChildren(Long parentUniqueId, List<InMaterialDetailPO> inMaterialDetailPOList, Integer maxLevel){
|
||||
List<InMaterialDetailPO> childrenCityList = inMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(childrenCityList)){
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.mhd.wms.domain.inMaterialDetail.repository.po;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 入库列表页批量取去重后的 Invoice No。
|
||||
*/
|
||||
@Data
|
||||
public class InStockListMaterialAgg {
|
||||
private String inOrderNumber;
|
||||
private String invoiceNo;
|
||||
}
|
||||
+5
@@ -41,6 +41,11 @@ public interface IOutMaterialDetailService extends IService<OutMaterialDetail>
|
||||
*/
|
||||
List<OutStockListMaterialAgg> selectAggregatesForStockOutList(List<String> outOrderNumbers);
|
||||
|
||||
/**
|
||||
* 出库列表页:按出库单号批量取去重后的 Invoice No(仅 level=1)
|
||||
*/
|
||||
List<OutStockListMaterialAgg> selectDistinctInvoiceNoForStockOutList(List<String> outOrderNumbers);
|
||||
|
||||
/**
|
||||
* 新增物料明细
|
||||
*/
|
||||
|
||||
+5
@@ -60,4 +60,9 @@ public interface OutMaterialDetailMapper extends BaseMapper<OutMaterialDetail>
|
||||
* 出库列表页:按出库单号批量聚合(仅 level=1)
|
||||
*/
|
||||
List<OutStockListMaterialAgg> selectAggregatesForStockOutList(@Param("outOrderNumbers") List<String> outOrderNumbers);
|
||||
|
||||
/**
|
||||
* 出库列表页:按出库单号批量取去重后的 Invoice No(仅 level=1)
|
||||
*/
|
||||
List<OutStockListMaterialAgg> selectDistinctInvoiceNoForStockOutList(@Param("outOrderNumbers") List<String> outOrderNumbers);
|
||||
}
|
||||
|
||||
+8
@@ -130,6 +130,14 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
|
||||
return outMaterialDetailMapper.selectAggregatesForStockOutList(outOrderNumbers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OutStockListMaterialAgg> selectDistinctInvoiceNoForStockOutList(List<String> outOrderNumbers) {
|
||||
if (CollectionUtils.isEmpty(outOrderNumbers)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return outMaterialDetailMapper.selectDistinctInvoiceNoForStockOutList(outOrderNumbers);
|
||||
}
|
||||
|
||||
private List<OutMaterialDetailPO> getChildren(Long parentUniqueId, List<OutMaterialDetailPO> materialDetailPOList, Integer maxLevel){
|
||||
List<OutMaterialDetailPO> childrenCityList = materialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(childrenCityList)){
|
||||
|
||||
+2
@@ -13,4 +13,6 @@ public class OutStockListMaterialAgg {
|
||||
private BigDecimal totalOutboundQuantity;
|
||||
private BigDecimal checkQuantitySum;
|
||||
private Integer materialKindCountDistinct;
|
||||
/** 列表页展示用:该出库单的 Invoice No */
|
||||
private String invoiceNo;
|
||||
}
|
||||
|
||||
+3
@@ -235,6 +235,9 @@ public class StockInOrderPO extends BaseVOEntity {
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("Invoice No(多个用逗号隔开)")
|
||||
private String invoiceNo;
|
||||
|
||||
@ApiModelProperty("物料明细")
|
||||
private List<InMaterialDetailPO> materialDetailList;
|
||||
|
||||
|
||||
+3
@@ -448,4 +448,7 @@ public class StockInOrderDO extends BaseVOEntity {
|
||||
|
||||
@ApiModelProperty("任务移除用户ID")
|
||||
private String removeUserId;
|
||||
|
||||
@ApiModelProperty("是否返回物料明细(导出时传 true)")
|
||||
private Boolean needDetail;
|
||||
}
|
||||
+3
@@ -256,6 +256,9 @@ public class StockOutOrderPO extends BaseVOEntity {
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("Invoice No(多个用逗号隔开)")
|
||||
private String invoiceNo;
|
||||
|
||||
@ApiModelProperty("物料明细")
|
||||
private List<OutMaterialDetailPO> materialDetailList;
|
||||
|
||||
|
||||
+3
@@ -513,4 +513,7 @@ public class StockOutOrderDO extends BaseVOEntity {
|
||||
|
||||
@ApiModelProperty("任务移除用户ID")
|
||||
private String removeUserId;
|
||||
|
||||
@ApiModelProperty("是否返回物料明细(导出时传 true)")
|
||||
private Boolean needDetail;
|
||||
}
|
||||
@@ -445,4 +445,7 @@ public class StockInOrderDTO extends StockInOrderBaseDTO {
|
||||
|
||||
@ApiModelProperty("任务移除用户ID")
|
||||
private String removeUserId;
|
||||
|
||||
@ApiModelProperty("是否返回物料明细(导出时传 true)")
|
||||
private Boolean needDetail;
|
||||
}
|
||||
@@ -502,4 +502,7 @@ public class StockOutOrderDTO extends StockOutOrderBaseDTO {
|
||||
|
||||
@ApiModelProperty("任务移除用户ID")
|
||||
private String removeUserId;
|
||||
|
||||
@ApiModelProperty("是否返回物料明细(导出时传 true)")
|
||||
private Boolean needDetail;
|
||||
}
|
||||
@@ -451,4 +451,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</foreach>
|
||||
GROUP BY a.out_order_number
|
||||
</select>
|
||||
|
||||
<!-- 出库列表页:按出库单号批量取去重后的 Invoice No -->
|
||||
<select id="selectDistinctInvoiceNoForStockOutList" resultType="com.mhd.wms.domain.outMaterialDetail.repository.po.OutStockListMaterialAgg">
|
||||
SELECT DISTINCT
|
||||
a.out_order_number AS outOrderNumber,
|
||||
a.INVOICE_NO AS invoiceNo
|
||||
FROM out_material_detail a
|
||||
WHERE a.del_flag = 1
|
||||
AND a.level = 1
|
||||
AND a.INVOICE_NO IS NOT NULL
|
||||
AND a.INVOICE_NO != ''
|
||||
AND a.out_order_number IN
|
||||
<foreach collection="outOrderNumbers" item="num" open="(" separator="," close=")">
|
||||
#{num}
|
||||
</foreach>
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -356,4 +356,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<include refid="joinStockInOrderPoWhere"/>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<!-- 入库列表页:按入库单号批量取去重后的 Invoice No -->
|
||||
<select id="selectDistinctInvoiceNoForStockInList" resultType="com.mhd.wms.domain.inMaterialDetail.repository.po.InStockListMaterialAgg">
|
||||
SELECT DISTINCT
|
||||
a.in_order_number AS inOrderNumber,
|
||||
a.INVOICE_NO AS invoiceNo
|
||||
FROM in_material_detail a
|
||||
WHERE a.del_flag = 1
|
||||
AND a.level = 1
|
||||
AND a.INVOICE_NO IS NOT NULL
|
||||
AND a.INVOICE_NO != ''
|
||||
AND a.in_order_number IN
|
||||
<foreach collection="inOrderNumbers" item="num" open="(" separator="," close=")">
|
||||
#{num}
|
||||
</foreach>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user