Переглянути джерело

月报可视化报表代码提交

徐滕 3 тижнів тому
батько
коміт
64baf158fb
22 змінених файлів з 878 додано та 40 видалено
  1. 144 2
      src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/web/CompanyYearController.java
  2. 6 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectReportDataDao.java
  3. 9 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportDataService.java
  4. 10 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java
  5. 8 8
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureOldMessageDisposeController.java
  6. 104 16
      src/main/java/com/jeeplus/modules/statement/service/StatementCompanyComprehensiveService.java
  7. 151 0
      src/main/java/com/jeeplus/modules/statement/utils/ReportDashboardProcessingUtil.java
  8. 6 0
      src/main/java/com/jeeplus/modules/sys/dao/WorkattachmentDao.java
  9. 10 0
      src/main/java/com/jeeplus/modules/sys/service/WorkattachmentService.java
  10. 1 1
      src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java
  11. 3 3
      src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java
  12. 3 3
      src/main/java/com/jeeplus/modules/workreimbursement/service/WorkReimbursementService.java
  13. 7 0
      src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml
  14. 2 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml
  15. 14 0
      src/main/resources/mappings/modules/sys/WorkattachmentDao.xml
  16. 2 2
      src/main/webapp/webpage/include/head.jsp
  17. 1 1
      src/main/webapp/webpage/include/ossTools.jsp
  18. 1 1
      src/main/webapp/webpage/modules/notifyStatement/companyLevel/CompanyLevelMonthStatement.jsp
  19. 1 1
      src/main/webapp/webpage/modules/notifyStatement/companyLevel/CompanyLevelStatement.jsp
  20. 1 1
      src/main/webapp/webpage/modules/projectcontentinfo/achievementFileDataForm.jsp
  21. 1 1
      src/main/webapp/webpage/modules/projectcontentinfo/basedDataForm.jsp
  22. 393 0
      src/main/webapp/webpage/modules/statement/companyDataBoardView.jsp

+ 144 - 2
src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/web/CompanyYearController.java

@@ -8,7 +8,9 @@ import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementInfo;
 import com.jeeplus.modules.notifyStatement.companyLevel.service.CompanyYearService;
 import com.jeeplus.modules.statement.entity.StatementCompanyComprehensiveInfo;
 import com.jeeplus.modules.statement.service.StatementCompanyComprehensiveService;
+import com.jeeplus.modules.statement.utils.ReportDashboardProcessingUtil;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.codehaus.jackson.map.ObjectMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -18,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -112,7 +115,7 @@ public class CompanyYearController extends BaseController {
      * 查看,增加,编辑报告表单页面
      */
     @RequestMapping(value = "form")
-    public String form(StatementInfo statementInfo, Model model) {
+    public String form(StatementInfo statementInfo, Model model) throws IOException {
 
         //2022,2,5
         String[] arguments = statementInfo.getNotifyDateNode().split(",");
@@ -158,7 +161,146 @@ public class CompanyYearController extends BaseController {
         model.addAttribute("year",year);
         model.addAttribute("bigDateType",bigDateType);
         model.addAttribute("smallDateType",smallDateType);
-        return "modules/statement/companyDataView";
+
+
+        //看板报表处理
+        ReportDashboardProcessingUtil util = new ReportDashboardProcessingUtil();
+        //项目数据处理
+        Map<String, List<String>> reportFormList1 = util.disposeProjectData(stringListMap.get("reportFormList1"));
+        model.addAttribute("officeNames",new ObjectMapper().writeValueAsString(reportFormList1.get("officeNames")));
+        model.addAttribute("field1",new ObjectMapper().writeValueAsString(reportFormList1.get("field1")));
+        model.addAttribute("field2",new ObjectMapper().writeValueAsString(reportFormList1.get("field2")));
+        model.addAttribute("field3",new ObjectMapper().writeValueAsString(reportFormList1.get("field3")));
+        model.addAttribute("field4",new ObjectMapper().writeValueAsString(reportFormList1.get("field4")));
+        model.addAttribute("field5",new ObjectMapper().writeValueAsString(reportFormList1.get("field5")));
+        model.addAttribute("field6",new ObjectMapper().writeValueAsString(reportFormList1.get("field6")));
+        model.addAttribute("field7",new ObjectMapper().writeValueAsString(reportFormList1.get("field7")));
+        model.addAttribute("field8",new ObjectMapper().writeValueAsString(reportFormList1.get("field8")));
+        model.addAttribute("field13",new ObjectMapper().writeValueAsString(reportFormList1.get("field13")));
+        model.addAttribute("field14",new ObjectMapper().writeValueAsString(reportFormList1.get("field14")));
+        model.addAttribute("field15",new ObjectMapper().writeValueAsString(reportFormList1.get("field15")));
+        model.addAttribute("field16",new ObjectMapper().writeValueAsString(reportFormList1.get("field16")));
+
+        //开票报表数据处理
+        Map<String, List<String>> invoiceList = util.disposeInvoiceData(stringListMap.get("reportFormList2"));
+        model.addAttribute("invoiceOfficeNames",new ObjectMapper().writeValueAsString(invoiceList.get("officeNames")));
+        model.addAttribute("invoiceField1",new ObjectMapper().writeValueAsString(invoiceList.get("field1")));
+        model.addAttribute("invoiceField2",new ObjectMapper().writeValueAsString(invoiceList.get("field2")));
+        model.addAttribute("invoiceField3",new ObjectMapper().writeValueAsString(invoiceList.get("field3")));
+        model.addAttribute("invoiceField4",new ObjectMapper().writeValueAsString(invoiceList.get("field4")));
+
+        //开票报表数据处理
+        Map<String, List<String>> reimbursementList = util.disposeReimbursementData(stringListMap.get("reportFormList3"));
+        model.addAttribute("reimbursementOfficeNames",new ObjectMapper().writeValueAsString(reimbursementList.get("officeNames")));
+        model.addAttribute("reimbursementField1",new ObjectMapper().writeValueAsString(reimbursementList.get("field1")));
+        model.addAttribute("reimbursementField2",new ObjectMapper().writeValueAsString(reimbursementList.get("field2")));
+        //合同报表数据处理
+        Map<String, List<String>> contractList = util.disposeContractData(stringListMap.get("reportFormList4"));
+        model.addAttribute("contractOfficeNames",new ObjectMapper().writeValueAsString(contractList.get("officeNames")));
+        model.addAttribute("contractField1",new ObjectMapper().writeValueAsString(contractList.get("field1")));
+        model.addAttribute("contractField2",new ObjectMapper().writeValueAsString(contractList.get("field2")));
+        model.addAttribute("contractField3",new ObjectMapper().writeValueAsString(contractList.get("field3")));
+        model.addAttribute("contractField4",new ObjectMapper().writeValueAsString(contractList.get("field4")));
+        model.addAttribute("nyr","月");
+
+
+        return "modules/statement/companyDataBoardView";
+    }
+
+
+    /**
+     * 查看,增加,编辑报告表单页面
+     */
+    @RequestMapping(value = "formCompanyYear")
+    public String formCompanyYear(StatementInfo statementInfo, Model model) throws IOException {
+
+        //2022,2,5
+        String[] arguments = statementInfo.getNotifyDateNode().split(",");
+        //获取年份
+        String year = arguments[0];
+        //获取状态1(0:年;1:季度;2:月份)
+        String bigDateType = arguments[1];
+        //获取状态2(针对状态1进行精确所在指定季度或者月份)
+        String smallDateType = arguments[2];
+
+        Integer yearInt = new Integer(year);
+        Integer bigDateTypeInt = new Integer(bigDateType);
+        Integer smallDateTypeInt = new Integer(smallDateType);
+        if(yearInt >= 2023 ){
+            if(bigDateTypeInt == 2 ){
+                if(smallDateTypeInt > 3){
+                    model.addAttribute("isThisMonth","1");//年度合同报表
+                }else{
+                    model.addAttribute("isThisMonth","0");//年度合同报表
+                }
+            }else{
+                model.addAttribute("isThisMonth","0");//年度合同报表
+            }
+        }else{
+            model.addAttribute("isThisMonth","0");//年度合同报表
+        }
+
+
+        Map<String, List<StatementCompanyComprehensiveInfo>> stringListMap = statementCompanyComprehensiveService.viewList(year,bigDateType,smallDateType);
+        model.addAttribute("reportFormList1",stringListMap.get("reportFormList1"));//项目报表
+        model.addAttribute("reportFormList2",stringListMap.get("reportFormList2"));//开票报表
+        model.addAttribute("reportFormList3",stringListMap.get("reportFormList3"));//报销报表
+        model.addAttribute("reportFormList4",stringListMap.get("reportFormList4"));//合同报表
+        model.addAttribute("reportFormList5",stringListMap.get("reportFormList5"));//年度项目报表
+        model.addAttribute("reportFormList6",stringListMap.get("reportFormList6"));//年度开票报表
+        model.addAttribute("reportFormList7",stringListMap.get("reportFormList7"));//年度报销报表
+        model.addAttribute("reportFormList8",stringListMap.get("reportFormList8"));//年度合同报表
+
+        model.addAttribute("reportFormList9",stringListMap.get("reportFormList9"));//当月项目报表
+        model.addAttribute("reportFormList10",stringListMap.get("reportFormList10"));//当月开票报表
+        model.addAttribute("reportFormList11",stringListMap.get("reportFormList11"));//当月报销报表
+        model.addAttribute("reportFormList12",stringListMap.get("reportFormList12"));//当月合同报表
+        model.addAttribute("year",year);
+        model.addAttribute("bigDateType",bigDateType);
+        model.addAttribute("smallDateType",smallDateType);
+//看板报表处理
+        ReportDashboardProcessingUtil util = new ReportDashboardProcessingUtil();
+        //项目数据处理
+        Map<String, List<String>> reportFormList1 = util.disposeProjectData(stringListMap.get("reportFormList1"));
+        model.addAttribute("officeNames",new ObjectMapper().writeValueAsString(reportFormList1.get("officeNames")));
+        model.addAttribute("field1",new ObjectMapper().writeValueAsString(reportFormList1.get("field1")));
+        model.addAttribute("field2",new ObjectMapper().writeValueAsString(reportFormList1.get("field2")));
+        model.addAttribute("field3",new ObjectMapper().writeValueAsString(reportFormList1.get("field3")));
+        model.addAttribute("field4",new ObjectMapper().writeValueAsString(reportFormList1.get("field4")));
+        model.addAttribute("field5",new ObjectMapper().writeValueAsString(reportFormList1.get("field5")));
+        model.addAttribute("field6",new ObjectMapper().writeValueAsString(reportFormList1.get("field6")));
+        model.addAttribute("field7",new ObjectMapper().writeValueAsString(reportFormList1.get("field7")));
+        model.addAttribute("field8",new ObjectMapper().writeValueAsString(reportFormList1.get("field8")));
+        model.addAttribute("field13",new ObjectMapper().writeValueAsString(reportFormList1.get("field13")));
+        model.addAttribute("field14",new ObjectMapper().writeValueAsString(reportFormList1.get("field14")));
+        model.addAttribute("field15",new ObjectMapper().writeValueAsString(reportFormList1.get("field15")));
+        model.addAttribute("field16",new ObjectMapper().writeValueAsString(reportFormList1.get("field16")));
+
+        //开票报表数据处理
+        Map<String, List<String>> invoiceList = util.disposeInvoiceData(stringListMap.get("reportFormList2"));
+        model.addAttribute("invoiceOfficeNames",new ObjectMapper().writeValueAsString(invoiceList.get("officeNames")));
+        model.addAttribute("invoiceField1",new ObjectMapper().writeValueAsString(invoiceList.get("field1")));
+        model.addAttribute("invoiceField2",new ObjectMapper().writeValueAsString(invoiceList.get("field2")));
+        model.addAttribute("invoiceField3",new ObjectMapper().writeValueAsString(invoiceList.get("field3")));
+        model.addAttribute("invoiceField4",new ObjectMapper().writeValueAsString(invoiceList.get("field4")));
+
+        //开票报表数据处理
+        Map<String, List<String>> reimbursementList = util.disposeReimbursementData(stringListMap.get("reportFormList3"));
+        model.addAttribute("reimbursementOfficeNames",new ObjectMapper().writeValueAsString(reimbursementList.get("officeNames")));
+        model.addAttribute("reimbursementField1",new ObjectMapper().writeValueAsString(reimbursementList.get("field1")));
+        model.addAttribute("reimbursementField2",new ObjectMapper().writeValueAsString(reimbursementList.get("field2")));
+        //合同报表数据处理
+        Map<String, List<String>> contractList = util.disposeContractData(stringListMap.get("reportFormList4"));
+        model.addAttribute("contractOfficeNames",new ObjectMapper().writeValueAsString(contractList.get("officeNames")));
+        model.addAttribute("contractField1",new ObjectMapper().writeValueAsString(contractList.get("field1")));
+        model.addAttribute("contractField2",new ObjectMapper().writeValueAsString(contractList.get("field2")));
+        model.addAttribute("contractField3",new ObjectMapper().writeValueAsString(contractList.get("field3")));
+        model.addAttribute("contractField4",new ObjectMapper().writeValueAsString(contractList.get("field4")));
+        model.addAttribute("nyr","年");
+
+
+
+        return "modules/statement/companyDataBoardView";
     }
 
 

+ 6 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectReportDataDao.java

@@ -235,4 +235,10 @@ public interface ProjectReportDataDao extends CrudDao<ProjectReportData> {
      * @param number
      */
     String getByNumber(@Param("number")String number);
+
+    /**
+     * 清除审定单签章文件下载路径信息
+     * @return
+     */
+    Integer deleteSignatureInfoUrl(String id);
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportDataService.java

@@ -1668,6 +1668,15 @@ public class ProjectReportDataService extends CrudService<ProjectReportDataDao,
 	}
 
 	/**
+	 * 清除审定单签章文件下载路径信息
+	 * @return
+	 */
+	@Transactional(readOnly = false)
+	public void deleteSignatureInfoUrl(String id) {
+		dao.deleteSignatureInfoUrl(id);
+	}
+
+	/**
 	 * 修改报告签章 项目中的信息
 	 * @param records
 	 * @return

+ 10 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java

@@ -2212,6 +2212,16 @@ public class RuralProjectMessageElectronicSealService extends CrudService<RuralP
         //将通知表中对应的数据进行删除
 
         dao.deleteWorkProjectNotifyByReportId("报告号【" + projectReportData.getNumber() + "】审定单签章审批登记完成");
+
+        //将projectReportData表中的审定单文件下载地址进行删除
+        projectReportDataService.deleteSignatureInfoUrl(projectReportData.getId());
+
+        //将附件表中的对应审定单信息进行删除
+        Workattachment workattachment = new Workattachment();
+        workattachment.setAttachmentFlag("project_report_approval_file_signature");
+        workattachment.setAttachmentId(projectReportData.getId());
+        //删除原有数据信息
+        workattachmentService.deleteByAttachIdAndType(workattachment);
     }
 
     /**

+ 8 - 8
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureOldMessageDisposeController.java

@@ -299,23 +299,23 @@ public class RuralProjectSignatureOldMessageDisposeController extends BaseContro
         System.out.println(c.get(Calendar.DATE));
         System.out.println(c.getActualMaximum(Calendar.DATE));
         long l1 = System.currentTimeMillis();
-        Integer month = c.get(Calendar.MONTH); //第一个月从0开始,所以得到月份+1
+        Integer month = c.get(Calendar.MONTH) + 1; //第一个月从0开始,所以得到月份+1
         //当月最后一天
-        /*logger.info("-----------公司级—月度报表(开始)------------------");
-        statementCompanyComprehensiveService.disposeStatementCompany(year,2,month);
+        logger.info("-----------公司级—月度报表(开始)------------------");
+        //statementCompanyComprehensiveService.disposeStatementCompany(year,2,month);
         logger.info("------------公司级—月度报表(结束)------------------");
         logger.info("------------公司级—年度报表(月报中年度信息)(开始)------------------");
-        statementCompanyComprehensiveService.disposeStatementCompanyByYear(year,0,month);
+        //statementCompanyComprehensiveService.disposeStatementCompanyByYear(year,0,month);
         logger.info("------------公司级—年度报表(月报中年度信息)(结束)------------------");
         logger.info("-----------部门级—月度报表(开始)------------------");
         statementCompanyComprehensiveService.disposeStatementOffice(year,2,month);
         logger.info("------------部门级—月度报表(结束)------------------");
         logger.info("-----------部门级—年度报表(月报中年度信息)(开始)------------------");
         statementCompanyComprehensiveService.disposeStatementOfficeByYear(year,0,month);
-        logger.info("------------部门级—年度报表(月报中年度信息)(结束)------------------");*/
-        /*logger.info("-----------张静—月度报表(开始)------------------");
-        statementCompanyComprehensiveService.disposeReportDataStatementCompany(year,2,month);
-        logger.info("------------张静—月度报表(结束)------------------");*/
+        logger.info("------------部门级—年度报表(月报中年度信息)(结束)------------------");
+        logger.info("-----------张静—月度报表(开始)------------------");
+        //statementCompanyComprehensiveService.disposeReportDataStatementCompany(year,2,month);
+        logger.info("------------张静—月度报表(结束)------------------");
         map.put("msgMonth","月度报表处理完成");
         long l2 = System.currentTimeMillis();
         map.put("msgdate",(l2-l1));

+ 104 - 16
src/main/java/com/jeeplus/modules/statement/service/StatementCompanyComprehensiveService.java

@@ -140,7 +140,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         xminfo.setField12(xmnum12);
         xminfo.setField13(xmnum13);
         xminfo.setField14(xmnum14);
-        xminfo.setField15(xmnum15);
+        xminfo.setField15(xmnum15);reportFormList2 = {ArrayList@16231}  size = 31… View
         xminfo.setField16(xmnum16);
         reportFormList1.add(xminfo);*/
 
@@ -155,7 +155,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         String kpnum3 = "0";
         String kpnum4 = "0";
         for(StatementCompanyComprehensiveInfo info:reportFormList2){
-            if (info.getOfficeName().equals("工程五部") || info.getOfficeName().equals("工程一部")){
+            if (info.getOfficeName().equals("工程五部") || info.getOfficeName().equals("工程一部") || info.getOfficeName().equals("苏州分公司") ){
                 BigDecimal bd = new BigDecimal(info.getField2());
                 // 使用setScale方法进行四舍五入,保留两位小数
                 BigDecimal roundedBd = bd.setScale(2, RoundingMode.HALF_UP);
@@ -189,7 +189,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         String bxnum1 = "0";
         String bxnum2 = "0";
         for(StatementCompanyComprehensiveInfo info:reportFormList3){
-            if (info.getOfficeName().equals("工程五部") || info.getOfficeName().equals("工程一部")){
+            if (info.getOfficeName().equals("工程五部") || info.getOfficeName().equals("工程一部") || info.getOfficeName().equals("苏州分公司")){
                 BigDecimal bd1 = new BigDecimal(info.getField2());
                 // 使用setScale方法进行四舍五入,保留两位小数
                 BigDecimal roundedBd1 = bd1.setScale(2, RoundingMode.HALF_UP);
@@ -237,6 +237,8 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         List<String> oneChildrenOffice = officeService.getChildrenOffice(gcOneOffice.getId());
         Office gcFiveOffice = officeService.getByName("工程五部");
         List<String> fiveChildrenOffice = officeService.getChildrenOffice(gcFiveOffice.getId());
+        Office gcSZOffice = officeService.getByName("苏州分公司");
+        List<String> szChildrenOffice = officeService.getChildrenOffice(gcSZOffice.getId());
         Map<String, String> dateMap = this.getDateNew(Integer.parseInt(bigDateType), Integer.parseInt(smallDateType), Integer.parseInt(year));
         //报表时间
         String statementDate = dateMap.get("statementDate");
@@ -341,6 +343,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         //公司级:开票报表开始
         ArrayList<StatementCompanyComprehensiveInfo> kpOneYearList = new ArrayList<>();
         ArrayList<StatementCompanyComprehensiveInfo> kpFiveYearList = new ArrayList<>();
+        ArrayList<StatementCompanyComprehensiveInfo> kpSzYearList = new ArrayList<>();
         //类型(1:项目;2:开票;3:报销;4:合同)
         statementCompanyComprehensiveInfo.setType("2");
         statementCompanyComprehensiveInfo.setOfficeIdList(new ArrayList<>());
@@ -365,6 +368,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                 info.setOfficeName("工程五部-"+info.getOfficeName());
                 kpFiveYearList.add(info);
             }
+            //将苏州分公司的子部门信息添加到集合中
+            if (szChildrenOffice.contains(info.getOfficeId())){
+                info.setOfficeName("苏州分公司-"+info.getOfficeName());
+                kpSzYearList.add(info);
+            }
             //转BigDecimal 处理
             kpyearnum1 = new BigDecimal(info.getField1()).add(new BigDecimal(kpyearnum1)).toString();
             kpyearnum2 = new BigDecimal(info.getField2()).add(new BigDecimal(kpyearnum2)).toString();
@@ -386,6 +394,9 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         StatementCompanyComprehensiveInfo kpFiveInfo = allCollect(kpFiveYearList);
         kpFiveInfo.setOfficeId(gcFiveOffice.getId());
         kpFiveInfo.setOfficeName(gcFiveOffice.getName());
+        StatementCompanyComprehensiveInfo kpSzInfo = allCollect(kpSzYearList);
+        kpSzInfo.setOfficeId(gcSZOffice.getId());
+        kpSzInfo.setOfficeName(gcSZOffice.getName());
 
 
         for (int i = 0; i < reportFormList6.size(); i++) {
@@ -397,11 +408,15 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
             if ("工程五部-刘万前团队".equals(info.getOfficeName())){
                 reportFormList6.add(i+1,kpFiveInfo);
             }
+            if ("苏州分公司".equals(info.getOfficeName())){
+                reportFormList6.set(i, kpSzInfo);
+            }
         }
 //        公司级开票报表结束
     //公司级:报销报表
         ArrayList<StatementCompanyComprehensiveInfo> bxOneYearList = new ArrayList<>();
         ArrayList<StatementCompanyComprehensiveInfo> bxFiveYearList = new ArrayList<>();
+        ArrayList<StatementCompanyComprehensiveInfo> bxSzYearList = new ArrayList<>();
         //类型(1:项目;2:开票;3:报销;4:合同)
         statementCompanyComprehensiveInfo.setType("3");
         statementCompanyComprehensiveInfo.setOfficeIdList(new ArrayList<>());
@@ -424,6 +439,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                 info.setOfficeName("工程五部-"+info.getOfficeName());
                 bxFiveYearList.add(info);
             }
+            //将苏州分公司的子部门信息添加到集合中
+            if (szChildrenOffice.contains(info.getOfficeId())){
+                info.setOfficeName("苏州分公司-"+info.getOfficeName());
+                bxSzYearList.add(info);
+            }
             //转BigDecimal 处理
             bxyearnum1 = new BigDecimal(info.getField1()).add(new BigDecimal(bxyearnum1)).toString();
             bxyearnum2 = new BigDecimal(info.getField2()).add(new BigDecimal(bxyearnum2)).toString();
@@ -441,6 +461,9 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         StatementCompanyComprehensiveInfo bxFiveInfo = allCollect(bxFiveYearList);
         bxFiveInfo.setOfficeId(gcFiveOffice.getId());
         bxFiveInfo.setOfficeName(gcFiveOffice.getName());
+        StatementCompanyComprehensiveInfo bxSzInfo = allCollect(bxSzYearList);
+        bxSzInfo.setOfficeId(gcSZOffice.getId());
+        bxSzInfo.setOfficeName(gcSZOffice.getName());
 
 
         for (int i = 0; i < reportFormList7.size(); i++) {
@@ -452,12 +475,16 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
             if ("工程五部-刘万前团队".equals(info.getOfficeName())){
                 reportFormList7.add(i+1,bxFiveInfo);
             }
+            if ("苏州分公司".equals(info.getOfficeName())){
+                reportFormList7.set(i, bxSzInfo);
+            }
         }
 
         //公司级:报销报表结束
         //公司级:合同报表
         ArrayList<StatementCompanyComprehensiveInfo> htOneYearList = new ArrayList<>();
         ArrayList<StatementCompanyComprehensiveInfo> htFiveYearList = new ArrayList<>();
+        ArrayList<StatementCompanyComprehensiveInfo> htSzYearList = new ArrayList<>();
         //类型(1:项目;2:开票;3:报销;4:合同)
         statementCompanyComprehensiveInfo.setType("4");
         statementCompanyComprehensiveInfo.setOfficeIdList(new ArrayList<>());
@@ -482,6 +509,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                 info.setOfficeName("工程五部-"+info.getOfficeName());
                 htFiveYearList.add(info);
             }
+            //将苏州分公司的子部门信息添加到集合中
+            if (szChildrenOffice.contains(info.getOfficeId())){
+                info.setOfficeName("苏州分公司-"+info.getOfficeName());
+                htSzYearList.add(info);
+            }
             //转BigDecimal 处理
             htyearnum1 = new BigDecimal(info.getField1()).add(new BigDecimal(htyearnum1)).toString();
             htyearnum2 = new BigDecimal(info.getField2()).add(new BigDecimal(htyearnum2)).toString();
@@ -490,7 +522,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         }
         //存放到对应报表的list集合,方便页面集合展示
         StatementCompanyComprehensiveInfo htyearinfo = new StatementCompanyComprehensiveInfo();
-        htinfo.setOfficeName("本年合计");
+        htyearinfo.setOfficeName("本年合计");
         htyearinfo.setField1(htyearnum1);
         htyearinfo.setField2(htyearnum2);
         htyearinfo.setField3(htyearnum3);
@@ -504,6 +536,9 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         StatementCompanyComprehensiveInfo htFiveInfo = allCollect(htFiveYearList);
         htFiveInfo.setOfficeId(gcFiveOffice.getId());
         htFiveInfo.setOfficeName(gcFiveOffice.getName());
+        StatementCompanyComprehensiveInfo htSzInfo = allCollect(htSzYearList);
+        htSzInfo.setOfficeId(gcSZOffice.getId());
+        htSzInfo.setOfficeName(gcSZOffice.getName());
 
 
         for (int i = 0; i < reportFormList8.size(); i++) {
@@ -515,6 +550,9 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
             if ("工程五部-刘万前团队".equals(info.getOfficeName())){
                 reportFormList8.add(i+1,htFiveInfo);
             }
+            if ("苏州分公司".equals(info.getOfficeName())){
+                reportFormList8.set(i, htSzInfo);
+            }
         }
         //公司级:合同报表结束
 
@@ -4470,6 +4508,8 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
 
                 Office office1 = officeService.getByName("工程一部");
                 List<String> childrenOffice = officeService.getChildrenOffice(office1.getId());
+                Office szOffice = officeService.getByName("苏州分公司");
+                List<String> szChildrenOffice = officeService.getChildrenOffice(szOffice.getId());
 
                 Boolean insertFlag = true;
                 for(int i= 0;i< list.size(); i++){
@@ -4488,6 +4528,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                         String name = "工程一部-"+statementCompanyComprehensiveInfo1.getOfficeName();
                         statementCompanyComprehensiveInfo1.setOfficeName(name);
                     }
+                    //苏州分公司子部门
+
+                    if (szChildrenOffice.contains(statementCompanyComprehensiveInfo1.getOfficeId())){
+                        String name = "苏州分公司-"+statementCompanyComprehensiveInfo1.getOfficeName();
+                        statementCompanyComprehensiveInfo1.setOfficeName(name);
+                    }
                     //五部子部门
                     if (info.getOfficeIdList().contains(statementCompanyComprehensiveInfo1.getOfficeId())){
                         String name = "工程五部-"+statementCompanyComprehensiveInfo1.getOfficeName();
@@ -4497,10 +4543,22 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                 }
                 //将一部的汇总行插入到列表中
                 StatementCompanyComprehensiveInfo gcOneCollect=gcCollect(info,statementDate);
-                for(int i= 0;i< list.size(); i++) {
-                    StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo1 = list.get(i);
-                    if ("工程一部-苏州团队".equals(statementCompanyComprehensiveInfo1.getOfficeName())) {
-                        list.add(i + 1, gcOneCollect);
+                if(null != gcOneCollect){
+                    for(int i= 0;i< list.size(); i++) {
+                        StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo1 = list.get(i);
+                        if ("工程一部-苏州团队".equals(statementCompanyComprehensiveInfo1.getOfficeName())) {
+                            list.add(i + 1, gcOneCollect);
+                        }
+                    }
+                }
+                //将一部的汇总行插入到列表中
+                StatementCompanyComprehensiveInfo gcOneSZCollect=gcSZCollect(info,statementDate);
+                if(null != gcOneSZCollect){
+                    for(int i= 0;i< list.size(); i++) {
+                        StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo1 = list.get(i);
+                        if ("苏州分公司".equals(statementCompanyComprehensiveInfo1.getOfficeName())) {
+                            list.set(i, gcOneSZCollect);
+                        }
                     }
                 }
                 if(insertFlag){
@@ -4527,14 +4585,44 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
             info.setOfficeIdList(officeId1);
         }
         StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo = dao.selectAllWbByType(info);
-        statementCompanyComprehensiveInfo.setYear(info.getYear());
-        statementCompanyComprehensiveInfo.setType(info.getType());
-        statementCompanyComprehensiveInfo.setBigDateType(info.getBigDateType());
-        statementCompanyComprehensiveInfo.setSmallDateType(info.getSmallDateType());
-        statementCompanyComprehensiveInfo.setStatementDate(statementDate);
-        Office office = officeService.getByName("工程一部");
-        statementCompanyComprehensiveInfo.setOfficeId(office.getId());
-        statementCompanyComprehensiveInfo.setOfficeName(office.getName());
+        if(null != statementCompanyComprehensiveInfo) {
+            statementCompanyComprehensiveInfo.setYear(info.getYear());
+            statementCompanyComprehensiveInfo.setType(info.getType());
+            statementCompanyComprehensiveInfo.setBigDateType(info.getBigDateType());
+            statementCompanyComprehensiveInfo.setSmallDateType(info.getSmallDateType());
+            statementCompanyComprehensiveInfo.setStatementDate(statementDate);
+            Office office = officeService.getByName("工程一部");
+            statementCompanyComprehensiveInfo.setOfficeId(office.getId());
+            statementCompanyComprehensiveInfo.setOfficeName(office.getName());
+        }
+        return statementCompanyComprehensiveInfo;
+    }
+
+    public StatementCompanyComprehensiveInfo gcSZCollect(StatementCompanyComprehensiveInfo info,String statementDate){
+
+        //将工程一部及子部门的名称修改并加入汇总行
+        //工程一部及子部门
+        info.setOfficeIdList(null);
+        List<Office> officeOneList = dao.getAllWBChildrenOfficeListInfo("苏州分公司");
+        Office office1 = officeService.getByName("苏州分公司");
+        officeOneList.add(office1);
+        List<String> officeId1 = Lists.newArrayList();
+        //获取所有子集节点,并遍历子集节点计算出所有数据信息
+        for (Office officeInfo : officeOneList) {
+            officeId1.add(officeInfo.getId());
+            info.setOfficeIdList(officeId1);
+        }
+        StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo = dao.selectAllWbByType(info);
+        if(null != statementCompanyComprehensiveInfo){
+            statementCompanyComprehensiveInfo.setYear(info.getYear());
+            statementCompanyComprehensiveInfo.setType(info.getType());
+            statementCompanyComprehensiveInfo.setBigDateType(info.getBigDateType());
+            statementCompanyComprehensiveInfo.setSmallDateType(info.getSmallDateType());
+            statementCompanyComprehensiveInfo.setStatementDate(statementDate);
+            Office office = officeService.getByName("苏州分公司");
+            statementCompanyComprehensiveInfo.setOfficeId(office.getId());
+            statementCompanyComprehensiveInfo.setOfficeName(office.getName());
+        }
 
         return statementCompanyComprehensiveInfo;
     }

+ 151 - 0
src/main/java/com/jeeplus/modules/statement/utils/ReportDashboardProcessingUtil.java

@@ -0,0 +1,151 @@
+package com.jeeplus.modules.statement.utils;
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.statement.entity.StatementCompanyComprehensiveInfo;
+
+import java.util.*;
+
+public class ReportDashboardProcessingUtil {
+
+    /**
+     * 项目数据处理
+     * @param list
+     * @return
+     */
+    public Map<String, List<String>> disposeProjectData(List<StatementCompanyComprehensiveInfo> list){
+        Collections.reverse(list);
+        //项目月报:1-8、13、14
+        List<String> officeNames = new ArrayList<String>();
+        List<String> field1 = new ArrayList<>();
+        List<String> field2 = new ArrayList<>();
+        List<String> field3 = new ArrayList<>();
+        List<String> field4 = new ArrayList<>();
+        List<String> field5 = new ArrayList<>();
+        List<String> field6 = new ArrayList<>();
+        List<String> field7 = new ArrayList<>();
+        List<String> field8 = new ArrayList<>();
+        List<String> field13 = new ArrayList<>();
+        List<String> field14 = new ArrayList<>();
+        //15、16对应的是季报中B类项目纸质归档的信息
+        List<String> field15 = new ArrayList<>();
+        List<String> field16 = new ArrayList<>();
+        for (StatementCompanyComprehensiveInfo info : list) {
+            if(!"工程一部".equals(info.getOfficeName()) && !"工程五部".equals(info.getOfficeName()) && !"本年合计".equals(info.getOfficeName())){
+                officeNames.add(info.getOfficeName());
+                field1.add(info.getField1());
+                field2.add(info.getField2());
+                field3.add(info.getField3());
+                field4.add(info.getField4());
+                field5.add(info.getField5());
+                field6.add(info.getField6());
+                field7.add(info.getField7());
+                field8.add(info.getField8());
+                field13.add(info.getField13());
+                field14.add(info.getField14());
+                field15.add(info.getField15());
+                field16.add(info.getField16());
+            }
+        }
+        Map<String, List<String>> map = new HashMap<String, List<String>>();
+        map.put("officeNames", officeNames);
+        map.put("field1", field1);
+        map.put("field2", field2);
+        map.put("field3", field3);
+        map.put("field4", field4);
+        map.put("field5", field5);
+        map.put("field6", field6);
+        map.put("field7", field7);
+        map.put("field8", field8);
+        map.put("field13", field13);
+        map.put("field14", field14);
+        map.put("field15", field15);
+        map.put("field16", field16);
+        return map;
+    }
+
+    /**
+     * 项目数据处理
+     * @param list
+     * @return
+     */
+    public Map<String, List<String>> disposeInvoiceData(List<StatementCompanyComprehensiveInfo> list){
+        //项目月报:1-8、13、14
+        List<String> officeNames = new ArrayList<String>();
+        List<String> field1 = new ArrayList<>();
+        List<String> field2 = new ArrayList<>();
+        List<String> field3 = new ArrayList<>();
+        List<String> field4 = new ArrayList<>();
+        for (StatementCompanyComprehensiveInfo info : list) {
+            if(!"工程一部".equals(info.getOfficeName()) && !"工程五部".equals(info.getOfficeName()) && !"本年合计".equals(info.getOfficeName()) && !info.getOfficeName().contains("苏州分公司-")){
+                officeNames.add(info.getOfficeName());
+                field1.add(info.getField1());
+                field2.add(info.getField2());
+                field3.add(info.getField3());
+                field4.add(info.getField4());
+            }
+        }
+        Map<String, List<String>> map = new HashMap<String, List<String>>();
+        map.put("officeNames", officeNames);
+        map.put("field1", field1);
+        map.put("field2", field2);
+        map.put("field3", field3);
+        map.put("field4", field4);
+        return map;
+    }
+
+    /**
+     * 报销数据处理
+     * @param list
+     * @return
+     */
+    public Map<String, List<String>> disposeReimbursementData(List<StatementCompanyComprehensiveInfo> list){
+        Collections.reverse(list);
+        //项目月报:1-8、13、14
+        List<String> officeNames = new ArrayList<String>();
+        List<String> field1 = new ArrayList<>();
+        List<String> field2 = new ArrayList<>();
+        for (StatementCompanyComprehensiveInfo info : list) {
+            if(!"工程一部".equals(info.getOfficeName()) && !"工程五部".equals(info.getOfficeName()) && !"本年合计".equals(info.getOfficeName()) && !info.getOfficeName().contains("苏州分公司-")){
+                officeNames.add(info.getOfficeName());
+                field1.add(info.getField1());
+                field2.add(info.getField2());
+            }
+        }
+        Map<String, List<String>> map = new HashMap<String, List<String>>();
+        map.put("officeNames", officeNames);
+        map.put("field1", field1);
+        map.put("field2", field2);
+        return map;
+    }
+
+    /**
+     * 合同数据处理
+     * @param list
+     * @return
+     */
+    public Map<String, List<String>> disposeContractData(List<StatementCompanyComprehensiveInfo> list){
+        Collections.reverse(list);
+        //项目月报:1-8、13、14
+        List<String> officeNames = new ArrayList<String>();
+        List<String> field1 = new ArrayList<>();
+        List<String> field2 = new ArrayList<>();
+        List<String> field3 = new ArrayList<>();
+        List<String> field4 = new ArrayList<>();
+        for (StatementCompanyComprehensiveInfo info : list) {
+            if(StringUtils.isNotBlank(info.getOfficeName()) && !"工程一部".equals(info.getOfficeName()) && !"工程五部".equals(info.getOfficeName()) && !"本年合计".equals(info.getOfficeName()) && !info.getOfficeName().contains("苏州分公司-")){
+                officeNames.add(info.getOfficeName());
+                field1.add(info.getField1());
+                field2.add(info.getField2());
+                field3.add(info.getField3());
+                field4.add(info.getField4());
+            }
+        }
+        Map<String, List<String>> map = new HashMap<String, List<String>>();
+        map.put("officeNames", officeNames);
+        map.put("field1", field1);
+        map.put("field2", field2);
+        map.put("field3", field3);
+        map.put("field4", field4);
+        return map;
+    }
+}

+ 6 - 0
src/main/java/com/jeeplus/modules/sys/dao/WorkattachmentDao.java

@@ -74,6 +74,12 @@ public interface WorkattachmentDao extends CrudDao<Workattachment> {
     void deleteByAttachIdAndProject(WorkClientAttachment workattachment);
 
     /**
+     * 删除信息
+     * @param workattachment
+     */
+    void deleteByAttachIdAndType(Workattachment workattachment);
+
+    /**
      * 根据信息查询数据量
      * @param workattachment
      * @return

+ 10 - 0
src/main/java/com/jeeplus/modules/sys/service/WorkattachmentService.java

@@ -1104,6 +1104,16 @@ public class WorkattachmentService extends CrudService<WorkattachmentDao, Workat
 		dao.deleteByAttachIdAndProject(workattachment);
 	}
 
+
+	/**
+	 * 删除对应数据信息
+	 * @param workattachment
+	 */
+	@Transactional(readOnly = false)
+	public void deleteByAttachIdAndType(Workattachment workattachment) {
+		dao.deleteByAttachIdAndType(workattachment);
+	}
+
 	/**
 	 * 根据信息查询数据量
 	 * @param workattachment

+ 1 - 1
src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java

@@ -4057,7 +4057,7 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 		Office office = officeService.get(officeId);
 		//如果访问的是2023年4月份之后的月报信息,则获取新的office信息
 		if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
-			if (StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部"))){
+			if (StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部") || officeName.equals("苏州分公司"))){
 				workContractInfo.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
 			}else {
 				workContractInfo.getSqlMap().put("officeId", "");

+ 3 - 3
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java

@@ -3666,16 +3666,16 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 		Office office = officeService.get(officeId);
 		//如果访问的是2023年4月份之后的月报信息,则获取新的office信息
 		if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
-			if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部"))){
+			if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部") || officeName.equals("苏州分公司"))){
 				workInvoice.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
 			}else{
 				workInvoice.getSqlMap().put("officeId", "");
 			}
 		}else{
-			if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部")){
+			if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部") || officeName.equals("苏州分公司")){
 				workInvoice.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
 			}else{
-				if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部"))){
+				if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部") || officeName.equals("苏州分公司"))){
 					workInvoice.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
 				}else{
 					workInvoice.getSqlMap().put("officeId", "");

+ 3 - 3
src/main/java/com/jeeplus/modules/workreimbursement/service/WorkReimbursementService.java

@@ -1763,16 +1763,16 @@ public class WorkReimbursementService extends CrudService<WorkReimbursementDao,
         Office office = officeService.get(officeId);
         //如果访问的是2023年4月份之后的月报信息,则获取新的office信息
         if(StringUtils.isBlank(isThisMonth) || !"1".equals(isThisMonth)){
-            if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部"))){
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部") || officeName.equals("苏州分公司"))){
                 workReimbursement.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
             }else{
                 workReimbursement.getSqlMap().put("officeId", "");
             }
         }else{
-            if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部")){
+            if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部") || officeName.equals("苏州分公司")){
                 workReimbursement.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
             }else{
-                if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部"))){
+                if(org.apache.commons.lang3.StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部") || officeName.equals("苏州分公司"))){
                     workReimbursement.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
                 }else{
                     workReimbursement.getSqlMap().put("officeId", "");

+ 7 - 0
src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml

@@ -1339,4 +1339,11 @@
 		LIMIT 1;
 	</select>
 
+
+	<update id="deleteSignatureInfoUrl">
+		UPDATE project_report_data SET
+		signature_url = null
+		WHERE id = #{id}
+	</update>
+
 </mapper>

+ 2 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml

@@ -499,6 +499,7 @@
 		LEFT JOIN project_material_defect_record pmdr on prd.id = pmdr.report_id
 		left join project_paper_filing ppf on ppf.project_id = a.id
 		<where>
+		    a.del_flag = 0
 			<if test="projectId != null and projectId != ''">
 				AND a.project_id like concat('%',#{projectId},'%')
 			</if>
@@ -1032,6 +1033,7 @@
 		LEFT JOIN project_material_defect_record pmdr on prd.id = pmdr.report_id
 		left join project_paper_filing ppf on ppf.project_id = a.id
 		<where>
+			a.del_flag = 0
 			<if test="projectId != null and projectId != ''">
 				AND a.project_id like concat('%',#{projectId},'%')
 			</if>

+ 14 - 0
src/main/resources/mappings/modules/sys/WorkattachmentDao.xml

@@ -464,6 +464,20 @@
 	</delete>
 
 
+	<update id="deleteByAttachIdAndType">
+		update work_attachment set
+		   del_flag = 1
+		<where>
+			<if test="null != attachmentId and '' != attachmentId">
+				and attachment_id = #{attachmentId}
+			</if>
+			<if test="null != divIdType and '' != divIdType">
+				and div_id_type = #{divIdType}
+			</if>
+		</where>
+	</update>
+
+
 <!--		<select id="getWorkattachmentById" resultMap="Workattachment">-->
 <!--			SELECT-->
 <!--			<include refid="workattachmentColumns"/>-->

+ 2 - 2
src/main/webapp/webpage/include/head.jsp

@@ -99,7 +99,7 @@
         {
              document.write('<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"><\/script>');
             document.write('<script src="${ctxStatic}/bos/node_modules/@baiducloud/sdk/dist/baidubce-sdk.bundle.min.js"><\/script>');
-            document.write('<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?16"><\/script>');
+            document.write('<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?17"><\/script>');
             /*document.write('<script type="text/javascript" src="${ctxStatic}/bos/bosupload.js"><\/script>');*/
         }
     }
@@ -107,7 +107,7 @@
     {
          document.write('<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"><\/script>');
         document.write('<script src="${ctxStatic}/bos/node_modules/@baiducloud/sdk/dist/baidubce-sdk.bundle.min.js"><\/script>');
-        document.write('<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?16"><\/script>');
+        document.write('<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?17"><\/script>');
         /*document.write('<script type="text/javascript" src="${ctxStatic}/bos/bosupload.js"><\/script>');*/
     }
 

+ 1 - 1
src/main/webapp/webpage/include/ossTools.jsp

@@ -9,4 +9,4 @@
 <script type="text/javascript" src="${ctxStatic}/oss/lib/plupload-2.3.6/plupload-2.3.6/js/jquery.plupload.queue/jquery.plupload.queue.js"></script>
 <script type="text/javascript" src="${ctxStatic}/oss/lib/plupload-2.3.6/plupload-2.3.6/js/plupload.dev.js"></script>
 <script type="text/javascript" src="${ctxStatic}/oss/upload.js"></script>
-<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?16"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?17"></script>

+ 1 - 1
src/main/webapp/webpage/modules/notifyStatement/companyLevel/CompanyLevelMonthStatement.jsp

@@ -424,7 +424,7 @@
 			,cols: [[
 				{field:'index',align:'center', title: '序号',width:55}
 				,{field:'title',align:'center', title: '描述',  minWidth:150,templet:function(d){
-						return "<a class=\"attention-info\" title=\"" + d.title + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看年报报表', '${ctx}/companyYear/companyYear/form?id=" + d.id +"','95%', '95%')\">" + d.title + "</a>";
+						return "<a class=\"attention-info\" title=\"" + d.title + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看" + d.title + "报表', '${ctx}/companyYear/companyYear/form?id=" + d.id +"','95%', '95%')\">" + d.title + "</a>";
 					}}
 				,{field:'createDate',align:'center', title: '统计时间',  width:150}
 			]]

+ 1 - 1
src/main/webapp/webpage/modules/notifyStatement/companyLevel/CompanyLevelStatement.jsp

@@ -424,7 +424,7 @@
 			,cols: [[
 				{field:'index',align:'center', title: '序号',width:55}
 				,{field:'title',align:'center', title: '描述',  minWidth:150,templet:function(d){
-						return "<a class=\"attention-info\" title=\"" + d.title + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看年报报表', '${ctx}/companyYear/companyYear/form?id=" + d.id +"','95%', '95%')\">" + d.title + "</a>";
+						return "<a class=\"attention-info\" title=\"" + d.title + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看" + d.title + "报表', '${ctx}/companyYear/companyYear/formCompanyYear?id=" + d.id +"','95%', '95%')\">" + d.title + "</a>";
 					}}
 				,{field:'createDate',align:'center', title: '统计时间',  width:150}
 			]]

+ 1 - 1
src/main/webapp/webpage/modules/projectcontentinfo/achievementFileDataForm.jsp

@@ -6,7 +6,7 @@
 	<meta name="decorator" content="default"/>
 	<link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
 	<script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
-	<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?16"></script>
+	<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?17"></script>
 	<style>
 		label.error{
 			top:40px;

+ 1 - 1
src/main/webapp/webpage/modules/projectcontentinfo/basedDataForm.jsp

@@ -6,7 +6,7 @@
 	<meta name="decorator" content="default"/>
 	<link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
 	<script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
-	<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?16"></script>
+	<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js?17"></script>
 	<style>
 		label.error{
 			top:40px;

+ 393 - 0
src/main/webapp/webpage/modules/statement/companyDataBoardView.jsp

@@ -0,0 +1,393 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+	<title>问答助手</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+	<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+	<script src="https://cdn.jsdelivr.net/npm/echarts@5.1.1/dist/echarts.min.js"></script>
+
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<!-- 柱状图 折线图  饼状图 -->
+	<div class="layui-card">
+		<div class="layui-card-body">
+			<div id="EchartZhu" style="width: 100%;height: 500px;"> </div>
+		</div>
+		<div class="layui-card-body">
+			<div id="brokenChartZhu" style="width: 100%;height: 500px;"> </div>
+		</div>
+		<div class="layui-card-body">
+			<div id="reimbursementChartZhu" style="width: 100%;height: 800px;"> </div>
+		</div>
+		<div class="layui-card-body">
+			<div id="contractChartZhu" style="width: 100%;height: 800px;"> </div>
+		</div>
+	</div>
+
+</div>
+<script type="text/javascript">
+
+	layui.use(['jquery', 'form', 'layer', 'laydate', 'table','layedit','upload', 'element', 'carousel'],function(){
+		var chartZhu = echarts.init(document.getElementById('EchartZhu'));
+		var brokenChartZhu = echarts.init(document.getElementById('brokenChartZhu'));
+		var reimbursementChartZhu = echarts.init(document.getElementById('reimbursementChartZhu'));
+		var contractChartZhu = echarts.init(document.getElementById('contractChartZhu'));
+		//指定图表配置项和数据
+		var optionchartZhe = {
+			title: {
+				text: '项目${nyr}报统计图'
+			},
+			tooltip: {
+				trigger: 'axis',
+				axisPointer: {
+					// Use axis to trigger tooltip
+					type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
+				}
+			},
+			legend: {},
+			grid: {
+				left: '3%',
+				right: '4%',
+				bottom: '3%',
+				containLabel: true
+			},
+			toolbox: {	//下载
+				feature: {
+					saveAsImage: {}
+				}
+			},
+			xAxis: {
+				type: 'value'
+			},
+			yAxis: {
+				type: 'category',
+				data: JSON.parse('${officeNames}')
+			},
+			series: [
+				{
+					name: '新增A类',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field1}')
+				},
+				{
+					name: '新增B类',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field2}')
+				},
+				{
+					name: '本${nyr}电子归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field3}')
+				},
+				{
+					name: '本${nyr}上报',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field4}')
+				},
+				{
+					name: '电子超期未归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field5}')
+				},
+				{
+					name: '电子超期归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field6}')
+				},
+				{
+					name: 'A类纸质超期未归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field13}')
+				},
+				{
+					name: 'A类纸质超期归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field14}')
+				},
+				{
+					name: '超期未上报',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field7}')
+				},
+				{
+					name: '超期上报',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${field8}')
+				}
+			]
+		};
+		chartZhu.setOption(optionchartZhe, true);    // 柱状图
+
+
+		//指定图表配置项和数据
+		var brokenOption = {
+			title: {
+				text: '开票${nyr}报折线图'
+			},
+			tooltip: {
+				trigger: 'axis'
+			},
+			legend: {
+				data: ['新增发票', '开票金额', '本${nyr}收款发票', '本${nyr}收款金额']
+			},
+			grid: {
+				left: '3%',
+				right: '4%',
+				bottom: '3%',
+				containLabel: true
+			},
+			toolbox: {	//下载
+				feature: {
+					saveAsImage: {}
+				}
+			},
+			xAxis: {
+				type: 'category',
+				boundaryGap: false,
+				data: JSON.parse('${invoiceOfficeNames}')
+			},
+			yAxis: {
+				type: 'value'
+			},
+			series: [
+				{
+					name: '新增发票',
+					type: 'line',
+					stack: 'Total',
+					data: JSON.parse('${invoiceField1}')
+				},
+				{
+					name: '开票金额',
+					type: 'line',
+					stack: 'Total',
+					data: JSON.parse('${invoiceField2}')
+				},
+				{
+					name: '本${nyr}收款发票',
+					type: 'line',
+					stack: 'Total',
+					data: JSON.parse('${invoiceField3}')
+				},
+				{
+					name: '本${nyr}收款金额',
+					type: 'line',
+					stack: 'Total',
+					data: JSON.parse('${invoiceField4}')
+				}
+			]
+		};
+		brokenChartZhu.setOption(brokenOption, true);    // 折线图
+
+
+		//指定图表配置项和数据
+		var reimbursementOption = {
+			title: {
+				text: '报销${nyr}报'
+			},
+			tooltip: {
+				trigger: 'axis',
+				axisPointer: {
+					// Use axis to trigger tooltip
+					type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
+				}
+			},
+			legend: {},
+			grid: {
+				left: '3%',
+				right: '4%',
+				bottom: '3%',
+				containLabel: true
+			},
+			toolbox: {	//下载
+				feature: {
+					saveAsImage: {}
+				}
+			},
+			xAxis: {
+				type: 'value',
+				boundaryGap: [0, 0.01]
+			},
+			yAxis: {
+				type: 'category',
+				data: JSON.parse('${reimbursementOfficeNames}')
+			},
+			series: [
+				{
+					name: '报销金额',
+					type: 'bar',
+					label: {
+						show: true,
+						position: 'inside'
+					},
+					data: JSON.parse('${reimbursementField2}')
+				}
+			]
+		};
+		reimbursementChartZhu.setOption(reimbursementOption, true);    // 柱状图
+
+
+		//指定图表配置项和数据
+		var optionContractChartZhe = {
+			title: {
+				text: '合同${nyr}报统计图'
+			},
+			tooltip: {
+				trigger: 'axis',
+				axisPointer: {
+					// Use axis to trigger tooltip
+					type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
+				}
+			},
+			legend: {},
+			grid: {
+				left: '3%',
+				right: '4%',
+				bottom: '3%',
+				containLabel: true
+			},
+			toolbox: {	//下载
+				feature: {
+					saveAsImage: {}
+				}
+			},
+			xAxis: {
+				type: 'value'
+			},
+			yAxis: {
+				type: 'category',
+				data: JSON.parse('${contractOfficeNames}')
+			},
+			series: [
+				{
+					name: '新增合同',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${contractField1}')
+				},
+				{
+					name: '纸质归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${contractField2}')
+				},
+				{
+					name: '超期未归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${contractField3}')
+				},
+				{
+					name: '超期已归档',
+					type: 'bar',
+					stack: 'total',
+					label: {
+						show: true
+					},
+					emphasis: {
+						focus: 'series'
+					},
+					data: JSON.parse('${contractField4}')
+				}
+			]
+		};
+		contractChartZhu.setOption(optionContractChartZhe, true);    // 柱状图
+
+
+	});
+
+</script>
+</body>
+</html>
+
+