chengqiang 3 gadi atpakaļ
vecāks
revīzija
bef18ca007

+ 73 - 73
src/main/java/com/jeeplus/modules/sg/budgetSpectaculars/entity/BudgetExecuteInfo.java

@@ -89,295 +89,295 @@ public class BudgetExecuteInfo {
     private String ctrateByName;    //创建人
     private String commitmentTwo;    //承诺项2
     private String commitmentThree;    //承诺项3
-    @ExcelField(title="项目ID", align=2, sort=1)
+    @ExcelField(title="项目ID", align=2, sort=0)
     public String getProjectId() {
         return projectId;
     }
-    @ExcelField(title="项目名称", align=2, sort=2)
+    @ExcelField(title="项目名称", align=2, sort=1)
     public String getProjectName() {
         return projectName;
     }
-    @ExcelField(title="储备编码", align=2, sort=3)
+    @ExcelField(title="储备编码", align=2, sort=2)
     public String getReserveCoding() {
         return reserveCoding;
     }
-    @ExcelField(title="国网项目编码", align=2, sort=4)
+    @ExcelField(title="国网项目编码", align=2, sort=3)
     public String getProjectNumber() {
         return projectNumber;
     }
-    @ExcelField(title="项目包编码", align=2, sort=5)
+    @ExcelField(title="项目包编码", align=2, sort=4)
     public String getProjectBagNumber() {
         return projectBagNumber;
     }
-    @ExcelField(title="项目包名称", align=2, sort=6)
+    @ExcelField(title="项目包名称", align=2, sort=5)
     public String getProjectBagName() {
         return projectBagName;
     }
-    @ExcelField(title="重要项目投向", align=2, sort=7)
+    @ExcelField(title="重要项目投向", align=2, sort=6)
     public String getImportanceProjectInvest() {
         return importanceProjectInvest;
     }
-    @ExcelField(title="一级单位", align=2, sort=8)
+    @ExcelField(title="一级单位", align=2, sort=7)
     public String getFirstLevelUnit() {
         return firstLevelUnit;
     }
-    @ExcelField(title="二级单位", align=2, sort=9)
+    @ExcelField(title="二级单位", align=2, sort=8)
     public String getSecondLevelUnit() {
         return secondLevelUnit;
     }
-    @ExcelField(title="归口部门", align=2, sort=10)
+    @ExcelField(title="归口部门", align=2, sort=9)
     public String getRelevantDepartment() {
         return relevantDepartment;
     }
-    @ExcelField(title="项目实施部门", align=2, sort=11)
+    @ExcelField(title="项目实施部门", align=2, sort=10)
     public String getProjectImplementationDepartment() {
         return projectImplementationDepartment;
     }
-    @ExcelField(title="一级分类", align=2, sort=12)
+    @ExcelField(title="一级分类", align=2, sort=11)
     public String getFirstSlassify() {
         return firstSlassify;
     }
-    @ExcelField(title="二级分类", align=2, sort=13)
+    @ExcelField(title="二级分类", align=2, sort=12)
     public String getSecondSlassify() {
         return secondSlassify;
     }
-    @ExcelField(title="三级分类", align=2, sort=14)
+    @ExcelField(title="三级分类", align=2, sort=13)
     public String getThirdlySlassify() {
         return thirdlySlassify;
     }
-    @ExcelField(title="项目包类型", align=2, sort=15)
+    @ExcelField(title="项目包类型", align=2, sort=14)
     public String getProjectBagType() {
         return projectBagType;
     }
-    @ExcelField(title="承诺项1", align=2, sort=16)
+    @ExcelField(title="承诺项1", align=2, sort=15)
     public String getCommitmentOne() {
         return commitmentOne;
     }
-    @ExcelField(title="项目类型", align=2, sort=17)
+    @ExcelField(title="项目类型", align=2, sort=16)
     public String getProjectType() {
         return projectType;
     }
-    @ExcelField(title="项目性质", align=2, sort=18)
+    @ExcelField(title="项目性质", align=2, sort=17)
     public String getProjectProperty() {
         return projectProperty;
     }
-    @ExcelField(title="是否预安排项目", align=2, sort=19)
+    @ExcelField(title="是否预安排项目", align=2, sort=18)
     public String getIfArrangeProject() {
         return ifArrangeProject;
     }
-    @ExcelField(title="项目流转状态", align=2, sort=20)
+    @ExcelField(title="项目流转状态", align=2, sort=19)
     public String getProjectStatus() {
         return projectStatus;
     }
-    @ExcelField(title="项目总预算(万元)", align=2, sort=21)
+    @ExcelField(title="项目总预算(万元)", align=2, sort=20)
     public String getProjectAllBudget() {
         return projectAllBudget;
     }
-    @ExcelField(title="累计投资计划(万元)", align=2, sort=22)
+    @ExcelField(title="累计投资计划(万元)", align=2, sort=21)
     public String getCumulativeInvestmentPlan() {
         return cumulativeInvestmentPlan;
     }
-    @ExcelField(title="累计财务支出(万元)", align=2, sort=23)
+    @ExcelField(title="累计财务支出(万元)", align=2, sort=22)
     public String getAccumulativeFinanceExpend() {
         return accumulativeFinanceExpend;
     }
-    @ExcelField(title="累计税金", align=2, sort=24)
+    @ExcelField(title="累计税金", align=2, sort=23)
     public String getAccumulativeTaxes() {
         return accumulativeTaxes;
     }
-    @ExcelField(title="累计完成值(含税)(万元)", align=2, sort=25)
+    @ExcelField(title="累计完成值(含税)(万元)", align=2, sort=24)
     public String getAccumulativeFinishFee() {
         return accumulativeFinishFee;
     }
-    @ExcelField(title="项目累计完成率(%)", align=2, sort=26)
+    @ExcelField(title="项目累计完成率(%)", align=2, sort=25)
     public String getProjectAccumulativeTaxes() {
         return projectAccumulativeTaxes;
     }
-    @ExcelField(title="当年投资计划(万元)", align=2, sort=27)
+    @ExcelField(title="当年投资计划(万元)", align=2, sort=26)
     public String getInvestmentPlanFee() {
         return investmentPlanFee;
     }
-    @ExcelField(title="当年预算(万元)", align=2, sort=28)
+    @ExcelField(title="当年预算(万元)", align=2, sort=27)
     public String getBudgetFee() {
         return budgetFee;
     }
-    @ExcelField(title="当年财务支出(万元)", align=2, sort=29)
+    @ExcelField(title="当年财务支出(万元)", align=2, sort=28)
     public String getFinanceExpend() {
         return financeExpend;
     }
-    @ExcelField(title="年度预算完成率(%)", align=2, sort=30)
+    @ExcelField(title="年度预算完成率(%)", align=2, sort=29)
     public String getBudgetTaxes() {
         return budgetTaxes;
     }
-    @ExcelField(title="当年税金(万元)", align=2, sort=31)
+    @ExcelField(title="当年税金(万元)", align=2, sort=30)
     public String getTaxationExpense() {
         return taxationExpense;
     }
-    @ExcelField(title="当年完成值(含税)(万元)", align=2, sort=32)
+    @ExcelField(title="当年完成值(含税)(万元)", align=2, sort=31)
     public String getCompleteValue() {
         return completeValue;
     }
-    @ExcelField(title="当年项目承诺", align=2, sort=33)
+    @ExcelField(title="当年项目承诺", align=2, sort=32)
     public String getProjectCommitment() {
         return projectCommitment;
     }
-    @ExcelField(title="累计项目承诺", align=2, sort=34)
+    @ExcelField(title="累计项目承诺", align=2, sort=33)
     public String getAccumulativeProjectCommitment() {
         return accumulativeProjectCommitment;
     }
-    @ExcelField(title="国网项目包编码", align=2, sort=35)
+    @ExcelField(title="国网项目包编码", align=2, sort=34)
     public String getProjectPagNumber() {
         return projectPagNumber;
     }
-    @ExcelField(title="发送国网状态(配网子项目)", align=2, sort=36)
+    @ExcelField(title="发送国网状态(配网子项目)", align=2, sort=35)
     public String getSendStatusSubProject() {
         return sendStatusSubProject;
     }
-    @ExcelField(title="在建工程余额(万元)", align=2, sort=37)
+    @ExcelField(title="在建工程余额(万元)", align=2, sort=36)
     public String getUnderConstructionProjectBalance() {
         return underConstructionProjectBalance;
     }
-    @ExcelField(title="在建工程卡片余额(万元)", align=2, sort=38)
+    @ExcelField(title="在建工程卡片余额(万元)", align=2, sort=37)
     public String getUnderConstructionProjectCardBalance() {
         return underConstructionProjectCardBalance;
     }
-    @ExcelField(title="累计转资金额(万元)", align=2, sort=39)
+    @ExcelField(title="累计转资金额(万元)", align=2, sort=38)
     public String getAccumulativeWorkingCapitalFee() {
         return accumulativeWorkingCapitalFee;
     }
-    @ExcelField(title="年度", align=2, sort=40)
+    @ExcelField(title="年度", align=2, sort=49)
     public String getYear() {
         return year;
     }
-    @ExcelField(title="单体/打捆", align=2, sort=41)
+    @ExcelField(title="单体/打捆", align=2, sort=40)
     public String getMonomer() {
         return monomer;
     }
-    @ExcelField(title="项目出库时间", align=2, sort=42)
+    @ExcelField(title="项目出库时间", align=2, sort=41)
     public String getProjectWarehouseOutTime() {
         return projectWarehouseOutTime;
     }
-    @ExcelField(title="建议预算(万元)", align=2, sort=43)
+    @ExcelField(title="建议预算(万元)", align=2, sort=42)
     public String getSuggestBudget() {
         return suggestBudget;
     }
-    @ExcelField(title="开工时间", align=2, sort=44)
+    @ExcelField(title="开工时间", align=2, sort=43)
     public String getStartWorkingTime() {
         return startWorkingTime;
     }
-    @ExcelField(title="预计完成时间", align=2, sort=45)
+    @ExcelField(title="预计完成时间", align=2, sort=44)
     public String getBudgetFinishTime() {
         return budgetFinishTime;
     }
-    @ExcelField(title="续建结转原因", align=2, sort=46)
+    @ExcelField(title="续建结转原因", align=2, sort=45)
     public String getSustainableArchitectureReason() {
         return sustainableArchitectureReason;
     }
-    @ExcelField(title="电压等级", align=2, sort=47)
+    @ExcelField(title="电压等级", align=2, sort=46)
     public String getVoltageLevel() {
         return voltageLevel;
     }
-    @ExcelField(title="发送配农网状态", align=2, sort=48)
+    @ExcelField(title="发送配农网状态", align=2, sort=47)
     public String getSendVillageStatus() {
         return sendVillageStatus;
     }
-    @ExcelField(title="SAP立项时间", align=2, sort=49)
+    @ExcelField(title="SAP立项时间", align=2, sort=48)
     public String getSapProjectApprovalTime() {
         return sapProjectApprovalTime;
     }
-    @ExcelField(title="自定义字段1", align=2, sort=50)
+    @ExcelField(title="自定义字段1", align=2, sort=49)
     public String getCustomOne() {
         return customOne;
     }
-    @ExcelField(title="自定义字段2", align=2, sort=51)
+    @ExcelField(title="自定义字段2", align=2, sort=50)
     public String getCustomTwo() {
         return customTwo;
     }
-    @ExcelField(title="自定义字段3", align=2, sort=52)
+    @ExcelField(title="自定义字段3", align=2, sort=51)
     public String getCustomThree() {
         return customThree;
     }
-    @ExcelField(title="自定义字段4", align=2, sort=53)
+    @ExcelField(title="自定义字段4", align=2, sort=52)
     public String getCustomFour() {
         return customFour;
     }
-    @ExcelField(title="自定义字段5", align=2, sort=54)
+    @ExcelField(title="自定义字段5", align=2, sort=53)
     public String getCustomFive() {
         return customFive;
     }
-    @ExcelField(title="项目打开时间", align=2, sort=55)
+    @ExcelField(title="项目打开时间", align=2, sort=54)
     public String getProjectStartTime() {
         return projectStartTime;
     }
-    @ExcelField(title="项目关闭时间", align=2, sort=56)
+    @ExcelField(title="项目关闭时间", align=2, sort=55)
     public String getProjectCloseTime() {
         return projectCloseTime;
     }
-    @ExcelField(title="业务活动", align=2, sort=57)
+    @ExcelField(title="业务活动", align=2, sort=56)
     public String getOperationalAction() {
         return operationalAction;
     }
-    @ExcelField(title="资产类型", align=2, sort=58)
+    @ExcelField(title="资产类型", align=2, sort=57)
     public String getAssetType() {
         return assetType;
     }
-    @ExcelField(title="专业细分", align=2, sort=59)
+    @ExcelField(title="专业细分", align=2, sort=58)
     public String getProfessionalSubdivision() {
         return professionalSubdivision;
     }
-    @ExcelField(title="线路类型", align=2, sort=60)
+    @ExcelField(title="线路类型", align=2, sort=59)
     public String getPathType() {
         return pathType;
     }
-    @ExcelField(title="限上限下", align=2, sort=61)
+    @ExcelField(title="限上限下", align=2, sort=60)
     public String getUnderTheLimitedCeiling() {
         return underTheLimitedCeiling;
     }
-    @ExcelField(title="是否外包项目", align=2, sort=62)
+    @ExcelField(title="是否外包项目", align=2, sort=61)
     public String getIfEpibolyProject() {
         return ifEpibolyProject;
     }
-    @ExcelField(title="预算释放状态", align=2, sort=63)
+    @ExcelField(title="预算释放状态", align=2, sort=62)
     public String getBudgetReleaseStatus() {
         return budgetReleaseStatus;
     }
-    @ExcelField(title="发送国网状态", align=2, sort=64)
+    @ExcelField(title="发送国网状态", align=2, sort=63)
     public String getSendStatus() {
         return sendStatus;
     }
-    @ExcelField(title="业务外包金额(万元)", align=2, sort=65)
+    @ExcelField(title="业务外包金额(万元)", align=2, sort=64)
     public String getBusinessEpibolyFee() {
         return businessEpibolyFee;
     }
-    @ExcelField(title="预算调整次数", align=2, sort=66)
+    @ExcelField(title="预算调整次数", align=2, sort=65)
     public String getBudgetAdjustmentCount() {
         return budgetAdjustmentCount;
     }
-    @ExcelField(title="累计预算调整次数", align=2, sort=67)
+    @ExcelField(title="累计预算调整次数", align=2, sort=66)
     public String getAccumulativeBudgetAdjustmentCount() {
         return accumulativeBudgetAdjustmentCount;
     }
-    @ExcelField(title="年初预算", align=2, sort=68)
+    @ExcelField(title="年初预算", align=2, sort=67)
     public String getBeginningYearBudget() {
         return beginningYearBudget;
     }
-    @ExcelField(title="最新变更时间", align=2, sort=69)
+    @ExcelField(title="最新变更时间", align=2, sort=68)
     public String getNewestUpdateTime() {
         return newestUpdateTime;
     }
-    @ExcelField(title="外包人工成本(万元)", align=2, sort=70)
+    @ExcelField(title="外包人工成本(万元)", align=2, sort=69)
     public String getEpibolyLaborCost() {
         return epibolyLaborCost;
     }
-    @ExcelField(title="创建人", align=2, sort=71)
+    @ExcelField(title="创建人", align=2, sort=70)
     public String getCtrateByName() {
         return ctrateByName;
     }
-    @ExcelField(title="承诺项2", align=2, sort=72)
+    @ExcelField(title="承诺项2", align=2, sort=71)
     public String getCommitmentTwo() {
         return commitmentTwo;
     }
-    @ExcelField(title="承诺项3", align=2, sort=73)
+    @ExcelField(title="承诺项3", align=2, sort=72)
     public String getCommitmentThree() {
         return commitmentThree;
     }

+ 169 - 66
src/main/java/com/jeeplus/modules/sg/budgetSpectaculars/service/ProjectBasicsService.java

@@ -148,87 +148,174 @@ public class ProjectBasicsService extends CrudService<ProjectBasicsMapper, Proje
         return null;
     }
 
+//    /**
+//     * 项目明细帐导入文件处理
+//     * @param projectDetailList
+//     * @return
+//     */
+//    @Transactional(readOnly = false)
+//    public String disposeProjectDetailInfo(List<ProjectDetailInfo> projectDetailList){
+//        Set set = new HashSet();
+//        //遍历列表将项目定义编码去重取出
+//        for (ProjectDetailInfo info: projectDetailList) {
+//            //判定如果不为空则将项目定义编码添加到set中进行去重
+//            if(StringUtils.isNotBlank(info.getProjectDefinitionNumber())){
+//                set.add(info.getProjectDefinitionNumber());
+//            }
+//        }
+//        //将set转换为List;
+//        List<String> projectDefinitionNumberList = new ArrayList<>(set);
+//        //创建项目基础底表List,用于之后的批量修改数据信息
+//        List<ProjectBasicsInfo> projectBasicsList = Lists.newArrayList();
+//        //遍历并从列表中取出相对应的数据存储到List中
+//        for (String projectDefinitionNumber: projectDefinitionNumberList) {
+//            //创建list
+//            List<ProjectDetailInfo> infoByProjectDefinitionNumberList = Lists.newArrayList();
+//            Iterator<ProjectDetailInfo> it = projectDetailList.iterator();
+//            while(it.hasNext()){
+//                ProjectDetailInfo info = it.next();
+//                if(StringUtils.isBlank(info.getProjectDefinitionNumber())){//判定是否相同
+//                    it.remove();
+//                    continue;
+//                }
+//                if(projectDefinitionNumber.equals(info.getProjectDefinitionNumber())
+//                    && ("生产成本-外包材料费".equals(info.getCourseName())
+//                    || "生产成本-外包检修费".equals(info.getCourseName())
+//                    || "生产成本-自营材料费".equals(info.getCourseName())
+//                    || "项目建设成本-成本".equals(info.getCourseName())
+//                    ) && StringUtils.isNotBlank(info.getPostingDate())){//判定是否相同
+//                    infoByProjectDefinitionNumberList.add(info);
+//                    it.remove();
+//                }
+//            }
+//            //对时间进行排序
+//            projectDetailDateSort(infoByProjectDefinitionNumberList);
+//            if(infoByProjectDefinitionNumberList.size()>0){
+//                ProjectBasicsInfo projectBasics = new ProjectBasicsInfo();
+//                projectBasics.setProjectNumber(projectDefinitionNumber);
+//                //添加首次领料日期
+//                for (ProjectDetailInfo detailsInfo: infoByProjectDefinitionNumberList) {
+//                    if(StringUtils.isNotBlank(detailsInfo.getPostingDate())){
+//                        projectBasics.setFirstAcquisitionTime(detailsInfo.getPostingDate());
+//                        //实际开工日期 == 首次领料日期
+//                        projectBasics.setPracticalStartUpDate(detailsInfo.getPostingDate());
+//                        break;
+//                    }
+//                }
+//                //判定项目定义编码类型添加首笔施工费入账日期信息
+//                for (ProjectDetailInfo detailsInfo: infoByProjectDefinitionNumberList) {
+//                    if(detailsInfo.getProjectDefinitionNumber().startsWith("1810")){    //①资本类(项目定义编码(K列)为1810)
+//                        //筛选科目名称(N)列为“生产成本-外包材料费”或“生产成本-外包检修费”或“生产成本-自营材料费”或“项目建设成本-成本”,物料描述(X列)为空,且wbs描述(j列)为“安装工程支出”或“建筑工程支出”的最早过账日期(C列)
+//                       String courseName = detailsInfo.getCourseName();
+//                       String wbsDesc = detailsInfo.getWbsDescription();
+//                        if(("生产成本-外包材料费".equals(courseName)
+//                            || "生产成本-外包检修费".equals(courseName)
+//                            || "生产成本-自营材料费".equals(courseName)
+//                            || "项目建设成本-成本".equals(courseName)
+//                        ) && StringUtils.isBlank(detailsInfo.getMaterialDescription())
+//                        && ("安装工程支出".equals(wbsDesc) || "建筑工程支出".equals(wbsDesc)||"安装工程".equals(wbsDesc)||
+//                                "建筑工程".equals(wbsDesc))){//判定是否相同
+//                            projectBasics.setFirstConstructionFeeRecordedTime(detailsInfo.getPostingDate());
+//                            break;
+//                        }
+//                    }else if(detailsInfo.getProjectDefinitionNumber().startsWith("B11")){   //②成本类(项目定义编码(K列)为B11)
+//                        //供应商名称为“镇江大照电力建设有限公司”或“镇江市金龙电业发展有限公司” 的最早过账日期(C列)
+//                        if("镇江大照电力建设有限公司".equals(detailsInfo.getSupplierName()) || "镇江市金龙电业发展有限公司".equals(detailsInfo.getSupplierName())){
+//                            projectBasics.setFirstConstructionFeeRecordedTime(detailsInfo.getPostingDate());
+//                            break;
+//                        }
+//                    }
+//                }
+//                projectBasicsList.add(projectBasics);
+//            }
+//        }
+//        //批量修改
+//        modifyAllProjectBasicsInfo(projectBasicsList);
+//        return null;
+//    }
+
     /**
      * 项目明细帐导入文件处理
      * @param projectDetailList
      * @return
      */
     @Transactional(readOnly = false)
-    public String disposeProjectDetailInfo(List<ProjectDetailInfo> projectDetailList){
-        Set set = new HashSet();
-        //遍历列表将项目定义编码去重取出
-        for (ProjectDetailInfo info: projectDetailList) {
-            //判定如果不为空则将项目定义编码添加到set中进行去重
-            if(StringUtils.isNotBlank(info.getProjectDefinitionNumber())){
-                set.add(info.getProjectDefinitionNumber());
-            }
-        }
-        //将set转换为List;
-        List<String> projectDefinitionNumberList = new ArrayList<>(set);
-        //创建项目基础底表List,用于之后的批量修改数据信息
-        List<ProjectBasicsInfo> projectBasicsList = Lists.newArrayList();
-        //遍历并从列表中取出相对应的数据存储到List中
-        for (String projectDefinitionNumber: projectDefinitionNumberList) {
-            //创建list
-            List<ProjectDetailInfo> infoByProjectDefinitionNumberList = Lists.newArrayList();
-            Iterator<ProjectDetailInfo> it = projectDetailList.iterator();
-            while(it.hasNext()){
-                ProjectDetailInfo info = it.next();
-                if(StringUtils.isBlank(info.getProjectDefinitionNumber())){//判定是否相同
-                    it.remove();
-                    continue;
-                }
-                if(projectDefinitionNumber.equals(info.getProjectDefinitionNumber())
-                    && ("生产成本-外包材料费".equals(info.getCourseName())
-                    || "生产成本-外包检修费".equals(info.getCourseName())
-                    || "生产成本-自营材料费".equals(info.getCourseName())
-                    || "项目建设成本-成本".equals(info.getCourseName())
-                    ) && StringUtils.isNotBlank(info.getPostingDate())){//判定是否相同
-                    infoByProjectDefinitionNumberList.add(info);
-                    it.remove();
-                }
-            }
-            //对时间进行排序
-            projectDetailDateSort(infoByProjectDefinitionNumberList);
-            if(infoByProjectDefinitionNumberList.size()>0){
-                ProjectBasicsInfo projectBasics = new ProjectBasicsInfo();
-                projectBasics.setProjectNumber(projectDefinitionNumber);
-                //添加首次领料日期
-                for (ProjectDetailInfo detailsInfo: infoByProjectDefinitionNumberList) {
-                    if(StringUtils.isNotBlank(detailsInfo.getPostingDate())){
-                        projectBasics.setFirstAcquisitionTime(detailsInfo.getPostingDate());
-                        //实际开工日期 == 首次领料日期
-                        projectBasics.setPracticalStartUpDate(detailsInfo.getPostingDate());
-                        break;
+    public void disposeProjectDetailInfo(List<ProjectDetailInfo> projectDetailList){
+
+        Map<String,ProjectBasicsInfo> projectBasicMap = new HashMap<>();
+
+        for(ProjectDetailInfo detail:projectDetailList){
+            String definitionNumber = detail.getProjectDefinitionNumber(); //项目定义编码
+            String courseName = detail.getCourseName();//科目名称
+            String wbsDesc = detail.getWbsDescription();//wbs描述
+            String materialDesc = detail.getMaterialDescription();//物料描述
+            String postingDate = detail.getPostingDate();//过账日期
+            String suppliName = detail.getSupplierName();//供应商
+            //项目定义编码不为空
+            if(StringUtils.isNotBlank(definitionNumber)){
+                ProjectBasicsInfo basicsInfo = projectBasicMap.get(definitionNumber);
+                //处理首次领料日期
+                if(("生产成本-外包材料费".equals(courseName) || "生产成本-外包检修费".equals(courseName)
+                        || "生产成本-自营材料费".equals(courseName)|| "项目建设成本-成本".equals(courseName))
+                        &&StringUtils.isNotBlank(materialDesc)&&StringUtils.isNotBlank(postingDate)){
+                    if(basicsInfo == null){
+                        basicsInfo = new ProjectBasicsInfo();
+                        basicsInfo.setProjectNumber(definitionNumber);
+                        projectBasicMap.put(definitionNumber,basicsInfo);
+                    }
+                    if(dateSort(basicsInfo.getFirstAcquisitionTime(),postingDate)){
+                        basicsInfo.setFirstAcquisitionTime(postingDate);
+                        basicsInfo.setPracticalStartUpDate(postingDate);
                     }
+
                 }
-                //判定项目定义编码类型添加首笔施工费入账日期信息
-                for (ProjectDetailInfo detailsInfo: infoByProjectDefinitionNumberList) {
-                    if(detailsInfo.getProjectDefinitionNumber().startsWith("1810")){    //①资本类(项目定义编码(K列)为1810)
-                        //筛选科目名称(N)列为“生产成本-外包材料费”或“生产成本-外包检修费”或“生产成本-自营材料费”或“项目建设成本-成本”,物料描述(X列)为空,且wbs描述(j列)为“安装工程支出”或“建筑工程支出”的最早过账日期(C列)
-                        if(("生产成本-外包材料费".equals(detailsInfo.getCourseName())
-                            || "生产成本-外包检修费".equals(detailsInfo.getCourseName())
-                            || "生产成本-自营材料费".equals(detailsInfo.getCourseName())
-                            || "项目建设成本-成本".equals(detailsInfo.getCourseName())
-                        ) && StringUtils.isBlank(detailsInfo.getMaterialDescription())
-                        && ("安装工程支出".equals(detailsInfo.getWbsDescription()) || "建筑工程支出".equals(detailsInfo.getWbsDescription()))){//判定是否相同
-                            projectBasics.setFirstConstructionFeeRecordedTime(detailsInfo.getPostingDate());
-                            break;
+
+                //处理首笔施工费入账日期信息
+                //①资本类(项目定义编码(K列)为1810)
+                if(definitionNumber.startsWith("1810")){
+                    //筛选科目名称(N)列为“生产成本-外包材料费”或“生产成本-外包检修费”或“生产成本-自营材料费”或“项目建设成本-成本”,物料描述(X列)为空,且wbs描述(j列)为“安装工程支出”或“建筑工程支出”的最早过账日期(C列)
+                    if(("生产成本-外包材料费".equals(courseName)|| "生产成本-外包检修费".equals(courseName)
+                            || "生产成本-自营材料费".equals(courseName)|| "项目建设成本-成本".equals(courseName))
+                            && StringUtils.isBlank(materialDesc)
+                            && ("安装工程支出".equals(wbsDesc) || "建筑工程支出".equals(wbsDesc)||"安装工程".equals(wbsDesc)||"建筑工程".equals(wbsDesc))
+                            &&StringUtils.isNotBlank(postingDate)){
+                        if(basicsInfo == null){
+                            basicsInfo = new ProjectBasicsInfo();
+                            basicsInfo.setProjectNumber(definitionNumber);
+                            projectBasicMap.put(definitionNumber,basicsInfo);
+                        }
+                        if(dateSort(basicsInfo.getFirstConstructionFeeRecordedTime(),postingDate)){
+                            basicsInfo.setFirstConstructionFeeRecordedTime(postingDate);
                         }
-                    }else if(detailsInfo.getProjectDefinitionNumber().startsWith("B11")){   //②成本类(项目定义编码(K列)为B11)
-                        //供应商名称为“镇江大照电力建设有限公司”或“镇江市金龙电业发展有限公司” 的最早过账日期(C列)
-                        if("镇江大照电力建设有限公司".equals(detailsInfo.getSupplierName()) || "镇江市金龙电业发展有限公司".equals(detailsInfo.getSupplierName())){
-                            projectBasics.setFirstConstructionFeeRecordedTime(detailsInfo.getPostingDate());
-                            break;
+
+                    }
+                //②成本类(项目定义编码(K列)为B11)
+                }else if(definitionNumber.startsWith("B11")){
+                    //供应商名称为“镇江大照电力建设有限公司”或“镇江市金龙电业发展有限公司” 的最早过账日期(C列)
+                    if("镇江大照电力建设有限公司".equals(suppliName) || "镇江市金龙电业发展有限公司".equals(suppliName)
+                            &&StringUtils.isNotBlank(postingDate)){
+                        if(basicsInfo == null){
+                            basicsInfo = new ProjectBasicsInfo();
+                            basicsInfo.setProjectNumber(definitionNumber);
+                            projectBasicMap.put(definitionNumber,basicsInfo);
+                        }
+                        if(dateSort(basicsInfo.getFirstConstructionFeeRecordedTime(),postingDate)){
+                            basicsInfo.setFirstConstructionFeeRecordedTime(postingDate);
                         }
                     }
                 }
-                projectBasicsList.add(projectBasics);
+
+
             }
+
+        }
+        List<ProjectBasicsInfo> basicList = new ArrayList<>();
+        for(ProjectBasicsInfo info:projectBasicMap.values()){
+            basicList.add(info);
         }
+
         //批量修改
-        modifyAllProjectBasicsInfo(projectBasicsList);
-        return null;
+        modifyAllProjectBasicsInfo(basicList);
     }
 
     /**
@@ -249,6 +336,22 @@ public class ProjectBasicsService extends CrudService<ProjectBasicsMapper, Proje
         return list;
     }
 
+    //比较sourceDate和targetDate,如果targetDate日期较早则返回true
+    public static boolean dateSort(String sourceDate,String targetDate){
+        if(sourceDate == null){
+            return true;
+        }
+        if(targetDate == null){
+            return false;
+        }
+        Collator collator = Collator.getInstance(Locale.CHINA);
+        //大于0 表示target日期早于source日期
+        if(collator.compare(sourceDate,targetDate)>0){
+            return true;
+        }
+        return false;
+    }
+
     /**
      * 批量修改数据信息
      * @param projectBasicsList