【生产退料】数据入库

dev
siontion 3 months ago
parent f1a2d19eaf
commit a2ecf34453

@ -106,5 +106,9 @@ public class TplusStorageOutDO extends BaseDO {
* id
*/
private Long WhId;
/**
* id
*/
private Long MatId;
}

@ -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) {

@ -505,6 +505,7 @@ CREATE TABLE `tplus_storage_out` (
`fix_ratio` decimal(10,2) DEFAULT NULL COMMENT '定额',
`unit` varchar(255) DEFAULT NULL COMMENT '领料单位',
`wh_id` bigint(20) DEFAULT NULL COMMENT '仓库id',
`mat_id` bigint(20) DEFAULT NULL COMMENT '物料id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='用友生产领料表';

Loading…
Cancel
Save