|
@@ -0,0 +1,494 @@
|
|
|
+package com.jeeplus.modules.sg.financial.erpcredit.util;
|
|
|
+
|
|
|
+import com.jeeplus.modules.sg.financial.erpcredit.entity.*;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.ss.usermodel.Row;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+public class ErpInfo {
|
|
|
+ public final static String CON_PROJECT = "工程成本";
|
|
|
+
|
|
|
+ public final static String CON_IPE = "安装工程支出";
|
|
|
+
|
|
|
+ public final static String CON_PES= "待摊支出";
|
|
|
+
|
|
|
+ public final static String CON_PLPM = "项目法人管理费";
|
|
|
+
|
|
|
+ public final static String CON_PMF= "项目管理经费";
|
|
|
+
|
|
|
+ public final static String CON_OTR ="其他";
|
|
|
+
|
|
|
+ public final static String CON_METF= "会议费";
|
|
|
+
|
|
|
+ public final static String CON_PSF="工程监理费";
|
|
|
+
|
|
|
+ public final static String CON_EDF="工程设计费";
|
|
|
+
|
|
|
+ public final static String CON_OBL="建设期贷款利息";
|
|
|
+
|
|
|
+ public final static String CON_OLD="线路施工赔偿费";
|
|
|
+
|
|
|
+ public final static String CON_TSF="变压器";
|
|
|
+
|
|
|
+ public final static String CON_RNB="环网柜";
|
|
|
+
|
|
|
+ public final static String CON_BST="箱式变电站";
|
|
|
+
|
|
|
+ public final static String CON_HVS="高压开关柜";
|
|
|
+
|
|
|
+ public final static String CON_OIC="架空绝缘导线";
|
|
|
+
|
|
|
+ public final static String CON_OICAC10="架空绝缘导线,AC10kV";
|
|
|
+ public final static String CON_OICAC20="架空绝缘导线,AC20kV";
|
|
|
+
|
|
|
+ public final static String CON_PRC="电缆电力";
|
|
|
+
|
|
|
+ public final static String CON_PRCAC10="电力电缆,AC10kV";
|
|
|
+ public final static String CON_PRCAC20="电力电缆,AC20kV";
|
|
|
+
|
|
|
+ public final static String CON_lINE = "-";
|
|
|
+
|
|
|
+ public final static String CON_PlPlQ=CON_PROJECT+CON_lINE+CON_PES+CON_lINE+CON_OTR;//工程成本-待摊支出-其他
|
|
|
+
|
|
|
+ public final static String CON_PLPLPLQ=CON_PlPlQ+CON_lINE+CON_PES+CON_lINE+CON_PLPM+CON_lINE+CON_OTR;//工程成本-待摊支出-项目法人管理费-其他
|
|
|
+
|
|
|
+ public final static String CON_PLM=CON_PMF+CON_lINE+CON_METF;//项目管理经费 - 会议费
|
|
|
+
|
|
|
+ public static Boolean getContains(Object object,Object object1){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取表格数据
|
|
|
+ * @param importUtil
|
|
|
+ * @return List<ErpAccount> 导入表格数据
|
|
|
+ */
|
|
|
+ public static List<ErpAccount> getErpAccount(ImportUtil importUtil) {
|
|
|
+ int lastRow = importUtil.getLastDataRowNum();
|
|
|
+ List<ErpAccount> list = new ArrayList<ErpAccount>();
|
|
|
+ ErpAccount erpAccount = null;
|
|
|
+ for(int i=1; i<lastRow;i++){
|
|
|
+ erpAccount = new ErpAccount();
|
|
|
+ Row row = importUtil.getRow(i);
|
|
|
+ String erpCode = (String) importUtil.getCellValue(row,10);
|
|
|
+ if(StringUtils.isNotBlank(erpCode)) {
|
|
|
+ erpAccount.setProjectDefinitionCode(erpCode);
|
|
|
+ erpAccount.setProjectDefinitionDetails((String)importUtil.getCellValue(row,11));
|
|
|
+ erpAccount.setSubjectName((String)importUtil.getCellValue(row,13));
|
|
|
+ erpAccount.setLineItemAmount((String)importUtil.getCellValue(row,15));
|
|
|
+ erpAccount.setTheNumber((String)importUtil.getCellValue(row,16));
|
|
|
+ erpAccount.setMaterialDetails((String)importUtil.getCellValue(row,19));
|
|
|
+ erpAccount.setUnit((String)importUtil.getCellValue(row,20));
|
|
|
+ erpAccount.setWbsDetails((String)importUtil.getCellValue(row,9));
|
|
|
+ list.add(erpAccount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 传入表的数据集合,获取设备费/材料费/10kV线路信息 集合
|
|
|
+ * 分别获取List<ErpCreditChild1>(设备费)<ErpCreditChild2>(材料费)List<ErpCreditChild3>(10kV线路信息)集合中
|
|
|
+ * 与List<ErpCredit>项目定义编号对应的对象
|
|
|
+ * 添加到List<ErpCredit>集合中的erpCreditChild1s,erpCreditChild2s,erpCreditChild3s.
|
|
|
+ * @param list 表格对象
|
|
|
+ * @return 返回List<ErpCredit>
|
|
|
+ */
|
|
|
+ public static List<ErpCredit> getAllErpCreditList(List<ErpAccount> list){
|
|
|
+ boolean flag; //设备费开关:施工费中 建筑费 安装判断 true-建筑费 false-安装费
|
|
|
+ //获取erpCredit对象 list集合
|
|
|
+ List<ErpCredit> erpCredits = getListErpCredit(list);
|
|
|
+ //获取ErpCreditChild1对象 list集合 (设备费)
|
|
|
+ List<ErpCreditChild1> erpCreditChild1s = getListErpCreditChild1(list);
|
|
|
+ //获取ErpCreditChild2对象 list集合 (材料费)
|
|
|
+ List<ErpCreditChild2> erpCreditChild2s = getListErpCreditChild2(list);
|
|
|
+ //获取ErpCreditChild3对象 list集合 (10kV线路信息)
|
|
|
+ List<ErpCreditChild3> erpCreditChild3s = getListErpCreditChild3(list);
|
|
|
+ //循环erpCredit对象 list集合
|
|
|
+ for (ErpCredit erpCredit:erpCredits){
|
|
|
+ flag = true;//赋初始值
|
|
|
+ //设备费 集合 循环
|
|
|
+ for (ErpCreditChild1 erpCreditChild1:erpCreditChild1s){
|
|
|
+ //判断 erpCredit对象项目定义编号 与 ErpCreditChild1对象项目定义编号
|
|
|
+ if (erpCredit.getItemId().equals(erpCreditChild1.getErpCredit().getItemId())){
|
|
|
+ //把erpCreditChild1对象 添加到 List<ErpCredit>的List<ErpCreditChild1>中
|
|
|
+ erpCredit.getErpCreditChild1s().add(erpCreditChild1);
|
|
|
+ flag =false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //材料费 集合 循环
|
|
|
+ for (ErpCreditChild2 erpCreditChild2:erpCreditChild2s){
|
|
|
+ //判断 erpCredit对象项目定义编号 与 ErpCreditChild2对象项目定义编号
|
|
|
+ if (erpCreditChild2.getErpCredit().getItemId().equals(erpCredit.getItemId())){
|
|
|
+ //把erpCreditChild1对象 添加到 List<ErpCredit>的List<ErpCreditChild2>中
|
|
|
+ erpCredit.getErpCreditChild2s().add(erpCreditChild2);
|
|
|
+ flag =false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //10kV线路 集合 循环
|
|
|
+ for (ErpCreditChild3 erpCreditChild3:erpCreditChild3s){
|
|
|
+ //判断 erpCredit对象项目定义编号 与 ErpCreditChild2对象项目定义编号
|
|
|
+ if (erpCreditChild3.getErpCredit().getItemId().equals(erpCredit.getItemId())){
|
|
|
+ //把erpCreditChild1对象 添加到 List<ErpCredit>的List<ErpCreditChild1>中
|
|
|
+ erpCredit.getErpCreditChild3s().add(erpCreditChild3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (flag){//如果为true
|
|
|
+ //施工费合计 赋值为 建筑费(无 设备费入账金额 以及 材料费入账金额)
|
|
|
+ erpCredit.setConsBuildingFee(erpCredit.getConsTotalFee());
|
|
|
+ }else {
|
|
|
+ //施工费合计 赋值为安装费(有 设备费入账金额 或者 材料费入账金额)
|
|
|
+ erpCredit.setConsInstallFee(erpCredit.getConsTotalFee());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return erpCredits;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取单独 唯一 的 数据集合(项目定义编号——其他费用合计)
|
|
|
+ * @param list 读取表格获得的列表
|
|
|
+ * @return List<ErpCredit> 主类 集合(单独唯一的数据集合)
|
|
|
+ */
|
|
|
+ public static List<ErpCredit> getListErpCredit(List<ErpAccount> list){
|
|
|
+ List<ErpCredit> erpCredits = new ArrayList<ErpCredit>();//定义集合
|
|
|
+ ErpCredit erpCredit=null;//要获取集合对象
|
|
|
+ ErpAccount erpAccount=null;//导入表格对象
|
|
|
+ boolean flag = true;//判断 项目定义编号是否相同 true-不相同 false-相同
|
|
|
+ double actualInvestment = 0.0;//实际投资
|
|
|
+ double consTotalFee=0.0;//施工费:合计
|
|
|
+ double otherSupervisorFee=0.0;//其他费用:监理费:入账金额
|
|
|
+ double otherDesignFee = 0.0;//其他费用:设计费:入账金额
|
|
|
+ double otherBuildLoan=0.0;//其他费用:建设期贷款利息
|
|
|
+ double otherLineDamages=0.0;//线路施工赔偿费
|
|
|
+ double otherLegalManage=0.0;//法人管理费
|
|
|
+ double otherTotalFee=0.0;//其他费用合计
|
|
|
+ double lineItemAmount;//行项目金额合计
|
|
|
+ //循环导入表格对象
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ flag = true;//默认值为true (默认项目定义编号不相同)
|
|
|
+ erpAccount=list.get(i);//获取erpAccount对象
|
|
|
+ //判断 导入表格 对象 的行项目金额是否为空
|
|
|
+ if(erpAccount.getLineItemAmount().isEmpty()){
|
|
|
+ lineItemAmount=0.0;//如果为空 默认值为0.0;
|
|
|
+ }else {
|
|
|
+ //否则 获取行羡慕金额
|
|
|
+ lineItemAmount = Double.parseDouble(erpAccount.getLineItemAmount());
|
|
|
+ }
|
|
|
+ //判断当前 集合有数据
|
|
|
+ if (null!=erpCredits&&erpCredits.size()>0){
|
|
|
+ //循环 当前得到的ErpCredits对象
|
|
|
+ for (int j = 0; j < erpCredits.size(); j++) {
|
|
|
+ erpCredit = erpCredits.get(j);//获取 erpCredit对象
|
|
|
+ //判断项目定义号相同
|
|
|
+ if (erpAccount.getProjectDefinitionCode().equals(erpCredit.getItemId())){
|
|
|
+ //筛选(科目名称)中包含(工程成本-)的所有内容,统计行项目金额合计
|
|
|
+ if (erpAccount.getSubjectName().contains(ErpInfo.CON_PROJECT)){
|
|
|
+ //当前实际投资+获取到的行项目金额
|
|
|
+ actualInvestment=erpCredit.getActualInvestment()+lineItemAmount;
|
|
|
+ //替换 实际投资金额
|
|
|
+ erpCredit.setActualInvestment(actualInvestment);
|
|
|
+ }
|
|
|
+ //施工费:合计:入账金额 判断物料描述是否为空
|
|
|
+ if (erpAccount.getMaterialDetails().isEmpty()) {
|
|
|
+ //筛选物料描述为空的(科目名称)中包含(工程成本-安装工程支出)的所有内容,统计行项目金额合计
|
|
|
+ if (erpAccount.getSubjectName().contains(ErpInfo.CON_PROJECT + ErpInfo.CON_lINE + ErpInfo.CON_IPE)) {
|
|
|
+ //当前施工费:合计+获取到的行项目金额
|
|
|
+ consTotalFee = erpCredit.getConsTotalFee()+ lineItemAmount;
|
|
|
+ //替换 施工费:合计金额
|
|
|
+ erpCredit.setConsTotalFee(consTotalFee);
|
|
|
+ }
|
|
|
+ //筛选物料描述为空的先筛选(科目名称)中包含(工程成本-待摊支出-其他/工程成本-待摊支出-项目法人管理费-其他/项目管理经费 - 会议费)
|
|
|
+ if (erpAccount.getSubjectName().contains(ErpInfo.CON_PlPlQ)||
|
|
|
+ erpAccount.getSubjectName().contains(ErpInfo.CON_PLPLPLQ)||
|
|
|
+ erpAccount.getSubjectName().contains(ErpInfo.CON_PLM)){
|
|
|
+ //筛选(WBS描述)为工程监理费的行项目金额合计
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_PSF)){
|
|
|
+ otherSupervisorFee = erpCredit.getOtherSupervisorFee()+lineItemAmount;//监理费
|
|
|
+ erpCredit.setOtherSupervisorFee(otherSupervisorFee);
|
|
|
+ }
|
|
|
+ //判断WBS描述为工程设计费
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_EDF)){
|
|
|
+ otherDesignFee = erpCredit.getOtherDesignFee() + lineItemAmount;//设计费
|
|
|
+ erpCredit.setOtherDesignFee(otherDesignFee);
|
|
|
+ }
|
|
|
+ //判断WBS描述为建设期贷款利息
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_OBL)){
|
|
|
+ otherBuildLoan =erpCredit.getOtherBuildLoan()+lineItemAmount;//建设期贷款利息
|
|
|
+ erpCredit.setOtherBuildLoan(otherBuildLoan);
|
|
|
+ }
|
|
|
+ //判断WBS描述为线路施工赔偿费
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_OLD)){
|
|
|
+ otherLineDamages = erpCredit.getOtherLineDamages()+lineItemAmount;//建设期贷款利息
|
|
|
+ erpCredit.setOtherLineDamages(otherLineDamages);
|
|
|
+ }
|
|
|
+ //其他费用:法人管理费
|
|
|
+ otherLegalManage=erpCredit.getOtherLegalManage()+lineItemAmount;
|
|
|
+ erpCredit.setOtherLegalManage(otherLegalManage);
|
|
|
+ //其他费用:合计
|
|
|
+ otherTotalFee = erpCredit.getOtherTotalFee()+ lineItemAmount;
|
|
|
+ erpCredit.setOtherTotalFee(otherTotalFee);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ flag = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //第一次,或者项目定义编码不同 进行如下方法计算
|
|
|
+ if (flag){
|
|
|
+ erpCredit = new ErpCredit();//获取ErpCredit对象
|
|
|
+ erpCredit.setItemId(erpAccount.getProjectDefinitionCode());//添加项目定义编号
|
|
|
+ erpCredit.setItemName(erpAccount.getProjectDefinitionDetails());//项目名称
|
|
|
+ erpCredit.setConsTotalFee(lineItemAmount);//添加施工费合计
|
|
|
+ erpCredit.setOtherSupervisorFee(lineItemAmount);//添加其他:监理费
|
|
|
+ erpCredit.setOtherDesignFee(lineItemAmount);//添加 其他设计费
|
|
|
+// erpCredit.setOtherBeWorkFee(lineItemAmount); // 添加 项目前期工作费 (暂不确定)
|
|
|
+ erpCredit.setOtherBuildLoan(lineItemAmount);//添加 建设期贷款利息
|
|
|
+ erpCredit.setOtherLineDamages(lineItemAmount);//添加 线路施工赔偿费
|
|
|
+ erpCredit.setOtherLegalManage(lineItemAmount);//添加 法人管理费
|
|
|
+ //其他费用:合计
|
|
|
+ erpCredit.setOtherTotalFee(lineItemAmount);
|
|
|
+
|
|
|
+ //筛选(科目名称)中包含(工程成本-)的所有内容,统计行项目金额合计
|
|
|
+ if (erpAccount.getSubjectName().contains(ErpInfo.CON_PROJECT)){
|
|
|
+ //添加行项目金额 到 ErpCredit对象中的实际投资金额
|
|
|
+ erpCredit.setActualInvestment(lineItemAmount);
|
|
|
+ }
|
|
|
+ //施工费:合计:入账金额 判断物料描述是否为空
|
|
|
+ if (erpAccount.getMaterialDetails().isEmpty()) {
|
|
|
+ //筛选物料描述为空的(科目名称)中包含(工程成本-安装工程支出)的所有内容,统计行项目金额合计
|
|
|
+ if (erpAccount.getSubjectName().contains(ErpInfo.CON_PROJECT + ErpInfo.CON_lINE + ErpInfo.CON_IPE)) {
|
|
|
+ //得到施工费
|
|
|
+ erpCredit.setConsTotalFee(lineItemAmount);
|
|
|
+ }
|
|
|
+ //筛选物料描述为空的先筛选(科目名称)中包含(工程成本-待摊支出-其他/工程成本-待摊支出-项目法人管理费-其他/项目管理经费 - 会议费)
|
|
|
+ if (erpAccount.getSubjectName().contains(ErpInfo.CON_PlPlQ)||
|
|
|
+ erpAccount.getSubjectName().contains(ErpInfo.CON_PLPLPLQ)||
|
|
|
+ erpAccount.getSubjectName().contains(ErpInfo.CON_PLM)){
|
|
|
+ //判断WBS描述为工程监理费
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_PSF)){
|
|
|
+ erpCredit.setOtherSupervisorFee(lineItemAmount);
|
|
|
+ }
|
|
|
+ //判断WBS描述为工程设计费
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_EDF)){
|
|
|
+ erpCredit.setOtherDesignFee(lineItemAmount);
|
|
|
+ }
|
|
|
+ //判断WBS描述为建设期贷款利息
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_OBL)){
|
|
|
+ erpCredit.setOtherBuildLoan(lineItemAmount);
|
|
|
+ }
|
|
|
+ //判断WBS描述为线路施工赔偿费
|
|
|
+ if (erpAccount.getWbsDetails().equals(ErpInfo.CON_OLD)){
|
|
|
+ erpCredit.setOtherLineDamages(lineItemAmount);
|
|
|
+ }
|
|
|
+ //其他费用:法人管理费
|
|
|
+ erpCredit.setOtherLegalManage(lineItemAmount);
|
|
|
+ //其他费用:合计
|
|
|
+ erpCredit.setOtherTotalFee(lineItemAmount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ erpCredits.add(erpCredit);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return erpCredits;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取设备的list集合
|
|
|
+ * @param list 导入的表格 bean对象
|
|
|
+ * @return 设备的list集合
|
|
|
+ */
|
|
|
+ public static List<ErpCreditChild1> getListErpCreditChild1(List<ErpAccount> list){
|
|
|
+ Double eqmNumbers=0.0;//设备台数
|
|
|
+ Double eqmBookedFee=0.0;//设备入账金额
|
|
|
+ String materialDetails="";//筛选kva
|
|
|
+ boolean flag = true;//开关:判断集合是否重复 true-物料描述不同 false-项目定义编号相同且物料描述相同
|
|
|
+ ErpCreditChild1 erpCreditChild1;//设备对象
|
|
|
+ ErpCredit erpCredit;//设备父类
|
|
|
+ ErpAccount erpAccount;//数据集合
|
|
|
+ List<ErpCreditChild1> creditListChild1 = new ArrayList<ErpCreditChild1>();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ flag=true;
|
|
|
+ erpAccount=list.get(i);
|
|
|
+ //判断设备台数是否为空
|
|
|
+ if (erpAccount.getTheNumber().isEmpty()){//设备台数
|
|
|
+ eqmNumbers=0.0; //为空时 赋初始值0.0
|
|
|
+ }else {
|
|
|
+ eqmNumbers = Double.parseDouble(erpAccount.getTheNumber()); //否则 获取设备台数 信息
|
|
|
+ }
|
|
|
+ //判断如行项目金额是否为空
|
|
|
+ if (erpAccount.getLineItemAmount().isEmpty()){
|
|
|
+ eqmBookedFee=0.0;//入账金额赋初始值
|
|
|
+ }else {
|
|
|
+ eqmBookedFee = Double.parseDouble(erpAccount.getLineItemAmount());//行项目金额赋值费入账金额
|
|
|
+ }
|
|
|
+ //判断当前 设备费 集合是否存在
|
|
|
+ if (null!=creditListChild1&&creditListChild1.size()>0){
|
|
|
+ for (int j = 0; j < creditListChild1.size(); j++) {
|
|
|
+ erpCreditChild1 = creditListChild1.get(j);//获取设备对象
|
|
|
+ //判断项目定义号是否相同
|
|
|
+ if (erpCreditChild1.getErpCredit().getItemId().equals(erpAccount.getProjectDefinitionCode())) {
|
|
|
+ //判断物料描述是否相同
|
|
|
+ if (erpAccount.getMaterialDetails().equals(erpCreditChild1.getEqmMaterialDetails1())) {
|
|
|
+ eqmBookedFee += erpCreditChild1.getEqmBookedFee1();//累加 入账金额
|
|
|
+ erpCreditChild1.setEqmBookedFee1(eqmBookedFee);//替换
|
|
|
+ eqmNumbers += erpCreditChild1.getEqmNumbers();//累计 数量
|
|
|
+ erpCreditChild1.setEqmNumbers(eqmNumbers);//替换
|
|
|
+ flag = false;// 项目定义编号相同且物料描述相同(当前ErpAccount对象在ErpCreditChild1对象中存在且相同 跳过下面方法)
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (flag){
|
|
|
+ //筛选物料描述包含(变压器、环网柜(无“”有“无”字样)、箱式变电站、高压开关柜),分别显示筛选出的物料描述
|
|
|
+ if (erpAccount.getMaterialDetails().contains(ErpInfo.CON_TSF)||
|
|
|
+ erpAccount.getMaterialDetails().contains(ErpInfo.CON_RNB)||
|
|
|
+ erpAccount.getMaterialDetails().contains(ErpInfo.CON_BST)||
|
|
|
+ erpAccount.getMaterialDetails().contains(ErpInfo.CON_HVS)){
|
|
|
+ erpCreditChild1 = new ErpCreditChild1();//获取设备对象
|
|
|
+ erpCredit=new ErpCredit();//获取设备 父类 主类
|
|
|
+ materialDetails = erpAccount.getMaterialDetails();//获取物料描述
|
|
|
+ //截取总容量kVA前数字
|
|
|
+ if (materialDetails.contains("kVA")){
|
|
|
+ String str[] = materialDetails.split(",");
|
|
|
+ for (int k = 0; k < str.length; k++) {
|
|
|
+ if (str[k].contains("kVA")){
|
|
|
+ materialDetails = str[k].substring(0,str[k].indexOf("kVA"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ erpCreditChild1.setEqmTotalCapacity(materialDetails);//添加总容量
|
|
|
+ }
|
|
|
+ erpCredit.setItemId(erpAccount.getProjectDefinitionCode());//添加项目定义编码
|
|
|
+ erpCreditChild1.setEqmMaterialDetails1(erpAccount.getMaterialDetails());//添加物料描述
|
|
|
+ erpCreditChild1.setEqmUnit(erpAccount.getUnit());//添加的单位
|
|
|
+ erpCreditChild1.setEqmNumbers(eqmNumbers);//添加数量
|
|
|
+ erpCreditChild1.setEqmBookedFee1(eqmBookedFee);//添加入账金额
|
|
|
+ erpCreditChild1.setErpCredit(erpCredit);
|
|
|
+ creditListChild1.add(erpCreditChild1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return creditListChild1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取材料的list集合
|
|
|
+ * @param erpAccounts 导入的表格 bean对象
|
|
|
+ * @return 材料 list金额
|
|
|
+ */
|
|
|
+ public static List<ErpCreditChild2> getListErpCreditChild2(List<ErpAccount> erpAccounts){
|
|
|
+ List<ErpCreditChild2> creditListChild2 = new ArrayList<ErpCreditChild2>();
|
|
|
+ boolean flag = true;//判断 材料费 true-物料描述不同或者项目定义编号不同 false-仙姑定义编号物料描述相同
|
|
|
+ double eqmBookedFee2=0.0;//材料入账金额
|
|
|
+ ErpCreditChild2 erpCreditChild2=null;
|
|
|
+ ErpCredit erpCredit = null;
|
|
|
+ ErpAccount erpAccount=null;
|
|
|
+ for (int i = 0; i < erpAccounts.size(); i++) {
|
|
|
+ flag=true;//默认初始值 项目定义编号不同
|
|
|
+ erpAccount = erpAccounts.get(i);
|
|
|
+ //判断行项目金额是否为空
|
|
|
+ if (erpAccount.getLineItemAmount().isEmpty()){
|
|
|
+ eqmBookedFee2 = 0.0;//材料入账金额初始值为0.0
|
|
|
+ }else {
|
|
|
+ //赋值材料入账金额为行项目金额
|
|
|
+ eqmBookedFee2 = Double.parseDouble(erpAccount.getLineItemAmount());
|
|
|
+ }
|
|
|
+ //判断creditListChild2对象集合 是否存在
|
|
|
+ if (null!=creditListChild2&&creditListChild2.size()>0){
|
|
|
+ for (int j = 0; j < creditListChild2.size(); j++) {
|
|
|
+ erpCreditChild2 = creditListChild2.get(j);
|
|
|
+ //判断项目定义号是否相同
|
|
|
+ if (erpCreditChild2.getErpCredit().getItemId().equals(erpAccount.getProjectDefinitionCode())) {
|
|
|
+ //判断物料描述是否相同
|
|
|
+ if (erpAccount.getMaterialDetails().equals(erpCreditChild2.getEqmMaterialDetails2())) {
|
|
|
+ eqmBookedFee2 += erpCreditChild2.getMtlBookedFee2();
|
|
|
+ erpCreditChild2.setMtlBookedFee2(eqmBookedFee2);
|
|
|
+ flag=false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (flag){
|
|
|
+ //排除 物料描述为空的内容
|
|
|
+ if (!erpAccount.getMaterialDetails().isEmpty()) {
|
|
|
+ //筛选物料描述不包含(变压器、环网柜(无“”有“无”字样)、箱式变电站、高压开关柜)的行项目金额合计
|
|
|
+ if (!erpAccount.getMaterialDetails().contains(ErpInfo.CON_TSF) &&
|
|
|
+ !erpAccount.getMaterialDetails().contains(ErpInfo.CON_RNB) &&
|
|
|
+ !erpAccount.getMaterialDetails().contains(ErpInfo.CON_BST) &&
|
|
|
+ !erpAccount.getMaterialDetails().contains(ErpInfo.CON_HVS)) {
|
|
|
+ erpCreditChild2 = new ErpCreditChild2();//获取材料费对象
|
|
|
+ erpCredit = new ErpCredit();//获取材料 父类 对象
|
|
|
+ erpCredit.setItemId(erpAccount.getProjectDefinitionCode());//添加项目id
|
|
|
+ erpCreditChild2.setEqmMaterialDetails2(erpAccount.getMaterialDetails());//添加物料描述
|
|
|
+ erpCreditChild2.setMtlBookedFee2(eqmBookedFee2);//添加项目材料费
|
|
|
+ erpCreditChild2.setErpCredit(erpCredit);
|
|
|
+ creditListChild2.add(erpCreditChild2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return creditListChild2;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取 10kv数据集合
|
|
|
+ * @param erpAccounts
|
|
|
+ * @return List<ErpCreditChild3> 10KV线路信息
|
|
|
+ */
|
|
|
+ public static List<ErpCreditChild3> getListErpCreditChild3(List<ErpAccount> erpAccounts){
|
|
|
+ List<ErpCreditChild3> creditChild3s = new ArrayList<ErpCreditChild3>();
|
|
|
+ boolean flag = true;//判断 10KV线路信息
|
|
|
+ ErpCredit erpCredit;
|
|
|
+ ErpAccount erpAccount;
|
|
|
+ Double tenKvLength;//10kv线路信息长度
|
|
|
+ ErpCreditChild3 erpCreditChild3;
|
|
|
+ for (int i = 0; i < erpAccounts.size(); i++) {
|
|
|
+ flag=true;
|
|
|
+ erpAccount = erpAccounts.get(i);
|
|
|
+ if (erpAccount.getTheNumber().isEmpty()){
|
|
|
+ tenKvLength=0.0;
|
|
|
+ }else {
|
|
|
+ tenKvLength = Double.parseDouble(erpAccount.getTheNumber());
|
|
|
+ }
|
|
|
+ //相同判断
|
|
|
+ if (null!=creditChild3s&&creditChild3s.size()>0){
|
|
|
+ for (int j = 0; j < creditChild3s.size(); j++) {
|
|
|
+ erpCreditChild3 = creditChild3s.get(j);
|
|
|
+ if (erpCreditChild3.getErpCredit().getItemId().equals(erpAccount.getProjectDefinitionCode())) {
|
|
|
+ //判断物料描述是否相同
|
|
|
+ if (erpAccount.getMaterialDetails().equals(erpCreditChild3.getTenKvModel())) {
|
|
|
+ tenKvLength +=erpCreditChild3.getTenKvLength();
|
|
|
+ erpCreditChild3.setTenKvLength(tenKvLength);
|
|
|
+ erpCreditChild3.setTenKvLineLength(tenKvLength);
|
|
|
+ erpCreditChild3.setTenKvItsLine(tenKvLength);
|
|
|
+ flag=false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (flag){//赋值初始值
|
|
|
+ if (erpAccount.getMaterialDetails().contains(ErpInfo.CON_OICAC10)||
|
|
|
+ erpAccount.getMaterialDetails().contains(ErpInfo.CON_OICAC20)||
|
|
|
+ erpAccount.getMaterialDetails().contains(ErpInfo.CON_PRCAC10)||
|
|
|
+ erpAccount.getMaterialDetails().contains(ErpInfo.CON_PRCAC20)){
|
|
|
+ erpCreditChild3 = new ErpCreditChild3();
|
|
|
+ erpCredit = new ErpCredit();
|
|
|
+ erpCredit.setItemId(erpAccount.getProjectDefinitionCode());
|
|
|
+ erpCreditChild3.setTenKvModel(erpAccount.getMaterialDetails());
|
|
|
+ erpCreditChild3.setTenKvUnit(erpAccount.getUnit());
|
|
|
+ erpCreditChild3.setTenKvLength(tenKvLength);
|
|
|
+ erpCreditChild3.setTenKvLineLength(tenKvLength);
|
|
|
+ erpCreditChild3.setTenKvItsLine(tenKvLength);
|
|
|
+ erpCreditChild3.setErpCredit(erpCredit);
|
|
|
+ creditChild3s.add(erpCreditChild3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return creditChild3s;
|
|
|
+ }
|
|
|
+}
|