chengqiang 2 年之前
父节点
当前提交
80e75dc4eb

+ 4 - 1
src/main/java/com/jeeplus/modules/sg/balancedlibrary/liKuResourcePool/utils/OptimalUtil.java

@@ -173,7 +173,10 @@ public class OptimalUtil {
             List newCurr = new ArrayList(curr);
             newCurr.add(next);
             solveReverse(index,sum+cableLength,newCurr,total,elements);
-            solveReverse(index,sum,curr,total,elements);
+            if(cableLength*100 > total){
+                solveReverse(index,sum,curr,total,elements);
+
+            }
         }
     }
 }

+ 3 - 1
src/main/java/com/jeeplus/modules/sg/balancedlibrary/materialReportDetails/service/MaterialReportDetailsService.java

@@ -360,7 +360,9 @@ public class MaterialReportDetailsService extends CrudService<MaterialReportDeta
                     .collect(Collectors.toList());
             OptimalUtil optimalUtil = new OptimalUtil();
             //返回最优解
-            optimalUtil.getOptimalReverse(m.getTotal(), collect).forEach(l -> {
+            List<LiKuResourcePool> tempList = optimalUtil.getOptimalReverse(m.getTotal(), collect);
+            int a = tempList.size();
+            tempList.forEach(l -> {
                 //上报物资对象,利库池对象,地区标识, 地区替换标识,段长非段长标识
                 liKuCompareMaterial(m, l, AreaTypeFlagEnum.SPAN, AreaTypeFlagEnum.SPAN_REPLACEMENT, MaterialsUnitFlagEnum.IS_SEGMENT);
             });

+ 3 - 1
src/main/java/com/jeeplus/modules/sg/financial/erpcredit/util/ErpInfo.java

@@ -189,7 +189,7 @@ public  class ErpInfo {
      * @param list 表格对象
      * @return 返回List<ErpCredit>
      */
-    public static List<ErpCredit> getAllErpCreditList(List<ErpAccount> list){
+    public static List<ErpCredit>  getAllErpCreditList(List<ErpAccount> list){
         //key为项目定义号
         Map<String,ErpCredit> map = new HashMap<>();
         for(int i=0;i<list.size();i++){
@@ -271,8 +271,10 @@ public  class ErpInfo {
                         erpCredit.setDeduction(DoubleUtil.add(erpCredit.getDeduction(),inputTax));
                     }else if(wbsDetail.contains("建设期贷款利息")) {
                         erpCredit.setOtherBuildLoan(DoubleUtil.add(erpCredit.getOtherBuildLoan(), lineItemAmount));
+                        erpCredit.setOtherTotalFee(DoubleUtil.add(erpCredit.getOtherTotalFee(),lineItemAmount));
                     }else if (wbsDetail.contains("线路施工赔偿费")){
                         erpCredit.setOtherLineDamages(DoubleUtil.add(erpCredit.getOtherLineDamages(),lineItemAmount));
+                        erpCredit.setOtherTotalFee(DoubleUtil.add(erpCredit.getOtherTotalFee(),lineItemAmount));
                     }
                 }
             }else{ //这里是物料描述不为空的情况

+ 101 - 57
src/main/java/com/jeeplus/modules/sg/financial/erpcredit/util/ExportUtilCalculate.java

@@ -595,29 +595,49 @@ public class ExportUtilCalculate {
             if (null!=erpCredit.getConsBuildingFee()){//建筑费
                 transferOfPower1.setPowerBuildFee(decimalFormat.format(erpCredit.getConsBuildingFee()+materialTotal+installEqm));
             }
-            if (null!=erpCredit.getConsInstallFee()&&erpCredit.getTenKvModel()!=null){//安装费
-                transferOfPower1.setPowerInstallFee(decimalFormat.format(erpCredit.getConsInstallFee() + materialTotal + installEqm - equipmentCost));//添加安装费
-            }else {
-                transferOfPower1.setPowerInstallFee("-");
-            }
-            if (transferOfPower1.getPowerInstallFee().equals("-")){//摊入费用
-                if (transferOfPower1.getPowerBuildFee()!=null){
-                    standInFee = Double.valueOf(transferOfPower1.getPowerBuildFee())+eqmValue;
-                    standInFee = Double.valueOf(transferOfPower1.getPowerBuildFee())/standInFee;
-                    if (erpCredit.getOtherTotalFee()!=null){
-                        standInFee = standInFee*erpCredit.getOtherTotalFee();//乘其他费用合计
-                    }
-                    transferOfPower1.setPowerStandInFee(decimalFormat.format(standInFee));//添加摊入费用
-                }
-            }else {
-                //摊入费用
-                standInFee = Double.valueOf(transferOfPower1.getPowerInstallFee())+eqmValue;
-                standInFee = Double.valueOf(transferOfPower1.getPowerInstallFee())/standInFee;
-                if (erpCredit.getOtherTotalFee()!=null){
-                    standInFee = standInFee*erpCredit.getOtherTotalFee();//乘其他费用合计
-                }
-                transferOfPower1.setPowerStandInFee(decimalFormat.format(standInFee));//添加摊入费用
+//            if (null!=erpCredit.getConsInstallFee()&&erpCredit.getTenKvModel()!=null){//安装费
+//                transferOfPower1.setPowerInstallFee(decimalFormat.format(erpCredit.getConsInstallFee() + materialTotal + installEqm - equipmentCost));//添加安装费
+//            }else {
+//                transferOfPower1.setPowerInstallFee("-");
+//            }
+            //2023-03 调整
+            Double consInstallFee = erpCredit.getConsInstallFee()==null?0.0:erpCredit.getConsInstallFee();
+            if(consInstallFee != 0.0){
+                transferOfPower1.setPowerInstallFee(decimalFormat.format(materialTotal/(materialTotal+equipmentCost)*consInstallFee+materialTotal));
+            }
+
+//            if (transferOfPower1.getPowerInstallFee().equals("-")){//摊入费用
+//                if (transferOfPower1.getPowerBuildFee()!=null){
+//                    standInFee = Double.valueOf(transferOfPower1.getPowerBuildFee())+eqmValue;
+//                    standInFee = Double.valueOf(transferOfPower1.getPowerBuildFee())/standInFee;
+//                    if (erpCredit.getOtherTotalFee()!=null){
+//                        standInFee = standInFee*erpCredit.getOtherTotalFee();//乘其他费用合计
+//                    }
+//                    transferOfPower1.setPowerStandInFee(decimalFormat.format(standInFee));//添加摊入费用
+//                }
+//            }else {
+//                //摊入费用
+//                standInFee = Double.valueOf(transferOfPower1.getPowerInstallFee())+eqmValue;
+//                standInFee = Double.valueOf(transferOfPower1.getPowerInstallFee())/standInFee;
+//                if (erpCredit.getOtherTotalFee()!=null){
+//                    standInFee = standInFee*erpCredit.getOtherTotalFee();//乘其他费用合计
+//                }
+//                transferOfPower1.setPowerStandInFee(decimalFormat.format(standInFee));//添加摊入费用
+//            }
+            //2023-03 调整
+
+            double powerBuildFee = transferOfPower1.getPowerBuildFee()==null? 0.0 : Double.parseDouble(transferOfPower1.getPowerBuildFee());
+            double powerInstallFee = transferOfPower1.getPowerInstallFee()==null? 0.0 : Double.parseDouble(transferOfPower1.getPowerInstallFee());
+            double consBuildingFee = erpCredit.getConsBuildingFee()==null? 0.0 : erpCredit.getConsBuildingFee();
+
+            standInFee = (powerBuildFee+powerInstallFee)/(consInstallFee+
+                    consBuildingFee+materialTotal+equipmentCost);
+            if (erpCredit.getOtherTotalFee()!=null){
+                standInFee = standInFee*erpCredit.getOtherTotalFee();//乘其他费用合计
             }
+            transferOfPower1.setPowerStandInFee(decimalFormat.format(standInFee));//添加摊入费用
+
+
             transferOfPower1s.add(transferOfPower1);//添加到集合中
         }
         List<TransferOfPowerLine> powerDeliveredAssets1 = getPowerDeliveredAssets(transferOfPower1s);
@@ -760,47 +780,71 @@ public class ExportUtilCalculate {
                         transferOfPower2.setPowerValue(decimalFormat.format(powerValue));//赋值设备价值
                     }
                     //安装费用
-                    if (null!=transferOfPower2.getPowerCapacity()&&null==erpCredit.getTenKvModel()){
-                        //未分摊安装费
-                        double v = allBookedFee;
-                        double buildFee = materialTotal - powerValueTotal + erpCredit.getConsTotalFee();
-                        Double aDouble = Double.valueOf(transferOfPower2.getPowerValue());
-                        double v1 = aDouble / v;
-                        double v2 = buildFee * v1;
-                        //安装费
-                        powerInstall = v2;
-                        transferOfPower2.setPowerInstallFee(decimalFormat.format(powerInstall));
-                    }else {
-//                        powerInstall = 0.0;
-                        transferOfPower2.setPowerInstallFee("0");
+//                    if (null!=transferOfPower2.getPowerCapacity()&&null==erpCredit.getTenKvModel()){
+//                        //未分摊安装费
+//                        double v = allBookedFee;
+//                        double buildFee = materialTotal - powerValueTotal + erpCredit.getConsTotalFee();
+//                        Double aDouble = Double.valueOf(transferOfPower2.getPowerValue());
+//                        double v1 = aDouble / v;
+//                        double v2 = buildFee * v1;
+//                        //安装费
+//                        powerInstall = v2;
+//                        transferOfPower2.setPowerInstallFee(decimalFormat.format(powerInstall));
+//                    }else {
+////                        powerInstall = 0.0;
+//                        transferOfPower2.setPowerInstallFee("0");
+//                    }
+
+                    if(null!=transferOfPower2.getPowerCapacity()&&null==erpCredit.getTenKvModel()){
+                        powerInstall = powerValue/powerValueTotal*(materialTotal+ erpCredit.getConsInstallFee());
+                    }else{
+                        powerInstall = powerValue/(materialTotal+powerValueTotal)*erpCredit.getConsInstallFee();
                     }
+
+                    //2023-03 修改
+                    transferOfPower2.setPowerInstallFee(decimalFormat.format(powerInstall));
+
                     //摊入
 //                    powerEqmMater = powerValueTotal+powerInstallFee;//===所有的设备价值+安装费+材料费
 
                     //线路为空,分摊规则与04-2安装规则一致
-                    if (null == erpCredit.getTenKvModel()) {
-                        if (Double.valueOf(transferOfPower2.getPowerValue())!=0.0){
-                            double v = allBookedFee;
-                            Double aDouble = Double.valueOf(transferOfPower2.getPowerValue());
-                            Double otherTotalFee = erpCredit.getOtherTotalFee();
-                            double v1 = aDouble / v;
-                            double v2 = otherTotalFee * v1;
-                            powerStandInFee = v2;
-                        }else {
-                            powerStandInFee =0.0;
-                        }
-                    }else {
-                        if (Double.valueOf(transferOfPower2.getPowerValue())!=0.0){
-                            double v = materialTotal - powerValueTotal + erpCredit.getConsTotalFee() +allBookedFee;
-                            Double aDouble = Double.valueOf(transferOfPower2.getPowerValue());
-                            Double otherTotalFee = erpCredit.getOtherTotalFee();
-                            double v1 = aDouble / v;
-                            double v2 = otherTotalFee * v1;
-                            powerStandInFee = v2;
-                        }else {
-                            powerStandInFee =0.0;
-                        }
+//                    if (null == erpCredit.getTenKvModel()) {
+//                        if (Double.valueOf(transferOfPower2.getPowerValue())!=0.0){
+//                            double v = allBookedFee;
+////                            Double aDouble = Double.valueOf(transferOfPower2.getPowerValue());
+//                            //2023-03 修改
+//                            Double aDouble = powerValue+powerInstall;
+//                            Double otherTotalFee = erpCredit.getOtherTotalFee();
+//                            double v1 = aDouble / v;
+//                            double v2 = otherTotalFee * v1;
+//                            powerStandInFee = v2;
+//                        }else {
+//                            powerStandInFee =0.0;
+//                        }
+//                    }else {
+//                        if (Double.valueOf(transferOfPower2.getPowerValue())!=0.0){
+//                            double v = materialTotal - powerValueTotal + erpCredit.getConsTotalFee() +allBookedFee;
+////                            Double aDouble = Double.valueOf(transferOfPower2.getPowerValue());
+//                            // 2023-03 修改
+//                            Double aDouble = powerValue+powerInstall;
+//                            Double otherTotalFee = erpCredit.getOtherTotalFee();
+//                            double v1 = aDouble / v;
+//                            double v2 = otherTotalFee * v1;
+//                            powerStandInFee = v2;
+//                        }else {
+//                            powerStandInFee =0.0;
+//                        }
+//                    }
+
+                    if(null == erpCredit.getTenKvModel()){
+                        powerStandInFee = powerValue/powerValueTotal*(erpCredit.getOtherTotalFee());
+                    }else{
+                        Double consinstallfee = erpCredit.getConsInstallFee() == null ? 0.0 : erpCredit.getConsInstallFee();
+                        Double consbuildingFee = erpCredit.getConsBuildingFee() == null ? 0.0 :erpCredit.getConsBuildingFee();
+
+                        powerStandInFee = (powerValue + powerInstall)/(powerValueTotal+materialTotal+ consbuildingFee+consinstallfee)*(erpCredit.getOtherTotalFee());
                     }
+
                     transferOfPower2.setPowerStandInFee(decimalFormat.format(powerStandInFee));//赋值设备分摊费用
                     //添加资产类别
                     if (transferOfPower2.getPowerCapacity().contains(POWER_BDZ)){

+ 28 - 13
src/main/java/com/jeeplus/modules/sg/financial/settlement/web/ProjectBudgetController.java

@@ -605,27 +605,42 @@ public class ProjectBudgetController extends BaseController {
             if (capitalList.size() > 0) {
                 //获取单条数据
                 List<ErpCredit> erpCredits = ErpInfo.getAllErpCreditList(capitalList);
-                for (ErpCredit e :
-                        erpCredits) {
+                for (ErpCredit e : erpCredits) {
                     //项目定义号
                     String itemId = e.getItemId();
                     String itemName = e.getItemName();
                     //将两个项目对应的
                     List<ErpCreditMaterial> erpCreditChild2s = e.getErpCreditChild2s();
                     List<ErpCreditEquipment> erpCreditChild1s = e.getErpCreditChild1s();
-                    if (erpCreditChild1s.size() > 0) {
-                        for (ErpCreditEquipment a :
-                                erpCreditChild1s) {
-                            ErpCreditMaterial material = new ErpCreditMaterial();
-                            material.setMtlBookedFee2(a.getEqmBookedFee1());
-                            material.setEqmMaterialDetails2(a.getEqmMaterialDetails1());
-                            material.setMtlUnit(a.getEqmUnit());
-                            material.setMtlNumbers(a.getEqmNumbers());
-                            material.setMtlSupplierName(a.getEqmSupplierName());
-                            material.setEqmMaterialCode(a.getEqmMaterialCode());
-                            erpCreditChild2s.add(material);
+//                    if (erpCreditChild1s.size() > 0) {
+//                        for (ErpCreditEquipment a :
+//                                erpCreditChild1s) {
+//                            ErpCreditMaterial material = new ErpCreditMaterial();
+//                            material.setMtlBookedFee2(a.getEqmBookedFee1());
+//                            material.setEqmMaterialDetails2(a.getEqmMaterialDetails1());
+//                            material.setMtlUnit(a.getEqmUnit());
+//                            material.setMtlNumbers(a.getEqmNumbers());
+//                            material.setMtlSupplierName(a.getEqmSupplierName());
+//                            material.setEqmMaterialCode(a.getEqmMaterialCode());
+//                            erpCreditChild2s.add(material);
+//                        }
+//                    }
+
+
+                    if(erpCreditChild1s.size()>0 && e.getTenKvModel()==null && erpCreditChild2s.size()>0){
+                        for(ErpCreditMaterial material:erpCreditChild2s){
+                            ErpCreditEquipment equipment = new ErpCreditEquipment();
+                            equipment.setEqmBookedFee1(material.getMtlBookedFee2());
+                            equipment.setEqmMaterialCode(material.getEqmMaterialCode());
+                            equipment.setEqmNumbers(material.getMtlNumbers());
+                            equipment.setEqmSupplierName(material.getMtlSupplierName());
+                            equipment.setEqmUnit(material.getMtlUnit());
+                            equipment.setEqmMaterialDetails1(material.getEqmMaterialDetails2());
+                            erpCreditChild1s.add(equipment);
                         }
+                        e.setErpCreditChild2s(null);
                     }
+
                     /*将项目的物料信息传入,更新项目的erp数量(返回值,0-无甲供材数据;1-完成;2-领料未完成)
                     0:无甲供材数据
                     1:领料完成