|
@@ -2,6 +2,7 @@ package com.fjhx.wms.service.stock.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -9,7 +10,10 @@ import com.fjhx.common.utils.Assert;
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
import com.fjhx.item.util.excel.util.ExcelUtil;
|
|
import com.fjhx.item.util.excel.util.ExcelUtil;
|
|
|
|
+import com.fjhx.kd100.entity.company.po.CompanyInfo;
|
|
|
|
+import com.fjhx.kd100.service.company.CompanyInfoService;
|
|
import com.fjhx.tenant.utils.DictUtils;
|
|
import com.fjhx.tenant.utils.DictUtils;
|
|
|
|
+import com.fjhx.wms.entity.LogisticsInfosBo;
|
|
import com.fjhx.wms.entity.arrival.po.ArrivalStockRecords;
|
|
import com.fjhx.wms.entity.arrival.po.ArrivalStockRecords;
|
|
import com.fjhx.wms.entity.arrival.po.ArrivalStockRecordsDetails;
|
|
import com.fjhx.wms.entity.arrival.po.ArrivalStockRecordsDetails;
|
|
import com.fjhx.wms.entity.stock.bo.StockJournalDetailsExcelBo;
|
|
import com.fjhx.wms.entity.stock.bo.StockJournalDetailsExcelBo;
|
|
@@ -19,10 +23,13 @@ import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
import com.fjhx.wms.entity.stock.po.*;
|
|
import com.fjhx.wms.entity.stock.po.*;
|
|
import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
|
|
import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
|
|
import com.fjhx.wms.entity.stock.vo.StockWaitVo;
|
|
import com.fjhx.wms.entity.stock.vo.StockWaitVo;
|
|
|
|
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
|
|
import com.fjhx.wms.mapper.stock.StockJournalDetailsMapper;
|
|
import com.fjhx.wms.mapper.stock.StockJournalDetailsMapper;
|
|
|
|
+import com.fjhx.wms.service.WmsService;
|
|
import com.fjhx.wms.service.arrival.ArrivalStockRecordsDetailsService;
|
|
import com.fjhx.wms.service.arrival.ArrivalStockRecordsDetailsService;
|
|
import com.fjhx.wms.service.arrival.ArrivalStockRecordsService;
|
|
import com.fjhx.wms.service.arrival.ArrivalStockRecordsService;
|
|
import com.fjhx.wms.service.stock.*;
|
|
import com.fjhx.wms.service.stock.*;
|
|
|
|
+import com.fjhx.wms.service.warehouse.WarehouseService;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
@@ -32,9 +39,11 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
+import java.util.function.Function;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@@ -66,6 +75,12 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
|
|
private ArrivalStockRecordsService arrivalStockRecordsService;
|
|
private ArrivalStockRecordsService arrivalStockRecordsService;
|
|
@Autowired
|
|
@Autowired
|
|
private StockJournalDetailsService stockJournalDetailsService;
|
|
private StockJournalDetailsService stockJournalDetailsService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private WarehouseService warehouseService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private CompanyInfoService companyInfoService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private WmsService wmsService;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 分页公共参数
|
|
* 分页公共参数
|
|
@@ -75,7 +90,7 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
|
|
IWrapper<StockJournalDetails> wrapper = getWrapper();
|
|
IWrapper<StockJournalDetails> wrapper = getWrapper();
|
|
wrapper.eq("sj.op_type", dto.getOpType());
|
|
wrapper.eq("sj.op_type", dto.getOpType());
|
|
wrapper.eq("sj.type", dto.getType());
|
|
wrapper.eq("sj.type", dto.getType());
|
|
- wrapper.eq("w.id", dto.getWarehouseId());
|
|
|
|
|
|
+ wrapper.eq("sj.warehouse_id", dto.getWarehouseId());
|
|
wrapper.eq("sj.to_warehouse_id", dto.getToWarehouseId());
|
|
wrapper.eq("sj.to_warehouse_id", dto.getToWarehouseId());
|
|
wrapper.eq("sjd.product_id", dto.getProductId());
|
|
wrapper.eq("sjd.product_id", dto.getProductId());
|
|
|
|
|
|
@@ -83,18 +98,21 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
|
|
//产品编号过滤
|
|
//产品编号过滤
|
|
List<Long> productIds = productInfoService.listObject(ProductInfo::getId, q -> q.like(ProductInfo::getCustomCode, dto.getKeyword()).or()
|
|
List<Long> productIds = productInfoService.listObject(ProductInfo::getId, q -> q.like(ProductInfo::getCustomCode, dto.getKeyword()).or()
|
|
.like(ProductInfo::getName, dto.getKeyword()));
|
|
.like(ProductInfo::getName, dto.getKeyword()));
|
|
- wrapper.and(q -> q.like("w.name", dto.getKeyword()).or()
|
|
|
|
|
|
+ //仓库信息过滤
|
|
|
|
+ List<Long> warehouseIds = warehouseService.listObject(Warehouse::getId, q -> q.like(Warehouse::getName, dto.getKeyword()));
|
|
|
|
+
|
|
|
|
+ wrapper.and(q -> q.in("sj.warehouse_id", warehouseIds).or()
|
|
.like("sj.link_code", dto.getKeyword()).or()
|
|
.like("sj.link_code", dto.getKeyword()).or()
|
|
.in("sjd.product_id", productIds)
|
|
.in("sjd.product_id", productIds)
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
//时间范围过滤
|
|
//时间范围过滤
|
|
- wrapper.ge("sjd",StockJournalDetails::getCreateTime,dto.getBeginTime());
|
|
|
|
- wrapper.le("sjd",StockJournalDetails::getCreateTime,dto.getEndTime());
|
|
|
|
|
|
+ wrapper.ge("sjd", StockJournalDetails::getCreateTime, dto.getBeginTime());
|
|
|
|
+ wrapper.le("sjd", StockJournalDetails::getCreateTime, dto.getEndTime());
|
|
|
|
|
|
//count方法手动赋值逻辑删除租户
|
|
//count方法手动赋值逻辑删除租户
|
|
- wrapper.eq("sj.del_flag",0);
|
|
|
|
|
|
+ wrapper.eq("sj.del_flag", 0);
|
|
wrapper.eq("sj.tenant_id", SecurityUtils.getTenantId());
|
|
wrapper.eq("sj.tenant_id", SecurityUtils.getTenantId());
|
|
|
|
|
|
//排序
|
|
//排序
|
|
@@ -126,6 +144,46 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
|
|
});
|
|
});
|
|
//赋值操作人名称
|
|
//赋值操作人名称
|
|
UserUtil.assignmentNickName(records, StockJournalDetailsVo::getCreateUser, StockJournalDetailsVo::setOpUserName);
|
|
UserUtil.assignmentNickName(records, StockJournalDetailsVo::getCreateUser, StockJournalDetailsVo::setOpUserName);
|
|
|
|
+
|
|
|
|
+ //赋值仓库名称
|
|
|
|
+ warehouseService.attributeAssign(records, StockJournalDetailsVo::getWarehouseId, (item, warehouse) -> {
|
|
|
|
+ item.setWarehouseName(warehouse.getName());
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //赋值发货信息
|
|
|
|
+ stockWaitService.attributeAssign(records, StockJournalDetailsVo::getBusinessId, (item, stockWait) -> {
|
|
|
|
+ String victoriatouristJson = stockWait.getVictoriatouristJson();
|
|
|
|
+ if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(victoriatouristJson);
|
|
|
|
+ item.setDeliverGoodsId(jsonObject.getLong("deliverGoodsId"));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //赋值物流单号信息
|
|
|
|
+ List<Long> logisticsBusinessIds = new ArrayList<>();
|
|
|
|
+ logisticsBusinessIds.addAll(records.stream().map(StockJournalDetailsVo::getBusinessId).distinct().filter(Objects::nonNull).collect(Collectors.toList()));
|
|
|
|
+ logisticsBusinessIds.addAll(records.stream().map(StockJournalDetailsVo::getDeliverGoodsId).distinct().filter(Objects::nonNull).collect(Collectors.toList()));
|
|
|
|
+ if (ObjectUtil.isNotEmpty(logisticsBusinessIds)) {
|
|
|
|
+ List<LogisticsInfosBo> logisticsInfosByBusinessIds = wmsService.getLogisticsInfosByBusinessIds(logisticsBusinessIds);
|
|
|
|
+ Map<Long, LogisticsInfosBo> collect = logisticsInfosByBusinessIds.stream().collect(Collectors.toMap(LogisticsInfosBo::getBusinessId, Function.identity()));
|
|
|
|
+ for (StockJournalDetailsVo record : records) {
|
|
|
|
+ LogisticsInfosBo orDefault = collect.getOrDefault(record.getBusinessId(), collect.get(record.getDeliverGoodsId()));
|
|
|
|
+ if (ObjectUtil.isNotEmpty(orDefault)) {
|
|
|
|
+ record.setLogisticsCompanyCode(orDefault.getLogisticsCompanyCode());
|
|
|
|
+ record.setLogisticsCode(orDefault.getCode());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //赋值物流公司名称
|
|
|
|
+ List<String> companyCods = records.stream().map(StockJournalDetailsVo::getLogisticsCompanyCode).distinct().filter(item -> ObjectUtil.isNotEmpty(item)).collect(Collectors.toList());
|
|
|
|
+ if (ObjectUtil.isNotEmpty(companyCods)) {
|
|
|
|
+ Map<String, String> companyMap = companyInfoService.mapKV(CompanyInfo::getCode, CompanyInfo::getName, q -> q.in(CompanyInfo::getCode, companyCods));
|
|
|
|
+ for (StockJournalDetailsVo record : records) {
|
|
|
|
+ record.setLogisticsCompanyName(companyMap.get(record.getLogisticsCompanyCode()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
return page;
|
|
return page;
|
|
}
|
|
}
|
|
|
|
|