Jelajahi Sumber

管理员撤回修改批量归档,撤回项目管理

sangwenwei 5 bulan lalu
induk
melakukan
5fe2644380
19 mengubah file dengan 1138 tambahan dan 25 penghapusan
  1. 37 0
      src/main/java/com/jeeplus/modules/projectFilingBatch/service/ProjectFilingBatchService.java
  2. 106 0
      src/main/java/com/jeeplus/modules/projectFilingBatch/web/ProjectFilingBatchController.java
  3. 3 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/ProjectPaperFilingDao.java
  4. 15 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageDao.java
  5. 55 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectAdminRevoke.java
  6. 29 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/ProjectPaperFilingService.java
  7. 37 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageNewTwoService.java
  8. 99 4
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java
  9. 21 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/ProjectPaperFilingController.java
  10. 41 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageController.java
  11. 46 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java
  12. 29 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageNewTwoController.java
  13. 1 0
      src/main/resources/mappings/modules/projectGuidang/ProjectFilingBatchDao.xml
  14. 15 0
      src/main/resources/mappings/modules/ruralprojectrecords/ProjectPaperFilingDao.xml
  15. 26 2
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml
  16. 463 0
      src/main/webapp/webpage/modules/projectFilingBatch/projectFilingBatchAdminUpdate.jsp
  17. 84 19
      src/main/webapp/webpage/modules/projectFilingBatch/projectFilingBatchList.jsp
  18. 15 0
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectMessageList.jsp
  19. 16 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList.jsp

+ 37 - 0
src/main/java/com/jeeplus/modules/projectFilingBatch/service/ProjectFilingBatchService.java

@@ -175,7 +175,17 @@ public class ProjectFilingBatchService extends CrudService<ProjectFilingBatchDao
         map.put("data",dataList);
         return map;
     }
+    @Transactional(readOnly = false)
+    public List<ProjectFilingbatchRelation> getProjectRelation(String id){
+        List<ProjectFilingbatchRelation> projectFilingbatchRelations = projectFilingbatchRelationDao.getProjectRelation(id);
+        return projectFilingbatchRelations;
+    }
 
+    @Transactional(readOnly = false)
+    public List<ProjectFilingBatchProInfo> getListByFilingBatchId(String id){
+        List<ProjectFilingBatchProInfo> attachmentList = projectFilingBatchProInfoDao.getListByFilingBatchId(id);
+        return attachmentList;
+    }
 
 
     @Transactional(readOnly = false)
@@ -782,6 +792,17 @@ public class ProjectFilingBatchService extends CrudService<ProjectFilingBatchDao
             actTaskService.endProcessInstance(projectFilingBatch.getProcessinstanceId(), "项目归档批次-撤回");
         }
     }
+
+    @Transactional(readOnly = false)
+    public void adminRevoke(ProjectFilingBatch projectFilingBatch) throws Exception {
+        ProjectFilingBatch filingBatch = new ProjectFilingBatch();
+        filingBatch.setId(projectFilingBatch.getId());
+        filingBatch.setFilingStatus(ProjectStatusEnum.TSTORE.getValue());
+        filingBatch.preUpdate();
+        filingBatch.setProcessinstanceId("");
+        dao.updateProcessIdAndStatus(filingBatch);
+    }
+
     @Transactional(readOnly = false)
     public Integer updateByid(ProjectFilingbatchRelation filingbatchRelation){
         return projectFilingbatchRelationDao.update(filingbatchRelation);
@@ -1388,4 +1409,20 @@ public class ProjectFilingBatchService extends CrudService<ProjectFilingBatchDao
     public void deleteById(String id){
         proInfoDao.deleteById(id);
     }
+
+    @Transactional(readOnly = false)
+    public void updateBoxNum(ProjectFilingBatch projectFilingBatch) {
+
+        List<ProjectFilingbatchRelation> projectFilingbatchRelationList = projectFilingBatch.getProjectFilingbatchRelations();
+        for (ProjectFilingbatchRelation info: projectFilingbatchRelationList) {
+            if(StringUtils.isNotBlank(info.getId())){
+                if(4 == info.getStatus()){
+                    info.setDelFlag("1");
+                    info.setBoxNum("");
+                    info.setReBoxNum("");
+                }
+                this.updateByid(info);
+            }
+        }
+    }
 }

+ 106 - 0
src/main/java/com/jeeplus/modules/projectFilingBatch/web/ProjectFilingBatchController.java

@@ -9,8 +9,10 @@ import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.projectFilingBatch.dao.ProjectFilingBatchProInfoDao;
 import com.jeeplus.modules.projectFilingBatch.entity.ProjectFilingBatch;
 import com.jeeplus.modules.projectFilingBatch.entity.ProjectFilingBatchImportInfo;
+import com.jeeplus.modules.projectFilingBatch.entity.ProjectFilingBatchProInfo;
 import com.jeeplus.modules.projectFilingBatch.entity.ProjectFilingbatchRelation;
 import com.jeeplus.modules.projectFilingBatch.service.ProjectFilingBatchService;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
@@ -268,6 +270,89 @@ public class ProjectFilingBatchController extends BaseController {
         model.addAttribute("projectFilingBatch", projectFilingBatch);
         return "modules/projectFilingBatch/projectFilingBatchForm";
     }
+
+    @RequestMapping(value = "updateForm")
+    public String updateForm(ProjectFilingBatch projectFilingBatch, Model model) {
+        ProjectFilingBatch projectFiling = projectFilingBatchService.get(projectFilingBatch.getId());
+        //获取详细信息
+        List<RuralProjectRecords> ruralProjectRecordsList = new ArrayList<>();
+        List<ProjectFilingBatch> projectFilingBatches = projectFilingBatchService.getProjectFilingBatchRelationList(projectFiling.getId());
+        //查询批次下所有数据
+        List<ProjectFilingBatchProInfo> attachmentList = projectFilingBatchService.getListByFilingBatchId(projectFiling.getId());
+
+        for (ProjectFilingBatch filingBatch : projectFilingBatches) {
+            RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(filingBatch.getProjectId());
+            ruralProjectRecords.setProjectFilingBatchesId(ruralProjectRecords.getId());
+            ruralProjectRecords.setProjectReportNumber(filingBatch.getNumber());
+            ruralProjectRecords.setId(filingBatch.getRelationId());
+            ruralProjectRecords.setParentId("0");
+            if(5 == filingBatch.getFilingStatus() || 4 == filingBatch.getFilingStatus()){
+                if(1 == filingBatch.getRelationdelFlag()){
+                    ruralProjectRecords.setBoxNum(filingBatch.getBoxNum());
+                    ruralProjectRecords.setDelFlag(filingBatch.getStatus().toString());
+                }else{
+                    ruralProjectRecords.setBoxNum(filingBatch.getBoxNum());
+                    ruralProjectRecords.setDelFlag(filingBatch.getStatus().toString());
+                }
+            }
+//            ruralProjectRecords.setBoxNum(filingBatch.getBoxNum());
+//            ruralProjectRecords.setProjectRecordStatus(filingBatch.getStatus());
+            ruralProjectRecordsList.add(ruralProjectRecords);
+
+            //项目名称不为空则进行所有项目的查询和处理
+            for (ProjectFilingBatchProInfo info : attachmentList) {
+                if (info.getProId().equals(filingBatch.getProjectId())) {
+                    RuralProjectRecords treeData = new RuralProjectRecords();
+                    //将界面需要展示数据放入类中
+                    //项目编号
+                    treeData.setProjectId(info.getProInfoType());
+                    //报告号
+                    treeData.setProjectReportNumber(info.getProInfoName());
+                    //项目名称
+                    treeData.setFilingName("");
+                    //案卷号
+                    treeData.setBoxNum("");
+                    treeData.setParentId(ruralProjectRecords.getId());
+                    ruralProjectRecordsList.add(treeData);
+                }
+
+            }
+        }
+        List<ProjectFilingbatchRelation> projectFilingbatchRelations = projectFilingBatchService.getProjectRelation(projectFiling.getId());
+        projectFilingBatch.setProjectFilingbatchRelations(projectFilingbatchRelations);
+        //获取归档人
+        projectFilingBatch.setCreateBy(UserUtils.get(projectFilingBatch.getCreateBy().getId()));
+        //项目信息
+        projectFilingBatch.setProject(ruralProjectRecordsList);
+        model.addAttribute("projectFilingBatch", projectFilingBatch);
+        return "modules/projectFilingBatch/projectFilingBatchAdminUpdate";
+    }
+
+    /**
+     * 管理员修改
+     * @param projectFilingBatch
+     * @param model
+     * @param redirectAttributes
+     * @param saveAuditFlag
+     * @param proId
+     * @param proInfos
+     * @param flags
+     * @return
+     */
+    @RequestMapping("adminUpdate")
+    public String adminUpdate(ProjectFilingBatch projectFilingBatch, Model model,
+                            RedirectAttributes redirectAttributes,Integer saveAuditFlag,
+                            @RequestParam(value = "proId",required = false) String[] proId,  @RequestParam(value = "proInfos",required = false)String[] proInfos, @RequestParam(value = "flags",required = false)String[] flags)  {
+        try {
+            projectFilingBatchService.updateBoxNum(projectFilingBatch);
+
+        }catch (Exception e){
+            addMessage(redirectAttributes, "归档批次归档修改失败");
+        }
+
+        return "redirect:"+Global.getAdminPath()+"/projectFilingBatch/projectFilingBatchInfo/?repage";
+    }
+
     @RequiresPermissions(value = {"projectFilingBatch:projectFilingBatchInfo:add", "projectFilingBatch:projectFilingBatchInfo:edit"}, logical = Logical.OR)
     @ResponseBody
     @RequestMapping(value = "formTwo")
@@ -481,6 +566,27 @@ public class ProjectFilingBatchController extends BaseController {
         }
         return "redirect:" + Global.getAdminPath() + "/projectFilingBatch/projectFilingBatchInfo/?repage";
     }
+    /*8
+    管理员撤回
+     */
+    @RequestMapping(value = "adminRevoke")
+    public String adminRevoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String processInstanceId = requestMap.get("processInstanceId");
+        String id = requestMap.get("id");
+        //获取项目状态
+        Integer filingStatus= Integer.parseInt(requestMap.get("filingStatus"));
+        try {
+            ProjectFilingBatch projectFilingBatch = projectFilingBatchService.get(id);
+
+            projectFilingBatchService.adminRevoke(projectFilingBatch);
+            addMessage(redirectAttributes, "撤回该项目归档批次成功");
+        }catch (Exception e){
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该项目归档批次失败");
+        }
+        return "redirect:" + Global.getAdminPath() + "/projectFilingBatch/projectFilingBatchInfo/?repage";
+    }
     /**
      * 删除
      * @param projectFilingBatch

+ 3 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/ProjectPaperFilingDao.java

@@ -3,6 +3,7 @@ package com.jeeplus.modules.ruralprojectrecords.dao;
 import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.ProjectPaperFiling;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectAdminRevoke;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 
 /**
@@ -14,4 +15,6 @@ public interface ProjectPaperFilingDao extends CrudDao<ProjectPaperFiling> {
     void updatefileNum(ProjectPaperFiling paperFiling);
 
     ProjectPaperFiling findByProjectId(String projectId);
+    //管理员撤回A类纸质归档
+    void insertAdminRevoke(RuralProjectAdminRevoke ruralProjectAdminRevoke);
 }

+ 15 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageDao.java

@@ -7,6 +7,7 @@ import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.projectcontentinfo.entity.*;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectAdminRevoke;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectReportData;
 import com.jeeplus.modules.sys.entity.Area;
@@ -131,6 +132,14 @@ public interface RuralProjectMessageDao extends CrudDao<RuralProjectRecords> {
      */
     Integer updateReported(RuralProjectRecords projectRecords);
 
+
+    /**
+     * 项目上报-修改电子归档状态
+     * @param projectRecords
+     * @return
+     */
+    Integer updateOverRecordStatus(RuralProjectRecords projectRecords);
+
     /**
      * 项目上报
      * @param projectRecords
@@ -166,6 +175,12 @@ public interface RuralProjectMessageDao extends CrudDao<RuralProjectRecords> {
     ProjectReportData getInfoById(String id);
 
     /**
+     * 管理员撤回流程记录
+     * @param ruralProjectAdminRevoke
+     */
+    void insertAdminRevoke(RuralProjectAdminRevoke ruralProjectAdminRevoke);
+
+    /**
      * 查询开票信息
      * @param ruralProjectRecords
      * @return

+ 55 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectAdminRevoke.java

@@ -0,0 +1,55 @@
+package com.jeeplus.modules.ruralprojectrecords.entity;
+
+public class RuralProjectAdminRevoke {
+
+    private String id;
+
+    private String projectId;//关联项目id
+
+    private String processInstanceId; //撤回前的流程id
+
+    private String type; // 撤回类型(1:质量复核 2:报告签发 3:电子归档 4:纸质归档A)
+
+    private String projectType; //项目类型(1:工程 2:造价)
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    public void setProcessInstanceId(String processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+}

+ 29 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/ProjectPaperFilingService.java

@@ -3,6 +3,7 @@ package com.jeeplus.modules.ruralprojectrecords.service;
 import com.google.common.collect.Maps;
 import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.FreemarkerUtil;
+import com.jeeplus.common.utils.IdGen;
 import com.jeeplus.common.utils.ResponseUtil;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
@@ -13,6 +14,7 @@ import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
 import com.jeeplus.modules.ruralprojectrecords.dao.ProjectPaperFilingDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.ProjectPaperFiling;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectAdminRevoke;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
 import com.jeeplus.modules.sys.entity.Office;
@@ -275,6 +277,33 @@ public class ProjectPaperFilingService extends CrudService<ProjectPaperFilingDao
         paperFiling.preUpdate();
         save(paperFiling);
     }
+
+    /*8
+    管理员撤回
+     */
+    @Transactional(readOnly = false)
+    public void adminRevokePaperFiling(ProjectPaperFiling paperFiling,String view){
+
+        //将撤回前的流程进行保存
+        RuralProjectAdminRevoke ruralProjectAdminRevoke = new RuralProjectAdminRevoke();
+        ruralProjectAdminRevoke.setId(IdGen.uuid());
+        ruralProjectAdminRevoke.setProcessInstanceId(paperFiling.getProcessInstanceId());
+        ruralProjectAdminRevoke.setProjectId(paperFiling.getProjectId());
+        ruralProjectAdminRevoke.setType("4");
+        if (StringUtils.isNotBlank(view) && view.equals("filing")){
+            ruralProjectAdminRevoke.setProjectType("1");
+        }else {
+            ruralProjectAdminRevoke.setProjectType("2");
+
+        }
+        dao.insertAdminRevoke(ruralProjectAdminRevoke);
+
+        paperFiling.setStatus(1);
+        paperFiling.preUpdate();
+        paperFiling.setProcessInstanceId("");
+        save(paperFiling);
+    }
+
     /**
      * 审核
      * @param paperFiling

+ 37 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageNewTwoService.java

@@ -3,6 +3,7 @@ package com.jeeplus.modules.ruralprojectrecords.service;
 import com.google.common.collect.Maps;
 import com.google.gson.Gson;
 import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.IdGen;
 import com.jeeplus.common.utils.MyBeanUtils;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
@@ -29,6 +30,7 @@ import com.jeeplus.modules.projectreportnum.service.ProjectReportNumService;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectRecordsReportedDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectAdminRevoke;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectcontentinfo;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralReportConsultant;
@@ -1050,6 +1052,41 @@ public class RuralProjectMessageNewTwoService extends CrudService<RuralProjectMe
         }
 
     }
+
+    /**
+     * 管理员撤回报告签发
+     * @param projectReportData
+     * @param projectType
+     * @param type
+     */
+    @Transactional(readOnly = false)
+    public void adminRevokeProjectReportTwo(ProjectReportDataTwo projectReportData,String projectType,String type) {
+        try {
+
+            //将撤回前的流程进行保存
+            RuralProjectAdminRevoke ruralProjectAdminRevoke = new RuralProjectAdminRevoke();
+            ruralProjectAdminRevoke.setId(IdGen.uuid());
+            ruralProjectAdminRevoke.setProcessInstanceId(projectReportData.getProcessInstanceId());
+            ruralProjectAdminRevoke.setProjectId(projectReportData.getProject().getId());
+            ruralProjectAdminRevoke.setType(type);
+            ruralProjectAdminRevoke.setProjectType(projectType);
+            dao.insertAdminRevoke(ruralProjectAdminRevoke);
+
+            projectReportData.setStatus("1");
+            projectReportData.setProcessInstanceId("");
+            dao.updateRuralProjectReportDataTwo(projectReportData);
+
+        }catch (ActivitiObjectNotFoundException e){
+            System.err.println("报告撤销异常,因为这个流程已不存在!");
+            e.printStackTrace();
+            logger.error("Exception e:"+e);
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+            logger.error("Exception e:"+e);
+        }
+
+    }
     @Transactional(readOnly = false)
     public void update(ProjectReportDataTwo projectReportData) {
         projectReportData.preUpdate();

+ 99 - 4
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -8,10 +8,7 @@ import com.google.gson.Gson;
 import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
-import com.jeeplus.common.utils.Collections3;
-import com.jeeplus.common.utils.DateUtils;
-import com.jeeplus.common.utils.MenuStatusEnum;
-import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.*;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.historical.entity.HistoricalData;
@@ -1878,6 +1875,44 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         }
 
     }
+
+
+    /**
+     * 管理员撤回质量复核
+     * type (类型: 1:质量复核 2:报告签发 3:电子归档 4:纸质归档)
+     */
+    @Transactional(readOnly = false)
+    public void adminRevokeProjectReport(ProjectReportData projectReportData,String projectType,String type) {
+        try {
+            //将撤回前的流程进行保存
+            RuralProjectAdminRevoke ruralProjectAdminRevoke = new RuralProjectAdminRevoke();
+            ruralProjectAdminRevoke.setId(IdGen.uuid());
+            ruralProjectAdminRevoke.setProcessInstanceId(projectReportData.getProcessInstanceId());
+            ruralProjectAdminRevoke.setProjectId(projectReportData.getProject().getId());
+            ruralProjectAdminRevoke.setType(type);
+            ruralProjectAdminRevoke.setProjectType(projectType);
+            dao.insertAdminRevoke(ruralProjectAdminRevoke);
+
+            projectReportData.setStatus("1");
+            projectReportData.setProcessInstanceId("");
+            projectReportData.setAuditPassDate(null);
+            dao.updateRuralProjectReportData(projectReportData);
+            dao.updateFileStatus(projectReportData);
+
+
+
+        }catch (ActivitiObjectNotFoundException e){
+            System.err.println("报告撤销异常,因为这个流程已不存在!");
+            e.printStackTrace();
+            logger.error("Exception e:"+e);
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+            logger.error("Exception e:"+e);
+        }
+
+    }
+
     @Transactional(readOnly = false)
     public void update(ProjectReportData projectReportData) {
         projectReportData.preUpdate();
@@ -2089,6 +2124,24 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         }
         saveWorkattachments(projectReportRecord);
     }
+
+    @Transactional(readOnly = false)
+    public void saveAdmin(ProjectReportRecord projectReportRecord) {
+        ProjectReportData projectReportData =projectReportRecord.getReport();
+        projectReportData.setFileStatus("1");
+        //修改归档状态
+        projectReportDataService.updateFileStatus(projectReportData);
+        if (projectReportRecord.getIsNewRecord()){
+            projectReportRecord.preInsert();
+            projectReportRecord.setCreateDate(new Date());
+            dao.insertProjectReportRecord(projectReportRecord);
+        }else{
+            projectReportRecord.preUpdate();
+            //修改归档信息
+            dao.updateProjectReportRecord(projectReportRecord);
+        }
+        saveWorkattachments(projectReportRecord);
+    }
     @Transactional(readOnly = false)
     public void saveProjectMaterialDefectRecord(ProjectMaterialDefectRecord materialDefectRecord) {
 //        ProjectReportData projectReportData =materialDefectRecord.getReport();
@@ -2190,6 +2243,48 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         save(projectReportRecord);
 
     }
+
+
+    /**
+     * 管理员撤回归档:强制撤销
+     * @param projectReportRecord
+     */
+    @Transactional(readOnly = false)
+    public void revokeProjectReportRecord(ProjectReportRecord projectReportRecord,String projectType,String type){
+
+        //修改项目表中的电子归档状态
+        RuralProjectRecords records = new RuralProjectRecords();
+        records.setId(projectReportRecord.getReport().getProject().getId());
+
+        if (projectReportRecord.getStatus().equals("7")){
+            records.setOverRecordStatus(1);
+            records.setRecordState(6);
+        }else {
+            records.setOverRecordStatus(0);
+            records.setRecordState(null);
+        }
+        dao.updateOverRecordStatus(records);
+
+        //添加撤回记录
+        RuralProjectAdminRevoke ruralProjectAdminRevoke = new RuralProjectAdminRevoke();
+        ruralProjectAdminRevoke.setId(IdGen.uuid());
+        ruralProjectAdminRevoke.setProcessInstanceId(projectReportRecord.getProcessInstanceId());
+        ruralProjectAdminRevoke.setProjectId(projectReportRecord.getReport().getProject().getId());
+        ruralProjectAdminRevoke.setType(type);
+        ruralProjectAdminRevoke.setProjectType(projectType);
+        dao.insertAdminRevoke(ruralProjectAdminRevoke);
+
+        //修改归档状态
+        projectReportRecord.setStatus("1");
+        projectReportRecord.preUpdate();
+        projectReportRecord.setProcessInstanceId("");
+        saveAdmin(projectReportRecord);
+
+
+
+
+    }
+
     /**
      * 归档资料缺失说明:强制撤销
      * @param materialDefectRecord

+ 21 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/ProjectPaperFilingController.java

@@ -240,6 +240,27 @@ public class ProjectPaperFilingController extends BaseController {
         }
         return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
     }
+
+
+    /**
+     * 管理员纸质归档:强制撤回
+     */
+    @RequestMapping("adminRevokePaperFiling")
+    public String adminRevokePaperFiling(ProjectPaperFiling paperFiling,RedirectAttributes redirectAttributes){
+        String view=paperFiling.getView();
+        paperFiling = service.get(paperFiling.getId());
+        try {
+            service.adminRevokePaperFiling(paperFiling,view);
+        }catch (Exception e){
+            addMessage(redirectAttributes, "强制撤回纸质归档失败");
+            logger.error("强制撤回归档信息失败",e);
+        }
+        if (StringUtils.isNotBlank(view) && view.equals("filing")){
+            return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
+    }
+
     /**
      * 检查流程审批
      * @param paperFiling

+ 41 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageController.java

@@ -1245,6 +1245,30 @@ public class RuralCostProjectMessageController extends BaseController {
         return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
     }
 
+    /**
+     * 管理员撤回质量复核
+     * @param request
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "adminRevokeProjectReport")
+    public String adminRevokeProjectReport(HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String processInstanceId = requestMap.get("processInstanceId");
+        String id = requestMap.get("id");
+        try {
+            RuralProjectRecords projectRecords = ruralProjectMessageService.get(id);
+            ProjectReportData projectReportDateByProjectId = ruralProjectMessageService.getProjectReportDateByProjectId(projectRecords.getId());
+            ruralProjectMessageService.adminRevokeProjectReport(projectReportDateByProjectId,projectRecords.getProjectType(),"1");
+            addMessage(redirectAttributes, "撤回该项目报告成功");
+        }catch (Exception e){
+            logger.info("报告撤回错误",e.getMessage());
+            addMessage(redirectAttributes, "撤回该项目报告失败");
+        }
+        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+    }
+
 
 
     public Act getByAct(String processInstanceId){
@@ -1834,6 +1858,23 @@ public class RuralCostProjectMessageController extends BaseController {
         return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
     }
 
+
+    /**
+     * 管理员撤回报告归档:强制撤回
+     */
+    @RequestMapping("adminRevokeProjectReportRecord")
+    public String revokeProjectReportRecord(ProjectReportRecord projectReportRecord,HttpServletRequest request,RedirectAttributes redirectAttributes){
+        projectReportRecord = projectReportRecordService.get(projectReportRecord.getId());
+        try {
+            ruralProjectMessageService.revokeProjectReportRecord(projectReportRecord,"2","3");
+            addMessage(redirectAttributes, "强制撤回报告归档成功");
+        }catch (Exception e){
+            addMessage(redirectAttributes, "强制撤回报告归档失败");
+            logger.error("强制撤回归档信息失败",e);
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
+    }
+
     /**
      * 报告归档:资料缺失说明-强制撤回
      */

+ 46 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -1259,6 +1259,33 @@ public class RuralProjectMessageController extends BaseController {
 
 
 
+    /**
+     * 管理员撤回质量复核
+     * @param request
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "adminRevokeProjectReport")
+    public String adminRevokeProjectReport(HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String processInstanceId = requestMap.get("processInstanceId");
+        String id = requestMap.get("id");
+        try {
+            RuralProjectRecords projectRecords = ruralProjectMessageService.get(id);
+            ProjectReportData projectReportDateByProjectId = ruralProjectMessageService.getProjectReportDateByProjectId(projectRecords.getId());
+            ruralProjectMessageService.adminRevokeProjectReport(projectReportDateByProjectId,projectRecords.getProjectType(),"1");
+            addMessage(redirectAttributes, "撤回该项目报告成功");
+        }catch (Exception e){
+            logger.info("报告撤回错误",e.getMessage());
+            addMessage(redirectAttributes, "撤回该项目报告失败");
+        }
+        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
+    }
+
+
+
+
     public Act getByAct(String processInstanceId){
         Act act = new Act();
         HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
@@ -1782,6 +1809,25 @@ public class RuralProjectMessageController extends BaseController {
         }
         return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
     }
+
+
+    /**
+     * 管理员撤回报告归档:强制撤回
+     */
+    @RequestMapping("adminRevokeProjectReportRecord")
+    public String revokeProjectReportRecord(ProjectReportRecord projectReportRecord,HttpServletRequest request,RedirectAttributes redirectAttributes){
+        projectReportRecord = projectReportRecordService.get(projectReportRecord.getId());
+        try {
+            ruralProjectMessageService.revokeProjectReportRecord(projectReportRecord,"1","3");
+            addMessage(redirectAttributes, "强制撤回报告归档成功");
+        }catch (Exception e){
+            addMessage(redirectAttributes, "强制撤回报告归档失败");
+            logger.error("强制撤回归档信息失败",e);
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+    }
+
+
     /**
      * 编辑项目表单页面
      */

+ 29 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageNewTwoController.java

@@ -759,6 +759,35 @@ public class RuralProjectMessageNewTwoController  extends BaseController {
         }
         return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
     }
+
+    /**
+     * 管理员撤回报告签发
+     * @param request
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "adminRevokeProjectReportTwo")
+    public String adminRevokeProjectReportTwo(HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String processInstanceId = requestMap.get("processInstanceId");
+        String view = requestMap.get("view");
+        String id = requestMap.get("id");
+        try {
+            RuralProjectRecords projectRecords = ruralProjectMessageService.get(id);
+            ProjectReportDataTwo projectReportDateByProjectId = projectMessageService.getProjectReportDateTwoByProjectId(projectRecords.getId());
+            ruralProjectMessageService.adminRevokeProjectReportTwo(projectReportDateByProjectId,projectRecords.getProjectType(),"2");
+            addMessage(redirectAttributes, "撤回该项目报告成功");
+        }catch (Exception e){
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该项目报告失败");
+        }
+        if (StringUtils.isNotBlank(view) && view.equals("costLiu")){
+            return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
+        }
+        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
+    }
+
     /**
      * 删除报告信息
      * @param projectcontentinfo

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

@@ -227,6 +227,7 @@
 	<select id="getProjectFilingBatchRelationList" resultType="com.jeeplus.modules.projectFilingBatch.entity.ProjectFilingBatch">
 		SELECT
 		<include refid="filingBatchRelationColumns"/>
+		,g.id as "relationId"
 		,g.del_flag as "relationdelFlag"
 		FROM project_filingbatch a
 		LEFT JOIN project_flingbatch_relation g on(a.id=g.filing_batch)

+ 15 - 0
src/main/resources/mappings/modules/ruralprojectrecords/ProjectPaperFilingDao.xml

@@ -111,4 +111,19 @@
 			</if>
 		WHERE id = #{id}
 	</update>
+	<insert id="insertAdminRevoke">
+		insert into rural_project_admin_revoke(
+			id,
+			project_id,
+			process_instance_id,
+			`type`,
+			project_type
+		) values (
+			#{id},
+			#{projectId},
+			#{processInstanceId},
+			#{type},
+			#{projectType}
+		)
+	</insert>
 </mapper>

+ 26 - 2
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml

@@ -315,7 +315,9 @@
 		status = #{status},
 		invalid_status = #{invalidStatus},
 		report_type = #{reportType},
-		number_path = #{numberPath}
+		number_path = #{numberPath},
+		process_instance_id = #{processInstanceId},
+		audit_pass_date = #{auditPassDate}
 		<choose>
 			<when test="reviewFee != null and reviewFee !=''">
 				,review_fee = #{reviewFee}
@@ -1719,6 +1721,12 @@
 			</if>
 		WHERE id = #{id}
 	</update>
+	<update id="updateOverRecordStatus">
+		UPDATE rural_project_records SET
+		over_record_status = #{overRecordStatus}
+		,record_state = #{recordState}
+		WHERE id = #{id}
+	</update>
 	<update id="updateFileStatusTwo">
 		UPDATE project_report_data_two SET
 			file_status = #{fileStatus}
@@ -1732,7 +1740,8 @@
 		company_id = #{companyId},
 		office_id = #{officeId},
 		project_id = #{project.id},
-		status = #{status}
+		status = #{status},
+		process_instance_id = #{processInstanceId}
 		WHERE id = #{id}
 	</update>
 
@@ -1847,4 +1856,19 @@
 		from project_report_data a
 		where a.id = #{id}
 	</select>
+	<insert id="insertAdminRevoke">
+		insert into rural_project_admin_revoke(
+			id,
+			project_id,
+			process_instance_id,
+			`type`,
+			project_type
+		) values (
+			#{id},
+			#{projectId},
+			#{processInstanceId},
+			#{type},
+			#{projectType}
+		)
+	</insert>
 </mapper>

+ 463 - 0
src/main/webapp/webpage/modules/projectFilingBatch/projectFilingBatchAdminUpdate.jsp

@@ -0,0 +1,463 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>审批管理</title>
+	<meta name="decorator" content="default"/>
+	<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+	<link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+	<%@include file="/webpage/include/treetable.jsp" %>
+
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+			if(validateForm.form()){
+				if(obj == 1) {
+					$("#flag").val("yes");
+				}else {
+					if(obj == 2){
+						$("#flag").val("no1");
+					}else {
+						$("#flag").val("no2");
+					}
+				}
+				$("#inputForm").submit();
+				return true;
+
+
+			}
+
+			return false;
+		}
+		$(document).ready(function() {
+			$(".listTr").click(function(){
+				var name=$(this).find("td").eq(0).find("input").eq(0).val();
+				var tiao="."+name;
+				var span=$(this).find("td").eq(2);
+				var ss=$(span).val().split(" ")[4];
+				var flag = true;
+				// var ss=$(span).val().split(" ")[4];
+				$(span).toggle(
+						function(){
+							if(!flag){
+								flag = false;
+								$(tiao).hide();
+								$(span).find("span").eq(0).attr("class","default_shut");
+							}else{
+								flag = false;
+								$(tiao).show();
+								$(span).find("span").eq(0).attr("class","default_open");
+							}
+						},
+						function(){
+							if(flag){
+								flag = true;
+								$(tiao).show();
+								$(span).find("span").eq(0).attr("class","default_open");
+							}else{
+								flag = true;
+								$(tiao).hide();
+								$(span).find("span").eq(0).attr("class","default_shut");
+							}
+						},
+				);
+				if(flag){
+					$(tiao).hide();
+					$(span).find("span").eq(0).attr("class","default_shut")
+				}
+			})
+			validateForm = $("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+
+			var contractNum = $("#contractNum").val();
+			if (contractNum == null || contractNum === "") {
+				$("#div1").hide();
+				$("#div3").hide();
+				setTimeout(function () {
+					var tt = $("#workClientLinkmanList").find("tr").eq(0).find("td").eq(1).text().trim();
+					$("#clientName").val(tt);
+				},100);
+			}
+		});
+
+		function insertTitle(tValue){
+			var files = $("#attachment_file")[0].files;
+			for(var i = 0;i<files.length;i++) {                var file = files[i];
+				var attachmentId = $("#id").val();
+				var attachmentFlag = "82";
+				console.log(file);
+				var timestamp=new Date().getTime();
+
+				var storeAs = "projectRecords";
+				var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+				var divId = "_attachment";
+				$("#addFile"+divId).show();
+				multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+		}
+
+		function addFile() {
+			$("#attachment_file").click();
+		}
+
+		function addRow(list, idx, tpl, row){
+			// var idx1 = $("#workClientLinkmanList tr").length;
+			bornTemplete(list, idx, tpl, row, idx);
+		}
+
+		function bornTemplete(list, idx, tpl, row, idx1){
+			$(list).append(Mustache.render(tpl, {
+				idx: idx, delBtn: true, row: row,
+				order:idx1 + 1
+			}));
+			$(list+idx).find("select").each(function(){
+				$(this).val($(this).attr("data-value"));
+			});
+			$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+				var ss = $(this).attr("data-value").split(',');
+				for (var i=0; i<ss.length; i++){
+					if($(this).val() == ss[i]){
+						$(this).attr("checked","checked");
+					}
+				}
+			});
+		}
+	</script>
+</head>
+<body >
+<div class="single-form">
+	<div class="container">
+		<form:form id="inputForm" modelAttribute="projectFilingBatch" enctype="multipart/form-data" action="${ctx}/projectFilingBatch/projectFilingBatchInfo/adminUpdate" method="post" class="layui-form">
+			<form:hidden path="id"/>
+			<form:hidden path="home"/>
+			<form:hidden path="act.taskId"/>
+			<form:hidden path="act.taskName"/>
+			<form:hidden id="taskDefKey" path="act.taskDefKey"/>
+			<form:hidden path="act.procInsId"/>
+			<form:hidden path="act.procDefId"/>
+			<form:hidden id="flag" path="act.flag"/>
+			<input type="hidden" id="opinion" name="act.comment" value="" maxlength="250">
+			<c:set var="status" value="${projectFilingBatch.filingStatus}" />
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>归档批次信息</h2></div>
+				<div >
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">归档批次号:</label>
+						<div class="layui-input-block">
+
+							<form:input path="filingBatch" id="filingBatch"  readonly="true" class="form-control layui-input" />
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">归档人:</label>
+						<div class="layui-input-block">
+							<form:input path="createBy.name" id="createBy"  readonly="true" class="form-control layui-input" />
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw7">
+						<label class="layui-form-label">归档名称:</label>
+						<div class="layui-input-block">
+							<form:input path="filingName" htmlEscape="false" readonly="true" class="form-control  layui-input required"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm12 lw7 with-textarea">
+						<label class="layui-form-label">归档说明:</label>
+						<div class="layui-input-block">
+							<form:textarea path="information" readonly="true" htmlEscape="false" rows="4" maxlength="200" class="form-control "/>
+						</div>
+					</div>
+				</div>
+			</div>
+			<%--<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目基础信息</h2></div>
+					<table id="contentTable" class="table table-bordered table-condensed can-edit">
+						<thead>
+						<tr>
+							<th class="hide"></th>
+							<th style="text-align: center">归档项目编号</th>
+							<th style="text-align: center" >归档项目名称</th>
+							<th style="text-align: center">报告号</th>
+							<th style="text-align: center" >案卷号</th>
+							<th style="text-align: center" >确认案卷号</th>
+							<th style="text-align: center" >审批</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:choose>
+							<c:when test="${not empty projectFilingBatch}">
+								<c:forEach items="${projectFilingBatch.project}" var="project" varStatus="index">
+									<c:choose>
+										<c:when test="${project.flag ==1}">
+											<tr id="workAccountList${index.index}">
+												<td class="hide">
+													<input id="workAccountList${index.index}_id" name="workAccountList[${index.index}].id" type="hidden" value="${project.id}"/>
+													<input id="workAccountList${index.index}_delFlag" name="workAccountList[${index.index}].delFlag" type="hidden" value="0"/>
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectId}" class="form-control"/>
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectName}" class="form-control"/>
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectReportNumber}" class="form-control"/>
+												</td>
+
+												<td>
+													<input id="workAccountList${index.index}_boxNum"  name="workAccountList[${index.index}].boxNum" maxlength="32" type="text" value="${projectFilingBatch.boxNum}"  class="form-control required layui-input"/>
+												</td>
+												<td>
+													<input id="workAccountList${index.index}_reBoxNum"  name="workAccountList[${index.index}].reBoxNum" maxlength="32" type="text" value="${projectFilingBatch.reBoxNum}"  class="form-control required layui-input"/>
+												</td>
+												<td style="overflow: visible;">
+													<select name="clientType" id="clientType" lay-filter="cc" lay-verify="ctype" class="form-control simple-select clientType">
+														<option value="" >--是否通过--</option>
+														<option value="5" itemLabel="label">通过</option>
+														<option value="4" itemLabel="label">驳回</option>
+													</select>
+												</td>
+											</tr>
+										</c:when>
+										<c:otherwise>
+											<tr id="workAccountList${index.index}">
+												<td class="hide">
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectId}" class="form-control"/>
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectName}" class="form-control"/>
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectReportNumber}" class="form-control"/>
+												</td>
+
+												<td>
+													<input type="text" readonly value="${project.projectReportNumber}" class="form-control"/>
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectReportNumber}" class="form-control"/>
+												</td>
+												<td>
+													<input type="text" readonly value="${project.projectReportNumber}" class="form-control"/>
+												</td>
+											</tr>
+										</c:otherwise>
+									</c:choose>
+
+								</c:forEach>
+							</c:when>
+							<c:otherwise>
+								<tr>
+									<td colspan="7">
+										暂无数据
+									</td>
+								</tr>
+							</c:otherwise>
+						</c:choose>
+						</tbody>
+					</table>
+			</div>--%>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>项目基础信息</h2></div>
+				<table id="contentTable" class="table table-bordered table-condensed can-edit tree_table">
+					<thead>
+					<tr>
+						<th width="20%" style="text-align: center">归档项目编号</th>
+						<th width="20%" style="text-align: center" >归档项目名称</th>
+						<th width="20%" style="text-align: center">报告号</th>
+						<th width="20%" style="text-align: center" >案卷号</th>
+							<%--							<th style="text-align: center" >确认案卷号</th>--%>
+						<th width="20%" style="text-align: center" >审批</th>
+					</tr>
+					</thead>
+					<tbody id="workClientLinkmanList">
+					<c:if test="${not empty projectFilingBatch}">
+						<c:forEach items="${projectFilingBatch.project}" var="project" varStatus="index">
+							<c:choose>
+								<c:when test="${project.parentId == '0'}">
+									<tr class="listTr" id="projectFilingbatchRelations${index.index}">
+										<td class="hide">
+											<input id="projectFilingbatchRelations${index.index}_id" name="projectFilingbatchRelations[${index.index}].id" type="hidden" value="${project.id}"/>
+											<input id="projectFilingbatchRelations${index.index}_delFlag" name="projectFilingbatchRelations[${index.index}].delFlag" type="hidden" value="0"/>
+											<input id="projectFilingbatchRelations${index.index}_parentId" type="hidden" value="${project.parentId}"/>
+										</td>
+										<td class="hide">
+											<input id="projectFilingbatchRelations${index.index}_status" name="projectFilingbatchRelations[${index.index}].status" type="hidden" value="${project.delFlag}"/>
+										</td>
+										<td style="background-color: #f1f1f1;text-align: center;line-height: 25px">
+											<span class="default_open" style="padding-right: 20px;"></span>  ${project.projectId}
+
+												<%--											<span style="padding-left: 10px;padding-right: 10px;float: left">-</span>${project.projectId}--%>
+												<%--											<input style="cursor:Pointer" type="text" value="  -  ${project.projectId}" readonly="readonly"  class="form-control"/>--%>
+										</td>
+										<td>
+											<input id="projectFilingbatchRelations${index.index}_projectName" type="text" value="${project.projectName}" readonly="readonly" style="text-align: center" class="form-control"/>
+										</td>
+										<td>
+											<input type="text" value="${project.projectReportNumber}" readonly="readonly" onclick="check('${project.projectFilingBatchesId}')" style="text-align: center" class="form-control"/>
+										</td>
+										<td>
+											<input id="projectFilingbatchRelations${index.index}_boxNum"  placeholder="请输入案卷号"  name="projectFilingbatchRelations[${index.index}].boxNum" maxlength="32" type="text" value="${project.boxNum}"  class="form-control layui-input"/>
+										</td>
+											<%--										<td>--%>
+											<%--											<input id="projectFilingbatchRelations${index.index}_reBoxNum"  name="projectFilingbatchRelations[${index.index}].reBoxNum" maxlength="32" type="text" value="${projectFilingBatch.reBoxNum}"  class="form-control layui-input"/>--%>
+											<%--										</td>--%>
+										<td style="overflow: visible;">
+											<select  id="projectFilingbatchRelations${index.index}_clientType" name="projectFilingbatchRelations${index.index}.clientType" id="clientType" lay-filter="cc" lay-verify="ctype" class="form-control simple-select clientType">
+												<option value="" >--是否通过--</option>
+												<option value="5"  <c:if test="${project.delFlag == '5'}">selected</c:if> itemLabel="label">通过</option>
+												<option value="4"  <c:if test="${project.delFlag == '4'}">selected</c:if> itemLabel="label">驳回</option>
+											</select>
+										</td>
+									</tr>
+								</c:when>
+								<c:otherwise>
+									<tr class="${project.parentId}" id="workAccountList${index.index}">
+										<td class="hide">
+											<input id="projectFilingbatchRelations${index.index}_parentId" type="hidden" value="${project.parentId}"/>
+										</td>
+										<td>
+											<input type="text" title="${project.projectId}" readonly value="${project.projectId}" style="text-align: center" class="form-control"/>
+										</td>
+										<td style="background-color: #f1f1f1;display:table-cell; vertical-align:middle;text-align: center">
+											<input type="text" title="${project.projectReportNumber}" readonly value="${project.projectReportNumber}" style="text-align: center" class="form-control"/>
+										</td>
+										<td>
+											<input type="text" readonly value="" class="form-control"/>
+										</td>
+
+										<td>
+											<input type="text" readonly value="" class="form-control"/>
+										</td>
+										<td>
+											<input type="text" readonly value="" class="form-control"/>
+										</td>
+									</tr>
+								</c:otherwise>
+							</c:choose>
+
+						</c:forEach>
+					</c:if>
+					</tbody>
+				</table>
+			</div>
+			<%--			<div class="form-group layui-row">--%>
+			<%--				<div class="form-group-label"><h2>审批意见</h2></div>--%>
+			<%--				<div class="layui-item layui-col-sm8 lw6 with-textarea">--%>
+			<%--					<div class="layui-input-block" style="margin-left:10px;position: relative">--%>
+			<%--						<form:textarea placeholder="请输入意见:" path="act.comment" id="opinion" class="form-control" rows="4" cssStyle="height: 200px;" maxlength="127" />--%>
+			<%--						<a id="clearOpinon" class="layui-btn" style="position: absolute;bottom: 10px;right: 20px;">清空</a>--%>
+			<%--						<input type="file" name="upload_files" style="display: none;">--%>
+			<%--					</div>--%>
+			<%--				</div>--%>
+			<%--				<div class="layui-item layui-col-sm4 lw6 with-textarea">--%>
+			<%--					<div class="layui-input-block" style="margin-left:10px;">--%>
+			<%--						<div style="padding: 5px 0px;"><input type="checkbox" lay-filter="raopinion" name="sh" value="同意" title="同意" style="cursor:pointer" class="apen"/></div>--%>
+			<%--						<div style="padding: 5px 0px;"><input type="checkbox" lay-filter="raopinion" name="sh" value="不同意" title="不同意" style="cursor:pointer" class="apen"/></div>--%>
+			<%--						<div style="padding: 5px 0px;"><input type="checkbox" lay-filter="raopinion" name="sh" value="请领导审核" title="请领导审核" style="cursor:pointer" class="apen"/></div>--%>
+			<%--						<div style="padding: 5px 0px;">--%>
+			<%--							<form:select path="act.comment" id="auditOpinion" lay-filter="opinion" lay-verify="opinion" class="form-control simple-select">--%>
+			<%--								<form:option value=""/>--%>
+			<%--								<form:options items="${fns:getMainDictListOnProjectAdvent('audit_opinion_template')}" itemLabel="label" itemValue="label" htmlEscape="false"/>--%>
+			<%--							</form:select>--%>
+			<%--						</div>--%>
+			<%--					</div>--%>
+			<%--				</div>--%>
+			<%--			</div>--%>
+
+		</form:form>
+	</div>
+</div>
+<script type="text/javascript">
+	function f1(row) {
+		// window.parent.document.getElementById('opinion').value = row;
+		$("#opinion").val(row)
+	}
+	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){
+				top.layer.close(index)
+				document.getElementById('iframe').contentWindow.location.reload();
+			}
+		});
+	}
+
+	layui.use(['form', 'layer'], function () {
+		var form = layui.form;
+		var table = layui.table;
+		//下拉框监听器
+		layui.form.on('select(cc)', function(data){
+			console.log(data);
+			var dataId = data.elem.id;
+			var a =dataId.substring(0,dataId.indexOf("_")+1);
+			$("#"+a +"status").val(data.value)
+			console.log('$("#"+a +"status")',$("#"+a +"status"))
+		});
+
+		//监听单元格事件
+		layui.form.on('tool(demoEvent)', function(obj){
+			alert(11111);
+
+		});
+	});
+
+	function check(obj) {
+		console.log(obj)
+		openDialogView("查看项目","${ctx}/ruralProject/ruralProjectView/view?id=" + obj +"","95%","95%");
+	}
+
+	//打开对话框(查看)
+	function openDialogView(title,url,width,height){
+
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+			width='auto';
+			height='auto';
+		}else{//如果是PC端,根据用户设置的width和height显示。
+
+		}
+		top.layer.open({
+			type: 2,
+			skin: 'one-btn',
+			area: [width, height],
+			title: title,
+			maxmin: true, //开启最大化最小化按钮
+			content: url ,
+			btn: ['关闭'],
+			cancel: function(index){
+			}
+		});
+
+	}
+</script>
+</body>
+</html>

+ 84 - 19
src/main/webapp/webpage/modules/projectFilingBatch/projectFilingBatchList.jsp

@@ -116,6 +116,63 @@
             });
         }
 
+        function openDialogAdmin(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中跳转
+                        alert(top_iframe)
+                    }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;
+                //     }
+                // },
+                btn2: function (index) {
+                }
+            });
+        }
+
         function openDialogre(title,url,width,height,target,buttons) {
 
             if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
@@ -498,29 +555,37 @@
         function complain(d){//操作中显示的内容
             var xml = '<div class=\"layui-btn-group\">';
             if(d.pid=="0") {
-                if(d.notifyFlag != undefined && d.notifyFlag !=null && "" != d.notifyFlag && d.notifyFlag == 1)
-                {
-                    xml+="<a href=\"#\" onclick=\"notifyDialogre('新增报告审批', '${ctx}/workprojectnotify/workProjectNotify/form?id=" + d.notifyId +"&home=filingBatch','95%', '95%')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 审批</a>";
-                }
-                if(d.flag == 1){
-                    if(d.status == 1){
-                        xml+="<a href=\"#\" onclick=\"openDialogre('修改批次信息', '${ctx}/projectFilingBatch/projectFilingBatchInfo/form?id=" + d.id +"','95%', '95%','','送审,暂存,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" > 修改</a>";
-                    }
-                    if(d.status == 2){
-                        xml+="<a href=\"${ctx}/projectFilingBatch/projectFilingBatchInfo/revoke?id=" + d.id + "&filingStatus="+d.status+ "\" onclick=\"return confirmx('确认要撤回该项目审批吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" > 撤回</a>";
+                if ('${flag}' === '1'){
+                    if (d.status == 5){
+                        xml+="<a href=\"#\" onclick=\"openDialogAdmin('修改批次信息', '${ctx}/projectFilingBatch/projectFilingBatchInfo/updateForm?id=" + d.id +"','95%', '95%','','修改,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" > 修改</a>";
+                        xml+="<a href=\"${ctx}/projectFilingBatch/projectFilingBatchInfo/adminRevoke?id=" + d.id + "&filingStatus="+d.status+ "\" onclick=\"return confirmx('确认要撤回该项目审批吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" > 撤回</a>";
                     }
-                    if(d.status == 3){
-                        //撤回操作
-                        xml+="<a href=\"#\" onclick=\"openDialogre('调整批次信息', '${ctx}/projectFilingBatch/projectFilingBatchInfo/form?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" > 修改</a>";
-                    }
-                    if(d.status == 4){
-                        //驳回操作
-                        xml+="<a href=\"#\" onclick=\"openDialogre('调整批次信息', '${ctx}/projectFilingBatch/projectFilingBatchInfo/modify?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 修改</a>";
+                }else{
+                    if(d.notifyFlag != undefined && d.notifyFlag !=null && "" != d.notifyFlag && d.notifyFlag == 1)
+                    {
+                        xml+="<a href=\"#\" onclick=\"notifyDialogre('新增报告审批', '${ctx}/workprojectnotify/workProjectNotify/form?id=" + d.notifyId +"&home=filingBatch','95%', '95%')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 审批</a>";
                     }
-                    if(d.status == 1 || d.status == 3 || d.status == 4){
-                        xml+="<a href=\"${ctx}/projectFilingBatch/projectFilingBatchInfo/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该项目信息吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
+                    if(d.flag == 1){
+                        if(d.status == 1){
+                            xml+="<a href=\"#\" onclick=\"openDialogre('修改批次信息', '${ctx}/projectFilingBatch/projectFilingBatchInfo/form?id=" + d.id +"','95%', '95%','','送审,暂存,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" > 修改</a>";
+                        }
+                        if(d.status == 2){
+                            xml+="<a href=\"${ctx}/projectFilingBatch/projectFilingBatchInfo/revoke?id=" + d.id + "&filingStatus="+d.status+ "\" onclick=\"return confirmx('确认要撤回该项目审批吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" > 撤回</a>";
+                        }
+                        if(d.status == 3){
+                            //撤回操作
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整批次信息', '${ctx}/projectFilingBatch/projectFilingBatchInfo/form?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" > 修改</a>";
+                        }
+                        if(d.status == 4){
+                            //驳回操作
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整批次信息', '${ctx}/projectFilingBatch/projectFilingBatchInfo/modify?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 修改</a>";
+                        }
+                        if(d.status == 1 || d.status == 3 || d.status == 4){
+                            xml+="<a href=\"${ctx}/projectFilingBatch/projectFilingBatchInfo/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该项目信息吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
+                        }
                     }
                 }
+
                 xml+="</div>"
                 return[xml].join('');
             }else{

+ 15 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectMessageList.jsp

@@ -1034,6 +1034,21 @@
 			if ('0'!=d.projectReportStatus && '1'!=d.projectReportStatus){
 				xml+="<a href=\"#\" onclick=\"openDialogre('修改质量复核', '${ctx}/ruralProject/ruralCostProjectMessage/adminEditForm?projectId=" + d.id + "','95%', '95%','','提交,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 修改质量复核</a>";
 			}
+			//质量复核
+			if(d.projectReportStatus == 5){
+				xml+="<a href=\"${ctx}/ruralProject/ruralCostProjectMessage/adminRevokeProjectReport?id=" + d.id + "&processInstanceId=" + d.procId + "\" onclick=\"return confirmx('确认要撤回该项目报告质量复核审批吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回质量复核</a>";
+			}
+			//报告签发
+			if(d.projectReportStatusTwo == 5){
+				xml+="<a href=\"${ctx}/ruralProject/ruralProjectMessageNewTwo/adminRevokeProjectReportTwo?id=" + d.id + "&processInstanceId=" + d.prdtProcessinstanceId + "&view=costLiu\" onclick=\"return confirmx('确认要撤回该报告签发吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回签发</a>";
+			}
+			//线上归档
+			if(d.projectReportRecordStatus == 5 || d.projectReportRecordStatus == 7){
+				xml+="<a href=\"${ctx}/ruralProject/ruralCostProjectMessage/adminRevokeProjectReportRecord?id=" + d.prrId + "&processInstanceId=" + d.prrProcessInstanceId + "\" onclick=\"return confirmx('确认要撤回该报告线上归档审批吗?', this.href)\" class=\"layui-btn layui-btn-xs  layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回线上归档</a>";
+			}
+			if((d.paperFilingStatus == 5 || d.paperFilingStatus == 7) && d.submitMoney == '2'){
+				xml+="<a href=\"${ctx}/paperFiling/paperFiling/adminRevokePaperFiling?id=" + d.ppfId + "&processInstanceId=" + d.ppfProcessInstanceId + "\" onclick=\"return confirmx('确认要撤回该纸质归档审批吗?', this.href)\" class=\"layui-btn layui-btn-xs  layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回纸质归档</a>";
+			}
 			/*if(d.paperFilingStatus == 5 || d.paperFilingStatus == 7){
 				xml+="<a href=\"#\" onclick=\"openDialogre('修改纸质归档案卷号', '${ctx}/paperFiling/paperFiling/adminPaperFiling?id=" + d.ppfId + "&projectId=" + d.id +" ','95%', '95%','','提交,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 修改纸质归档</a>";
 			}

+ 16 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList.jsp

@@ -966,6 +966,22 @@
 			if ('0'!=d.projectReportStatus && '6'!=d.projectReportStatus && '1'!=d.projectReportStatus){
 				xml+="<a href=\"#\" onclick=\"openDialogre('修改质量复核', '${ctx}/ruralProject/ruralProjectMessage/adminEditForm?projectId=" + d.id + "','95%', '95%','','提交,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\"  style='height: 32px;margin-top: 5px;margin-bottom: 5px;'> 修改质量复核</a>";
 			}
+			//质量复核
+			if(d.projectReportStatus == 5){
+				xml+="<a href=\"${ctx}/ruralProject/ruralProjectMessage/adminRevokeProjectReport?id=" + d.id + "&processInstanceId=" + d.procId + "\" onclick=\"return confirmx('确认要撤回该项目报告质量复核审批吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回质量复核</a>";
+			}
+			//报告签发
+			if(d.projectReportStatusTwo == 5){
+				xml+="<a href=\"${ctx}/ruralProject/ruralProjectMessageNewTwo/adminRevokeProjectReportTwo?id=" + d.id + "&processInstanceId=" + d.prdtProcessinstanceId + "\" onclick=\"return confirmx('确认要撤回该报告签发吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回签发</a>";
+			}
+			//线上归档
+			if(d.projectReportRecordStatus == 5 || d.projectReportRecordStatus == 7){
+				xml+="<a href=\"${ctx}/ruralProject/ruralProjectMessage/adminRevokeProjectReportRecord?id=" + d.prrId + "&processInstanceId=" + d.prrProcessInstanceId + "\" onclick=\"return confirmx('确认要撤回该报告线上归档审批吗?', this.href)\" class=\"layui-btn layui-btn-xs  layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回线上归档</a>";
+			}
+			//纸质归档A类
+			if((d.paperFilingStatus == 5 || d.paperFilingStatus == 7) && d.submitMoney == '2'){
+				xml+="<a href=\"${ctx}/paperFiling/paperFiling/adminRevokePaperFiling?id=" + d.ppfId + "&view=filing&processInstanceId=" + d.ppfProcessInstanceId + "\" onclick=\"return confirmx('确认要撤回该纸质归档审批吗?', this.href)\" class=\"layui-btn layui-btn-xs  layui-bg-red\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' > 撤回纸质归档</a>";
+			}
 			/*if(d.paperFilingStatus == 5 || d.paperFilingStatus == 7){
 				xml+="<a href=\"#\" onclick=\"openDialogre('修改纸质归档案卷号', '${ctx}/paperFiling/paperFiling/adminPaperFiling?id=" + d.ppfId + "&projectId=" + d.id +"&view=filing ','95%', '95%','','提交,关闭')\" class=\"layui-btn layui-btn-xs  layui-bg-green\"  style='height: 32px;margin-top: 5px;margin-bottom: 5px;'> 修改纸质归档</a>";
 			}*/