package com.jilongda.manage.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.mapper.TFrameWarehousingDetailMapper;
import com.jilongda.manage.mapper.TLensWarehousingDetailMapper;
import com.jilongda.manage.mapper.TStoreMapper;
import com.jilongda.manage.model.TFrameWarehousingDetail;
import com.jilongda.manage.model.TLensWarehousingDetail;
import com.jilongda.manage.model.TStore;
import com.jilongda.manage.model.TWarehousing;
import com.jilongda.manage.mapper.TWarehousingMapper;
import com.jilongda.manage.query.TWarehousingDetailLensQuery;
import com.jilongda.manage.query.TWarehousingDetailQuery;
import com.jilongda.manage.service.TLensWarehousingDetailService;
import com.jilongda.manage.service.TWarehousingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jilongda.manage.vo.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* 镜架/镜片出库入库表 服务实现类
*
*
* @author 无关风月
* @since 2024-12-09
*/
@Service
public class TWarehousingServiceImpl extends ServiceImpl implements TWarehousingService {
@Autowired
private TStoreMapper storeMapper;
@Autowired
private TFrameWarehousingDetailMapper frameWarehousingDetailMapper;
@Autowired
private TLensWarehousingDetailMapper lensWarehousingDetailMapper;
@Override
public PageInfo detailList(TWarehousingDetailQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = frameWarehousingDetailMapper.pageList(query,pageInfo);
List storeIds = list.stream().map(TFrameWarehousingDetailVO::getStoreId).collect(Collectors.toList());
List stores = new ArrayList<>();
if(CollectionUtils.isNotEmpty(storeIds)){
stores = storeMapper.selectList(Wrappers.lambdaQuery(TStore.class)
.in(TStore::getId,storeIds));
}
for (TFrameWarehousingDetailVO tFrameWarehousingDetailVO : list) {
if(CollectionUtils.isNotEmpty(stores)){
TStore store = stores.stream().filter(tStore -> tStore.getId().equals(tFrameWarehousingDetailVO.getStoreId())).findFirst().orElse(null);
if(Objects.nonNull(store)){
tFrameWarehousingDetailVO.setStoreName(store.getName());
}
}
}
pageInfo.setRecords(list);
return pageInfo;
}
@Override
public PageInfo detailListLens(TWarehousingDetailLensQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = lensWarehousingDetailMapper.pageLensList(query,pageInfo);
List storeIds = list.stream().map(TLensWarehousingDetailVO::getStoreId).collect(Collectors.toList());
List stores = new ArrayList<>();
if(CollectionUtils.isNotEmpty(storeIds)){
stores = storeMapper.selectList(Wrappers.lambdaQuery(TStore.class)
.in(TStore::getId,storeIds));
}
for (TLensWarehousingDetailVO tLensWarehousingDetailVO : list) {
if(CollectionUtils.isNotEmpty(stores)){
TStore store = stores.stream().filter(tStore -> tStore.getId().equals(tLensWarehousingDetailVO.getStoreId())).findFirst().orElse(null);
if(Objects.nonNull(store)){
tLensWarehousingDetailVO.setStoreName(store.getName());
}
}
}
pageInfo.setRecords(list);
return pageInfo;
}
@Override
public PageInfo inventoryReceiptList(TWarehousingDetailQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = this.baseMapper.inventoryReceiptList(query,pageInfo);
for (TWarehousingVO tWarehousingVO : list) {
List tFrameWarehousingDetails = frameWarehousingDetailMapper.selectList(Wrappers.lambdaQuery(TFrameWarehousingDetail.class)
.eq(TFrameWarehousingDetail::getWarehousingId, tWarehousingVO.getId()));
if(CollectionUtils.isNotEmpty(tFrameWarehousingDetails)){
tWarehousingVO.setTotalNum(tFrameWarehousingDetails.stream().mapToInt(TFrameWarehousingDetail::getTotal).sum());
}
}
pageInfo.setRecords(list);
return pageInfo;
}
@Override
public PageInfo inventoryReceiptLensList(TWarehousingDetailLensQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = this.baseMapper.inventoryReceiptLensList(query,pageInfo);
for (TWarehousingLensVO tWarehousingVO : list) {
List lensWarehousingDetails = lensWarehousingDetailMapper.selectList(Wrappers.lambdaQuery(TLensWarehousingDetail.class)
.eq(TLensWarehousingDetail::getWarehousingId, tWarehousingVO.getId()));
if(CollectionUtils.isNotEmpty(lensWarehousingDetails)){
tWarehousingVO.setTotalNum(lensWarehousingDetails.stream().mapToInt(TLensWarehousingDetail::getTotal).sum());
}
}
pageInfo.setRecords(list);
return pageInfo;
}
}