Browse Source

收购结算

zhangyuewww 3 years ago
parent
commit
4874664878

+ 115 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/PaymentManagementServiceImpl.java

@@ -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();