@Service("InventoryService")
public class InventoryServiceImpl extends ServiceImpl<InventoryMapper,InventoryPO> implements InventoryService {
@Override
public List exportList(InventoryConditionQuery query) {
List list = lambdaQuery().in(query.getIdList()!=null,InventoryPO::getId,query.getIdList()).list();
List voList = new ArrayList<>();
list.forEach(inventory -> {
InventoryRespVO respVO = new InventoryRespVO();
BeanUtils.copyProperties(inventory,respVO);
voList.add(respVO);
});
return voList;
}
@Resource
private DeliveryService deliveryService;
@Resource
private PutInStorageService putInStorageService;
public List<InventoryRespVO> mapToList(InventoryConditionQuery inventoryConditionQuery){
Map<String, String> stringMap = putInStorageService.listPutInStorageItem();
Map<String,Integer> numMap = new HashMap<>();
for (String key : stringMap.keySet()) {
inventoryConditionQuery.setMaterialsName(key);
List<InventoryRespVO> aa = getDetail(inventoryConditionQuery);
if (aa.size()>0){
Integer inventoryNum = aa.get(0).getInventoryNum();
numMap.put(key,inventoryNum);
}
}
inventoryConditionQuery.setMaterialsName(null);
List<InventoryRespVO> aa = getDetail(inventoryConditionQuery);
Map<String,InventoryRespVO> map = new HashMap<>(20);
for (int i = 0; i < aa.size(); i++) {
InventoryRespVO respVO = aa.get(i);
String materialsName = respVO.getMaterialsName();
respVO.setInventoryNum(numMap.get(materialsName));
map.put(materialsName,respVO);
}
List<InventoryRespVO> voList = new ArrayList<>();
for (InventoryRespVO r:map.values()
) {
voList.add(r);
}
return voList;
}
public List<InventoryRespVO> getDetail(InventoryConditionQuery inventoryConditionQuery){
DeliveryConditionQuery query = new DeliveryConditionQuery();
PutInStorageConditionQuery query1 = new PutInStorageConditionQuery();
query.setMaterialsName(inventoryConditionQuery.getMaterialsName());
query.setDeliveryDate(inventoryConditionQuery.getDate());
query1.setMaterialsName(inventoryConditionQuery.getMaterialsName());
query1.setPutInStorageDate(inventoryConditionQuery.getDate());
List<DeliveryRespVO> voList = deliveryService.exportList(query);
List<DeliveryRespVO> voList3 = deliveryService.lastList(query);
List<PutInStorageRespVO> voList1 = putInStorageService.exportList(query1);
List<PutInStorageRespVO> voList4 = putInStorageService.lastList(query1);
List<InventoryRespVO> voList2 = new ArrayList<>();
int sum1 = 0;
int sum2 = 0;
if (voList3.size()>0){
for (int i = 0; i < voList3.size(); i++) {
sum2 -= voList3.get(i).getMaterialsNum();
}
}
if (voList4.size()>0){
for (int i = 0; i < voList4.size(); i++) {
sum2 += voList4.get(i).getMaterialsNum();
}
}
if (voList.size()>0){
for (int i = 0; i < voList.size(); i++) {
DeliveryRespVO delivery = voList.get(i);
InventoryRespVO inventory = new InventoryRespVO();
BeanUtils.copyProperties(delivery,inventory);
inventory.setPutOrDeliveryNum(-delivery.getMaterialsNum());
inventory.setPutOrDeliveryNo(delivery.getDeliveryNumber());
inventory.setPurchaseOrReturnOrRecipientsNumber(delivery.getRecipientsNumber());
sum1 -= delivery.getMaterialsNum();
voList2.add(inventory);
}
}
if (voList1.size()>0){
for (int i = 0; i < voList1.size(); i++) {
PutInStorageRespVO putInStorage = voList1.get(i);
InventoryRespVO inventory = new InventoryRespVO();
BeanUtils.copyProperties(putInStorage,inventory);
inventory.setPutOrDeliveryNum(putInStorage.getMaterialsNum());
inventory.setPutOrDeliveryNo(putInStorage.getPutInStorageNumber());
inventory.setPurchaseOrReturnOrRecipientsNumber(putInStorage.getPurchaseOrReturnNumber());
sum1 += putInStorage.getMaterialsNum();
voList2.add(inventory);
}
}
for (int i = 0; i < voList2.size(); i++) {
voList2.get(i).setInventoryNum(sum1+sum2);
voList2.get(i).setLastBalance(sum2);
}
Collections.sort(voList2);
return voList2;
}
@Override
public PageUtil getList(InventoryConditionQuery inventoryConditionQuery){
List voList2 = mapToList(inventoryConditionQuery);
List list = PageUtil2.startPage(voList2, inventoryConditionQuery.getPageNum(), inventoryConditionQuery.getPageSize());
PageUtil a = new PageUtil(inventoryConditionQuery.getPage());
a.setList(list);
int i = (int)(Math.ceil((float)voList2.size() / inventoryConditionQuery.getPageSize()));
a.setTotalPage(i);
a.setTotalCount(voList2.size());
return a;
}
@Override
public PageUtil detail(InventoryConditionQuery inventoryConditionQuery){
List voList2 = getDetail(inventoryConditionQuery);
List list = PageUtil2.startPage(voList2, inventoryConditionQuery.getPageNum(), inventoryConditionQuery.getPageSize());
PageUtil a = new PageUtil(inventoryConditionQuery.getPage());
a.setList(list);
int i = (int)(Math.ceil((float)voList2.size() / inventoryConditionQuery.getPageSize()));
a.setTotalPage(i);
a.setTotalCount(voList2.size());
return a;
}
package com.zhangxin.administrative.domain.common;
import java.util.List;
/**
*/
public class PageUtil2 {
/**
* 开始分页
* @param list
* @param pageNum 页码
* @param pageSize 每页多少条数据
* @return
*/
public static List startPage(List list, Integer pageNum,
Integer pageSize) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
Integer count = list.size(); // 记录总数
Integer pageCount = 0; // 页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; // 开始索引
int toIndex = 0; // 结束索引
if (!pageNum.equals(pageCount) ) {
fromIndex = (pageNum - 1) * pageSize;
toIndex = fromIndex + pageSize;
} else {
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
List pageList = list.subList(fromIndex, toIndex);
return pageList;
}
}
@Override
public PageUtil<LeasePO> getList(LeaseConditionQuery query) {
Page page = lambdaQuery().in(query.getIdList()!=null,LeasePO::getId,query.getIdList())
.like(query.getMaterialsName() != null, LeasePO::getMaterialsName, query.getMaterialsName())
.like(query.getPrincipal() != null, LeasePO::getPrincipal, query.getPrincipal())
.like(query.getLeaseStartTime() != null , LeasePO::getLeaseStartTime,query.getLeaseStartTime())
.like(query.getLeaseEndTime() != null , LeasePO::getLeaseEndTime,query.getLeaseEndTime())
.page(query.getPage());
return new PageUtil<>(page);
}
package com.zhangxin.base.utils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Optional;
/**
-
基础分页
-
@author JayPdd
-
@date 2021/1/26 16:47
*/
@Getter
@ToString
@Accessors(chain = true)
public class BasePage implements Serializable {private static final long serialVersionUID = -3589026567841471640L;
/**
- 默认当前请求页码为第一页
*/
private static final Integer DEFAULT_PAGE_NUM = 1;
/**
- 默认每页查询10条数据
*/
private static final Integer DEFAULT_PAGE_SIZE = 10;
/**
- 当前请求页码
*/
@ApiModelProperty(value = “当前请求页码”, dataType = “Integer”)
private Integer pageNum;
/**
- 每页查询数量
*/
@ApiModelProperty(value = “每页查询数量”, dataType = “Integer”)
private Integer pageSize;
/**
- 初始化分页参数信息
*/
public BasePage() {
setPageNum(pageNum);
setPageSize(pageSize);
}
/**
- 获取分页对象
- @return 返回MyBatis分页对象
*/
public Page getPage() {
return new Page(pageNum, pageSize);
}
public void setPageNum(Integer pageNum) {
this.pageNum = Optional.ofNullable(pageNum).orElse(DEFAULT_PAGE_NUM);
}public void setPageSize(Integer pageSize) {
this.pageSize = Optional.ofNullable(pageSize).orElse(DEFAULT_PAGE_SIZE);
}
} - 默认当前请求页码为第一页