|
|
|
@ -50,6 +50,7 @@ import java.util.ArrayList;
|
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
|
import static com.chanko.yunxi.mes.module.biz.enums.CodeEnum.STOCK_IN;
|
|
|
|
@ -225,6 +226,7 @@ public class StorageServiceImpl implements StorageService {
|
|
|
|
|
.setProcedureName(to.getProcedureId()==null?null:procedureMapper.selectById(to.getProcedureId()).getName())
|
|
|
|
|
.setFixRatio(to.getRequiredQuantity().divide(to.getProduceQuantity()))
|
|
|
|
|
.setUnit(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getUnit())
|
|
|
|
|
.setMatId(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getId())
|
|
|
|
|
.setIsSend(0);
|
|
|
|
|
insertList.add(tplusStorageOutDO);
|
|
|
|
|
}else{
|
|
|
|
@ -246,6 +248,7 @@ public class StorageServiceImpl implements StorageService {
|
|
|
|
|
.setProcedureName(to.getProcedureId()==null?null:procedureMapper.selectById(to.getProcedureId()).getName())
|
|
|
|
|
.setFixRatio(to.getRequiredQuantity().divide(to.getProduceQuantity()))
|
|
|
|
|
.setUnit(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getUnit())
|
|
|
|
|
.setMatId(materialMapper.selectOne(MaterialDO::getCode,to.getProjectSubCode()).getId())
|
|
|
|
|
.setIsSend(0);
|
|
|
|
|
updateList.add(tplusStorageOutDO);
|
|
|
|
|
}
|
|
|
|
@ -342,11 +345,60 @@ public class StorageServiceImpl implements StorageService {
|
|
|
|
|
}
|
|
|
|
|
private void saveTplusStockInDate(StorageDO storageDO,List<StorageMatDO> storageMatDOS,List<TplusStorageOutDO> tplusStorageOutDOS){
|
|
|
|
|
|
|
|
|
|
// if(CollUtil.isNotEmpty(tplusStorageOutDOS)){
|
|
|
|
|
// tplusStorageOutDOS.stream().filter(ot->{
|
|
|
|
|
// storageMatDOS.stream().anyMatch(mo->mo.getWhId().equals(ot.getWhId()))
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
if(CollUtil.isNotEmpty(tplusStorageOutDOS)){
|
|
|
|
|
List<TplusStorageOutDO> sameWhAndMats = tplusStorageOutDOS.stream().filter(ot->{
|
|
|
|
|
return storageMatDOS.stream().anyMatch(mo -> mo.getWhId().equals(ot.getWhId()) && mo.getMatId().equals(ot.getMatId()));
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
if(CollUtil.isNotEmpty(sameWhAndMats)){
|
|
|
|
|
sameWhAndMats.forEach(ko->{
|
|
|
|
|
ko.setId(null);
|
|
|
|
|
ko.setStockId(storageDO.getId()).setStockCreateDate(storageDO.getOutboundTime());
|
|
|
|
|
BigDecimal storageOkQtyIn = storageMatDOS.stream().filter(mo->mo.getMatId().equals(ko.getMatId())).collect(Collectors.toList()).get(0).getStorageOkQty();
|
|
|
|
|
|
|
|
|
|
final BigDecimal[] fixRatioAll = {new BigDecimal(0)};
|
|
|
|
|
sameWhAndMats.stream().filter(so->so.getMatId().equals(ko.getMatId())).forEach(ro->{
|
|
|
|
|
fixRatioAll[0] = fixRatioAll[0].add(ro.getFixRatio());
|
|
|
|
|
});
|
|
|
|
|
ko.setStorageOkQty(storageOkQtyIn.multiply(ko.getFixRatio().divide(fixRatioAll[0])).multiply(BigDecimal.valueOf(-1)));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
storageMatDOS.forEach(sm->{
|
|
|
|
|
if(!sameWhAndMats.stream().anyMatch(po->po.getMatId().equals(sm.getMatId()))){
|
|
|
|
|
TplusStorageOutDO tplusStorageOutDO = new TplusStorageOutDO();
|
|
|
|
|
tplusStorageOutDO.setStockId(storageDO.getId());
|
|
|
|
|
tplusStorageOutDO.setStockCreateDate(storageDO.getOutboundTime());
|
|
|
|
|
tplusStorageOutDO.setWhId(storageDO.getWhId());
|
|
|
|
|
tplusStorageOutDO.setWhNo(warehouseMapper.selectById(storageDO.getWhId()).getWhNo());
|
|
|
|
|
tplusStorageOutDO.setProjectSubCode(sm.getProjectSubCode());
|
|
|
|
|
tplusStorageOutDO.setProjectSubName(materialMapper.selectOne(MaterialDO::getCode,sm.getProjectSubCode()).getName());
|
|
|
|
|
tplusStorageOutDO.setMatId(materialMapper.selectOne(MaterialDO::getCode,sm.getProjectSubCode()).getId());
|
|
|
|
|
tplusStorageOutDO.setStorageOkQty(sm.getStorageOkQty().multiply(new BigDecimal(-1)));
|
|
|
|
|
sameWhAndMats.add(tplusStorageOutDO);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
tplusStorageOutMapper.delete(TplusStorageOutDO::getStockId,storageDO.getId());
|
|
|
|
|
tplusStorageOutMapper.insertBatch(sameWhAndMats);
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
List<TplusStorageOutDO> insertWhAndMats = new ArrayList<>();
|
|
|
|
|
storageMatDOS.forEach(sm->{
|
|
|
|
|
TplusStorageOutDO tplusStorageOutDO = new TplusStorageOutDO();
|
|
|
|
|
tplusStorageOutDO.setStockId(storageDO.getId());
|
|
|
|
|
tplusStorageOutDO.setStockCreateDate(storageDO.getOutboundTime());
|
|
|
|
|
tplusStorageOutDO.setWhId(storageDO.getWhId());
|
|
|
|
|
tplusStorageOutDO.setWhNo(warehouseMapper.selectById(storageDO.getWhId()).getWhNo());
|
|
|
|
|
tplusStorageOutDO.setProjectSubCode(sm.getProjectSubCode());
|
|
|
|
|
tplusStorageOutDO.setProjectSubName(materialMapper.selectOne(MaterialDO::getCode,sm.getProjectSubCode()).getName());
|
|
|
|
|
tplusStorageOutDO.setMatId(materialMapper.selectOne(MaterialDO::getCode,sm.getProjectSubCode()).getId());
|
|
|
|
|
tplusStorageOutDO.setStorageOkQty(sm.getStorageOkQty().multiply(new BigDecimal(-1)));
|
|
|
|
|
insertWhAndMats.add(tplusStorageOutDO);
|
|
|
|
|
});
|
|
|
|
|
tplusStorageOutMapper.delete(TplusStorageOutDO::getStockId,storageDO.getId());
|
|
|
|
|
tplusStorageOutMapper.insertBatch(insertWhAndMats);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private Date getLastDayOfMonth(Date date) {
|
|
|
|
|
|
|
|
|
|