Browse Source

部分报表功能提交

user5 1 year ago
parent
commit
472185fa42
33 changed files with 3907 additions and 161 deletions
  1. 16 0
      src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/dao/CompanyFilingDao.java
  2. 15 0
      src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/dao/CompanyYearDao.java
  3. 138 0
      src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/entity/StatementFilingInfo.java
  4. 110 0
      src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/entity/StatementInfo.java
  5. 75 0
      src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/service/CompanyYearService.java
  6. 299 0
      src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/web/CompanyYearController.java
  7. 28 0
      src/main/java/com/jeeplus/modules/projectFilingBatch/entity/ProjectFilingBatch.java
  8. 6 1
      src/main/java/com/jeeplus/modules/projectFilingBatch/service/ProjectFilingBatchService.java
  9. 65 49
      src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java
  10. 1 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/Stamper.java
  11. 11 6
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureOldMessageDisposeController.java
  12. 12 0
      src/main/java/com/jeeplus/modules/statement/dao/StatementCompanyComprehensiveDao.java
  13. 401 86
      src/main/java/com/jeeplus/modules/statement/service/StatementCompanyComprehensiveService.java
  14. 10 0
      src/main/java/com/jeeplus/modules/sys/entity/User.java
  15. 4 0
      src/main/java/com/jeeplus/modules/workcalendar/service/WorkCalendarTaskService.java
  16. 10 0
      src/main/java/com/jeeplus/modules/workstaff/entity/WorkStaffBasicInfo.java
  17. 1 0
      src/main/java/com/jeeplus/modules/workstaff/service/WorkStaffBasicInfoService.java
  18. 140 0
      src/main/resources/mappings/modules/notifyStatement/companyLevel/CompanyFilingDao.xml
  19. 132 0
      src/main/resources/mappings/modules/notifyStatement/companyLevel/CompanyYearDao.xml
  20. 17 1
      src/main/resources/mappings/modules/projectGuidang/ProjectFilingBatchDao.xml
  21. 23 4
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml
  22. 60 10
      src/main/resources/mappings/modules/statement/StatementCompanyComprehensiveDao.xml
  23. 4 0
      src/main/resources/mappings/modules/sys/UserDao.xml
  24. 1 2
      src/main/resources/mappings/modules/workcontractinfo/WorkContractInfoDao.xml
  25. 2 0
      src/main/resources/mappings/modules/workstaff/WorkStaffBasicInfoDao.xml
  26. 457 0
      src/main/webapp/webpage/modules/notifyStatement/companyLevel/CompanyLevelMonthStatement.jsp
  27. 457 0
      src/main/webapp/webpage/modules/notifyStatement/companyLevel/CompanyLevelStatement.jsp
  28. 459 0
      src/main/webapp/webpage/modules/notifyStatement/filing/FilingMonthStatement.jsp
  29. 457 0
      src/main/webapp/webpage/modules/notifyStatement/officeLevel/OfficeLevelMonthStatement.jsp
  30. 457 0
      src/main/webapp/webpage/modules/notifyStatement/officeLevel/OfficeLevelYearStatement.jsp
  31. 28 1
      src/main/webapp/webpage/modules/projectFilingBatch/projectFilingBatchList.jsp
  32. 2 1
      src/main/webapp/webpage/modules/workreimbursement/workReimbursementList.jsp
  33. 9 0
      src/main/webapp/webpage/modules/workstaff/workStaffBasicInfoForm.jsp

+ 16 - 0
src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/dao/CompanyFilingDao.java

@@ -0,0 +1,16 @@
+package com.jeeplus.modules.notifyStatement.companyLevel.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementFilingInfo;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementInfo;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-05-11 16:37
+ */
+@MyBatisDao
+public interface CompanyFilingDao extends CrudDao<StatementFilingInfo> {
+
+    int deleteByTitle(String title);
+}

+ 15 - 0
src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/dao/CompanyYearDao.java

@@ -0,0 +1,15 @@
+package com.jeeplus.modules.notifyStatement.companyLevel.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementFilingInfo;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementInfo;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-05-11 16:37
+ */
+@MyBatisDao
+public interface CompanyYearDao extends CrudDao<StatementInfo> {
+
+}

+ 138 - 0
src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/entity/StatementFilingInfo.java

@@ -0,0 +1,138 @@
+package com.jeeplus.modules.notifyStatement.companyLevel.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.persistence.DataEntity;
+
+import java.util.Date;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-05-20 09:53
+ */
+public class StatementFilingInfo extends DataEntity<StatementFilingInfo> {
+    /**
+     * 描述
+     */
+    private String title;
+    /**
+     * 月报时间
+     */
+    private String statementDate;
+
+    /**
+     * 统计时间
+     */
+    private Date statisticsDate;
+
+    /**
+     * 报表时间
+     */
+    private String notifyDateNode;
+
+    /**
+     * 公司/部门级类型(1:公司,2:部门)
+     */
+    private Integer companyOfficeType;
+
+    /**
+     * 月报/年报类型(0:年报,1:月报)
+     */
+    private Integer monthYearType;
+
+
+    private String isAdmin;
+
+    private String loginUserOfficeId;
+
+    /**
+     * 统计开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String startDate;
+
+    /**
+     * 统计结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String endDate;
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getStatementDate() {
+        return statementDate;
+    }
+
+    public void setStatementDate(String statementDate) {
+        this.statementDate = statementDate;
+    }
+
+    public Date getStatisticsDate() {
+        return statisticsDate;
+    }
+
+    public void setStatisticsDate(Date statisticsDate) {
+        this.statisticsDate = statisticsDate;
+    }
+
+    public String getNotifyDateNode() {
+        return notifyDateNode;
+    }
+
+    public void setNotifyDateNode(String notifyDateNode) {
+        this.notifyDateNode = notifyDateNode;
+    }
+
+    public Integer getCompanyOfficeType() {
+        return companyOfficeType;
+    }
+
+    public void setCompanyOfficeType(Integer companyOfficeType) {
+        this.companyOfficeType = companyOfficeType;
+    }
+
+    public Integer getMonthYearType() {
+        return monthYearType;
+    }
+
+    public void setMonthYearType(Integer monthYearType) {
+        this.monthYearType = monthYearType;
+    }
+
+    public String getIsAdmin() {
+        return isAdmin;
+    }
+
+    public void setIsAdmin(String isAdmin) {
+        this.isAdmin = isAdmin;
+    }
+
+    public String getLoginUserOfficeId() {
+        return loginUserOfficeId;
+    }
+
+    public void setLoginUserOfficeId(String loginUserOfficeId) {
+        this.loginUserOfficeId = loginUserOfficeId;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+}

+ 110 - 0
src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/entity/StatementInfo.java

@@ -0,0 +1,110 @@
+package com.jeeplus.modules.notifyStatement.companyLevel.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+
+import java.util.Date;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-05-11 16:31
+ */
+public class StatementInfo extends DataEntity<StatementInfo> {
+
+    /**
+     * 描述
+     */
+    private String title;
+    /**
+     * 月报时间
+     */
+    private String statementDate;
+
+    /**
+     * 统计时间
+     */
+    private Date statisticsDate;
+
+    /**
+     * 报表时间
+     */
+    private String notifyDateNode;
+
+    /**
+     * 公司/部门级类型(1:公司,2:部门)
+     */
+    private Integer companyOfficeType;
+
+    /**
+     * 月报/年报类型(0:年报,1:月报)
+     */
+    private Integer monthYearType;
+
+
+    private String isAdmin;
+
+    private String loginUserOfficeId;
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getStatementDate() {
+        return statementDate;
+    }
+
+    public void setStatementDate(String statementDate) {
+        this.statementDate = statementDate;
+    }
+
+    public Date getStatisticsDate() {
+        return statisticsDate;
+    }
+
+    public void setStatisticsDate(Date statisticsDate) {
+        this.statisticsDate = statisticsDate;
+    }
+
+    public String getNotifyDateNode() {
+        return notifyDateNode;
+    }
+
+    public void setNotifyDateNode(String notifyDateNode) {
+        this.notifyDateNode = notifyDateNode;
+    }
+
+    public Integer getCompanyOfficeType() {
+        return companyOfficeType;
+    }
+
+    public void setCompanyOfficeType(Integer companyOfficeType) {
+        this.companyOfficeType = companyOfficeType;
+    }
+
+    public Integer getMonthYearType() {
+        return monthYearType;
+    }
+
+    public void setMonthYearType(Integer monthYearType) {
+        this.monthYearType = monthYearType;
+    }
+
+    public String getIsAdmin() {
+        return isAdmin;
+    }
+
+    public void setIsAdmin(String isAdmin) {
+        this.isAdmin = isAdmin;
+    }
+
+    public String getLoginUserOfficeId() {
+        return loginUserOfficeId;
+    }
+
+    public void setLoginUserOfficeId(String loginUserOfficeId) {
+        this.loginUserOfficeId = loginUserOfficeId;
+    }
+}

+ 75 - 0
src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/service/CompanyYearService.java

@@ -0,0 +1,75 @@
+package com.jeeplus.modules.notifyStatement.companyLevel.service;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.modules.notifyStatement.companyLevel.dao.CompanyFilingDao;
+import com.jeeplus.modules.notifyStatement.companyLevel.dao.CompanyYearDao;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementFilingInfo;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementInfo;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-05-11 16:37
+ */
+@Service
+@Transactional(readOnly = true)
+public class CompanyYearService extends CrudService<CompanyYearDao, StatementInfo> {
+
+    @Autowired
+    private CompanyFilingDao companyFilingDao;
+
+    /**
+     * 根据id查询收藏文件的信息
+     * @param id
+     * @return
+     */
+    public StatementInfo getInfo(String id) {
+        StatementInfo statementInfo = super.get(id);
+        return statementInfo;
+    }
+
+    public Page<StatementInfo> findPage(Page<StatementInfo> page, StatementInfo statementInfo) {
+        //设置数据权限
+        if(UserUtils.getUser().isAdmin()) {
+            statementInfo.setIsAdmin("1");
+        }else{
+            statementInfo.setIsAdmin("0");
+            statementInfo.setLoginUserOfficeId(UserUtils.getUser().getOffice().getId());
+        }
+        int count = dao.queryCount(statementInfo);
+        page.setCount(count);
+        page.setCountFlag(false);
+        statementInfo.setPage(page);
+        List<StatementInfo> recordsList = findList(statementInfo);
+        page.setList(recordsList);
+        return page;
+    }
+
+    public Page<StatementFilingInfo> getFilingPage(Page<StatementFilingInfo> page, StatementFilingInfo statementInfo) {
+        //设置数据权限
+        if(UserUtils.getUser().isAdmin()) {
+            statementInfo.setIsAdmin("1");
+        }else{
+            statementInfo.setIsAdmin("0");
+            statementInfo.setLoginUserOfficeId(UserUtils.getUser().getOffice().getId());
+        }
+        int count = companyFilingDao.queryCount(statementInfo);
+        page.setCount(count);
+        page.setCountFlag(false);
+        statementInfo.setPage(page);
+        List<StatementFilingInfo> recordsList = companyFilingDao.findList(statementInfo);
+        page.setList(recordsList);
+        return page;
+    }
+
+
+}

+ 299 - 0
src/main/java/com/jeeplus/modules/notifyStatement/companyLevel/web/CompanyYearController.java

@@ -0,0 +1,299 @@
+package com.jeeplus.modules.notifyStatement.companyLevel.web;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementFilingInfo;
+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 org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-05-11 16:18
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/companyYear/companyYear")
+public class CompanyYearController extends BaseController {
+
+
+    @Autowired
+    private CompanyYearService companyYearService;
+    @Autowired
+    private StatementCompanyComprehensiveService statementCompanyComprehensiveService;
+
+
+    @ModelAttribute
+    public StatementInfo get(@RequestParam(required=false) String id) {
+        StatementInfo entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = companyYearService.get(id);
+        }
+        if (entity == null){
+            entity = new StatementInfo();
+        }
+        return entity;
+    }
+
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("companyYear:companyYear:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(StatementInfo statementInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        //进行查询之后进行任何操作,返回还是查询之后的数据页面
+        if (StringUtils.isNotBlank(statementInfo.getToflag())){
+            if (statementInfo.getToflag().equals("1")){
+                request.getSession().removeAttribute("companyYearStatementInfo");
+                StatementInfo search=statementInfo;
+                request.getSession().setAttribute("companyYearStatementInfo",search);
+            }
+        }else{
+            if (request.getSession().getAttribute("companyYearStatementInfo")!=null){
+                statementInfo= (StatementInfo) request.getSession().getAttribute("companyYearStatementInfo");
+                model.addAttribute("statementInfo", statementInfo);
+            }
+        }
+        statementInfo.setCompanyOfficeType(1);
+        statementInfo.setMonthYearType(0);
+        //获取报表
+        Page<StatementInfo> page = companyYearService.findPage(new Page<StatementInfo>(request, response), statementInfo);
+
+        model.addAttribute("nyr", "年");
+        model.addAttribute("page", page);
+        return "modules/notifyStatement/companyLevel/CompanyLevelStatement";
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("companyYear:companyYear:monthList")
+    @RequestMapping(value = "monthList")
+    public String monthList(StatementInfo statementInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        //进行查询之后进行任何操作,返回还是查询之后的数据页面
+        if (StringUtils.isNotBlank(statementInfo.getToflag())){
+            if (statementInfo.getToflag().equals("1")){
+                request.getSession().removeAttribute("companyMonthStatementInfo");
+                StatementInfo search=statementInfo;
+                request.getSession().setAttribute("companyMonthStatementInfo",search);
+            }
+        }else{
+            if (request.getSession().getAttribute("companyMonthStatementInfo")!=null){
+                statementInfo= (StatementInfo) request.getSession().getAttribute("companyMonthStatementInfo");
+                model.addAttribute("statementInfo", statementInfo);
+            }
+        }
+        statementInfo.setCompanyOfficeType(1);
+        statementInfo.setMonthYearType(1);
+        //获取报表
+        Page<StatementInfo> page = companyYearService.findPage(new Page<StatementInfo>(request, response), statementInfo);
+
+        model.addAttribute("nyr", "月");
+        model.addAttribute("page", page);
+        return "modules/notifyStatement/companyLevel/CompanyLevelMonthStatement";
+    }
+
+
+    /**
+     * 查看,增加,编辑报告表单页面
+     */
+    @RequestMapping(value = "form")
+    public String form(StatementInfo statementInfo, Model model) {
+
+        //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);
+        return "modules/statement/companyDataView";
+    }
+
+
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("companyYear:companyYear:officeYearList")
+    @RequestMapping(value = "officeYearList")
+    public String officeYearList(StatementInfo statementInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        //进行查询之后进行任何操作,返回还是查询之后的数据页面
+        if (StringUtils.isNotBlank(statementInfo.getToflag())){
+            if (statementInfo.getToflag().equals("1")){
+                request.getSession().removeAttribute("companyMonthStatementInfo");
+                StatementInfo search=statementInfo;
+                request.getSession().setAttribute("companyMonthStatementInfo",search);
+            }
+        }else{
+            if (request.getSession().getAttribute("companyMonthStatementInfo")!=null){
+                statementInfo= (StatementInfo) request.getSession().getAttribute("companyMonthStatementInfo");
+                model.addAttribute("statementInfo", statementInfo);
+            }
+        }
+        statementInfo.setCompanyOfficeType(2);
+        statementInfo.setMonthYearType(0);
+        //获取报表
+        Page<StatementInfo> page = companyYearService.findPage(new Page<StatementInfo>(request, response), statementInfo);
+
+        model.addAttribute("nyr", "年");
+        model.addAttribute("page", page);
+        return "modules/notifyStatement/officeLevel/OfficeLevelYearStatement";
+    }
+
+
+
+    /**
+     * 查看,增加,编辑报告表单页面
+     */
+    @RequestMapping(value = "officeForm")
+    public String officeForm(StatementInfo statementInfo, Model model) {
+
+        //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];
+        //获取officeId
+        String officeId = arguments[3];
+
+
+        Map<String, List<StatementCompanyComprehensiveInfo>> stringListMap = statementCompanyComprehensiveService.departmentViewList(year,bigDateType,smallDateType,officeId);
+        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"));//合同报表 年部
+        //判断并只显示七个部门的项目信息
+        String sevenOfficeId = statementCompanyComprehensiveService.selectSevenOfficeId();
+
+        if(sevenOfficeId.contains(officeId)){
+            model.addAttribute("showFlag","1");
+        }else {
+            model.addAttribute("showFlag","0");
+        }
+        model.addAttribute("nyr", "年");
+        model.addAttribute("year",year);
+        model.addAttribute("bigDateType",bigDateType);
+        model.addAttribute("smallDateType",smallDateType);
+        return "modules/statement/departmentCompanyDataView";
+    }
+
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("companyYear:companyYear:officeMonthList")
+    @RequestMapping(value = "officeMonthList")
+    public String officeMonthList(StatementInfo statementInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        //进行查询之后进行任何操作,返回还是查询之后的数据页面
+        if (StringUtils.isNotBlank(statementInfo.getToflag())){
+            if (statementInfo.getToflag().equals("1")){
+                request.getSession().removeAttribute("companyMonthStatementInfo");
+                StatementInfo search=statementInfo;
+                request.getSession().setAttribute("companyMonthStatementInfo",search);
+            }
+        }else{
+            if (request.getSession().getAttribute("companyMonthStatementInfo")!=null){
+                statementInfo= (StatementInfo) request.getSession().getAttribute("companyMonthStatementInfo");
+                model.addAttribute("statementInfo", statementInfo);
+            }
+        }
+        statementInfo.setCompanyOfficeType(2);
+        statementInfo.setMonthYearType(1);
+        //获取报表
+        Page<StatementInfo> page = companyYearService.findPage(new Page<StatementInfo>(request, response), statementInfo);
+
+        model.addAttribute("nyr", "月");
+        model.addAttribute("page", page);
+        return "modules/notifyStatement/officeLevel/OfficeLevelMonthStatement";
+    }
+
+
+    /**
+     * 批量归档月报报表
+     */
+    @RequiresPermissions("companyYear:companyYear:filingMonthList")
+    @RequestMapping(value = "filingMonthList")
+    public String filingMonthList(StatementFilingInfo statementInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        //进行查询之后进行任何操作,返回还是查询之后的数据页面
+        if (StringUtils.isNotBlank(statementInfo.getToflag())){
+            if (statementInfo.getToflag().equals("1")){
+                request.getSession().removeAttribute("filingMonthStatementInfo");
+                StatementFilingInfo search=statementInfo;
+                request.getSession().setAttribute("filingMonthStatementInfo",search);
+            }
+        }else{
+            if (request.getSession().getAttribute("filingMonthStatementInfo")!=null){
+                statementInfo= (StatementFilingInfo) request.getSession().getAttribute("filingMonthStatementInfo");
+                model.addAttribute("statementInfo", statementInfo);
+            }
+        }
+        statementInfo.setCompanyOfficeType(1);
+        statementInfo.setMonthYearType(1);
+        //获取报表
+        Page<StatementFilingInfo> page = companyYearService.getFilingPage(new Page<StatementFilingInfo>(request, response), statementInfo);
+
+        model.addAttribute("nyr", "月");
+        model.addAttribute("page", page);
+        return "modules/notifyStatement/filing/FilingMonthStatement";
+    }
+
+}

+ 28 - 0
src/main/java/com/jeeplus/modules/projectFilingBatch/entity/ProjectFilingBatch.java

@@ -50,6 +50,10 @@ public class ProjectFilingBatch extends DataEntity<ProjectFilingBatch> {
     private Integer notifyFlag; //代办判定条件
     private String notifyId; //代办判定条件
     private String reportNumber; //报告号
+    private Date auditPassDate; //批量归档审核通过时间
+
+    private Date auditBeginDate;    //审核通过开始时间
+    private Date auditEndDate;  //审核通过结束时间
 
     public String getProcessinstanceId() {
         return processinstanceId;
@@ -271,4 +275,28 @@ public class ProjectFilingBatch extends DataEntity<ProjectFilingBatch> {
     public void setReportNumber(String reportNumber) {
         this.reportNumber = reportNumber;
     }
+
+    public Date getAuditPassDate() {
+        return auditPassDate;
+    }
+
+    public void setAuditPassDate(Date auditPassDate) {
+        this.auditPassDate = auditPassDate;
+    }
+
+    public Date getAuditBeginDate() {
+        return auditBeginDate;
+    }
+
+    public void setAuditBeginDate(Date auditBeginDate) {
+        this.auditBeginDate = auditBeginDate;
+    }
+
+    public Date getAuditEndDate() {
+        return auditEndDate;
+    }
+
+    public void setAuditEndDate(Date auditEndDate) {
+        this.auditEndDate = auditEndDate;
+    }
 }

+ 6 - 1
src/main/java/com/jeeplus/modules/projectFilingBatch/service/ProjectFilingBatchService.java

@@ -107,7 +107,11 @@ public class ProjectFilingBatchService extends CrudService<ProjectFilingBatchDao
             guidang.setCreateBy(user);
             if(null != user){
                 if(StringUtils.isNotBlank(user.getName())){
-                    guidang.setCreateName(user.getName());
+                    if(StringUtils.isNotBlank(user.getAreaRemark())){
+                        guidang.setCreateName(user.getName() + " (" + user.getAreaRemark() + ")");
+                    }else{
+                        guidang.setCreateName(user.getName());
+                    }
                 }
 
                 if(null != user.getOffice() && StringUtils.isNotBlank(user.getOffice().getName())){
@@ -939,6 +943,7 @@ public class ProjectFilingBatchService extends CrudService<ProjectFilingBatchDao
         List<User> userList = new ArrayList<>();
         if(!state) {
             users.add(projectFilingBatch.getCreateBy());
+            projectFilingBatch.setAuditPassDate(new Date());
             //审批通过,处理归档项目状态
             List<ProjectFilingbatchRelation> projectFilingbatchRelationList = projectFilingBatch.getProjectFilingbatchRelations();
             for (ProjectFilingbatchRelation info: projectFilingbatchRelationList) {

+ 65 - 49
src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java

@@ -915,47 +915,60 @@ public class ProjectcontentinfoController extends BaseController {
 				/**
 				 * 查询配置的宜居性资料并添加到展示view中
 				 */
-				List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(projectReportData.getProjectContentDataList().get(0).getType());
-				for (ProjectBasedData projectBasedData: projectBasedDataList) {
-					ProjectBasedData contentAttachmentData =  projectTypeService.getBasedData(projectReportData.getProjectContentDataList().get(0).getId(),projectBasedData.getId());
-					if (null != contentAttachmentData) {
-						try {
-							MyBeanUtils.copyBeanNotNull2Bean(contentAttachmentData, projectBasedData);
-						}catch (Exception e) {
-							e.printStackTrace();
+				if (null != projectReportData && null != projectReportData.getProjectContentDataList() && StringUtils.isNotBlank(projectReportData.getProjectContentDataList().get(0).getType())){
+					List<ProjectBasedData> projectBasedDataList =  projectTypeService.getAccrdingDataList(projectReportData.getProjectContentDataList().get(0).getType());
+					for (ProjectBasedData projectBasedData: projectBasedDataList) {
+						ProjectBasedData contentAttachmentData =  projectTypeService.getBasedData(projectReportData.getProjectContentDataList().get(0).getId(),projectBasedData.getId());
+						if (null != contentAttachmentData) {
+							try {
+								MyBeanUtils.copyBeanNotNull2Bean(contentAttachmentData, projectBasedData);
+							}catch (Exception e) {
+								e.printStackTrace();
+							}
+						}
+						projectBasedData.setFlag("according");
+						if (StringUtils.isNotBlank(projectBasedData.getFileAttachmentId())) {
+							projectBasedData.setUploadUser(UserUtils.get(projectBasedData.getFileAttachmentId()));
 						}
 					}
-					projectBasedData.setFlag("according");
-					if (StringUtils.isNotBlank(projectBasedData.getFileAttachmentId())) {
-						projectBasedData.setUploadUser(UserUtils.get(projectBasedData.getFileAttachmentId()));
+					for (ProjectBasedData info : projectBasedDataList) {
+						if(StringUtils.isNotBlank(info.getFileUrl())){
+							String newUrl = workattachmentService.fileUrlManageOnPrefix(info.getFileUrl());
+							info.setFileUrl(newUrl);
+							info.setTemporaryUrl(workattachmentService.fileUrlManage(info.getFileUrl()));
+						}
 					}
-				}
-				for (ProjectBasedData info : projectBasedDataList) {
-					if(StringUtils.isNotBlank(info.getFileUrl())){
-						String newUrl = workattachmentService.fileUrlManageOnPrefix(info.getFileUrl());
-						info.setFileUrl(newUrl);
-						info.setTemporaryUrl(workattachmentService.fileUrlManage(info.getFileUrl()));
+					for (ProjectBasedData projectBasedData: projectReportData.getProjectBasedDataList()) {
+						projectBasedData.setType(dictService.dictLabel("project_document_type",projectBasedData.getType()));
 					}
+					projectReportData.getProjectBasedDataList().addAll(projectBasedDataList);
 				}
-				for (ProjectBasedData projectBasedData: projectReportData.getProjectBasedDataList()) {
-					projectBasedData.setType(dictService.dictLabel("project_document_type",projectBasedData.getType()));
-				}
-				projectReportData.getProjectBasedDataList().addAll(projectBasedDataList);
-			}
-			if (projectReportData.getMaster()==null || StringUtils.isBlank(projectReportData.getMaster().getId())){
-				projectReportData.setMaster(UserUtils.getUser());
-			}
-			if (StringUtils.isBlank(projectReportData.getStatus())){
-				projectReportData.setFileStatus("1");
+
 			}
-			projectcontentinfo.setProjectReportData(projectReportData);
-			model.addAttribute("projectcontentinfo", projectcontentinfo);
-			model.addAttribute("achievementParentId", projectReportData.getType());
-			model.addAttribute("achievementId", projectReportData.getAchievementType());
-			model.addAttribute("reviewStandard", projectReportData.getReviewStandard());
-			model.addAttribute("projectId", records.getId());
-			if(StringUtils.isNotBlank(projectReportData.getAchievementType())){
-				projectReportData.setTemplateTypeName(DictUtils.getMainDictLabel(projectReportData.getAchievementType(), "achievement_type", ""));
+			if(null != projectReportData){
+
+				if (projectReportData.getMaster()==null || StringUtils.isBlank(projectReportData.getMaster().getId())){
+					projectReportData.setMaster(UserUtils.getUser());
+				}
+				if (StringUtils.isBlank(projectReportData.getStatus())){
+					projectReportData.setFileStatus("1");
+				}
+				projectcontentinfo.setProjectReportData(projectReportData);
+				model.addAttribute("projectcontentinfo", projectcontentinfo);
+				model.addAttribute("achievementParentId", projectReportData.getType());
+				model.addAttribute("achievementId", projectReportData.getAchievementType());
+				model.addAttribute("reviewStandard", projectReportData.getReviewStandard());
+				model.addAttribute("projectId", records.getId());
+				if(StringUtils.isNotBlank(projectReportData.getAchievementType())){
+					projectReportData.setTemplateTypeName(DictUtils.getMainDictLabel(projectReportData.getAchievementType(), "achievement_type", ""));
+				}
+			}else{
+
+				model.addAttribute("projectcontentinfo", projectcontentinfo);
+				model.addAttribute("achievementParentId", "");
+				model.addAttribute("achievementId", "");
+				model.addAttribute("reviewStandard", "");
+				model.addAttribute("projectId", records.getId());
 			}
 			if ("according".equals(projectcontentinfo.getCondition()) ||
 					"complement".equals(projectcontentinfo.getCondition()) ||
@@ -972,22 +985,25 @@ public class ProjectcontentinfoController extends BaseController {
 					"checkMaterial".equals(projectcontentinfo.getCondition()) ||
 					"checkArmorForMaterials".equals(projectcontentinfo.getCondition()) ||
 					"interim".equals(projectcontentinfo.getCondition())){
-				if(StringUtils.isNotBlank(projectReportData.getAchievementType())){
-					ProjectTemplateType projectTemplateType = projectResultsFileTemplateService.get(projectReportData.getAchievementType());
-					if(null != projectTemplateType){
-						projectReportData.setTemplateTypeName(projectTemplateType.getTypeName());
-					}
-				}
 				Act act = new Act();
-				if(StringUtils.isNotBlank(projectReportData.getProcessInstanceId())){
-					act = getByAct(projectReportData.getProcessInstanceId());
-					if(StringUtils.isBlank(act.getProcInsId())){
-						act.setProcInsId(projectReportData.getProcessInstanceId());
+				if(null != projectReportData){
+
+					if(StringUtils.isNotBlank(projectReportData.getAchievementType())){
+						ProjectTemplateType projectTemplateType = projectResultsFileTemplateService.get(projectReportData.getAchievementType());
+						if(null != projectTemplateType){
+							projectReportData.setTemplateTypeName(projectTemplateType.getTypeName());
+						}
 					}
-					projectReportData.setAct(act);
-					WorkProjectNotify workProjectNotify = workProjectNotifyService.getByProcessInstanceId(projectReportData.getProcessInstanceId());
-					if(null != workProjectNotify && StringUtils.isNotBlank(workProjectNotify.getNotifyType())){
-						model.addAttribute("projectNotifyType", workProjectNotify.getNotifyType());
+					if(StringUtils.isNotBlank(projectReportData.getProcessInstanceId())){
+						act = getByAct(projectReportData.getProcessInstanceId());
+						if(StringUtils.isBlank(act.getProcInsId())){
+							act.setProcInsId(projectReportData.getProcessInstanceId());
+						}
+						projectReportData.setAct(act);
+						WorkProjectNotify workProjectNotify = workProjectNotifyService.getByProcessInstanceId(projectReportData.getProcessInstanceId());
+						if(null != workProjectNotify && StringUtils.isNotBlank(workProjectNotify.getNotifyType())){
+							model.addAttribute("projectNotifyType", workProjectNotify.getNotifyType());
+						}
 					}
 				}
 

+ 1 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/Stamper.java

@@ -14,6 +14,7 @@ public class Stamper {
     private Double x;           //签署位置在页面宽的占比,取值0~1,坐标定位时必传,关键字定位时选传
     private Double y;           //签署位置在页面高的占比,取值0~1,坐标定位时必传,关键字定位时选传
     private String keyword;     //定位关键字
+    private String keywordIndex;     //第几个关键字 -1表示最后一个,0表示全部
 
     public String getDocumentId() {
         return documentId;

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

@@ -186,7 +186,7 @@ public class RuralProjectSignatureOldMessageDisposeController extends BaseContro
         System.out.println(c.getActualMaximum(Calendar.DATE));
         //if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)){
         long l1 = System.currentTimeMillis();
-        Integer month = 12; //第一个月从0开始,所以得到月份+1
+        Integer month = 10; //第一个月从0开始,所以得到月份+1
         //当月最后一天
         //projectRecordsService.getBatchArchiveNotify();
         /*logger.info("-----------公司级—月度报表(开始)------------------");
@@ -204,6 +204,11 @@ public class RuralProjectSignatureOldMessageDisposeController extends BaseContro
         logger.info("-----------张静—月度报表(开始)------------------");
         // statementCompanyComprehensiveService.disposeReportDataStatementCompany(year,2,month);
         logger.info("------------张静—月度报表(结束)------------------");
+
+        logger.info("-----------批量归档报表(开始)------------------");
+        statementCompanyComprehensiveService.disposeFilingStatementCompany(year,2,month);
+        logger.info("------------批量归档报表(结束)------------------");
+
         //}
 
         map.put("msgMonth","月度报表处理完成");
@@ -301,20 +306,20 @@ public class RuralProjectSignatureOldMessageDisposeController extends BaseContro
         projectRecordsService.saveProjectReportedListByAdvent();
         logger.info("------------项目超期未上报定时任务结束------------------");
         logger.info("-----------项目超期未归档定时任务开始(电子归档)------------------");
-        projectRecordsService.saveProjectRecordListByAdvent();
+        //projectRecordsService.saveProjectRecordListByAdvent();
         logger.info("------------项目超期未归档定时任务结束(电子归档)------------------");
         logger.info("------------项目超期未质量符合定时任务开始--------------------");
-        projectRecordsService.getJudgeAdvanceWeekNotice();
+       // projectRecordsService.getJudgeAdvanceWeekNotice();
         logger.info("------------项目超期未质量符合定时任务结束--------------------");
 
         logger.info("-----------项目超期未归档定时任务开始(A类纸质归档)------------------");
-        projectRecordsService.saveProjectRecordListByPaperFiling();
+        //projectRecordsService.saveProjectRecordListByPaperFiling();
         logger.info("------------项目超期未归档定时任务结束(A类纸质归档)------------------");
         logger.info("-----------项目纸质归档长期未处理通知(开始)------------------");
-        projectRecordsService.getPaperArchiveNotify();
+        //projectRecordsService.getPaperArchiveNotify();
         logger.info("-----------项目纸质归档长期未处理通知(结束)------------------");
         logger.info("-----------项目批量归档长期未处理通知(开始)------------------");
-        projectRecordsService.getBatchArchiveNotify();
+        //projectRecordsService.getBatchArchiveNotify();
         logger.info("-----------项目批量归档长期未处理通知(结束)------------------");
         map.put("msg","处理完成");
         return map;

+ 12 - 0
src/main/java/com/jeeplus/modules/statement/dao/StatementCompanyComprehensiveDao.java

@@ -485,6 +485,12 @@ public interface StatementCompanyComprehensiveDao  extends CrudDao<StatementComp
     void deleteOfficeStatementDataInfo(StatementDataInfo statementDataInfoList);
 
     /**
+     * 部门级超期、未超期数据删除(批量)
+     * @param statementDataInfoList
+     */
+    void deleteOfficeStatementDataOnListInfo(@Param("dataList")List<StatementDataInfo> statementDataInfoList);
+
+    /**
      * 部门级查询发票信息数量
      * @param userId
      * @param beginDate
@@ -818,6 +824,12 @@ public interface StatementCompanyComprehensiveDao  extends CrudDao<StatementComp
      */
     void deleteOfficeStatementDataInfoByYear(StatementDataInfo statementDataInfoList);
 
+    /**
+     * 部门级超期、未超期数据删除
+     * @param statementDataInfoList
+     */
+    void deleteOfficeStatementDataOnListInfoByYear(@Param("dataList")List<StatementDataInfo> statementDataInfoList);
+
 
     /**
      * 删除部门级数据信息

+ 401 - 86
src/main/java/com/jeeplus/modules/statement/service/StatementCompanyComprehensiveService.java

@@ -2,7 +2,13 @@ package com.jeeplus.modules.statement.service;
 
 import com.google.common.collect.Lists;
 import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.IdGen;
 import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.notifyStatement.companyLevel.dao.CompanyFilingDao;
+import com.jeeplus.modules.notifyStatement.companyLevel.dao.CompanyYearDao;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementFilingInfo;
+import com.jeeplus.modules.notifyStatement.companyLevel.entity.StatementInfo;
+import com.jeeplus.modules.pojectMaterialsWarehouse.entity.ProjectMaterialCollectInfo;
 import com.jeeplus.modules.statement.dao.StatementCompanyComprehensiveDao;
 import com.jeeplus.modules.statement.entity.ReportDataEntity;
 import com.jeeplus.modules.statement.entity.StatementCompanyComprehensiveInfo;
@@ -41,6 +47,10 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
     private WorkProjectNotifyService workProjectNotifyService;
     @Autowired
     private OfficeService officeService;
+    @Autowired
+    private CompanyYearDao companyYearDao;
+    @Autowired
+    private CompanyFilingDao companyFilingDao;
 
     /**
      *
@@ -502,6 +512,80 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
      * @param bigDateType 状态1(0:年;1:季度;2:月份)
      * @param smallDateType 状态2(针对状态1进行精确所在指定季度或者月份)
      */
+    public void disposeFilingStatementCompany(Integer year,Integer bigDateType,Integer smallDateType){
+        Calendar cal = Calendar.getInstance();
+        //获取当前年份
+        if(null == year){
+            year = cal.get(Calendar.YEAR);
+        }
+
+        Map<String, String> dateMap = getDateNew(bigDateType, smallDateType, year);
+        //开始时间
+        String beginDate = dateMap.get("beginDate");
+        //结束时间
+        String endDate = dateMap.get("endDate");
+        String statementDate = dateMap.get("statementDate");
+
+        //参数是由 year、bigDateType、smallDateType参数设定
+        String utilNotifyId = year + "," + bigDateType + "," + smallDateType;
+
+        String titleStr = "";
+
+        //发送通知
+        switch (bigDateType){
+            //年度汇总
+            case 0:
+                titleStr = statementDate + "-报告批量归档 年报";
+                break;
+            //季度汇总
+            case 1:
+                //smallDateType  为季度时候
+                titleStr = statementDate + "-报告批量归档 季报";
+                break;
+            //月度汇总
+            case 2:
+                //smallDateType  为月度时候
+                titleStr = statementDate + "-报告批量归档 月报";
+                break;
+        }
+
+
+        //添加报表记录
+        StatementFilingInfo statementInfo = new StatementFilingInfo();
+        statementInfo.setId(IdGen.uuid());
+        User user = UserUtils.get("1");
+        statementInfo.setCreateBy(user);
+        statementInfo.setCreateDate(new Date());
+        statementInfo.setUpdateBy(user);
+        statementInfo.setUpdateDate(new Date());
+        statementInfo.setDelFlag("0");
+        statementInfo.setCompanyOfficeType(1);
+        statementInfo.setTitle(titleStr);
+        statementInfo.setStartDate(beginDate);
+        statementInfo.setEndDate(endDate);
+
+        switch (bigDateType){
+            //年度汇总
+            case 0:
+                statementInfo.setMonthYearType(0);
+                break;
+            //季度汇总
+            case 1:
+                //smallDateType  为季度时候
+                //statementInfo.setMonthYearType(2);
+                break;
+            //月度汇总
+            case 2:
+                //smallDateType  为月度时候
+                statementInfo.setMonthYearType(1);
+                break;
+        }
+        statementInfo.setNotifyDateNode(utilNotifyId);
+        companyFilingDao.deleteByTitle(titleStr);
+        companyFilingDao.insert(statementInfo);
+        System.out.println("结束");
+
+    }
     public void disposeStatementCompany(Integer year,Integer bigDateType,Integer smallDateType){
         Calendar cal = Calendar.getInstance();
         //获取当前年份
@@ -533,17 +617,17 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         switch (bigDateType){
             //年度汇总
             case 0:
-                companyNotification(statementDate,"年","161",utilNotifyId);
+                companyNotification(statementDate,"年","161",utilNotifyId,bigDateType);
                 break;
             //季度汇总
             case 1:
                 //smallDateType  为季度时候
-                companyNotification(statementDate,"季","162",utilNotifyId);
+                companyNotification(statementDate,"季","162",utilNotifyId,bigDateType);
                 break;
             //月度汇总
             case 2:
                 //smallDateType  为月度时候
-                companyNotification(statementDate,"月","163",utilNotifyId);
+                companyNotification(statementDate,"月","163",utilNotifyId,bigDateType);
                 companyReportNotification(statementDate,"月","167",utilNotifyId);
                 break;
         }
@@ -937,17 +1021,17 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         switch (bigDateType){
             //年度汇总
             case 0:
-                companyNotification(statementDate,"年","161",utilNotifyId);
+                companyNotification(statementDate,"年","161",utilNotifyId,bigDateType);
                 break;
             //季度汇总
             case 1:
                 //smallDateType  为季度时候
-                companyNotification(statementDate,"季","162",utilNotifyId);
+                companyNotification(statementDate,"季","162",utilNotifyId,bigDateType);
                 break;
             //月度汇总
             case 2:
                 //smallDateType  为月度时候
-                companyNotification(statementDate,"月","163",utilNotifyId);
+                companyNotification(statementDate,"月","163",utilNotifyId,bigDateType);
                 break;
         }
     }
@@ -959,7 +1043,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
      * @param notificationType
      * @param utilNotifyId
      */
-    public void companyNotification(String statementDate,String type,String notificationType,String utilNotifyId){
+    public void companyNotification(String statementDate,String type,String notificationType,String utilNotifyId,Integer bigDateType){
         String notifyStr = statementDate + "-公司级 " + type + "报";
         String titleStr = statementDate + "-公司级 " + type + "报";
 
@@ -977,6 +1061,37 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                             "待通知",
                             ""));
         }
+        //添加报表记录
+        StatementInfo statementInfo = new StatementInfo();
+        statementInfo.setId(IdGen.uuid());
+        User user = UserUtils.get("1");
+        statementInfo.setCreateBy(user);
+        statementInfo.setCreateDate(new Date());
+        statementInfo.setUpdateBy(user);
+        statementInfo.setUpdateDate(new Date());
+        statementInfo.setDelFlag("0");
+        statementInfo.setCompanyOfficeType(1);
+        statementInfo.setTitle(titleStr);
+
+        switch (bigDateType){
+            //年度汇总
+            case 0:
+                statementInfo.setMonthYearType(0);
+                break;
+            //季度汇总
+            case 1:
+                //smallDateType  为季度时候
+                //statementInfo.setMonthYearType(2);
+                break;
+            //月度汇总
+            case 2:
+                //smallDateType  为月度时候
+                statementInfo.setMonthYearType(1);
+                break;
+        }
+        statementInfo.setNotifyDateNode(utilNotifyId);
+        companyYearDao.insert(statementInfo);
+
     }
 
     /**
@@ -986,7 +1101,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
      * @param notificationType
      * @param utilNotifyId
      */
-    public void officeNotification(String statementDate,String type,String notificationType,String utilNotifyId){
+    public void officeNotification(String statementDate,String type,String notificationType,String utilNotifyId,Integer bigDateType){
 
         //查询公司级需要通知的人员信息
         //List<User> statementCompanyNotificationUserList = dao.getStatementCompanyNotificationUserList();
@@ -1020,6 +1135,37 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                                 "待通知",
                                 ""));
             }
+
+            //添加报表记录
+            StatementInfo statementInfo = new StatementInfo();
+            statementInfo.setId(IdGen.uuid());
+            User user = UserUtils.get("1");
+            statementInfo.setCreateBy(user);
+            statementInfo.setCreateDate(new Date());
+            statementInfo.setUpdateBy(user);
+            statementInfo.setUpdateDate(new Date());
+            statementInfo.setDelFlag("0");
+            statementInfo.setCompanyOfficeType(2);
+            statementInfo.setTitle(titleStr);
+
+            switch (bigDateType){
+                //年度汇总
+                case 0:
+                    statementInfo.setMonthYearType(0);
+                    break;
+                //季度汇总
+                case 1:
+                    //smallDateType  为季度时候
+                    //statementInfo.setMonthYearType(2);
+                    break;
+                //月度汇总
+                case 2:
+                    //smallDateType  为月度时候
+                    statementInfo.setMonthYearType(1);
+                    break;
+            }
+            statementInfo.setNotifyDateNode(newUtilNotifyId);
+            companyYearDao.insert(statementInfo);
         }
 
 
@@ -2878,17 +3024,17 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         switch (bigDateType){
             //年度汇总
             case 0:
-                officeNotification(statementDate,"年","164",utilNotifyId);
+                officeNotification(statementDate,"年","164",utilNotifyId,bigDateType);
                 break;
             //季度汇总
             case 1:
                 //smallDateType  为季度时候
-                officeNotification(statementDate,"季","165",utilNotifyId);
+                officeNotification(statementDate,"季","165",utilNotifyId,bigDateType);
                 break;
             //月度汇总
             case 2:
                 //smallDateType  为月度时候
-                officeNotification(statementDate,"月","166",utilNotifyId);
+                officeNotification(statementDate,"月","166",utilNotifyId,bigDateType);
                 break;
         }
     }
@@ -3073,10 +3219,14 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueNotRecordProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueNotRecordProjectList) {
+
+                        this.deleteOfficeStatementDataInfo(overDueNotRecordProjectList);
+                        this.insertOfficeStatementDataInfo(overDueNotRecordProjectList);
+
+                        /*for (StatementDataInfo statementDataInfo : overDueNotRecordProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overDueNotRecordProjectList);
+                        dao.insertOfficeStatementDataInfo(overDueNotRecordProjectList);*/
                     }
                     //查询电子归档超期归档项目数量(保存到数据库)
                     /*List<String> overDueRecordProjectIdList = dao.getOfficeOverDueRecordProject(user.getId(), beginDate, endDate);
@@ -3106,10 +3256,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueRecordProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueRecordProjectList) {
+                        this.deleteOfficeStatementDataInfo(overDueRecordProjectList);
+                        this.insertOfficeStatementDataInfo(overDueRecordProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueRecordProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overDueRecordProjectList);
+                        dao.insertOfficeStatementDataInfo(overDueRecordProjectList);*/
                     }
                     //查询上报超期未上报项目数量(保存到数据库)
                     /*List<String> overDueNotReportedProjectIdList = dao.getOfficeOverDueNotReportedProject(user.getId());
@@ -3139,10 +3291,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueNotReportedProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueNotReportedProjectList) {
+                        this.deleteOfficeStatementDataInfo(overDueNotReportedProjectList);
+                        this.insertOfficeStatementDataInfo(overDueNotReportedProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueNotReportedProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overDueNotReportedProjectList);
+                        dao.insertOfficeStatementDataInfo(overDueNotReportedProjectList);*/
                     }
                     //查询上报超期上报项目数量(保存到数据库)
                     /*List<String> overDueReportedProjectIdList = dao.getOfficeOverDueReportedProject(user.getId(), beginDate, endDate);
@@ -3172,10 +3326,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueReportedProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueReportedProjectList) {
+                        this.deleteOfficeStatementDataInfo(overDueReportedProjectList);
+                        this.insertOfficeStatementDataInfo(overDueReportedProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueReportedProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overDueReportedProjectList);
+                        dao.insertOfficeStatementDataInfo(overDueReportedProjectList);*/
                     }
 
                     for (ReportDataEntity reportData: getProjectPaperFilingList) {
@@ -3217,10 +3373,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(projectReportDataList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : projectReportDataList) {
+                        this.deleteOfficeStatementDataInfo(projectReportDataList);
+                        this.insertOfficeStatementDataInfo(projectReportDataList);
+                        /*for (StatementDataInfo statementDataInfo : projectReportDataList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(projectReportDataList);
+                        dao.insertOfficeStatementDataInfo(projectReportDataList);*/
                     }
 
 
@@ -3250,10 +3408,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueProjectReportDataList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueProjectReportDataList) {
+                        this.deleteOfficeStatementDataInfo(overDueProjectReportDataList);
+                        this.insertOfficeStatementDataInfo(overDueProjectReportDataList);
+                        /*for (StatementDataInfo statementDataInfo : overDueProjectReportDataList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overDueProjectReportDataList);
+                        dao.insertOfficeStatementDataInfo(overDueProjectReportDataList);*/
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -3282,10 +3442,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDuePaperFilingProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDuePaperFilingProjectList) {
+                        this.deleteOfficeStatementDataInfo(overDuePaperFilingProjectList);
+                        this.insertOfficeStatementDataInfo(overDuePaperFilingProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDuePaperFilingProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overDuePaperFilingProjectList);
+                        dao.insertOfficeStatementDataInfo(overDuePaperFilingProjectList);*/
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -3314,10 +3476,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overPaperFilingProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overPaperFilingProjectList) {
+                        this.deleteOfficeStatementDataInfo(overPaperFilingProjectList);
+                        this.insertOfficeStatementDataInfo(overPaperFilingProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overPaperFilingProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overPaperFilingProjectList);
+                        dao.insertOfficeStatementDataInfo(overPaperFilingProjectList);*/
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -3346,10 +3510,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueBatchArchiveProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueBatchArchiveProjectList) {
+                        this.deleteOfficeStatementDataInfo(overDueBatchArchiveProjectList);
+                        this.insertOfficeStatementDataInfo(overDueBatchArchiveProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueBatchArchiveProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overDueBatchArchiveProjectList);
+                        dao.insertOfficeStatementDataInfo(overDueBatchArchiveProjectList);*/
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -3378,10 +3544,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overBatchArchiveProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overBatchArchiveProjectList) {
+                        this.deleteOfficeStatementDataInfo(overBatchArchiveProjectList);
+                        this.insertOfficeStatementDataInfo(overBatchArchiveProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overBatchArchiveProjectList) {
                             dao.deleteOfficeStatementDataInfo(statementDataInfo);
                         }
-                        dao.insertOfficeStatementDataInfo(overBatchArchiveProjectList);
+                        dao.insertOfficeStatementDataInfo(overBatchArchiveProjectList);*/
                     }
 
 
@@ -3395,6 +3563,75 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
         }
     }
 
+
+
+    /**
+     * 批量新增数据信息(年报)
+     * @param list
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String insertOfficeStatementDataInfo(List<StatementDataInfo> list){
+        //分批处理
+        if(null!=list && list.size()>0){
+            int pointsDataLimit = 100;//限制条数
+            Integer size = list.size();
+            //判断是否有必要分批
+            if(pointsDataLimit<size){
+                int part = size/pointsDataLimit;//分批数
+                //
+                for (int i = 0; i < part; i++) {
+                    //100条
+                    List<StatementDataInfo> listPage = list.subList(0, pointsDataLimit);
+                    dao.insertOfficeStatementDataInfo(listPage);
+                    //剔除
+                    list.subList(0, pointsDataLimit).clear();
+                }
+                if(!list.isEmpty()){
+                    dao.insertOfficeStatementDataInfo(list);
+                }
+            }else{
+                dao.insertOfficeStatementDataInfo(list);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 批量删除数据信息(年报)
+     * @param list
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String deleteOfficeStatementDataInfo(List<StatementDataInfo> list){
+        //分批处理
+        if(null!=list && list.size()>0){
+            int pointsDataLimit = 100;//限制条数
+            Integer size = list.size();
+            //判断是否有必要分批
+            if(pointsDataLimit<size){
+                int part = size/pointsDataLimit;//分批数
+                //
+                for (int i = 0; i < part; i++) {
+                    //100条
+                    List<StatementDataInfo> listPage = list.subList(0, pointsDataLimit);
+                    dao.deleteOfficeStatementDataOnListInfo(listPage);
+                    //剔除
+                    list.subList(0, pointsDataLimit).clear();
+                }
+                if(!list.isEmpty()){
+                    dao.deleteOfficeStatementDataOnListInfo(list);
+                }
+            }else{
+                dao.deleteOfficeStatementDataOnListInfo(list);
+            }
+        }
+        return null;
+    }
+
+
+
+
     /**
      * 部门级开票记录月报/季报/年报汇总方法
      * @param beginDate 开始时间
@@ -3706,7 +3943,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
             String statementDate = "";
             for (StatementCompanyComprehensiveInfo comprehensiveInfo : list) {
                 statementDate = comprehensiveInfo.getStatementDate();
-                if("工程五部".equals(comprehensiveInfo.getOfficeName()) /*&& "1".equals(info.getType())*/){
+                /*if("工程五部".equals(comprehensiveInfo.getOfficeName()) *//*&& "1".equals(info.getType())*//*){
                     flag = false;
                     StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo = dao.selectAllWbByTypeByYear(comprehensiveInfo);
                     statementCompanyComprehensiveInfo.setYear(info.getYear());
@@ -3717,29 +3954,31 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     statementCompanyComprehensiveInfo.setOfficeId(info.getOfficeId());
 
                     list.add(statementCompanyComprehensiveInfo);
-                }
+                }*/
             }
             if(flag /*&& "1".equals(info.getType())*/){
                 StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo = dao.selectAllWbByTypeByYear(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());
-
-                Boolean insertFlag = true;
-                for(int i= 0;i< list.size(); i++){
-                    StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo1 = list.get(i);
-                    if("工程四部".equals(statementCompanyComprehensiveInfo1.getOfficeName())){
-                        list.add(i+1,statementCompanyComprehensiveInfo);
-                        insertFlag = false;
+                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());
+
+                    Boolean insertFlag = true;
+                    for(int i= 0;i< list.size(); i++){
+                        StatementCompanyComprehensiveInfo statementCompanyComprehensiveInfo1 = list.get(i);
+                        if("工程四部".equals(statementCompanyComprehensiveInfo1.getOfficeName())){
+                            list.add(i+1,statementCompanyComprehensiveInfo);
+                            insertFlag = false;
+                        }
+                    }
+                    if(insertFlag){
+                        list.add(statementCompanyComprehensiveInfo);
                     }
-                }
-                if(insertFlag){
-                    list.add(statementCompanyComprehensiveInfo);
                 }
             }
 
@@ -4265,24 +4504,24 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
 
         //创建utilNotifyId参数
         //参数是由 year、bigDateType、smallDateType参数设定
-        /*String utilNotifyId = year + "," + bigDateType + "," + smallDateType;
+        String utilNotifyId = year + "," + bigDateType + "," + smallDateType;
         //发送通知
         switch (bigDateType){
             //年度汇总
             case 0:
-                officeNotification(statementDate,"年","164",utilNotifyId);
+                officeNotification(statementDate,"年","164",utilNotifyId,bigDateType);
                 break;
             //季度汇总
             case 1:
                 //smallDateType  为季度时候
-                officeNotification(statementDate,"季","165",utilNotifyId);
+                officeNotification(statementDate,"季","165",utilNotifyId,bigDateType);
                 break;
             //月度汇总
             case 2:
                 //smallDateType  为月度时候
-                officeNotification(statementDate,"月","166",utilNotifyId);
+                officeNotification(statementDate,"月","166",utilNotifyId,bigDateType);
                 break;
-        }*/
+        }
     }
 
     /**
@@ -4433,10 +4672,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueNotRecordProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueNotRecordProjectList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overDueNotRecordProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueNotRecordProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overDueNotRecordProjectList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overDueNotRecordProjectList);
                     }
                     //查询电子归档超期归档项目数量(保存到数据库)
                     /*List<String> overDueRecordProjectIdList = dao.getOfficeOverDueRecordProject(user.getId(), beginDate, endDate);
@@ -4466,10 +4706,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueRecordProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueRecordProjectList) {
+                        /*for (StatementDataInfo statementDataInfo : overDueRecordProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overDueRecordProjectList);
+                        }*/
+                        this.deleteOfficeStatementDataOnListInfoByYear(overDueRecordProjectList);
+                        this.insertOfficeStatementDataInfoByYear(overDueRecordProjectList);
                     }
                     //查询上报超期未上报项目数量(保存到数据库)
                     /*List<String> overDueNotReportedProjectIdList = dao.getOfficeOverDueNotReportedProject(user.getId());
@@ -4499,10 +4740,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueNotReportedProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueNotReportedProjectList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overDueNotReportedProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueNotReportedProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overDueNotReportedProjectList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overDueNotReportedProjectList);
                     }
                     //查询上报超期上报项目数量(保存到数据库)
                     /*List<String> overDueReportedProjectIdList = dao.getOfficeOverDueReportedProject(user.getId(), beginDate, endDate);
@@ -4532,10 +4774,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueReportedProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueReportedProjectList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overDueReportedProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueReportedProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overDueReportedProjectList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overDueReportedProjectList);
                     }
                     for (ReportDataEntity reportData: getProjectPaperFilingList) {
                         if(user.getId().equals(reportData.getUserId())){
@@ -4576,10 +4819,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(projectReportDataList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : projectReportDataList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(projectReportDataList);
+                        /*for (StatementDataInfo statementDataInfo : projectReportDataList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(projectReportDataList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(projectReportDataList);
                     }
 
 
@@ -4609,10 +4853,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueProjectReportDataList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueProjectReportDataList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overDueProjectReportDataList);
+                        /*for (StatementDataInfo statementDataInfo : overDueProjectReportDataList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overDueProjectReportDataList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overDueProjectReportDataList);
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -4641,10 +4886,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDuePaperFilingProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDuePaperFilingProjectList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overDuePaperFilingProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDuePaperFilingProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overDuePaperFilingProjectList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overDuePaperFilingProjectList);
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -4673,10 +4919,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overPaperFilingProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overPaperFilingProjectList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overPaperFilingProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overPaperFilingProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overPaperFilingProjectList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overPaperFilingProjectList);
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -4705,10 +4952,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overDueBatchArchiveProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overDueBatchArchiveProjectList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overDueBatchArchiveProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overDueBatchArchiveProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overDueBatchArchiveProjectList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overDueBatchArchiveProjectList);
                     }
 
                     //查询项目未质量符合信息(保存到数据库)
@@ -4737,10 +4985,11 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
                     }
                     if(overBatchArchiveProjectList.size()>0){
                         //每次删除之前的数据
-                        for (StatementDataInfo statementDataInfo : overBatchArchiveProjectList) {
+                        this.deleteOfficeStatementDataOnListInfoByYear(overBatchArchiveProjectList);
+                        /*for (StatementDataInfo statementDataInfo : overBatchArchiveProjectList) {
                             dao.deleteOfficeStatementDataInfoByYear(statementDataInfo);
-                        }
-                        dao.insertOfficeStatementDataInfoByYear(overBatchArchiveProjectList);
+                        }*/
+                        this.insertOfficeStatementDataInfoByYear(overBatchArchiveProjectList);
                     }
 
                     //数据处理并保存到数据库中
@@ -4754,6 +5003,72 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
     }
 
     /**
+     * 批量新增数据信息(年报)
+     * @param list
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String insertOfficeStatementDataInfoByYear(List<StatementDataInfo> list){
+        //分批处理
+        if(null!=list && list.size()>0){
+            int pointsDataLimit = 100;//限制条数
+            Integer size = list.size();
+            //判断是否有必要分批
+            if(pointsDataLimit<size){
+                int part = size/pointsDataLimit;//分批数
+                //
+                for (int i = 0; i < part; i++) {
+                    //100条
+                    List<StatementDataInfo> listPage = list.subList(0, pointsDataLimit);
+                    dao.insertOfficeStatementDataInfoByYear(listPage);
+                    //剔除
+                    list.subList(0, pointsDataLimit).clear();
+                }
+                if(!list.isEmpty()){
+                    dao.insertOfficeStatementDataInfoByYear(list);
+                }
+            }else{
+                dao.insertOfficeStatementDataInfoByYear(list);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 批量删除数据信息(年报)
+     * @param list
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String deleteOfficeStatementDataOnListInfoByYear(List<StatementDataInfo> list){
+        //分批处理
+        if(null!=list && list.size()>0){
+            int pointsDataLimit = 100;//限制条数
+            Integer size = list.size();
+            //判断是否有必要分批
+            if(pointsDataLimit<size){
+                int part = size/pointsDataLimit;//分批数
+                //
+                for (int i = 0; i < part; i++) {
+                    //100条
+                    List<StatementDataInfo> listPage = list.subList(0, pointsDataLimit);
+                    dao.deleteOfficeStatementDataOnListInfoByYear(listPage);
+                    //剔除
+                    list.subList(0, pointsDataLimit).clear();
+                }
+                if(!list.isEmpty()){
+                    dao.deleteOfficeStatementDataOnListInfoByYear(list);
+                }
+            }else{
+                dao.deleteOfficeStatementDataOnListInfoByYear(list);
+            }
+        }
+        return null;
+    }
+    
+
+
+    /**
      * 部门级开票记录月报/季报/年报汇总方法
      * @param beginDate 开始时间
      * @param endDate 结束时间

+ 10 - 0
src/main/java/com/jeeplus/modules/sys/entity/User.java

@@ -104,6 +104,8 @@ public class User extends DataEntity<User> {
     private String auditUserId;  //总审人员id
     private String otherServiceFlag;  //是否获取其他服务待办
 
+    private String areaRemark;  //部门地区备注(永不标注部门中所在的城市,比如一部中有 苏州、安徽的等等)
+
 	public String getWeChatId() {
 		return weChatId;
 	}
@@ -596,6 +598,14 @@ public class User extends DataEntity<User> {
 	public void setOtherServiceFlag(String otherServiceFlag) {
 		this.otherServiceFlag = otherServiceFlag;
 	}
+
+	public String getAreaRemark() {
+		return areaRemark;
+	}
+
+	public void setAreaRemark(String areaRemark) {
+		this.areaRemark = areaRemark;
+	}
 	//	public String getPosition() {
 //		return position;
 //	}

+ 4 - 0
src/main/java/com/jeeplus/modules/workcalendar/service/WorkCalendarTaskService.java

@@ -176,6 +176,10 @@ public class WorkCalendarTaskService  {
             /*logger.info("-----------张静—月度报表(开始)------------------");
             statementCompanyComprehensiveService.disposeReportDataStatementCompany(year,2,month);
             logger.info("------------张静—月度报表(结束)------------------");*/
+            logger.info("-----------公司级—批量归档月度报表(开始)------------------");
+            statementCompanyComprehensiveService.disposeFilingStatementCompany(year,2,month);
+            logger.info("------------公司级—批量归档月度报表(结束)------------------");
+
         }
 
     }

+ 10 - 0
src/main/java/com/jeeplus/modules/workstaff/entity/WorkStaffBasicInfo.java

@@ -119,6 +119,8 @@ public class WorkStaffBasicInfo extends DataEntity<WorkStaffBasicInfo> {
 	private String roleIdShow; //岗位展示
 	private String roleIdStr; //岗位Str
 
+	private String areaRemark; //地区备注(永不标注部门中所在的城市,比如一部中有 苏州、安徽的等等)
+
 	//劳动关系临时属性
 	private String relationshipStatus;
     public List<WorkStaffEducation> getEducationList() {
@@ -899,4 +901,12 @@ public class WorkStaffBasicInfo extends DataEntity<WorkStaffBasicInfo> {
 	public void setRoleIdStr(String roleIdStr) {
 		this.roleIdStr = roleIdStr;
 	}
+
+	public String getAreaRemark() {
+		return areaRemark;
+	}
+
+	public void setAreaRemark(String areaRemark) {
+		this.areaRemark = areaRemark;
+	}
 }

+ 1 - 0
src/main/java/com/jeeplus/modules/workstaff/service/WorkStaffBasicInfoService.java

@@ -264,6 +264,7 @@ public class WorkStaffBasicInfoService extends CrudService<WorkStaffBasicInfoDao
             user.setCompany(workStaffBasicInfo.getCompany());
             user.setOffice(workStaffBasicInfo.getOffice());
             user.setOtherServiceFlag(workStaffBasicInfo.getOtherServiceFlag());
+            user.setAreaRemark(workStaffBasicInfo.getAreaRemark());
             userService.updateUser(user);
             //userService.updateRole(workStaffBasicInfo);
         }else{

+ 140 - 0
src/main/resources/mappings/modules/notifyStatement/companyLevel/CompanyFilingDao.xml

@@ -0,0 +1,140 @@
+<?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.notifyStatement.companyLevel.dao.CompanyFilingDao">
+    
+	<sql id="monitorColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.company_id,
+		a.title,
+		a.company_office_type,
+		a.month_year_type,
+		a.notify_date_node,
+		date_format( a.start_date, '%Y-%m-%d %H:%i:%s' ) as "startDate",
+		date_format( a.end_date, '%Y-%m-%d %H:%i:%s' ) as "endDate"
+	</sql>
+    
+	<select id="get" resultType="StatementFilingInfo">
+		SELECT 
+			<include refid="monitorColumns"/>
+		FROM statement_filing_info a
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="StatementFilingInfo">
+		SELECT 
+			<include refid="monitorColumns"/>
+		FROM statement_filing_info a
+		<where>
+			a.del_flag = 0
+			<if test="title!=null and title != ''">
+				and a.title like concat('%',#{title},'%')
+			</if>
+			<if test="companyOfficeType!=null">
+				and a.company_office_type = #{companyOfficeType}
+			</if>
+			<if test="loginUserOfficeId!=null and loginUserOfficeId != ''">
+				and a.notify_date_node like concat('%',#{loginUserOfficeId},'%')
+			</if>
+			<if test="monthYearType!=null">
+				and a.month_year_type = #{monthYearType}
+			</if>
+		</where>
+		order by a.create_date desc
+	</select>
+
+	<select id="queryCount" resultType="int" >
+		SELECT  count(DISTINCT a.id)
+		FROM statement_filing_info a
+		<where>
+			a.del_flag = 0
+			<if test="title!=null and title != ''">
+				and a.title like concat('%',#{title},'%')
+			</if>
+			<if test="companyOfficeType!=null">
+				and a.company_office_type = #{companyOfficeType}
+			</if>
+			<if test="loginUserOfficeId!=null and loginUserOfficeId != ''">
+				and a.notify_date_node like concat('%',#{loginUserOfficeId},'%')
+			</if>
+			<if test="monthYearType!=null">
+				and a.month_year_type = #{monthYearType}
+			</if>
+		</where>
+	</select>
+
+
+	
+	<insert id="insert">
+		INSERT INTO statement_filing_info(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			title,
+			company_office_type,
+			month_year_type,
+			notify_date_node,
+			start_date,
+			end_date
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{title},
+			#{companyOfficeType},
+			#{monthYearType},
+			#{notifyDateNode},
+			#{startDate},
+			#{endDate}
+		)
+	</insert>
+
+	
+	<update id="update">
+		UPDATE statement_filing_info SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			company_id = #{companyId},
+			title = #{title},
+			company_office_type = #{companyOfficeType},
+			month_year_type = #{monthYearType},
+			notify_date_node = #{notifyDateNode},
+			start_date = #{startDate},
+			end_date = #{endDate}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM statement_filing_info
+		WHERE id = #{id}
+	</update>
+
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE statement_filing_info SET
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+
+	<delete id="deleteByTitle">
+		delete from statement_filing_info
+		where title = #{title}
+	</delete>
+
+</mapper>

+ 132 - 0
src/main/resources/mappings/modules/notifyStatement/companyLevel/CompanyYearDao.xml

@@ -0,0 +1,132 @@
+<?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.notifyStatement.companyLevel.dao.CompanyYearDao">
+    
+	<sql id="monitorColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.company_id,
+		a.title,
+		a.company_office_type,
+		a.month_year_type,
+		a.notify_date_node
+	</sql>
+	
+	<sql id="monitorJoins">
+	</sql>
+    
+	<select id="get" resultType="StatementInfo">
+		SELECT 
+			<include refid="monitorColumns"/>
+		FROM statement_info a
+		<include refid="monitorJoins"/>
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="StatementInfo">
+		SELECT 
+			<include refid="monitorColumns"/>
+		FROM statement_info a
+		<include refid="monitorJoins"/>
+		<where>
+			a.del_flag = 0
+			<if test="title!=null and title != ''">
+				and a.title like concat('%',#{title},'%')
+			</if>
+			<if test="companyOfficeType!=null">
+				and a.company_office_type = #{companyOfficeType}
+			</if>
+			<if test="loginUserOfficeId!=null and loginUserOfficeId != ''">
+				and a.notify_date_node like concat('%',#{loginUserOfficeId},'%')
+			</if>
+			<if test="monthYearType!=null">
+				and a.month_year_type = #{monthYearType}
+			</if>
+		</where>
+		order by a.create_date desc
+	</select>
+
+	<select id="queryCount" resultType="int" >
+		SELECT  count(DISTINCT a.id)
+		FROM statement_info a
+		<include refid="monitorJoins"/>
+		<where>
+			a.del_flag = 0
+			<if test="title!=null and title != ''">
+				and a.title like concat('%',#{title},'%')
+			</if>
+			<if test="companyOfficeType!=null">
+				and a.company_office_type = #{companyOfficeType}
+			</if>
+			<if test="loginUserOfficeId!=null and loginUserOfficeId != ''">
+				and a.notify_date_node like concat('%',#{loginUserOfficeId},'%')
+			</if>
+			<if test="monthYearType!=null">
+				and a.month_year_type = #{monthYearType}
+			</if>
+		</where>
+	</select>
+
+
+	
+	<insert id="insert">
+		INSERT INTO statement_info(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			title,
+			company_office_type,
+			month_year_type,
+			notify_date_node
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{title},
+			#{companyOfficeType},
+			#{monthYearType},
+			#{notifyDateNode}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE statement_info SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			company_id = #{companyId},
+			title = #{title},
+			company_office_type = #{companyOfficeType},
+			month_year_type = #{monthYearType},
+			notify_date_node = #{notifyDateNode}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM statement_info
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE statement_info SET
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+
+</mapper>

+ 17 - 1
src/main/resources/mappings/modules/projectGuidang/ProjectFilingBatchDao.xml

@@ -105,6 +105,9 @@
 			<if test="information!=null and information != ''">
 				,information=#{information}
 			</if>
+			<if test="auditPassDate!=null">
+				,audit_pass_date=#{auditPassDate}
+			</if>
 		</set>
 		where id =#{id}
 	</update>
@@ -136,6 +139,12 @@
 			<if test="endDate !=null">
 				AND a.create_date &lt; #{endDate}
 			</if>
+			<if test="auditBeginDate !=null">
+				AND a.audit_pass_date >= #{auditBeginDate}
+			</if>
+			<if test="auditEndDate !=null">
+				AND a.audit_pass_date &lt; #{auditEndDate}
+			</if>
 			AND a.del_flag='0'
 			<if test="sqlMap.dsf !=null and sqlMap.dsf!=''">
 				${sqlMap.dsf}
@@ -167,6 +176,12 @@
 			<if test="endDate !=null">
 				AND a.create_date &lt; #{endDate}
 			</if>
+			<if test="auditBeginDate !=null">
+				AND a.audit_pass_date >= #{auditBeginDate}
+			</if>
+			<if test="auditEndDate !=null">
+				AND a.audit_pass_date &lt; #{auditEndDate}
+			</if>
 			AND a.del_flag='0'
 			<if test="sqlMap.dsf !=null and sqlMap.dsf!=''">
 				${sqlMap.dsf}
@@ -242,7 +257,8 @@
 <!--	</select>-->
 	<delete id="delete">
 		UPDATE project_filingbatch SET
-			filing_status= 7
+			filing_status= 7,
+			del_flag = 1
 		WHERE id = #{id}
 	</delete>
 

+ 23 - 4
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml

@@ -3984,7 +3984,6 @@
 		<where>
 			a.del_flag=0
 			and a.status = 5
-			and a.office_id in(select id  from sys_office where id = #{statementCompanyComprehensiveInfo.officeId} or parent_ids like concat('%',#{statementCompanyComprehensiveInfo.officeId},'%'))
 		    and a.create_by = #{statementCompanyComprehensiveInfo.userId}
 			<if test="grade == '1'.toString() or grade == '2'.toString() ">
 				and a.submit_money = #{grade}
@@ -4146,7 +4145,6 @@
 		<where>
 			a.del_flag=0
 			and a.status = 5
-			and a.office_id in(select id  from sys_office where id = #{statementCompanyComprehensiveInfo.officeId} or parent_ids like concat('%',#{statementCompanyComprehensiveInfo.officeId},'%'))
 			and a.create_by = #{statementCompanyComprehensiveInfo.userId}
 			<if test="grade == '1'.toString() or grade == '2'.toString() ">
 				and a.submit_money = #{grade}
@@ -4333,7 +4331,18 @@
 		,a.report_signature_url as "reportSignatureUrl"
 		,a.report_signature_contract_id as "reportSignatureContractId"
 		,prsi.id as "prsiId"
-		FROM statement_office_data_info sodi
+		FROM
+
+		<if test="statementCompanyComprehensiveInfo.bigDateType == 0">
+			statement_office_data_info_two sodi
+		</if>
+		<if test="statementCompanyComprehensiveInfo.bigDateType == 1">
+			statement_office_data_info sodi
+		</if>
+		<if test="statementCompanyComprehensiveInfo.bigDateType == 2">
+			statement_office_data_info sodi
+		</if>
+
 
 		<if test="statementCompanyComprehensiveInfo.field5 == '5'.toString() ">
 			LEFT JOIN rural_project_records a ON sodi.field1 = a.id
@@ -4562,7 +4571,17 @@
 	<select id="selectDepartmentReportPageOverdueCount" resultType="integer">
 		select
 		count(DISTINCT a.id)
-		from statement_office_data_info sdi
+		from
+		<if test="statementCompanyComprehensiveInfo.bigDateType == 0">
+			statement_office_data_info_two sdi
+		</if>
+		<if test="statementCompanyComprehensiveInfo.bigDateType == 1">
+			statement_office_data_info sdi
+		</if>
+		<if test="statementCompanyComprehensiveInfo.bigDateType == 2">
+			statement_office_data_info sdi
+		</if>
+
 		<if test="statementCompanyComprehensiveInfo.field5 == '5'.toString() ">
 			LEFT JOIN rural_project_records a ON sdi.field1 = a.id
 		</if>

+ 60 - 10
src/main/resources/mappings/modules/statement/StatementCompanyComprehensiveDao.xml

@@ -1300,6 +1300,31 @@
 		</where>
 	</delete>
 
+	<delete id="deleteOfficeStatementDataOnListInfo">
+		DELETE FROM statement_office_data_info
+		WHERE
+		<foreach collection="dataList" item="info" open="(" separator=" OR " close=")">
+			(type = #{info.type}
+			AND year = #{info.year}
+			AND big_date_type = #{info.bigDateType}
+			AND small_date_type = #{info.smallDateType}
+			AND office_id = #{info.officeId}
+			AND user_id = #{info.userId}
+			<if test="info.field1 != null and info.field1 != ''">AND field1 = #{info.field1}</if>
+			<if test="info.field2 != null and info.field2 != ''">AND field2 = #{info.field2}</if>
+			<if test="info.field3 != null and info.field3 != ''">AND field3 = #{info.field3}</if>
+			<if test="info.field4 != null and info.field4 != ''">AND field4 = #{info.field4}</if>
+			<if test="info.field5 != null and info.field5 != ''">AND field5 = #{info.field5}</if>
+			<if test="info.field6 != null and info.field6 != ''">AND field6 = #{info.field6}</if>
+			<if test="info.field7 != null and info.field7 != ''">AND field7 = #{info.field7}</if>
+			<if test="info.field8 != null and info.field8 != ''">AND field8 = #{info.field8}</if>
+			<if test="info.field9 != null and info.field9 != ''">AND field9 = #{info.field9}</if>
+			<if test="info.field10 != null and info.field10 != ''">AND field10 = #{info.field10}</if>)
+		</foreach>
+	</delete>
+
+
+
 	<select id="getInsertOfficeInvoiceCountByOffice" resultType="java.lang.Integer">
 		select count(1) from work_invoice a
 		<where>
@@ -1788,19 +1813,24 @@
 			a.field15 as "field15",
 			a.field16 as "field16"
 		FROM
+			<if test="bigDateType == 0">
+				statement_office_comprehensive_info_two a
+			</if>
+			<if test="bigDateType == 1">
+				statement_office_comprehensive_info_two a
+			</if>
+			<if test="bigDateType == 2">
 				statement_office_comprehensive_info a
+			</if>
 				LEFT JOIN sys_user su ON su.id = a.user_id
-				LEFT JOIN sys_office so ON a.office_id = so.id
+				LEFT JOIN sys_office so ON su.office_id = so.id
 		<where>
 				a.type = #{type}
 			and big_date_type =#{bigDateType}
 			and small_date_type = #{smallDateType}
 			and a.year = #{year}
 			and a.del_flag = 0
-			AND (
-				a.office_id = #{officeId}
-			OR a.office_parent_ids LIKE concat( '%', #{officeId}, '%' )
-			)
+			AND su.office_id = #{officeId}
 		</where>
 		ORDER BY
 			a.office_id,
@@ -2211,17 +2241,14 @@
 		FROM
 		statement_office_comprehensive_info_two a
 		LEFT JOIN sys_user su ON su.id = a.user_id
-		LEFT JOIN sys_office so ON a.office_id = so.id
+		LEFT JOIN sys_office so ON su.office_id = so.id
 		<where>
 			a.type = #{type}
 			and big_date_type =#{bigDateType}
 			and small_date_type = #{smallDateType}
 			and a.year = #{year}
 			and a.del_flag = 0
-			AND (
-			a.office_id = #{officeId}
-			OR a.office_parent_ids LIKE concat( '%', #{officeId}, '%' )
-			)
+			AND su.office_id = #{officeId}
 		</where>
 		ORDER BY
 		a.office_id,
@@ -2330,6 +2357,29 @@
 		</where>
 	</delete>
 
+	<delete id="deleteOfficeStatementDataOnListInfoByYear">
+		DELETE FROM statement_office_data_info_two
+		WHERE
+		<foreach collection="dataList" item="info" open="(" separator=" OR " close=")">
+			(type = #{info.type}
+			AND year = #{info.year}
+			AND big_date_type = #{info.bigDateType}
+			AND small_date_type = #{info.smallDateType}
+			AND office_id = #{info.officeId}
+			AND user_id = #{info.userId}
+			<if test="info.field1 != null and info.field1 != ''">AND field1 = #{info.field1}</if>
+			<if test="info.field2 != null and info.field2 != ''">AND field2 = #{info.field2}</if>
+			<if test="info.field3 != null and info.field3 != ''">AND field3 = #{info.field3}</if>
+			<if test="info.field4 != null and info.field4 != ''">AND field4 = #{info.field4}</if>
+			<if test="info.field5 != null and info.field5 != ''">AND field5 = #{info.field5}</if>
+			<if test="info.field6 != null and info.field6 != ''">AND field6 = #{info.field6}</if>
+			<if test="info.field7 != null and info.field7 != ''">AND field7 = #{info.field7}</if>
+			<if test="info.field8 != null and info.field8 != ''">AND field8 = #{info.field8}</if>
+			<if test="info.field9 != null and info.field9 != ''">AND field9 = #{info.field9}</if>
+			<if test="info.field10 != null and info.field10 != ''">AND field10 = #{info.field10}</if>)
+		</foreach>
+	</delete>
+
 	<delete id="deleteOfficeComprehensiveByYear">
 		delete from statement_office_comprehensive_info_two
 		where type = #{type}

+ 4 - 0
src/main/resources/mappings/modules/sys/UserDao.xml

@@ -90,6 +90,7 @@
 		a.del_flag,
 		a.first_flag AS "firstFlag",
 		a.audit_user_id AS "auditUserId",
+		a.area_remark AS "areaRemark",
 		s.name AS "company.name",
 		s.parent_id AS "company.parent.id",
 		s.parent_ids AS "company.parentIds",
@@ -1250,6 +1251,9 @@
 			<if test="otherServiceFlag!=null and otherServiceFlag != ''">
 				,other_service_flag = #{otherServiceFlag}
 			</if>
+			<if test="areaRemark!=null and areaRemark != ''">
+				,area_remark = #{areaRemark}
+			</if>
 		</set>
 		where id = #{id}
 	</update>

+ 1 - 2
src/main/resources/mappings/modules/workcontractinfo/WorkContractInfoDao.xml

@@ -2001,7 +2001,6 @@
 		<where>
 			a.del_flag=0
 			and a.contract_state = 5
-			and a.office_id in(select id  from sys_office where id = #{officeIdd} or parent_ids like concat('%',#{officeIdd},'%'))
 			and a.create_by = #{statementCompanyComprehensiveInfo.userId}
 
 			<choose>
@@ -2095,7 +2094,7 @@
 		<where>
 			a.del_flag=0
 			and a.contract_state = 5
-			and a.office_id in(select id  from sys_office where id = #{officeIdd} or parent_ids like concat('%',#{officeIdd},'%'))
+
 			and a.create_by = #{statementCompanyComprehensiveInfo.userId}
 
 			<choose>

+ 2 - 0
src/main/resources/mappings/modules/workstaff/WorkStaffBasicInfoDao.xml

@@ -70,6 +70,7 @@
 		LEFT JOIN sys_office branch ON branch.id = a.branch_office
 		LEFT JOIN sys_office s ON s.id = a.company_id
 		LEFT JOIN sys_user u ON u.id = a.create_by
+		LEFT JOIN sys_user suo ON suo.id = a.user_id
 		LEFT JOIN sys_area nativePlace ON nativePlace.id = a.native_place
 		LEFT JOIN work_job_grade jg ON jg.id = a.job_grade
 	</sql>
@@ -77,6 +78,7 @@
 	<select id="get" resultType="WorkStaffBasicInfo" >
 		SELECT
 			<include refid="workStaffBasicInfoColumns"/>
+			,suo.area_remark as "areaRemark"
 		FROM work_staff_basic_info a
 		<include refid="workStaffBasicInfoJoins"/>
 		WHERE a.id = #{id}

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

@@ -0,0 +1,457 @@
+<%@ 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}/layui/layuidown.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			layui.use(['dropdown', 'util', 'layer'], function () {
+				var form = layui.form;
+			})
+			//搜索框收放
+			$('#moresee').click(function(){
+				if($('#moresees').is(':visible'))
+				{
+					$('#moresees').slideUp(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+				}else{
+					$('#moresees').slideDown(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+				}
+			});
+			laydate.render({
+				elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			$.ajax({
+				type : "POST",
+				url : "${ctx}/collectAccessory/collectAccessory/classificationList",
+				//请求成功
+				success : function(result) {
+					var str=jQuery.parseJSON(result);
+					//分类菜单
+					layui.dropdown.render({
+						elem: '#demo100'
+						,style: 'width: 380px;'
+						,data:str
+						,click: function(item){
+							$("#demo100").find("#classification").val(item.title)
+						}
+					});
+				}
+			});
+		});
+
+		function reset() {
+			$("#searchForm").resetForm();
+		}
+
+		function openDialog(title,url,width,height,target) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				content: url,
+				skin: 'three-btns',
+				btn: ['送审', '暂存', '关闭'],
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+		//打开对话框(查看)
+		function openDialogReportView(title,url,id,width,height){
+
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			$.ajax({
+				async: false,
+				url: "${ctx}/ruralProject/ruralProjectMessage/getReportExist?id="+id,
+				dataType: "json",
+				success: function (data) {
+					if(data.success){
+						top.layer.open({
+							type: 2,
+							skin: 'one-btn',
+							area: [width, height],
+							title: title,
+							maxmin: true, //开启最大化最小化按钮
+							content: url ,
+							btn: ['关闭'],
+							cancel: function(index){
+							}
+						});
+					}else{
+						top.layer.msg("该项目报告信息已删除!", {icon: 0});
+						window.location.reload();
+					}
+				}
+			});
+
+		}
+		function openDialogre(title,url,width,height,target,buttons) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			var split = buttons.split(",");
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				skin: 'three-btns',
+				content: url,
+				btn: split,
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					if(split.length==2){return}
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+
+		function saveClick() {
+			$("#attachment_file").click();
+		}
+
+		function insertTitle(tValue){
+			var files = $("#attachment_file")[0].files;
+
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachmentId = "";
+				var attachmentFlag = "100";
+				console.log(file);
+				var timestamp=new Date().getTime();
+				var storeAs = "collectAccessory";
+				var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+				var divId = "_attachment";
+				$("#addFile"+divId).show();
+				fileCollectAccessory(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+		}
+		function openBill2(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					inputForm.attr("action","${ctx}/collectAccessory/collectAccessory/saveGeCollectAccessory");//表单提交成功后,从服务器返回的url在当前tab中展示
+					var $document = iframeWin.contentWindow.document;
+					var s=iframeWin.contentWindow.formSubmit2($document,formId,index,tableId);
+					top.layer.close(index);
+					setTimeout(function(){location.reload();},500);
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+		function openBill3(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/companyYear/companyYear/list">年报</a></li>
+					<li class="active"><a href="${ctx}/companyYear/companyYear/monthList">月报</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="statementInfo" action="${ctx}/companyYear/companyYear/monthList" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<input id="toflag" name="toflag" type="hidden" value="1"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">描述:</label>
+							<div class="layui-input-block">
+								<form:input path="title" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">上传人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="collectUserId" name="collectUserId" value="${collectAccessoryInfo.collectUserId}" labelName="uploadUserName" labelValue="${collectAccessoryInfo.uploadUserName}" cssStyle="background-color: #fff"
+												title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>--%>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="search()">查询</button>
+									<button id="searchReset" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+								</div>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">收藏分类:</label>
+							<div class="layui-input-block with-icon">
+								<span style="width: 100%;text-align: left;position: relative;" id="demo100">
+									<input htmlEscape="false" name="classification" id="classification" maxlength="60" class="form-control layui-input" value="${collectAccessoryInfo.classification}"/>
+								</span>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">文件描述:</label>
+							<div class="layui-input-block">
+								<form:input path="fileDescription" htmlEscape="false" maxlength="250"  class=" form-control  layui-input"/>
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<div class="layui-btn-group">
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+					<div style="clear: both;"></div>
+				</div>
+				<%--<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>--%>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script>
+
+	layui.use('table', function(){
+		layui.table.render({
+			limit:${ page.pageSize }
+			,id:"checkboxTable"
+			,elem: '#contentTable1'
+			,page: false
+			,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>";
+					}}
+				,{field:'createDate',align:'center', title: '统计时间',  width:150}
+			]]
+			,data: [
+				<c:if test="${ not empty page.list}">
+				<c:forEach items="${page.list}" var="statementInfo" varStatus="index">
+				<c:if test="${index.index != 0}">,</c:if>
+				{
+					"index":"${index.index+1}"
+					,"id":"${statementInfo.id}"
+					,"title":"${statementInfo.title}"
+					,"createDate":"<fmt:formatDate value="${statementInfo.createDate}" pattern="yyyy-MM-dd"/>"
+				}
+				</c:forEach>
+				</c:if>
+			]
+		});
+	})
+
+	resizeListTable();
+	$("a").on("click",addLinkVisied);
+</script>
+<script>
+	resizeListWindow2();
+	$(window).resize(function(){
+		resizeListWindow2();
+	});
+</script>
+</body>
+</html>

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

@@ -0,0 +1,457 @@
+<%@ 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}/layui/layuidown.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			layui.use(['dropdown', 'util', 'layer'], function () {
+				var form = layui.form;
+			})
+			//搜索框收放
+			$('#moresee').click(function(){
+				if($('#moresees').is(':visible'))
+				{
+					$('#moresees').slideUp(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+				}else{
+					$('#moresees').slideDown(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+				}
+			});
+			laydate.render({
+				elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			$.ajax({
+				type : "POST",
+				url : "${ctx}/collectAccessory/collectAccessory/classificationList",
+				//请求成功
+				success : function(result) {
+					var str=jQuery.parseJSON(result);
+					//分类菜单
+					layui.dropdown.render({
+						elem: '#demo100'
+						,style: 'width: 380px;'
+						,data:str
+						,click: function(item){
+							$("#demo100").find("#classification").val(item.title)
+						}
+					});
+				}
+			});
+		});
+
+		function reset() {
+			$("#searchForm").resetForm();
+		}
+
+		function openDialog(title,url,width,height,target) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				content: url,
+				skin: 'three-btns',
+				btn: ['送审', '暂存', '关闭'],
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+		//打开对话框(查看)
+		function openDialogReportView(title,url,id,width,height){
+
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			$.ajax({
+				async: false,
+				url: "${ctx}/ruralProject/ruralProjectMessage/getReportExist?id="+id,
+				dataType: "json",
+				success: function (data) {
+					if(data.success){
+						top.layer.open({
+							type: 2,
+							skin: 'one-btn',
+							area: [width, height],
+							title: title,
+							maxmin: true, //开启最大化最小化按钮
+							content: url ,
+							btn: ['关闭'],
+							cancel: function(index){
+							}
+						});
+					}else{
+						top.layer.msg("该项目报告信息已删除!", {icon: 0});
+						window.location.reload();
+					}
+				}
+			});
+
+		}
+		function openDialogre(title,url,width,height,target,buttons) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			var split = buttons.split(",");
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				skin: 'three-btns',
+				content: url,
+				btn: split,
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					if(split.length==2){return}
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+
+		function saveClick() {
+			$("#attachment_file").click();
+		}
+
+		function insertTitle(tValue){
+			var files = $("#attachment_file")[0].files;
+
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachmentId = "";
+				var attachmentFlag = "100";
+				console.log(file);
+				var timestamp=new Date().getTime();
+				var storeAs = "collectAccessory";
+				var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+				var divId = "_attachment";
+				$("#addFile"+divId).show();
+				fileCollectAccessory(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+		}
+		function openBill2(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					inputForm.attr("action","${ctx}/collectAccessory/collectAccessory/saveGeCollectAccessory");//表单提交成功后,从服务器返回的url在当前tab中展示
+					var $document = iframeWin.contentWindow.document;
+					var s=iframeWin.contentWindow.formSubmit2($document,formId,index,tableId);
+					top.layer.close(index);
+					setTimeout(function(){location.reload();},500);
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+		function openBill3(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li class="active"><a href="${ctx}/companyYear/companyYear/list">年报</a></li>
+					<li><a href="${ctx}/companyYear/companyYear/monthList">月报</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="statementInfo" action="${ctx}/companyYear/companyYear/list" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<input id="toflag" name="toflag" type="hidden" value="1"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">描述:</label>
+							<div class="layui-input-block">
+								<form:input path="title" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">上传人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="collectUserId" name="collectUserId" value="${collectAccessoryInfo.collectUserId}" labelName="uploadUserName" labelValue="${collectAccessoryInfo.uploadUserName}" cssStyle="background-color: #fff"
+												title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>--%>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="search()">查询</button>
+									<button id="searchReset" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+								</div>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">收藏分类:</label>
+							<div class="layui-input-block with-icon">
+								<span style="width: 100%;text-align: left;position: relative;" id="demo100">
+									<input htmlEscape="false" name="classification" id="classification" maxlength="60" class="form-control layui-input" value="${collectAccessoryInfo.classification}"/>
+								</span>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">文件描述:</label>
+							<div class="layui-input-block">
+								<form:input path="fileDescription" htmlEscape="false" maxlength="250"  class=" form-control  layui-input"/>
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<div class="layui-btn-group">
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+					<div style="clear: both;"></div>
+				</div>
+				<%--<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>--%>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script>
+
+	layui.use('table', function(){
+		layui.table.render({
+			limit:${ page.pageSize }
+			,id:"checkboxTable"
+			,elem: '#contentTable1'
+			,page: false
+			,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>";
+					}}
+				,{field:'createDate',align:'center', title: '统计时间',  width:150}
+			]]
+			,data: [
+				<c:if test="${ not empty page.list}">
+				<c:forEach items="${page.list}" var="statementInfo" varStatus="index">
+				<c:if test="${index.index != 0}">,</c:if>
+				{
+					"index":"${index.index+1}"
+					,"id":"${statementInfo.id}"
+					,"title":"${statementInfo.title}"
+					,"createDate":"<fmt:formatDate value="${statementInfo.createDate}" pattern="yyyy-MM-dd"/>"
+				}
+				</c:forEach>
+				</c:if>
+			]
+		});
+	})
+
+	resizeListTable();
+	$("a").on("click",addLinkVisied);
+</script>
+<script>
+	resizeListWindow2();
+	$(window).resize(function(){
+		resizeListWindow2();
+	});
+</script>
+</body>
+</html>

+ 459 - 0
src/main/webapp/webpage/modules/notifyStatement/filing/FilingMonthStatement.jsp

@@ -0,0 +1,459 @@
+<%@ 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}/layui/layuidown.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			layui.use(['dropdown', 'util', 'layer'], function () {
+				var form = layui.form;
+			})
+			//搜索框收放
+			$('#moresee').click(function(){
+				if($('#moresees').is(':visible'))
+				{
+					$('#moresees').slideUp(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+				}else{
+					$('#moresees').slideDown(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+				}
+			});
+			laydate.render({
+				elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			$.ajax({
+				type : "POST",
+				url : "${ctx}/collectAccessory/collectAccessory/classificationList",
+				//请求成功
+				success : function(result) {
+					var str=jQuery.parseJSON(result);
+					//分类菜单
+					layui.dropdown.render({
+						elem: '#demo100'
+						,style: 'width: 380px;'
+						,data:str
+						,click: function(item){
+							$("#demo100").find("#classification").val(item.title)
+						}
+					});
+				}
+			});
+		});
+
+		function reset() {
+			$("#searchForm").resetForm();
+		}
+
+		function openDialog(title,url,width,height,target) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				content: url,
+				skin: 'three-btns',
+				btn: ['送审', '暂存', '关闭'],
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+		//打开对话框(查看)
+		function openDialogReportView(title,url,id,width,height){
+
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			$.ajax({
+				async: false,
+				url: "${ctx}/ruralProject/ruralProjectMessage/getReportExist?id="+id,
+				dataType: "json",
+				success: function (data) {
+					if(data.success){
+						top.layer.open({
+							type: 2,
+							skin: 'one-btn',
+							area: [width, height],
+							title: title,
+							maxmin: true, //开启最大化最小化按钮
+							content: url ,
+							btn: ['关闭'],
+							cancel: function(index){
+							}
+						});
+					}else{
+						top.layer.msg("该项目报告信息已删除!", {icon: 0});
+						window.location.reload();
+					}
+				}
+			});
+
+		}
+		function openDialogre(title,url,width,height,target,buttons) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			var split = buttons.split(",");
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				skin: 'three-btns',
+				content: url,
+				btn: split,
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					if(split.length==2){return}
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+
+		function saveClick() {
+			$("#attachment_file").click();
+		}
+
+		function insertTitle(tValue){
+			var files = $("#attachment_file")[0].files;
+
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachmentId = "";
+				var attachmentFlag = "100";
+				console.log(file);
+				var timestamp=new Date().getTime();
+				var storeAs = "collectAccessory";
+				var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+				var divId = "_attachment";
+				$("#addFile"+divId).show();
+				fileCollectAccessory(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+		}
+		function openBill2(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					inputForm.attr("action","${ctx}/collectAccessory/collectAccessory/saveGeCollectAccessory");//表单提交成功后,从服务器返回的url在当前tab中展示
+					var $document = iframeWin.contentWindow.document;
+					var s=iframeWin.contentWindow.formSubmit2($document,formId,index,tableId);
+					top.layer.close(index);
+					setTimeout(function(){location.reload();},500);
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+		function openBill3(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<%--<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/companyYear/companyYear/officeYearList">年报</a></li>
+					<li class="active"><a href="${ctx}/companyYear/companyYear/officeMonthList">月报</a></li>
+				</ul>
+			</div>
+		</div>--%>
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="statementInfo" action="${ctx}/companyYear/companyYear/filingMonthList" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<input id="toflag" name="toflag" type="hidden" value="1"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">描述:</label>
+							<div class="layui-input-block">
+								<form:input path="title" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">上传人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="collectUserId" name="collectUserId" value="${collectAccessoryInfo.collectUserId}" labelName="uploadUserName" labelValue="${collectAccessoryInfo.uploadUserName}" cssStyle="background-color: #fff"
+												title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>--%>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="search()">查询</button>
+									<button id="searchReset" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+								</div>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">收藏分类:</label>
+							<div class="layui-input-block with-icon">
+								<span style="width: 100%;text-align: left;position: relative;" id="demo100">
+									<input htmlEscape="false" name="classification" id="classification" maxlength="60" class="form-control layui-input" value="${collectAccessoryInfo.classification}"/>
+								</span>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">文件描述:</label>
+							<div class="layui-input-block">
+								<form:input path="fileDescription" htmlEscape="false" maxlength="250"  class=" form-control  layui-input"/>
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<div class="layui-btn-group">
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+					<div style="clear: both;"></div>
+				</div>
+				<%--<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>--%>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script>
+
+	layui.use('table', function(){
+		layui.table.render({
+			limit:${ page.pageSize }
+			,id:"checkboxTable"
+			,elem: '#contentTable1'
+			,page: false
+			,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}/projectFilingBatch/projectFilingBatchInfo/list?auditBeginDate=" + d.auditBeginDate +"&auditEndDate=" + d.auditEndDate +"','95%', '95%')\">" + d.title + "</a>";
+					}}
+				,{field:'createDate',align:'center', title: '统计时间',  width:150}
+			]]
+			,data: [
+				<c:if test="${ not empty page.list}">
+				<c:forEach items="${page.list}" var="statementInfo" varStatus="index">
+				<c:if test="${index.index != 0}">,</c:if>
+				{
+					"index":"${index.index+1}"
+					,"id":"${statementInfo.id}"
+					,"title":"${statementInfo.title}"
+					,"createDate":"<fmt:formatDate value="${statementInfo.createDate}" pattern="yyyy-MM-dd"/>"
+					,"auditBeginDate":"${statementInfo.startDate}"
+					,"auditEndDate":"${statementInfo.endDate}"
+				}
+				</c:forEach>
+				</c:if>
+			]
+		});
+	})
+
+	resizeListTable();
+	$("a").on("click",addLinkVisied);
+</script>
+<script>
+	resizeListWindow2();
+	$(window).resize(function(){
+		resizeListWindow2();
+	});
+</script>
+</body>
+</html>

+ 457 - 0
src/main/webapp/webpage/modules/notifyStatement/officeLevel/OfficeLevelMonthStatement.jsp

@@ -0,0 +1,457 @@
+<%@ 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}/layui/layuidown.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			layui.use(['dropdown', 'util', 'layer'], function () {
+				var form = layui.form;
+			})
+			//搜索框收放
+			$('#moresee').click(function(){
+				if($('#moresees').is(':visible'))
+				{
+					$('#moresees').slideUp(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+				}else{
+					$('#moresees').slideDown(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+				}
+			});
+			laydate.render({
+				elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			$.ajax({
+				type : "POST",
+				url : "${ctx}/collectAccessory/collectAccessory/classificationList",
+				//请求成功
+				success : function(result) {
+					var str=jQuery.parseJSON(result);
+					//分类菜单
+					layui.dropdown.render({
+						elem: '#demo100'
+						,style: 'width: 380px;'
+						,data:str
+						,click: function(item){
+							$("#demo100").find("#classification").val(item.title)
+						}
+					});
+				}
+			});
+		});
+
+		function reset() {
+			$("#searchForm").resetForm();
+		}
+
+		function openDialog(title,url,width,height,target) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				content: url,
+				skin: 'three-btns',
+				btn: ['送审', '暂存', '关闭'],
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+		//打开对话框(查看)
+		function openDialogReportView(title,url,id,width,height){
+
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			$.ajax({
+				async: false,
+				url: "${ctx}/ruralProject/ruralProjectMessage/getReportExist?id="+id,
+				dataType: "json",
+				success: function (data) {
+					if(data.success){
+						top.layer.open({
+							type: 2,
+							skin: 'one-btn',
+							area: [width, height],
+							title: title,
+							maxmin: true, //开启最大化最小化按钮
+							content: url ,
+							btn: ['关闭'],
+							cancel: function(index){
+							}
+						});
+					}else{
+						top.layer.msg("该项目报告信息已删除!", {icon: 0});
+						window.location.reload();
+					}
+				}
+			});
+
+		}
+		function openDialogre(title,url,width,height,target,buttons) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			var split = buttons.split(",");
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				skin: 'three-btns',
+				content: url,
+				btn: split,
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					if(split.length==2){return}
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+
+		function saveClick() {
+			$("#attachment_file").click();
+		}
+
+		function insertTitle(tValue){
+			var files = $("#attachment_file")[0].files;
+
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachmentId = "";
+				var attachmentFlag = "100";
+				console.log(file);
+				var timestamp=new Date().getTime();
+				var storeAs = "collectAccessory";
+				var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+				var divId = "_attachment";
+				$("#addFile"+divId).show();
+				fileCollectAccessory(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+		}
+		function openBill2(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					inputForm.attr("action","${ctx}/collectAccessory/collectAccessory/saveGeCollectAccessory");//表单提交成功后,从服务器返回的url在当前tab中展示
+					var $document = iframeWin.contentWindow.document;
+					var s=iframeWin.contentWindow.formSubmit2($document,formId,index,tableId);
+					top.layer.close(index);
+					setTimeout(function(){location.reload();},500);
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+		function openBill3(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li><a href="${ctx}/companyYear/companyYear/officeYearList">年报</a></li>
+					<li class="active"><a href="${ctx}/companyYear/companyYear/officeMonthList">月报</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="statementInfo" action="${ctx}/companyYear/companyYear/officeMonthList" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<input id="toflag" name="toflag" type="hidden" value="1"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">描述:</label>
+							<div class="layui-input-block">
+								<form:input path="title" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">上传人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="collectUserId" name="collectUserId" value="${collectAccessoryInfo.collectUserId}" labelName="uploadUserName" labelValue="${collectAccessoryInfo.uploadUserName}" cssStyle="background-color: #fff"
+												title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>--%>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="search()">查询</button>
+									<button id="searchReset" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+								</div>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">收藏分类:</label>
+							<div class="layui-input-block with-icon">
+								<span style="width: 100%;text-align: left;position: relative;" id="demo100">
+									<input htmlEscape="false" name="classification" id="classification" maxlength="60" class="form-control layui-input" value="${collectAccessoryInfo.classification}"/>
+								</span>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">文件描述:</label>
+							<div class="layui-input-block">
+								<form:input path="fileDescription" htmlEscape="false" maxlength="250"  class=" form-control  layui-input"/>
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<div class="layui-btn-group">
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+					<div style="clear: both;"></div>
+				</div>
+				<%--<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>--%>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script>
+
+	layui.use('table', function(){
+		layui.table.render({
+			limit:${ page.pageSize }
+			,id:"checkboxTable"
+			,elem: '#contentTable1'
+			,page: false
+			,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/officeForm?id=" + d.id +"','95%', '95%')\">" + d.title + "</a>";
+					}}
+				,{field:'createDate',align:'center', title: '统计时间',  width:150}
+			]]
+			,data: [
+				<c:if test="${ not empty page.list}">
+				<c:forEach items="${page.list}" var="statementInfo" varStatus="index">
+				<c:if test="${index.index != 0}">,</c:if>
+				{
+					"index":"${index.index+1}"
+					,"id":"${statementInfo.id}"
+					,"title":"${statementInfo.title}"
+					,"createDate":"<fmt:formatDate value="${statementInfo.createDate}" pattern="yyyy-MM-dd"/>"
+				}
+				</c:forEach>
+				</c:if>
+			]
+		});
+	})
+
+	resizeListTable();
+	$("a").on("click",addLinkVisied);
+</script>
+<script>
+	resizeListWindow2();
+	$(window).resize(function(){
+		resizeListWindow2();
+	});
+</script>
+</body>
+</html>

+ 457 - 0
src/main/webapp/webpage/modules/notifyStatement/officeLevel/OfficeLevelYearStatement.jsp

@@ -0,0 +1,457 @@
+<%@ 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}/layui/layuidown.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			layui.use(['dropdown', 'util', 'layer'], function () {
+				var form = layui.form;
+			})
+			//搜索框收放
+			$('#moresee').click(function(){
+				if($('#moresees').is(':visible'))
+				{
+					$('#moresees').slideUp(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+				}else{
+					$('#moresees').slideDown(0,resizeListWindow2);
+					$('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+				}
+			});
+			laydate.render({
+				elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+			});
+			$.ajax({
+				type : "POST",
+				url : "${ctx}/collectAccessory/collectAccessory/classificationList",
+				//请求成功
+				success : function(result) {
+					var str=jQuery.parseJSON(result);
+					//分类菜单
+					layui.dropdown.render({
+						elem: '#demo100'
+						,style: 'width: 380px;'
+						,data:str
+						,click: function(item){
+							$("#demo100").find("#classification").val(item.title)
+						}
+					});
+				}
+			});
+		});
+
+		function reset() {
+			$("#searchForm").resetForm();
+		}
+
+		function openDialog(title,url,width,height,target) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				content: url,
+				skin: 'three-btns',
+				btn: ['送审', '暂存', '关闭'],
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+		//打开对话框(查看)
+		function openDialogReportView(title,url,id,width,height){
+
+
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			$.ajax({
+				async: false,
+				url: "${ctx}/ruralProject/ruralProjectMessage/getReportExist?id="+id,
+				dataType: "json",
+				success: function (data) {
+					if(data.success){
+						top.layer.open({
+							type: 2,
+							skin: 'one-btn',
+							area: [width, height],
+							title: title,
+							maxmin: true, //开启最大化最小化按钮
+							content: url ,
+							btn: ['关闭'],
+							cancel: function(index){
+							}
+						});
+					}else{
+						top.layer.msg("该项目报告信息已删除!", {icon: 0});
+						window.location.reload();
+					}
+				}
+			});
+
+		}
+		function openDialogre(title,url,width,height,target,buttons) {
+
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			var split = buttons.split(",");
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				skin: 'three-btns',
+				content: url,
+				btn: split,
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				btn2:function(index,layero){
+					if(split.length==2){return}
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+
+		function saveClick() {
+			$("#attachment_file").click();
+		}
+
+		function insertTitle(tValue){
+			var files = $("#attachment_file")[0].files;
+
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachmentId = "";
+				var attachmentFlag = "100";
+				console.log(file);
+				var timestamp=new Date().getTime();
+				var storeAs = "collectAccessory";
+				var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+				var divId = "_attachment";
+				$("#addFile"+divId).show();
+				fileCollectAccessory(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+		}
+		function openBill2(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					inputForm.attr("action","${ctx}/collectAccessory/collectAccessory/saveGeCollectAccessory");//表单提交成功后,从服务器返回的url在当前tab中展示
+					var $document = iframeWin.contentWindow.document;
+					var s=iframeWin.contentWindow.formSubmit2($document,formId,index,tableId);
+					top.layer.close(index);
+					setTimeout(function(){location.reload();},500);
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+		function openBill3(title,url,width,height,target,formId,tableId){
+			var rows = $(this).parent().prevAll().length + 1;
+			var frameIndex = parent.layer.getFrameIndex(window.name);
+			var urls = url+"&index="+frameIndex;
+			if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+				width='auto';
+				height='auto';
+			}else{//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				skin:"two-btns",
+				maxmin: false, //开启最大化最小化按钮
+				content: urls ,
+				btn: ['确定','关闭'],
+				yes: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(1) ){
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}
+				},
+				cancel: function(index){
+				},
+				end:function () {
+					//var reviewFee = $("#reviewFee").val();
+					//$("#"+tableId).load(location.href+"&reviewFee="+reviewFee + " #"+tableId);
+					//location.reload();
+				}
+			});
+		}
+
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+				<ul class="list-tabs" >
+					<li class="active"><a href="${ctx}/companyYear/companyYear/officeYearList">年报</a></li>
+					<li><a href="${ctx}/companyYear/companyYear/officeMonthList">月报</a></li>
+				</ul>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="statementInfo" action="${ctx}/companyYear/companyYear/officeYearList" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<input id="toflag" name="toflag" type="hidden" value="1"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">描述:</label>
+							<div class="layui-input-block">
+								<form:input path="title" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">上传人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="collectUserId" name="collectUserId" value="${collectAccessoryInfo.collectUserId}" labelName="uploadUserName" labelValue="${collectAccessoryInfo.uploadUserName}" cssStyle="background-color: #fff"
+												title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>--%>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="search()">查询</button>
+									<button id="searchReset" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+								</div>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">收藏分类:</label>
+							<div class="layui-input-block with-icon">
+								<span style="width: 100%;text-align: left;position: relative;" id="demo100">
+									<input htmlEscape="false" name="classification" id="classification" maxlength="60" class="form-control layui-input" value="${collectAccessoryInfo.classification}"/>
+								</span>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">文件描述:</label>
+							<div class="layui-input-block">
+								<form:input path="fileDescription" htmlEscape="false" maxlength="250"  class=" form-control  layui-input"/>
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<div class="layui-btn-group">
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+					<div style="clear: both;"></div>
+				</div>
+				<%--<div id="addFile_attachment" style="display: none" class="upload-progress">
+					<span id="fileName_attachment" ></span>
+					<b><span id="baifenbi_attachment" ></span></b>
+					<div class="progress">
+						<div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+						</div>
+					</div>
+				</div>--%>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script>
+
+	layui.use('table', function(){
+		layui.table.render({
+			limit:${ page.pageSize }
+			,id:"checkboxTable"
+			,elem: '#contentTable1'
+			,page: false
+			,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/officeForm?id=" + d.id +"','95%', '95%')\">" + d.title + "</a>";
+					}}
+				,{field:'createDate',align:'center', title: '统计时间',  width:150}
+			]]
+			,data: [
+				<c:if test="${ not empty page.list}">
+				<c:forEach items="${page.list}" var="statementInfo" varStatus="index">
+				<c:if test="${index.index != 0}">,</c:if>
+				{
+					"index":"${index.index+1}"
+					,"id":"${statementInfo.id}"
+					,"title":"${statementInfo.title}"
+					,"createDate":"<fmt:formatDate value="${statementInfo.createDate}" pattern="yyyy-MM-dd"/>"
+				}
+				</c:forEach>
+				</c:if>
+			]
+		});
+	})
+
+	resizeListTable();
+	$("a").on("click",addLinkVisied);
+</script>
+<script>
+	resizeListWindow2();
+	$(window).resize(function(){
+		resizeListWindow2();
+	});
+</script>
+</body>
+</html>

+ 28 - 1
src/main/webapp/webpage/modules/projectFilingBatch/projectFilingBatchList.jsp

@@ -41,6 +41,18 @@
                 type : 'date'
                 , trigger: 'click'
             });
+            laydate.render({
+                elem: '#auditBeginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+            });
+            laydate.render({
+                elem: '#auditEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+            });
         });
 
         function reset() {
@@ -287,6 +299,19 @@
                                 </input>
                             </div>
                         </div>
+
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">审核通过时间:</label>
+                            <div class="layui-input-block readOnlyFFF">
+                                <input id="auditBeginDate" placeholder="开始时间" name="auditBeginDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectFilingBatch.auditBeginDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+                                <span class="group-sep">-</span>
+                                <input id="auditEndDate" placeholder="结束时间" name="auditEndDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${projectFilingBatch.auditEndDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+                            </div>
+                        </div>
                         <div class="layui-item query athird">
                             <label class="layui-form-label">创建人:</label>
                             <div class="layui-input-block  with-icon">
@@ -363,6 +388,8 @@
 
             var beginDate = $("#beginDate").val();
             var endDate = $("#endDate").val();
+            var auditBeginDate = $("#auditBeginDate").val();
+            var auditEndDate = $("#auditEndDate").val();
             var createId = $("#createId").val();
             var createName = $("#createName").val();
             layer.load(2);
@@ -374,7 +401,7 @@
                 treeDefaultClose: true,//是否默认折叠
                 treeLinkage: true,//父级展开时是否自动展开所有子级
                 elem: '#permissionTable',
-                url: '${ctx}/projectFilingBatch/projectFilingBatchInfo/getFilingBatchList?filingName='+filingName+'&pageNo=${page.pageNo}&filingStatus='+filingStatus+'&beginDate='+beginDate+'&endDate='+endDate+'&createId='+createId+'&createName='+createName+'&filingBatch='+filingBatch,
+                url: '${ctx}/projectFilingBatch/projectFilingBatchInfo/getFilingBatchList?filingName='+filingName+'&pageNo=${page.pageNo}&filingStatus='+filingStatus+'&beginDate='+beginDate+'&endDate='+endDate+'&auditBeginDate='+auditBeginDate+'&auditEndDate='+auditEndDate+'&createId='+createId+'&createName='+createName+'&filingBatch='+filingBatch,
                 page: false,
                 cols: [[
                     /*{type: 'numbers', align:'center', title: '序号' ,width:80},*/

+ 2 - 1
src/main/webapp/webpage/modules/workreimbursement/workReimbursementList.jsp

@@ -334,8 +334,9 @@
                             xml += "<a href=\"${ctx}/workreimbursement/workReimbursement/cancelInvalidate?id=" + d.id + "\" onclick=\"return confirmx('确认要强制撤回?', this.href)\"   class=\"layui-btn layui-btn-xs layui-bg-red\"> 撤回</a>";
                         if(d.canedit1 != undefined && d.canedit1 == "1")
                             xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改报销单', '${ctx}/workReimbursementNew/workReimbursementNew/form?id="+ d.id + "','95%','95%')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" > 修改</a>";
-                        if(<%=admin%> && d.status == "5")
+                        if(<%=admin%> && (d.status == "5" || d.status == "2")){
                             xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogreAdminModify('管理员修改报销单', '${ctx}/workReimbursementNew/workReimbursementNew/form?id="+ d.id + "','95%','95%')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" > 修改</a>";
+                        }
                         if(d.canedit2 != undefined && d.canedit2 == "1")
                             //判断是什么流程(新旧流程)
                             if(d.notifyFlag != undefined && d.notifyFlag !=null && "" != d.notifyFlag && d.notifyFlag == 2){

+ 9 - 0
src/main/webapp/webpage/modules/workstaff/workStaffBasicInfoForm.jsp

@@ -250,6 +250,7 @@
                                         }
 
                                         $("#roleStr").val(lists);
+                                        $("#roleIdStr").val(lists);
                                         xmSelect.render({
                                             el: '#roleId',
                                             language: 'zn',
@@ -763,6 +764,13 @@
                         <form:input placeholder="请输入最高学历" path="highestEducation" htmlEscape="false" class="form-control layui-input required" maxlength="64"/>
                     </div>
                 </div>
+
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>区域备注:</label>
+                    <div class="layui-input-block ">
+                        <form:input placeholder="请输入区域备注" path="areaRemark" htmlEscape="false" class="form-control layui-input" maxlength="64"/>
+                    </div>
+                </div>
                 <div class="layui-item layui-col-sm6 lw7">
                     <label class="layui-form-label double-line"><span class="require-item">*</span>是否获取其他服务待办:</label>
                     <div class="layui-input-block">
@@ -2314,6 +2322,7 @@
                                 }
 
                                 $("#roleStr").val(lists);
+                                $("#roleIdStr").val(lists);
                                 xmSelect.render({
                                     el: '#roleId',
                                     language: 'zn',