Browse Source

执行计划汇总

赵芳群 2 years ago
parent
commit
8f586f6b2d

+ 13 - 25
jeeplus.iml

@@ -1,15 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="EclipseModuleManager">
+    <conelement value="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER" />
+    <src_description expected_position="0">
+      <src_folder value="file://$MODULE_DIR$/src/main/java" expected_position="0" />
+      <src_folder value="file://$MODULE_DIR$/src/main/resources" expected_position="1" />
+      <src_folder value="file://$MODULE_DIR$/src/test/java" expected_position="2" />
+    </src_description>
+  </component>
   <component name="FacetManager">
-    <facet type="jpa" name="JPA">
-      <configuration>
-        <setting name="validation-enabled" value="true" />
-        <datasource-mapping>
-          <factory-entry name="jeeplus" />
-        </datasource-mapping>
-        <naming-strategy-map />
-      </configuration>
-    </facet>
     <facet type="web" name="Web">
       <configuration>
         <descriptors>
@@ -23,32 +22,19 @@
     <facet type="Spring" name="Spring">
       <configuration />
     </facet>
-    <facet type="JRebel" name="JRebel">
-      <configuration>
-        <option name="ideModuleStorage">
-          <map>
-            <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
-            <entry key="com.zeroturnaround.jrebel.remoting.DeleteUnindexedFiles" value="false" />
-            <entry key="com.zeroturnaround.jrebel.remoting.ModuleRemoteServerPreviousEnabledSelection" value="instance" />
-            <entry key="com.zeroturnaround.jrebel.remoting.ModuleRemoteServerSelection" value="instance" />
-            <entry key="com.zeroturnaround.jrebel.remoting.ModuleSpecificSingleRemoteServer" />
-            <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1596500571436" />
-          </map>
-        </option>
-      </configuration>
-    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
-    <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER" level="application" />
+    <orderEntry type="inheritedJdk" />
     <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.5.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.5.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.5.RELEASE" level="project" />
@@ -287,5 +273,7 @@
     <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
     <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" />
     <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.ant:ant:1.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.ant:ant-launcher:1.7.0" level="project" />
   </component>
 </module>

+ 279 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/entity/AgriculturalDistributionNetwork.java

@@ -0,0 +1,279 @@
+package com.jeeplus.modules.sg.balancedlibrary.planSummary.entity;
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+/**
+ * 配农网实体类
+ */
+public class AgriculturalDistributionNetwork extends DataEntity<AgriculturalDistributionNetwork> {
+    private String id; //序号
+    private String itemCode; //项目编码
+    private String itemName; //项目名称
+    private String itemType; // 项目类型
+    private String FundAttribute; //资金属性
+    private String MunicipalTerritory; //市级属地
+    private String ItemAccountingCode;// 项目列帐单位编码
+    private String Description; //项目列帐单位描述
+    private String PlanSubmitter;//计划提报人
+    private String ReportingUnit;//提报人单位
+    private String CompanyDepartment;//对应省公司管理部门
+    private String CategoryDescription;//大类描述
+    private String MediumDescription;//中类描述
+    private String SubclassDescription;//小类描述
+    private String RequiredMaterialCode;//需求物料编码
+    private String MaterialDescription;//物料描述
+    private String ItemExtensionCode;//物料扩展编码
+    private String MaterialExtensionDescription;//物料扩展描述
+    private String BidSection;//标段
+    private String SpecificationID;//电子商务平台技术规范书ID
+    private String Company;//单位
+    private String DemandQuantity;//需求数量
+    private Double EstimatedPrice;//概算单价(元)
+    private Double TotalPrice;//概算总价(元)
+    private Date DeliveryDate;//交货日期
+    private String RemarksPlan;//需求计划备注
+
+    @Override
+    public String toString() {
+        return "AgriculturalDistributionNetwork{" +
+                "id='" + id + '\'' +
+                ", itemCode='" + itemCode + '\'' +
+                ", itemName='" + itemName + '\'' +
+                ", itemType='" + itemType + '\'' +
+                ", FundAttribute='" + FundAttribute + '\'' +
+                ", MunicipalTerritory='" + MunicipalTerritory + '\'' +
+                ", ItemAccountingCode='" + ItemAccountingCode + '\'' +
+                ", Description='" + Description + '\'' +
+                ", PlanSubmitter='" + PlanSubmitter + '\'' +
+                ", ReportingUnit='" + ReportingUnit + '\'' +
+                ", CompanyDepartment='" + CompanyDepartment + '\'' +
+                ", CategoryDescription='" + CategoryDescription + '\'' +
+                ", MediumDescription='" + MediumDescription + '\'' +
+                ", SubclassDescription='" + SubclassDescription + '\'' +
+                ", RequiredMaterialCode='" + RequiredMaterialCode + '\'' +
+                ", MaterialDescription='" + MaterialDescription + '\'' +
+                ", ItemExtensionCode='" + ItemExtensionCode + '\'' +
+                ", MaterialExtensionDescription='" + MaterialExtensionDescription + '\'' +
+                ", BidSection='" + BidSection + '\'' +
+                ", SpecificationID='" + SpecificationID + '\'' +
+                ", Company='" + Company + '\'' +
+                ", DemandQuantity='" + DemandQuantity + '\'' +
+                ", EstimatedPrice=" + EstimatedPrice +
+                ", TotalPrice=" + TotalPrice +
+                ", DeliveryDate=" + DeliveryDate +
+                ", RemarksPlan='" + RemarksPlan + '\'' +
+                '}';
+    }
+
+    @ExcelField(title="序号", align=2, sort=1)
+    public String getId() {
+        return id;
+    }
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    @ExcelField(title="项目编码", align=2, sort=2)
+    public String getItemCode() {
+        return itemCode;
+    }
+
+    public void setItemCode(String itemCode) {
+        this.itemCode = itemCode;
+    }
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getItemName() {
+        return itemName;
+    }
+
+    public void setItemName(String itemName) {
+        this.itemName = itemName;
+    }
+    @ExcelField(title="项目类型", align=2, sort=4)
+    public String getItemType() {
+        return itemType;
+    }
+
+    public void setItemType(String itemType) {
+        this.itemType = itemType;
+    }
+    @ExcelField(title="资金属性", align=2, sort=5)
+    public String getFundAttribute() {
+        return FundAttribute;
+    }
+
+    public void setFundAttribute(String fundAttribute) {
+        FundAttribute = fundAttribute;
+    }
+    @ExcelField(title="市级属地", align=2, sort=6)
+    public String getMunicipalTerritory() {
+        return MunicipalTerritory;
+    }
+
+    public void setMunicipalTerritory(String municipalTerritory) {
+        MunicipalTerritory = municipalTerritory;
+    }
+    @ExcelField(title="项目列帐单位编码", align=2, sort=7)
+    public String getItemAccountingCode() {
+        return ItemAccountingCode;
+    }
+
+    public void setItemAccountingCode(String itemAccountingCode) {
+        ItemAccountingCode = itemAccountingCode;
+    }
+    @ExcelField(title="项目列帐单位描述", align=2, sort=8)
+    public String getDescription() {
+        return Description;
+    }
+
+    public void setDescription(String description) {
+        Description = description;
+    }
+    @ExcelField(title="计划提报人", align=2, sort=9)
+    public String getPlanSubmitter() {
+        return PlanSubmitter;
+    }
+
+    public void setPlanSubmitter(String planSubmitter) {
+        PlanSubmitter = planSubmitter;
+    }
+    @ExcelField(title="提报人单位", align=2, sort=10)
+    public String getReportingUnit() {
+        return ReportingUnit;
+    }
+
+    public void setReportingUnit(String reportingUnit) {
+        ReportingUnit = reportingUnit;
+    }
+    @ExcelField(title="对应省公司管理部门", align=2, sort=11)
+    public String getCompanyDepartment() {
+        return CompanyDepartment;
+    }
+
+    public void setCompanyDepartment(String companyDepartment) {
+        CompanyDepartment = companyDepartment;
+    }
+    @ExcelField(title="大类描述", align=2, sort=12)
+    public String getCategoryDescription() {
+        return CategoryDescription;
+    }
+
+    public void setCategoryDescription(String categoryDescription) {
+        CategoryDescription = categoryDescription;
+    }
+    @ExcelField(title="中类描述", align=2, sort=13)
+    public String getMediumDescription() {
+        return MediumDescription;
+    }
+
+    public void setMediumDescription(String mediumDescription) {
+        MediumDescription = mediumDescription;
+    }
+    @ExcelField(title="小类描述", align=2, sort=14)
+    public String getSubclassDescription() {
+        return SubclassDescription;
+    }
+
+    public void setSubclassDescription(String subclassDescription) {
+        SubclassDescription = subclassDescription;
+    }
+    @ExcelField(title="需求物料编码", align=2, sort=15)
+    public String getRequiredMaterialCode() {
+        return RequiredMaterialCode;
+    }
+
+    public void setRequiredMaterialCode(String requiredMaterialCode) {
+        RequiredMaterialCode = requiredMaterialCode;
+    }
+    @ExcelField(title="物料描述", align=2, sort=16)
+    public String getMaterialDescription() {
+        return MaterialDescription;
+    }
+
+    public void setMaterialDescription(String materialDescription) {
+        MaterialDescription = materialDescription;
+    }
+    @ExcelField(title="物料扩展编码", align=2, sort=17)
+    public String getItemExtensionCode() {
+        return ItemExtensionCode;
+    }
+
+    public void setItemExtensionCode(String itemExtensionCode) {
+        ItemExtensionCode = itemExtensionCode;
+    }
+    @ExcelField(title="物料扩展描述", align=2, sort=18)
+    public String getMaterialExtensionDescription() {
+        return MaterialExtensionDescription;
+    }
+
+    public void setMaterialExtensionDescription(String materialExtensionDescription) {
+        MaterialExtensionDescription = materialExtensionDescription;
+    }
+    @ExcelField(title="标段", align=2, sort=19)
+    public String getBidSection() {
+        return BidSection;
+    }
+
+    public void setBidSection(String bidSection) {
+        BidSection = bidSection;
+    }
+    @ExcelField(title="电子商务平台技术规范书ID", align=2, sort=20)
+    public String getSpecificationID() {
+        return SpecificationID;
+    }
+
+    public void setSpecificationID(String specificationID) {
+        SpecificationID = specificationID;
+    }
+    @ExcelField(title="单位", align=2, sort=21)
+    public String getCompany() {
+        return Company;
+    }
+
+    public void setCompany(String company) {
+        Company = company;
+    }
+    @ExcelField(title="需求数量", align=2, sort=22)
+    public String getDemandQuantity() {
+        return DemandQuantity;
+    }
+
+    public void setDemandQuantity(String demandQuantity) {
+        DemandQuantity = demandQuantity;
+    }
+    @ExcelField(title="概算单价", align=2, sort=23)
+    public Double getEstimatedPrice() {
+        return EstimatedPrice;
+    }
+
+    public void setEstimatedPrice(Double estimatedPrice) {
+        EstimatedPrice = estimatedPrice;
+    }
+    @ExcelField(title="概算总价", align=2, sort=24)
+    public Double getTotalPrice() {
+        return TotalPrice;
+    }
+
+    public void setTotalPrice(Double totalPrice) {
+        TotalPrice = totalPrice;
+    }
+    @ExcelField(title="交货日期", align=2, sort=25)
+    public Date getDeliveryDate() {
+        return DeliveryDate;
+    }
+
+    public void setDeliveryDate(Date deliveryDate) {
+        DeliveryDate = deliveryDate;
+    }
+    @ExcelField(title="需求计划备注", align=2, sort=26)
+    public String getRemarksPlan() {
+        return RemarksPlan;
+    }
+
+    public void setRemarksPlan(String remarksPlan) {
+        RemarksPlan = remarksPlan;
+    }
+}

+ 459 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/entity/ProcessTracking.java

@@ -0,0 +1,459 @@
+package com.jeeplus.modules.sg.balancedlibrary.planSummary.entity;
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+/**
+ * 流程跟踪报表实体类
+ */
+public class ProcessTracking extends DataEntity<ProcessTracking>{
+    private String purchaseOrder;//选购订单
+    private Integer orderLineNumber;//订单行号
+    private String demandPlanNo;//需求计划编号
+    private String batch;//批次
+    private String businessExpansionLogo;//业扩标识
+    private String dataConsistency;//数据一致性
+    private String priceLinkage;//是否价格联动
+    private Date purchaseAgreementPriceDate;//选购协议价格日期
+    private String orderStatus;//订单状态
+    private String materialCode;//物料编码
+    private String materialDescription;//物料描述
+    private Integer extendedCoding;//扩展编码
+    private String extendedDescription;//扩展描述
+    private String WBSDescription;//WBS描述
+    private String singleProject;//单体工程
+    private String projectDefinitionDescription;//项目定义描述
+    private String demandQuantity;//需求数量
+    private String unit;//单位
+    private Double price;//单价
+    private String totalAmount;//总金额
+    private String plannedDeliveryDate;//计划交货期
+    private String deliveryDescription;//交货方式描述
+    private String factory;//工厂
+    private String applicant;//申请人
+    private String department;//部门
+    private String applicantContact;//申请人联系方式
+    private String supplierCode;//供应商编码
+    private String supplierDescription;//供应商描述
+    private String supplierContact;//供应商联系人
+    private String contactNumber;//联系电话
+    private Date creationDate;//创建日期
+    private Date FirstLevelApprovalDate;//一级审批日期
+    private Date SecondaryLevelApprovalDate ;//二级审批日期
+    private String primaryApprover;//一级审批人
+    private String SecondaryApprover;//二级审批人
+    private String reasonForRejection;//拒绝原因说明
+    private String fundAttributeDescription;//资金属性描述
+    private String assetAttributeDescription;//资产属性描述
+    private String projectTypeDescription;//工程类型描述
+    private String remarks;//备注
+    private String purchaseOrderS;//采购订单
+    private Integer orderNumber;//订单行号
+    private String orderDeletionID;//订单删除标识
+    private String receiptCompletionIdentification;//收货完成标识
+
+    @Override
+    public String toString() {
+        return "ProcessTracking{" +
+                "purchaseOrder='" + purchaseOrder + '\'' +
+                ", orderLineNumber=" + orderLineNumber +
+                ", demandPlanNo='" + demandPlanNo + '\'' +
+                ", batch='" + batch + '\'' +
+                ", businessExpansionLogo='" + businessExpansionLogo + '\'' +
+                ", dataConsistency='" + dataConsistency + '\'' +
+                ", priceLinkage='" + priceLinkage + '\'' +
+                ", purchaseAgreementPriceDate=" + purchaseAgreementPriceDate +
+                ", orderStatus='" + orderStatus + '\'' +
+                ", materialCode='" + materialCode + '\'' +
+                ", materialDescription='" + materialDescription + '\'' +
+                ", extendedCoding=" + extendedCoding +
+                ", extendedDescription='" + extendedDescription + '\'' +
+                ", WBSDescription='" + WBSDescription + '\'' +
+                ", singleProject='" + singleProject + '\'' +
+                ", projectDefinitionDescription='" + projectDefinitionDescription + '\'' +
+                ", demandQuantity='" + demandQuantity + '\'' +
+                ", unit='" + unit + '\'' +
+                ", price=" + price +
+                ", totalAmount='" + totalAmount + '\'' +
+                ", plannedDeliveryDate='" + plannedDeliveryDate + '\'' +
+                ", deliveryDescription='" + deliveryDescription + '\'' +
+                ", factory='" + factory + '\'' +
+                ", applicant='" + applicant + '\'' +
+                ", department='" + department + '\'' +
+                ", applicantContact='" + applicantContact + '\'' +
+                ", supplierCode='" + supplierCode + '\'' +
+                ", supplierDescription='" + supplierDescription + '\'' +
+                ", supplierContact='" + supplierContact + '\'' +
+                ", contactNumber='" + contactNumber + '\'' +
+                ", creationDate=" + creationDate +
+                ", FirstLevelApprovalDate=" + FirstLevelApprovalDate +
+                ", SecondaryLevelApprovalDate=" + SecondaryLevelApprovalDate +
+                ", primaryApprover='" + primaryApprover + '\'' +
+                ", SecondaryApprover='" + SecondaryApprover + '\'' +
+                ", reasonForRejection='" + reasonForRejection + '\'' +
+                ", fundAttributeDescription='" + fundAttributeDescription + '\'' +
+                ", assetAttributeDescription='" + assetAttributeDescription + '\'' +
+                ", projectTypeDescription='" + projectTypeDescription + '\'' +
+                ", remarks='" + remarks + '\'' +
+                ", purchaseOrderS='" + purchaseOrderS + '\'' +
+                ", orderNumber=" + orderNumber +
+                ", orderDeletionID='" + orderDeletionID + '\'' +
+                ", receiptCompletionIdentification='" + receiptCompletionIdentification + '\'' +
+                '}';
+    }
+
+    @ExcelField(title="选购订单", align=2, sort=1)
+    public String getPurchaseOrder() {
+        return purchaseOrder;
+    }
+
+    public void setPurchaseOrder(String purchaseOrder) {
+        this.purchaseOrder = purchaseOrder;
+    }
+    @ExcelField(title="订单行号", align=2, sort=2)
+    public Integer getOrderLineNumber() {
+        return orderLineNumber;
+    }
+
+    public void setOrderLineNumber(Integer orderLineNumber) {
+        this.orderLineNumber = orderLineNumber;
+    }
+    @ExcelField(title="需求计划编号", align=2, sort=3)
+    public String getDemandPlanNo() {
+        return demandPlanNo;
+    }
+
+    public void setDemandPlanNo(String demandPlanNo) {
+        this.demandPlanNo = demandPlanNo;
+    }
+    @ExcelField(title="批次", align=2, sort=4)
+    public String getBatch() {
+        return batch;
+    }
+
+    public void setBatch(String batch) {
+        this.batch = batch;
+    }
+    @ExcelField(title="业扩标识", align=2, sort=5)
+    public String getBusinessExpansionLogo() {
+        return businessExpansionLogo;
+    }
+
+    public void setBusinessExpansionLogo(String businessExpansionLogo) {
+        this.businessExpansionLogo = businessExpansionLogo;
+    }
+    @ExcelField(title="数据一致性", align=2, sort=6)
+    public String getDataConsistency() {
+        return dataConsistency;
+    }
+
+    public void setDataConsistency(String dataConsistency) {
+        this.dataConsistency = dataConsistency;
+    }
+    @ExcelField(title="是否价格联动", align=2, sort=7)
+    public String getPriceLinkage() {
+        return priceLinkage;
+    }
+
+    public void setPriceLinkage(String priceLinkage) {
+        this.priceLinkage = priceLinkage;
+    }
+    @ExcelField(title="选购协议价格日期", align=2, sort=8)
+    public Date getPurchaseAgreementPriceDate() {
+        return purchaseAgreementPriceDate;
+    }
+
+    public void setPurchaseAgreementPriceDate(Date purchaseAgreementPriceDate) {
+        this.purchaseAgreementPriceDate = purchaseAgreementPriceDate;
+    }
+    @ExcelField(title="订单状态", align=2, sort=9)
+    public String getOrderStatus() {
+        return orderStatus;
+    }
+
+    public void setOrderStatus(String orderStatus) {
+        this.orderStatus = orderStatus;
+    }
+    @ExcelField(title="物料编码", align=2, sort=10)
+    public String getMaterialCode() {
+        return materialCode;
+    }
+
+    public void setMaterialCode(String materialCode) {
+        this.materialCode = materialCode;
+    }
+    @ExcelField(title="物料描述", align=2, sort=11)
+    public String getMaterialDescription() {
+        return materialDescription;
+    }
+
+    public void setMaterialDescription(String materialDescription) {
+        this.materialDescription = materialDescription;
+    }
+    @ExcelField(title="扩展编码", align=2, sort=12)
+    public Integer getExtendedCoding() {
+        return extendedCoding;
+    }
+
+    public void setExtendedCoding(Integer extendedCoding) {
+        this.extendedCoding = extendedCoding;
+    }
+    @ExcelField(title="扩展描述", align=2, sort=13)
+    public String getExtendedDescription() {
+        return extendedDescription;
+    }
+
+    public void setExtendedDescription(String extendedDescription) {
+        this.extendedDescription = extendedDescription;
+    }
+    @ExcelField(title="WBS描述", align=2, sort=14)
+    public String getWBSDescription() {
+        return WBSDescription;
+    }
+
+    public void setWBSDescription(String WBSDescription) {
+        this.WBSDescription = WBSDescription;
+    }
+    @ExcelField(title="单体工程", align=2, sort=15)
+    public String getSingleProject() {
+        return singleProject;
+    }
+
+    public void setSingleProject(String singleProject) {
+        this.singleProject = singleProject;
+    }
+    @ExcelField(title="项目定义描述", align=2, sort=16)
+    public String getProjectDefinitionDescription() {
+        return projectDefinitionDescription;
+    }
+
+    public void setProjectDefinitionDescription(String projectDefinitionDescription) {
+        this.projectDefinitionDescription = projectDefinitionDescription;
+    }
+    @ExcelField(title="需求数量", align=2, sort=17)
+    public String getDemandQuantity() {
+        return demandQuantity;
+    }
+
+    public void setDemandQuantity(String demandQuantity) {
+        this.demandQuantity = demandQuantity;
+    }
+    @ExcelField(title="单位", align=2, sort=18)
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+    @ExcelField(title="单价", align=2, sort=19)
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+    @ExcelField(title="总金额", align=2, sort=20)
+    public String getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(String totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+    @ExcelField(title="计划交货期", align=2, sort=21)
+    public String getPlannedDeliveryDate() {
+        return plannedDeliveryDate;
+    }
+
+    public void setPlannedDeliveryDate(String plannedDeliveryDate) {
+        this.plannedDeliveryDate = plannedDeliveryDate;
+    }
+    @ExcelField(title="交货方式描述", align=2, sort=22)
+    public String getDeliveryDescription() {
+        return deliveryDescription;
+    }
+
+    public void setDeliveryDescription(String deliveryDescription) {
+        this.deliveryDescription = deliveryDescription;
+    }
+    @ExcelField(title="工厂", align=2, sort=23)
+    public String getFactory() {
+        return factory;
+    }
+
+    public void setFactory(String factory) {
+        this.factory = factory;
+    }
+    @ExcelField(title="申请人", align=2, sort=24)
+    public String getApplicant() {
+        return applicant;
+    }
+
+    public void setApplicant(String applicant) {
+        this.applicant = applicant;
+    }
+    @ExcelField(title="部门", align=2, sort=25)
+    public String getDepartment() {
+        return department;
+    }
+
+    public void setDepartment(String department) {
+        this.department = department;
+    }
+    @ExcelField(title="申请人联系方式", align=2, sort=26)
+    public String getApplicantContact() {
+        return applicantContact;
+    }
+
+    public void setApplicantContact(String applicantContact) {
+        this.applicantContact = applicantContact;
+    }
+    @ExcelField(title="供应商编码", align=2, sort=27)
+    public String getSupplierCode() {
+        return supplierCode;
+    }
+
+    public void setSupplierCode(String supplierCode) {
+        this.supplierCode = supplierCode;
+    }
+    @ExcelField(title="供应商描述", align=2, sort=28)
+    public String getSupplierDescription() {
+        return supplierDescription;
+    }
+
+    public void setSupplierDescription(String supplierDescription) {
+        this.supplierDescription = supplierDescription;
+    }
+    @ExcelField(title="供应商联系人", align=2, sort=29)
+    public String getSupplierContact() {
+        return supplierContact;
+    }
+
+    public void setSupplierContact(String supplierContact) {
+        this.supplierContact = supplierContact;
+    }
+    @ExcelField(title="联系电话", align=2, sort=30)
+    public String getContactNumber() {
+        return contactNumber;
+    }
+
+    public void setContactNumber(String contactNumber) {
+        this.contactNumber = contactNumber;
+    }
+    @ExcelField(title="创建日期", align=2, sort=31)
+    public Date getCreationDate() {
+        return creationDate;
+    }
+
+    public void setCreationDate(Date creationDate) {
+        this.creationDate = creationDate;
+    }
+    @ExcelField(title="一级审批日期", align=2, sort=32)
+    public Date getFirstLevelApprovalDate() {
+        return FirstLevelApprovalDate;
+    }
+
+    public void setFirstLevelApprovalDate(Date firstLevelApprovalDate) {
+        FirstLevelApprovalDate = firstLevelApprovalDate;
+    }
+    @ExcelField(title="二级审批日期", align=2, sort=33)
+    public Date getSecondaryLevelApprovalDate() {
+        return SecondaryLevelApprovalDate;
+    }
+
+    public void setSecondaryLevelApprovalDate(Date secondaryLevelApprovalDate) {
+        SecondaryLevelApprovalDate = secondaryLevelApprovalDate;
+    }
+    @ExcelField(title="一级审批人", align=2, sort=34)
+    public String getPrimaryApprover() {
+        return primaryApprover;
+    }
+
+    public void setPrimaryApprover(String primaryApprover) {
+        this.primaryApprover = primaryApprover;
+    }
+    @ExcelField(title="二级审批人", align=2, sort=35)
+    public String getSecondaryApprover() {
+        return SecondaryApprover;
+    }
+
+    public void setSecondaryApprover(String secondaryApprover) {
+        SecondaryApprover = secondaryApprover;
+    }
+    @ExcelField(title="拒绝说明原因", align=2, sort=36)
+    public String getReasonForRejection() {
+        return reasonForRejection;
+    }
+
+    public void setReasonForRejection(String reasonForRejection) {
+        this.reasonForRejection = reasonForRejection;
+    }
+    @ExcelField(title="资金属性描述", align=2, sort=37)
+    public String getFundAttributeDescription() {
+        return fundAttributeDescription;
+    }
+
+    public void setFundAttributeDescription(String fundAttributeDescription) {
+        this.fundAttributeDescription = fundAttributeDescription;
+    }
+    @ExcelField(title="资产属性描述", align=2, sort=38)
+    public String getAssetAttributeDescription() {
+        return assetAttributeDescription;
+    }
+
+    public void setAssetAttributeDescription(String assetAttributeDescription) {
+        this.assetAttributeDescription = assetAttributeDescription;
+    }
+    @ExcelField(title="工程类型描述", align=2, sort=39)
+    public String getProjectTypeDescription() {
+        return projectTypeDescription;
+    }
+
+    public void setProjectTypeDescription(String projectTypeDescription) {
+        this.projectTypeDescription = projectTypeDescription;
+    }
+    @ExcelField(title="备注", align=2, sort=40)
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+    @ExcelField(title="采购订单", align=2, sort=41)
+    public String getPurchaseOrderS() {
+        return purchaseOrderS;
+    }
+
+    public void setPurchaseOrderS(String purchaseOrderS) {
+        this.purchaseOrderS = purchaseOrderS;
+    }
+    @ExcelField(title="订单行号", align=2, sort=42)
+    public Integer getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(Integer orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+    @ExcelField(title="订单删除标识", align=2, sort=43)
+    public String getOrderDeletionID() {
+        return orderDeletionID;
+    }
+
+    public void setOrderDeletionID(String orderDeletionID) {
+        this.orderDeletionID = orderDeletionID;
+    }
+    @ExcelField(title="收货完成标识", align=2, sort=44)
+    public String getReceiptCompletionIdentification() {
+        return receiptCompletionIdentification;
+    }
+
+    public void setReceiptCompletionIdentification(String receiptCompletionIdentification) {
+        this.receiptCompletionIdentification = receiptCompletionIdentification;
+    }
+}

+ 13 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/mapper/PlanSummaryMapper.java

@@ -0,0 +1,13 @@
+package com.jeeplus.modules.sg.balancedlibrary.planSummary.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.balancedlibrary.planSummary.entity.AgriculturalDistributionNetwork;
+
+/**
+ * 配农网 Mapper
+ *
+ */
+@MyBatisMapper
+public interface PlanSummaryMapper extends BaseMapper<AgriculturalDistributionNetwork> {
+}

+ 5 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/mapper/xml/PlanSummaryMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.balancedlibrary.planSummary.mapper.PlanSummaryMapper">
+
+</mapper>

+ 14 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/service/PlanSummaryService.java

@@ -0,0 +1,14 @@
+package com.jeeplus.modules.sg.balancedlibrary.planSummary.service;
+
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.balancedlibrary.planSummary.entity.AgriculturalDistributionNetwork;
+import com.jeeplus.modules.sg.balancedlibrary.planSummary.mapper.PlanSummaryMapper;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+public class PlanSummaryService extends CrudService<PlanSummaryMapper, AgriculturalDistributionNetwork> {
+
+}

+ 94 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/vo/PlanSummary.java

@@ -0,0 +1,94 @@
+package com.jeeplus.modules.sg.balancedlibrary.planSummary.vo;
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+
+public class PlanSummary {
+    public PlanSummary() {
+    }
+
+    public PlanSummary(String applicant, String projectDepartment, String materialCoding, String descriptionOfMaterials, String amountOfDemand, String numberOfReports, String progressOfImplementation) {
+        this.applicant = applicant;
+        this.projectDepartment = projectDepartment;
+        this.materialCoding = materialCoding;
+        this.descriptionOfMaterials = descriptionOfMaterials;
+        this.amountOfDemand = amountOfDemand;
+        this.numberOfReports = numberOfReports;
+        this.progressOfImplementation = progressOfImplementation;
+    }
+
+    //申请人
+    private String applicant;
+    //项目部门
+    private String projectDepartment;
+    //物料编码
+    private String materialCoding;
+    //物料描述
+    private String descriptionOfMaterials;
+    //需求数量
+    private String amountOfDemand;
+    //上报数量
+    private String numberOfReports;
+    //执行进度(%)
+    private String progressOfImplementation;
+    @ExcelField(title="申请人", align=2, sort=1)
+    public String getApplicant() {
+        return applicant;
+    }
+    @ExcelField(title="项目部门", align=2, sort=2)
+    public String getProjectDepartment() {
+        return projectDepartment;
+    }
+    @ExcelField(title="物料编码", align=2, sort=3)
+
+    public String getMaterialCoding() {
+        return materialCoding;
+    }
+    @ExcelField(title="物料描述", align=2, sort=4)
+
+    public String getDescriptionOfMaterials() {
+        return descriptionOfMaterials;
+    }
+    @ExcelField(title="需求数量", align=2, sort=5)
+
+    public String getAmountOfDemand() {
+        return amountOfDemand;
+    }
+    @ExcelField(title="上报数量", align=2, sort=6)
+
+    public String getNumberOfReports() {
+        return numberOfReports;
+    }
+    @ExcelField(title="执行进度", align=2, sort=7)
+
+    public String getProgressOfImplementation() {
+        return progressOfImplementation;
+    }
+
+    public void setApplicant(String applicant) {
+        this.applicant = applicant;
+    }
+
+    public void setProjectDepartment(String projectDepartment) {
+        this.projectDepartment = projectDepartment;
+    }
+
+    public void setMaterialCoding(String materialCoding) {
+        this.materialCoding = materialCoding;
+    }
+
+    public void setDescriptionOfMaterials(String descriptionOfMaterials) {
+        this.descriptionOfMaterials = descriptionOfMaterials;
+    }
+
+    public void setAmountOfDemand(String amountOfDemand) {
+        this.amountOfDemand = amountOfDemand;
+    }
+
+    public void setNumberOfReports(String numberOfReports) {
+        this.numberOfReports = numberOfReports;
+    }
+
+    public void setProgressOfImplementation(String progressOfImplementation) {
+        this.progressOfImplementation = progressOfImplementation;
+    }
+}

+ 167 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/web/PlanSummaryController.java

@@ -0,0 +1,167 @@
+package com.jeeplus.modules.sg.balancedlibrary.planSummary.web;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.modules.sg.balancedlibrary.planSummary.entity.AgriculturalDistributionNetwork;
+import com.jeeplus.modules.sg.balancedlibrary.planSummary.entity.ProcessTracking;
+import com.jeeplus.modules.sg.balancedlibrary.planSummary.vo.PlanSummary;
+import com.jeeplus.modules.sg.balancedlibrary.reportPerson.entity.ReportPerson;
+import com.jeeplus.modules.sg.balancedlibrary.reportPerson.service.ReportPersonService;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.*;
+
+@Controller
+@RequestMapping(value = "${adminPath}/plansummary")
+public class PlanSummaryController {
+    @Autowired
+    private ReportPersonService reportPersonService;
+
+    @RequestMapping(value = "list")
+    public String list() {
+        return "modules/sg/balancedlibrary/planSummary/planSummaryList";
+    }
+
+    /**
+     * 导入Excel数据
+     */
+    @ResponseBody
+    @PostMapping(value = "import")
+    public AjaxJson importFile(@RequestParam("file") MultipartFile[] file, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson ajaxJson = new AjaxJson();
+        //保存提报人和物料编码
+        Map<String, BigDecimal> PNWMap = new HashMap<>();
+        //去重统计配农网物料编码 提报人
+        List<String> PNWSameList = new ArrayList<>();
+        Map<String, BigDecimal> GZMap = new HashMap<>();
+        //跟踪去重
+        List<String> GZSameList = new ArrayList<>();
+        List<PlanSummary> planSummaryList = new ArrayList<>();
+
+        try {
+            ImportExcel ei = new ImportExcel(file[1], 1, 0);
+            ImportExcel ie = new ImportExcel(file[0], 1, 0);
+            //将excel表转换成集合
+            List<AgriculturalDistributionNetwork> PNWList = ei.getDataList(AgriculturalDistributionNetwork.class);
+            List<ProcessTracking> GZList = ie.getDataList(ProcessTracking.class);
+            System.out.println("*******************************************************************");
+//            去重统计各个部门需求数量
+            PNWList.forEach(l -> {
+                String person = l.getRequiredMaterialCode() + "-" + l.getPlanSubmitter();
+                if (!PNWSameList.contains(person)) {
+                    PNWSameList.add(person);
+                    //创建提交人对象l
+                    ReportPerson reportPerson = new ReportPerson();
+                    reportPerson.setReportPerson(l.getPlanSubmitter());
+
+                    //根据名称查询
+                    List<ReportPerson> getPlanSubmitterList = reportPersonService.findList(reportPerson);
+                    //如果不为空,出现重名情况默认取第一个
+                    String key = "";
+                    if(getPlanSubmitterList!=null && getPlanSubmitterList.size()!=0){
+                        key = getPlanSubmitterList.get(0).getReportDepartment();
+                    }
+                    //根据部门增加需求数量
+                    if(PNWMap.containsKey(key)){
+                        BigDecimal temp = PNWMap.get(key).add(new BigDecimal(l.getDemandQuantity()));
+                        PNWMap.put(key, temp);
+                    }else{
+                        PNWMap.put(key, new BigDecimal(l.getDemandQuantity()));
+                    }
+                }
+
+            });
+
+
+            //去重统计各个部门需求数量
+            GZList.forEach(l -> {
+                String parson = l.getMaterialCode() + "-" + l.getApplicant();
+                if (!GZSameList.contains(parson)) {
+                    GZSameList.add(parson);
+                    //创建提交人对象l
+                    ReportPerson reportPerson = new ReportPerson();
+                    reportPerson.setReportPerson(l.getApplicant());
+                    //根据名称查询
+                    List<ReportPerson> getPlanSubmitterList = reportPersonService.findList(reportPerson);
+                    //如果不为空,出现重名情况默认取第一个
+                    String key = "";
+                    if(getPlanSubmitterList!=null&&getPlanSubmitterList.size()!=0){
+
+                        key = getPlanSubmitterList.get(0).getReportDepartment();
+                    }
+                    if(GZMap.containsKey(key)){
+                        BigDecimal temp = GZMap.get(key).add(new BigDecimal(l.getDemandQuantity()));
+                        GZMap.put(key, temp);
+                    }else{
+                        GZMap.put(key, new BigDecimal(l.getDemandQuantity()));
+                    }
+
+                }
+
+            });
+            //Q
+            GZMap.forEach((k,v)->{
+                planSummaryList.add(new PlanSummary(null,k,null,null,v.toString(),PNWMap.containsKey(k)?PNWMap.get(k).toString():null,
+                        //需求数量是否为0  如果不为0 计算执行进度 如果为0则显示未上报
+                        PNWMap.containsKey(k)&&PNWMap.get(k)!=null?PNWMap.get(k).compareTo(new BigDecimal(0))==0?"未上报需求":(PNWMap.get(k).divide(v,1,BigDecimal.ROUND_HALF_DOWN))+ "%":"未上报需求"
+                        ));
+            });
+
+
+            /***********************************************/
+            String fileName = "执行计划汇总" + DateUtils.getDate("yyyy-MM-dd-HHmmss") + ".xlsx";
+            new ExportExcel("", PlanSummary.class).setDataList(planSummaryList).write(response, fileName).dispose();
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (InvalidFormatException e) {
+            e.printStackTrace();
+        }
+        return ajaxJson;
+    }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//            PNWMap.forEach((k,v)->{
+//
+//              planSummaryList.forEach(l->{
+//                    if(!k.equals(l.getProjectDepartment())){
+//                        planSummaryList.add(new PlanSummary(null,k,null,null,GZMap.containsKey(k)?GZMap.get(k).toString():null,v.toString(),
+//                                //需求数量是否为0  如果不为0 计算执行进度 如果为0则显示未上报
+//                                GZMap.containsKey(k) ?
+//                                        (GZMap.get(k).compareTo(new BigDecimal(0))==0?
+//                                                (v.divide(GZMap.get(k))).multiply(new BigDecimal(100)).toString() + "%"
+//                                                :"未上报需求")
+//                                        :"未上报需求"
+//                        ));
+//                    }
+//                });
+//
+//            });
+

+ 0 - 0
src/main/webapp/webpage/modules/sg/balancedlibrary/planSummary/planSummaryList.js


+ 119 - 0
src/main/webapp/webpage/modules/sg/balancedlibrary/planSummary/planSummaryList.jsp

@@ -0,0 +1,119 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>执行计划汇总</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <script type="text/javascript">
+        function fileUpload() {
+
+            let AgriculturalDistributionNetworkFile = $('#AgriculturalDistributionNetwork').get(0).files[0];
+            let ProcessTrackingFile = $('#ProcessTracking').get(0).files[0];
+            let AgriculturalDistributionNetworkFileName = AgriculturalDistributionNetworkFile.name.split(".");
+            let ProcessTrackingFileName = ProcessTrackingFile.name.split(".");
+            if(ProcessTrackingFile==null||ProcessTrackingFileName[0]!="附件5可视化全流程跟踪报表"){
+                let file  = $('#materialInformation');
+                file.after(file.clone()).val("");
+                file.remove();
+                alert("流程跟踪报表为空或文件不正确")
+                return
+            }
+            if(AgriculturalDistributionNetworkFile==null||AgriculturalDistributionNetworkFileName[0]!="附件6:2021年第三批配农网、省招协议库存物资需求预测计划上报表"){
+                var file  = $('#AgriculturalDistributionNetwork');
+                file.after(file.clone()).val("");
+                file.remove();
+                alert("物资需求计划表为空或文件不正确")
+                return
+            }
+            let formData = new FormData();
+            formData.append("file", ProcessTrackingFile);
+            formData.append("file", AgriculturalDistributionNetworkFile);
+
+            // 构造XMLHttpRequest对象
+            var xmlRequest = new XMLHttpRequest();
+            // 发送请求
+            xmlRequest.open("POST", "${ctx}/plansummary/import", true);
+            // 设置响应类型
+            xmlRequest.responseType = "blob";
+            // 发送请求
+            xmlRequest.send(formData);
+
+            // 请求获得响应之后,触发下面的回调函数
+            xmlRequest.onload = function (oEvent) {
+                // 当时满足下面的状态码的时候,视为下载成功
+                if ((xmlRequest.status >= 200 && xmlRequest.status < 300) || xmlRequest.status === 304) {
+
+                    // 从xmlRequest对象中获取响应的内容
+                    let content = xmlRequest.response;
+
+
+                    let dispositionStr = xmlRequest.getResponseHeader('Content-Disposition');
+                    if (dispositionStr == null || dispositionStr === "") {
+                        alert("下载失败!");
+                        return;
+                    }
+                    // 获取文件名
+                    let dispositionArr = dispositionStr.split(";");
+                    let fileName = decodeURIComponent(dispositionArr[1]);
+                    let name = fileName.split("=");
+                    fileName = name[1];
+                    console.log(fileName);
+                    let blob = new Blob([content]);
+                    let elink = document.createElement('a');
+                    elink.download = fileName;
+                    elink.style.display = 'none';
+                    const src = URL.createObjectURL(blob);
+                    elink.href = src;
+                    document.body.appendChild(elink);
+                    elink.click();
+                    document.body.removeChild(elink);
+                    URL.revokeObjectURL(src);
+
+                }
+            }
+
+
+        }
+    </script>
+    <style>
+        .div-btn {
+            margin: 0 10px 20px 10px;
+        }
+        .file-upload{
+            margin: 10px 0 0 0 ;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">执行计划汇总</h3>
+        </div>
+        <div class="panel-body">
+        </div>
+        <input type="file" name="AgriculturalDistributionNetwork" id="AgriculturalDistributionNetwork" style="display: none;">
+        <input type="file" name="ProcessTracking" id="ProcessTracking" style="display: none;">
+        <div class="div-btn">
+            <button class="btn btn-info" onclick="ProcessTracking.click()">
+                <i class="fa fa-folder-open-o"></i> 导入可视化全流程跟踪报表
+            </button>
+
+            <button class="btn btn-info" onclick="AgriculturalDistributionNetwork.click()">
+                <i class="fa fa-folder-open-o"></i> 导入2021年第三批配农网、省招协议库存物资需求预测计划上报表
+            </button>
+
+            <div class="file-upload">
+                <button class="btn btn-primary btn-block btn-lg btn-parsley" onclick="fileUpload()">提交</button>
+            </div>
+
+        </div>
+
+
+
+    </div>
+</div>
+</body>
+</html>