package com.chinaztt.mes.plan.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
import com.chinaztt.mes.plan.dto.OutsourcingOrderStockDTO;
|
import com.chinaztt.mes.plan.entity.OutsourcingOrder;
|
import com.chinaztt.mes.plan.entity.OutsourcingOrderStock;
|
import com.chinaztt.mes.plan.mapper.OutsourcingOrderMapper;
|
import com.chinaztt.mes.plan.mapper.OutsourcingOrderStockMapper;
|
import com.chinaztt.mes.plan.service.OutsourcingOrderStockService;
|
import com.chinaztt.mes.warehouse.dto.StockAddDTO;
|
import com.chinaztt.mes.warehouse.entity.Stock;
|
import com.chinaztt.mes.warehouse.util.StockUtils;
|
import com.chinaztt.mes.warehouse.util.TransactionType;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
/**
|
* 委外订单库存接收表
|
*
|
* @author cxf
|
* @date 2021-09-27 08:39:29
|
*/
|
@Slf4j
|
@Service
|
@AllArgsConstructor
|
@Transactional(rollbackFor = Exception.class)
|
public class OutsourcingOrderStockServiceImpl extends ServiceImpl<OutsourcingOrderStockMapper, OutsourcingOrderStock> implements OutsourcingOrderStockService {
|
private OutsourcingOrderMapper outsourcingOrderMapper;
|
private StockUtils stockUtils;
|
|
@Override
|
public IPage<OutsourcingOrderStockDTO> getOutsourcingOrderStockPage(Page page, QueryWrapper<OutsourcingOrderStockDTO> gen) {
|
return baseMapper.getOutsourcingOrderStockPage(page, gen);
|
}
|
|
@Override
|
public boolean save(OutsourcingOrderStock outsourcingOrderStock) {
|
StockAddDTO stockAdd = new StockAddDTO();
|
stockAdd.setPartsId(outsourcingOrderStock.getPartId());
|
stockAdd.setNewLocationId(outsourcingOrderStock.getLocationId());
|
stockAdd.setNewPartBatchNo(outsourcingOrderStock.getPartBatchNo());
|
Stock stock = stockUtils.query(stockAdd);
|
stockUtils.updateById(stock.getId(), outsourcingOrderStock.getReceiveQuantity(), BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, null, TransactionType.OUTSOURCING_RECEIVE.getValue());
|
outsourcingOrderStock.setStockId(stock.getId());
|
return SqlHelper.retBool(baseMapper.insert(outsourcingOrderStock));
|
}
|
|
@Override
|
public boolean updateById(OutsourcingOrderStock outsourcingOrderStock) {
|
OutsourcingOrderStock oldOutsourcingOrderStock = baseMapper.selectById(outsourcingOrderStock.getId());
|
stockUtils.updateById(oldOutsourcingOrderStock.getStockId(), outsourcingOrderStock.getReceiveQuantity().subtract(oldOutsourcingOrderStock.getReceiveQuantity()),
|
BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, null, TransactionType.OUTSOURCING_RECEIVE.getValue());
|
return SqlHelper.retBool(baseMapper.updateById(outsourcingOrderStock));
|
}
|
|
@Override
|
public BigDecimal updateOrderById(Long id) {
|
List<OutsourcingOrderStock> outsourcingOrderStockList = baseMapper.selectList(Wrappers.<OutsourcingOrderStock>lambdaQuery()
|
.eq(OutsourcingOrderStock::getOutsourcingOrderId, id));
|
BigDecimal total = BigDecimal.ZERO;
|
if (CollectionUtils.isNotEmpty(outsourcingOrderStockList)) {
|
total = outsourcingOrderStockList.stream().map(OutsourcingOrderStock::getReceiveQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
}
|
OutsourcingOrder outsourcingOrder = new OutsourcingOrder();
|
outsourcingOrder.setId(id);
|
outsourcingOrder.setQtyFinished(total);
|
outsourcingOrderMapper.updateById(outsourcingOrder);
|
return total;
|
}
|
|
@Override
|
public boolean delByIds(List<Long> ids) {
|
ids.stream().forEach(id -> {
|
OutsourcingOrderStock oldOutsourcingOrderStock = baseMapper.selectById(id);
|
stockUtils.updateById(oldOutsourcingOrderStock.getStockId(), oldOutsourcingOrderStock.getReceiveQuantity().negate(),
|
BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, null, TransactionType.OUTSOURCING_CANCEL.getValue());
|
baseMapper.deleteById(id);
|
});
|
return true;
|
}
|
|
@Override
|
public OutsourcingOrderStockDTO getDtoById(Long id) {
|
return baseMapper.getDtoById(id);
|
}
|
}
|