|
@@ -325,8 +325,123 @@ public class PaymentManagementServiceImpl extends ServiceImpl<PaymentManagementM
|
|
|
.eq("comp_id", paymentManagement1.getCompId()));
|
|
|
WarehouseInOutInfo warehouseInOutInfo=warehouseInOutInfoService.selectById(qualityInspectionManagement.getWarehouseInOutId());
|
|
|
if (warehouseInOutInfo!=null){
|
|
|
+ warehouseInOutInfo.setGrossWeight(paymentManagement1.getGrossWeight() / 1000);
|
|
|
+ warehouseInOutInfo.setTare(paymentManagement1.getTare() / 1000);
|
|
|
+ warehouseInOutInfo.setNetWeight(Double.valueOf(paymentManagement.getNetWeight() / 1000));
|
|
|
+ warehouseInOutInfo.setContractNo(paymentManagement1.getPaymentNo());
|
|
|
+ warehouseInOutInfo.setInOutType("收购入库");
|
|
|
+ warehouseInOutInfo.setStatusFlag("3");
|
|
|
+ warehouseInOutInfo.setStatus("已提交");
|
|
|
warehouseInOutInfo.setPaymentId(paymentManagement.getId());
|
|
|
warehouseInOutInfoService.updateById(warehouseInOutInfo);
|
|
|
+ float original = 0f;
|
|
|
+ // 查询货物库存量
|
|
|
+ WarehousePositionStorageInfo warehousePositionStorageInfo = warehousePositionStorageInfoService.selectOne(new EntityWrapper<WarehousePositionStorageInfo>()
|
|
|
+ .eq("position_id", warehouseInOutInfo.getPositionId())
|
|
|
+ .eq("goods_name_key", warehouseInOutInfo.getGoodsNameKey())
|
|
|
+ .eq("delete_flag", "0"));
|
|
|
+ // 判断是否有货
|
|
|
+ if (warehousePositionStorageInfo != null) {
|
|
|
+ original = Float.valueOf(String.valueOf(warehousePositionStorageInfo.getStorage()));
|
|
|
+ warehousePositionStorageInfo.setGoodsNameKey(warehouseInOutInfo.getGoodsNameKey());
|
|
|
+ // 更新库存量
|
|
|
+ warehousePositionStorageInfo.setStorage(warehousePositionStorageInfo.getStorage() + Float.valueOf(String.valueOf(warehouseInOutInfo.getNetWeight())));
|
|
|
+ warehousePositionStorageInfoService.updateById(warehousePositionStorageInfo);
|
|
|
+ }
|
|
|
+ // 没有货
|
|
|
+ else {
|
|
|
+ original = 0f;
|
|
|
+ WarehousePositionStorageInfo warehousePositionStorageInfo1 = new WarehousePositionStorageInfo();
|
|
|
+ warehousePositionStorageInfo1.setId(IdGenerator.generateUUID());
|
|
|
+ warehousePositionStorageInfo1.setPositionId(warehouseInOutInfo.getPositionId());
|
|
|
+ warehousePositionStorageInfo1.setBinNumber(warehouseInOutInfo.getBinNumber());
|
|
|
+ warehousePositionStorageInfo1.setGoodsName(warehouseInOutInfo.getGoodsName());
|
|
|
+ warehousePositionStorageInfo1.setGoodsNameKey(warehouseInOutInfo.getGoodsNameKey());
|
|
|
+ warehousePositionStorageInfo1.setStorage(warehouseInOutInfo.getNetWeight());
|
|
|
+ warehousePositionStorageInfoService.insert(warehousePositionStorageInfo1);
|
|
|
+ }
|
|
|
+ WarehouseInOutDetail warehouseInOutDetail = new WarehouseInOutDetail();
|
|
|
+ warehouseInOutDetail.setId(IdGenerator.generateUUID());
|
|
|
+ warehouseInOutDetail.setInfoId(warehouseInOutInfo.getId());
|
|
|
+ warehouseInOutDetail.setQualityInspector(qualityInspectionManagement.getQualityInspector());
|
|
|
+ warehouseInOutDetail.setWaterContent(qualityInspectionManagement.getWaterContent());
|
|
|
+ warehouseInOutDetail.setImpurity(qualityInspectionManagement.getImpurity());
|
|
|
+ warehouseInOutDetail.setBulkDensity(qualityInspectionManagement.getBulkDensity());
|
|
|
+ warehouseInOutDetail.setMildewGrain(qualityInspectionManagement.getMildewGrain());
|
|
|
+ warehouseInOutDetail.setJiaorenli(qualityInspectionManagement.getJiaorenli());
|
|
|
+ warehouseInOutDetail.setImperfectGrain(qualityInspectionManagement.getImperfectGrain());
|
|
|
+ warehouseInOutDetailService.insert(warehouseInOutDetail);
|
|
|
+ WeightedDetails weightedDetails = new WeightedDetails();
|
|
|
+ weightedDetails.setCompId(AuthSecurityUtils.getCurrentUserInfo().getCompId());
|
|
|
+ weightedDetails.setId(IdGenerator.generateUUID());
|
|
|
+ weightedDetails.setWarehouseId(warehouseInOutInfo.getBaseId());
|
|
|
+ weightedDetails.setWarehouseName(warehouseInOutInfo.getWarehouseName());
|
|
|
+ weightedDetails.setGoodsNameKey(warehouseInOutInfo.getGoodsNameKey());
|
|
|
+ weightedDetails.setGoodsName(warehouseInOutInfo.getGoodsName());
|
|
|
+ weightedDetails.setGrainType(warehouseInOutInfo.getType());
|
|
|
+ weightedDetails.setInTypeKey(warehouseInOutInfo.getInOutTypeKey());
|
|
|
+ weightedDetails.setInType(warehouseInOutInfo.getInOutType());
|
|
|
+ weightedDetails.setNetWeight(Float.valueOf(String.valueOf(warehouseInOutInfo.getNetWeight())));
|
|
|
+ weightedDetails.setPureWeight(warehouseInOutInfo.getPureWeight());
|
|
|
+ weightedDetails.setUnitPrice(warehouseInOutInfo.getCost());
|
|
|
+ weightedDetails.setDeductionAmount(warehouseInOutInfo.getDeductionAmount());
|
|
|
+ weightedDetails.setFreight(warehouseInOutInfo.getFreight());
|
|
|
+ weightedDetails.setOriginalStock(original);
|
|
|
+
|
|
|
+ // 查询入库全加权成本
|
|
|
+ List<WeightedDetails> weightedDetailsList = weightedDetailsService.selectList(new EntityWrapper<WeightedDetails>().eq("warehouse_id", warehouseInOutInfo.getBaseId())
|
|
|
+ .eq("goods_name", warehouseInOutInfo.getGoodsName()).orderBy("update_date", false));
|
|
|
+ if (CollectionUtils.isEmpty(weightedDetailsList)) {
|
|
|
+ Double newCost = (paymentManagement.getAmountIngPayable() - paymentManagement.getAmountIngPayable() * 0.09) / (Double.valueOf(String.valueOf(warehouseInOutInfo.getNetWeight())) + original);
|
|
|
+ weightedDetails.setCostBefore(Float.valueOf(String.valueOf(newCost)));
|
|
|
+ weightedDetails.setCostAfter(newCost);
|
|
|
+ } else {
|
|
|
+ weightedDetails.setCostBefore(weightedDetailsList.get(0).getCostBefore());
|
|
|
+ Double newCost = ((paymentManagement.getAmountIngPayable() - paymentManagement.getAmountIngPayable() * 0.09) + original * weightedDetails.getCostBefore()) / (Double.valueOf(String.valueOf(warehouseInOutInfo.getNetWeight())) + original);
|
|
|
+ weightedDetails.setCostAfter(newCost);
|
|
|
+ }
|
|
|
+ // 计算新加权成本
|
|
|
+
|
|
|
+
|
|
|
+ weightedDetailsService.insert(weightedDetails);
|
|
|
+ // 修改成本信息表
|
|
|
+ CostManagementInfo costManagementInfo = costManagementInfoService.selectOne(new EntityWrapper<CostManagementInfo>().eq("warehouse_id", weightedDetails.getWarehouseId())
|
|
|
+ .eq("comp_id", paymentManagement1.getCompId())
|
|
|
+ .eq("goods_name_key", weightedDetails.getGoodsNameKey()));
|
|
|
+ List<WeightedDetails> weightedDetailsLists = weightedDetailsService.selectList(new EntityWrapper<WeightedDetails>().eq("warehouse_id", warehouseInOutInfo.getBaseId())
|
|
|
+ .eq("goods_name_key", warehouseInOutInfo.getGoodsNameKey()).orderBy("update_date", false));
|
|
|
+ Double net = 0d;
|
|
|
+ List<WarehousePositionInfo> warehousePositionInfos = warehousePositionInfoService.selectList(new EntityWrapper<WarehousePositionInfo>()
|
|
|
+ .eq("base_id", weightedDetails.getWarehouseId()));
|
|
|
+ if (!CollectionUtils.isEmpty(warehousePositionInfos)) {
|
|
|
+ for (int i = 0; i < warehousePositionInfos.size(); i++) {
|
|
|
+ List<WarehousePositionStorageInfo> warehousePositionStorageInfos = warehousePositionStorageInfoService.selectList(new EntityWrapper<WarehousePositionStorageInfo>()
|
|
|
+ .eq("position_id", warehousePositionInfos.get(i).getId())
|
|
|
+ .eq("goods_name_key", weightedDetails.getGoodsNameKey()));
|
|
|
+ net = warehousePositionStorageInfos.stream().collect(Collectors.summingDouble(WarehousePositionStorageInfo::getStorage));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (costManagementInfo == null) {
|
|
|
+ CostManagementInfo costManagementInfo1 = new CostManagementInfo();
|
|
|
+ costManagementInfo1.setCompId(AuthSecurityUtils.getCurrentUserInfo().getCompId());
|
|
|
+ costManagementInfo1.setId(IdGenerator.generateUUID());
|
|
|
+ costManagementInfo1.setWarehouseId(weightedDetails.getWarehouseId());
|
|
|
+ costManagementInfo1.setWarehouseName(weightedDetails.getWarehouseName());
|
|
|
+ costManagementInfo1.setGoodsNameKey(weightedDetails.getGoodsNameKey());
|
|
|
+ costManagementInfo1.setGoodsName(weightedDetails.getGoodsName());
|
|
|
+ WarehouseBaseInfo warehouseBaseInfo = warehouseBaseInfoService.selectOne(new EntityWrapper<WarehouseBaseInfo>()
|
|
|
+ .eq("warehouse_name", paymentManagement1.getWarehouseName())
|
|
|
+ .eq("comp_id", qualityInspectionManagement.getCompId()));
|
|
|
+ costManagementInfo1.setWarehouseType(warehouseBaseInfo.getWarehouseType());
|
|
|
+
|
|
|
+ costManagementInfo1.setStorage(net);
|
|
|
+ costManagementInfo1.setCost(weightedDetails.getCostAfter());
|
|
|
+ costManagementInfoService.insert(costManagementInfo1);
|
|
|
+ } else {
|
|
|
+ costManagementInfo.setCost(weightedDetails.getCostAfter());
|
|
|
+ costManagementInfo.setStorage(net);
|
|
|
+ costManagementInfoService.updateById(costManagementInfo);
|
|
|
+ }
|
|
|
}
|
|
|
else{
|
|
|
WarehouseInOutInfo warehouseInOutInfo1 = new WarehouseInOutInfo();
|