Sfoglia il codice sorgente

盐城签章代码功能

user5 3 anni fa
parent
commit
b2b1c6580e
21 ha cambiato i file con 14499 aggiunte e 2 eliminazioni
  1. 2 1
      src/main/java/com/jeeplus/common/utils/MenuStatusEnum.java
  2. 44 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageAllService.java
  3. 430 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java
  4. 2428 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/yanChengSignature/RuralProjectMessageElectronicSealYCService.java
  5. 305 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/ApprovalYCThread.java
  6. 373 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/SignatureYCThread.java
  7. 295 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java
  8. 855 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/yanChengSignature/RuralProjectMessageElectronicSealYCController.java
  9. 163 0
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  10. 8 0
      src/main/resources/jeeplus.properties
  11. 1 1
      src/main/webapp/webpage/modules/projectreportnum/reportAuditProject.jsp
  12. 1509 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectMessageElectronicSealYCList.jsp
  13. 572 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCAudit.jsp
  14. 1287 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCForm.jsp
  15. 617 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCModify.jsp
  16. 1249 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCView.jsp
  17. 570 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCAudit.jsp
  18. 1290 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCForm.jsp
  19. 623 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCModify.jsp
  20. 623 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCSzzkAudit.jsp
  21. 1255 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCView.jsp

+ 2 - 1
src/main/java/com/jeeplus/common/utils/MenuStatusEnum.java

@@ -36,7 +36,8 @@ public enum MenuStatusEnum {
     OVERALL_COST_WORK_RECORDS("20ce4621fb7d4831adc95cb83cbba756","全过程-造价审核-项目登记"),
     OVERALL_WORK_RECORD_LIST("95f8a1999204460b9a78d1d20b85a0fb","全过程-工程咨询-项目列表"),
     OVERALL_COST_WORK_RECORD_LIST("bac3717361294087887c9af75066e32a","全过程-造价审核-项目列表"),
-    PROJECT_SIGNATURE("607c95d190dd4158bee3006899de3867","全过程-电子签章"),
+    PROJECT_SIGNATURE("607c95d190dd4158bee3006899de3867","全过程-电子签章(苏州)"),
+    PROJECT_SIGNATURE_YC("4008b9e2250441428cd90fd57cec8f39","电子签章(盐城)"),
     WORK_INVOICEDETAIL("84312d6a28e948b8b7b68185cf8d4d72","发票明细"),
     WORK_INVOICEALTER("89323021918e444bae3537521046d19f","开票管理"),
     WORK_CONTRACT_INFO("b9309305d94f4ee8b66eebbcae9f2db4","合同登记"),

+ 44 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageAllService.java

@@ -1168,6 +1168,50 @@ public class RuralProjectMessageAllService extends CrudService<RuralProjectMessa
         return page;
     }
 
+    public Page<RuralProjectRecords> findSignatureYCPage(Page<RuralProjectRecords> page, RuralProjectRecords projectRecords) {
+        //设置数据权限
+        if(!UserUtils.getUser().isAdmin()) {
+            String dataScopeSql = dataScopeFilterOR(projectRecords.getCurrentUser(), "o", "u", "s", MenuStatusEnum.PROJECT_SIGNATURE_YC.getValue());
+            projectRecords.getSqlMap().put("dsf", dataScopeSql);
+        }
+        //查询超期时间天数
+        List<MainDictDetail> adventCount = DictUtils.getMainDictListOnProjectAdvent("advent_count");
+        if(adventCount.size()>0){
+            //获取超期时间天数转int
+            Integer endingCount = Integer.parseInt(adventCount.get(0).getLabel());
+            projectRecords.setEndingCount(endingCount);
+        }
+        if(null!= projectRecords.getOffice() && StringUtils.isNotBlank(projectRecords.getOffice().getId())){
+            //查询该选择节点下所有的部门Id
+            List<String> officeIdList = officeService.getChildrenOffice(projectRecords.getOffice().getId());
+            officeIdList.add(projectRecords.getOffice().getId());
+            projectRecords.setOfficeIdList(officeIdList);
+        }
+
+        int count = dao.queryCount(projectRecords);
+        page.setCount(count);
+        page.setCountFlag(false);
+        projectRecords.setPage(page);
+        List<RuralProjectRecords> recordsList = findList(projectRecords);
+
+
+        //查询负责人信息
+        for (RuralProjectRecords records : recordsList) {
+            if(null != records.getRecordState() && 0 == records.getProjectReportRecordStatus()){
+                records.setProjectReportRecordStatus(records.getRecordState());
+            }
+            this.queryContractInfos(records);
+            //获取项目负责人
+            List<User> users = workProjectUserDao.getProjectprincipalList(records.getId());
+            records.setProjectLeaders(users);
+            records.setLeaderNameStr(Collections3.extractToString(users, "name", ","));
+            records.setLeaderIds(Collections3.extractToString(users, "id", ","));
+
+        }
+        page.setList(recordsList);
+        return page;
+    }
+
 
 
 }

+ 430 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -113,7 +113,9 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
     private static final String COMPANYROUNDSEALIDVERTICAL = Global.getConfig("company_round_seal_id_vertical");
     private static final String COMPANYPARTIESSEALID = Global.getConfig("company_parties_seal_id");
     private static final String APPROVALCATEGORYID = Global.getConfig("approval_category_id");
+    private static final String APPROVALYCCATEGORYID = Global.getConfig("approval_YC_category_id");
     private static final String REPORTCATEGORYID = Global.getConfig("report_category_id");
+    private static final String REPORTYCCATEGORYID = Global.getConfig("report_YC_category_id");
     private static final String JUDGEMENTCATEGORYID = Global.getConfig("judgement_category_id");
     //AES 对称加密公钥
     private static final String AES_KEY = "63304b5db43265c103ebe576d38bd9f8";
@@ -3987,6 +3989,132 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         return hashMap;
     }
 
+
+    /**
+     * 根据项目id 和 documentId生成合同id(盐城)
+     * @param projectId
+     * @param documentList
+     * @return
+     */
+    public HashMap getYCSignatureContractId(String projectId, List<String> documentList ,String principalUserId,String generalManagerUserId){
+        HashMap hashMap = new HashMap();
+        Set<String> serialIdSet = new HashSet<>();
+        //根据项目id查询项目信息
+        RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(projectId);
+        //创建签署方信息
+        List<Action> actions = Lists.newArrayList();
+        Action companyAction = new Action();
+        companyAction.setType("CORPORATE");
+        companyAction.setName("公司印章");
+        companyAction.setSerialNo("1");
+        //公司圆章-竖
+        serialIdSet.add(COMPANYROUNDSEALIDVERTICAL);
+        //添加盖章位置
+        List<Location> locations = Lists.newArrayList();
+        for (String documentId: documentList) {
+            Location location = new Location();
+            location.setSealId(COMPANYROUNDSEALIDVERTICAL);
+            location.setDocumentId(documentId);
+            location.setPage("0");
+            location.setRectType("SEAL_CORPORATE");
+            location.setKeywordIndex(-1);
+            location.setOffsetX("0.5264");
+            location.setOffsetY("0.6787");
+            locations.add(location);
+        }
+
+        //根据角色信息录入签署方信息
+        //负责人
+        if(StringUtils.isNotBlank(principalUserId)){
+            User user = UserUtils.get(principalUserId);
+            if(null != user){
+                //获取成员印章id信息
+                String userSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "一级注册造价工程师章-竖");
+                if(StringUtils.isNotBlank(userSealId)){
+                    for (String documentId: documentList) {
+                        //添加盖章位置
+                        Location principalLocation = new Location();
+                        serialIdSet.add(userSealId);
+                        principalLocation.setSealId(userSealId);
+                        principalLocation.setDocumentId(documentId);
+                        principalLocation.setPage("0");
+                        principalLocation.setRectType("SEAL_CORPORATE");
+                        principalLocation.setKeywordIndex(-1);
+                        principalLocation.setOffsetX("0.5971");
+                        principalLocation.setOffsetY("0.8176");
+                        locations.add(principalLocation);
+                    }
+                }else{
+                    hashMap.put("code","2");
+                    hashMap.put("message","查询不到项目负责人 "+ user.getName() + " 的印章信息!请联系管理员");
+                    return hashMap;
+                }
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到项目负责人信息!请联系管理员");
+            return hashMap;
+        }
+        //总经理
+        User technologyPrincipalUser = UserUtils.getByLoginName("陈红星");
+        if(null != technologyPrincipalUser){
+            //获取成员印章id信息
+            String userSealId = SignaturePostUtil.getUserSealByMobile(technologyPrincipalUser.getMobile(),"","陈红星个人签名章-竖");
+            if(StringUtils.isNotBlank(userSealId)){
+                for (String documentId: documentList) {
+                    //添加盖章位置
+                    Location principalLocation = new Location();
+                    serialIdSet.add(userSealId);
+                    principalLocation.setSealId(userSealId);
+                    principalLocation.setDocumentId(documentId);
+                    principalLocation.setPage("0");
+                    principalLocation.setRectType("SEAL_CORPORATE");
+                    principalLocation.setKeywordIndex(-1);
+                    principalLocation.setOffsetX("0.7758");
+                    principalLocation.setOffsetY("0.7339");
+                    locations.add(principalLocation);
+                }
+
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到技术负责人 陈红星 的印章信息!请联系管理员");
+                return hashMap;
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到技术负责人信息!请联系管理员");
+            return hashMap;
+        }
+        List<String> serialIdList = new ArrayList<String>(serialIdSet);
+        companyAction.setSealIds("[" + String.join(",", serialIdList) + "]");
+        companyAction.setAutoSign("true");
+        companyAction.setLocations(locations);
+        actions.add(companyAction);
+
+
+        //创建签署方信息表
+        List<SignatorieInfo> signatories = Lists.newArrayList();
+        SignatorieInfo signatorieInfo1 = new SignatorieInfo();
+        signatorieInfo1.setSerialNo("1");
+        signatorieInfo1.setTenantName("江苏兴光项目管理有限公司");
+        signatorieInfo1.setTenantType("COMPANY");
+        signatorieInfo1.setActions(actions);
+        signatories.add(signatorieInfo1);
+        SignatureContract signatureContract = new SignatureContract();
+        signatureContract.setDocuments(documentList);
+        //审定单用印流程id
+        signatureContract.setCategoryId(APPROVALYCCATEGORYID);
+        signatureContract.setSend(true);
+        signatureContract.setSignatories(signatories);
+        signatureContract.setSn("");
+        signatureContract.setSubject(ruralProjectRecords.getProjectName());//添加项目名称
+        net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(signatureContract);
+        String contractIdMapStr = SignaturePostUtil.sendPostApplicationJson(HTTPTOP + "/contract/createbycategory", json.toString());
+        hashMap = JSON.parseObject(contractIdMapStr, HashMap.class);
+
+        return hashMap;
+    }
+
     /**
      * 根据项目id 和 documentId生成合同id
      * @param projectId
@@ -4717,4 +4845,306 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
 
         return hashMap;
     }
+
+
+
+    /**
+     * 根据项目id 和 documentId生成合同id
+     * @param projectId
+     * @param documentList
+     * @return
+     */
+    public HashMap getReportYCSignatureContractId(String projectId, List<String> documentList ,String principalUserId,String generalManagerUserId){
+        HashMap hashMap = new HashMap();
+        List<String> serialIdList = Lists.newArrayList();
+        //根据项目id查询项目信息
+        RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(projectId);
+        //查询到显示信息
+        ProjectReportSignatureInfo projectReportSignatureInfo = ruralProjectMessageElectronicSealService.findProjectReportSignatureInfoByProjectId(projectId);
+
+        //创建签署方信息
+        List<Action> actions = Lists.newArrayList();
+        Action companyAction = new Action();
+        companyAction.setType("CORPORATE");
+        companyAction.setName("公司执业印章");
+        companyAction.setSerialNo("1");
+        //公司方章编号
+        //companyAction.setSealId(COMPANYPARTIESSEALID);
+        serialIdList.add(COMPANYPARTIESSEALID);
+        //添加盖章位置
+        List<Location> locations = Lists.newArrayList();
+        Location location = new Location();
+        location.setDocumentId(documentList.get(0));
+        location.setSealId(COMPANYPARTIESSEALID);
+        //location.setPage(0);
+        location.setRectType("SEAL_CORPORATE");
+        location.setKeyword("咨询企业执业印章");
+        location.setKeywordIndex(1);
+        /*location.setOffsetX(0.7749);
+        location.setOffsetY(0.2725);*/
+        locations.add(location);
+
+        /*Action companyActionCircle = new Action();
+        companyActionCircle.setType("CORPORATE");
+        companyActionCircle.setName("公司印章");
+        companyActionCircle.setSerialNo("1");*/
+        //公司圆章编号
+        //companyActionCircle.setSealId(COMPANYROUNDSEALID);
+        serialIdList.add(COMPANYROUNDSEALID);
+        //添加盖章位置
+        //List<Location> locationCircles = Lists.newArrayList();
+        Location locationCircle = new Location();
+        locationCircle.setDocumentId(documentList.get(0));
+        locationCircle.setSealId(COMPANYROUNDSEALID);
+        //location.setPage(0);
+        locationCircle.setRectType("SEAL_CORPORATE");
+        locationCircle.setKeyword("江苏兴光项目管理有限公司(印章)");
+        locationCircle.setKeywordIndex(1);
+        locationCircle.setOffsetX("-0.2");
+        //locationCircle.setOffsetY("0.2725");
+        locations.add(locationCircle);
+        /*locationCircles.add(locationCircle);
+        companyActionCircle.setLocations(locationCircles);
+        actions.add(companyActionCircle);*/
+
+        //根据角色信息录入签署方信息
+        //负责人
+        if(StringUtils.isNotBlank(principalUserId)){
+            User user = UserUtils.get(principalUserId);
+            if(null != user){
+                //获取成员印章id信息
+                String userSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "一级注册造价工程师章");
+                if(StringUtils.isNotBlank(userSealId)){
+                    /*Action actionUser = new Action();
+                    actionUser.setType("CORPORATE");
+                    actionUser.setName(user.getName() + "印章");    //填写人员信息
+                    actionUser.setSerialNo("1");
+                    actionUser.setSealId(userSealId);   //人员印章id*/
+
+                    serialIdList.add(userSealId);
+                    //添加盖章位置
+                    //List<Location> principalLocations = Lists.newArrayList();
+                    Location principalLocation = new Location();
+                    principalLocation.setDocumentId(documentList.get(0));
+                    principalLocation.setSealId(userSealId);
+                    //principalLocation.setPage(0);
+                    principalLocation.setRectType("SEAL_CORPORATE");
+                    principalLocation.setKeyword("项目负责人:");
+                    principalLocation.setKeywordIndex(1);
+                    locations.add(principalLocation);
+                    /*principalLocation.setOffsetX(0.7759);
+                    principalLocation.setOffsetY(0.1934);
+                    principalLocations.add(principalLocation);*/
+
+                    //添加盖章位置
+                    Location principalLocationSign = new Location();
+                    principalLocationSign.setDocumentId(documentList.get(0));
+                    principalLocationSign.setSealId(userSealId);
+                    //principalLocation.setPage(0);
+                    principalLocationSign.setRectType("SEAL_CORPORATE");
+                    principalLocationSign.setKeyword("项目负责人署名(");
+                    principalLocationSign.setKeywordIndex(1);
+                    locations.add(principalLocationSign);
+                    /*principalLocation.setOffsetX(0.7759);
+                    principalLocation.setOffsetY(0.1934);
+                    principalLocations.add(principalLocationSign);*/
+
+                    //添加盖章位置
+                    Location principalLocationSignFirst = new Location();
+                    principalLocationSignFirst.setDocumentId(documentList.get(0));
+                    principalLocationSignFirst.setSealId(userSealId);
+                    //principalLocation.setPage(0);
+                    principalLocationSignFirst.setRectType("SEAL_CORPORATE");
+                    principalLocationSignFirst.setKeyword("造价工程师:");
+                    principalLocationSignFirst.setKeywordIndex(1);
+                    locations.add(principalLocationSignFirst);
+                    /*principalLocation.setOffsetX(0.7759);
+                    principalLocation.setOffsetY(0.1934);
+                    principalLocations.add(principalLocationSignFirst);
+
+                    actionUser.setLocations(principalLocations);
+                    actions.add(actionUser);*/
+                }else{
+                    hashMap.put("code","2");
+                    hashMap.put("message","查询不到项目负责人 " + user.getName() + " 的印章信息!请联系管理员");
+                    return hashMap;
+                }
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到项目负责人的信息!请联系管理员");
+                return hashMap;
+            }
+        }
+
+        //查询咨询员信息
+        /*if(null != projectReportSignatureInfo && StringUtils.isNotBlank(projectReportSignatureInfo.getConsultant())){
+            User user = UserUtils.get(projectReportSignatureInfo.getConsultant());
+            if(null != user) {
+                //获取成员印章id信息
+                String userSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(), "", user.getName() + "一级注册造价工程师章");
+                if(StringUtils.isNotBlank(userSealId)) {
+                    Action actionUser = new Action();
+                    actionUser.setType("CORPORATE");
+                    actionUser.setName(user.getName() + "印章");    //填写人员信息
+                    actionUser.setSerialNo("1");
+                    actionUser.setSealId(userSealId);   //人员印章id
+
+                    //添加盖章位置
+                    List<Location> principalLocations = Lists.newArrayList();
+                    Location principalLocation = new Location();
+                    principalLocation.setDocumentId(documentList.get(0));
+                    //principalLocation.setPage(0);
+                    principalLocation.setRectType("SEAL_CORPORATE");
+                    principalLocation.setKeyword("专业咨询员");
+                    principalLocation.setKeywordIndex(2);
+                    *//*principalLocation.setOffsetX(0.7759);
+                    principalLocation.setOffsetY(0.1934);*//*
+                    principalLocations.add(principalLocation);
+                    actionUser.setLocations(principalLocations);
+                    actions.add(actionUser);
+                }
+            }
+        }*/
+
+        //总经理
+        User technologyPrincipalUser = UserUtils.getByLoginName("陈红星");
+        if(null != technologyPrincipalUser){
+            //获取成员印章id信息
+            String userSealId = SignaturePostUtil.getUserSealByMobile(technologyPrincipalUser.getMobile(),"","陈红星一级注册造价工程师章");
+            if(StringUtils.isNotBlank(userSealId)){
+                /*Action actionUser = new Action();
+                actionUser.setType("CORPORATE");
+                actionUser.setName(technologyPrincipalUser.getName() + "印章");    //填写人员信息
+                actionUser.setSerialNo("1");
+                actionUser.setSealId(userSealId);   //人员印章id*/
+
+                serialIdList.add(userSealId);
+                //添加盖章位置
+                //List<Location> principalLocations = Lists.newArrayList();
+                Location principalLocation = new Location();
+                principalLocation.setDocumentId(documentList.get(0));
+                principalLocation.setSealId(userSealId);
+                //principalLocation.setPage(0);
+                principalLocation.setRectType("SEAL_CORPORATE");
+                principalLocation.setKeyword("技术负责人:");
+                principalLocation.setKeywordIndex(1);
+                principalLocation.setOffsetX("-0.02");
+                principalLocation.setOffsetY("0.07");
+                locations.add(principalLocation);
+                /*principalLocation.setOffsetX(0.7518);
+                principalLocation.setOffsetY(0.1642);
+                principalLocations.add(principalLocation);
+                actionUser.setLocations(principalLocations);
+                actions.add(actionUser);*/
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到技术负责人 陈红星 的造价师印章信息!请联系管理员");
+                return hashMap;
+            }
+
+            //获取成员印章id信息
+            String signatureUserSealId = SignaturePostUtil.getUserSealByMobile(technologyPrincipalUser.getMobile(),"","陈红星个人签名章");
+            if(StringUtils.isNotBlank(signatureUserSealId)){
+                /*Action actionUser = new Action();
+                actionUser.setType("CORPORATE");
+                actionUser.setName(technologyPrincipalUser.getName() + "印章");    //填写人员信息
+                actionUser.setSerialNo("1");
+                actionUser.setSealId(signatureUserSealId);   //人员印章id*/
+
+                serialIdList.add(signatureUserSealId);
+                //添加盖章位置
+                //List<Location> principalLocations = Lists.newArrayList();
+                Location principalLocation = new Location();
+                principalLocation.setDocumentId(documentList.get(0));
+                principalLocation.setSealId(signatureUserSealId);
+                //principalLocation.setPage(0);
+                principalLocation.setRectType("SEAL_CORPORATE");
+                principalLocation.setKeyword("技术负责人:");
+                principalLocation.setKeywordIndex(1);
+                principalLocation.setOffsetX("0.17");
+                principalLocation.setOffsetY("0.05");
+                locations.add(principalLocation);
+                /*principalLocation.setOffsetY(0.1642);
+                principalLocations.add(principalLocation);
+                actionUser.setLocations(principalLocations);
+                actions.add(actionUser);*/
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到技术负责人 陈红星 的印章信息!请联系管理员");
+                return hashMap;
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到技术负责人 陈红星 的信息!请联系管理员");
+            return hashMap;
+        }
+
+
+        //总经理
+        User representativeUser = UserUtils.getByLoginName("杨荣华");
+        if(null != representativeUser){
+            //获取成员印章id信息
+            String userSealId = SignaturePostUtil.getUserSealByMobile(representativeUser.getMobile(),"","杨荣华个人签名章");
+            if(StringUtils.isNotBlank(userSealId)){
+                /*Action actionUser = new Action();
+                actionUser.setType("CORPORATE");
+                actionUser.setName(representativeUser.getName() + "个人签名章");    //填写人员信息
+                actionUser.setSerialNo("1");
+                actionUser.setSealId(userSealId);   //人员印章id*/
+
+                serialIdList.add(userSealId);
+                //添加盖章位置
+                //List<Location> principalLocations = Lists.newArrayList();
+                Location principalLocation = new Location();
+                principalLocation.setDocumentId(documentList.get(0));
+                principalLocation.setSealId(userSealId);
+                //principalLocation.setPage(0);
+                principalLocation.setRectType("SEAL_CORPORATE");
+                principalLocation.setKeyword("法定代表人:");
+                principalLocation.setKeywordIndex(1);
+                principalLocation.setOffsetX("0.07");
+                principalLocation.setOffsetY("0.03");
+                locations.add(principalLocation);
+                /*principalLocations.add(principalLocation);
+                actionUser.setLocations(principalLocations);
+                actions.add(actionUser);*/
+            }else{
+                hashMap.put("code","2");
+                hashMap.put("message","查询不到技术负责人 杨荣华 的印章信息!请联系管理员");
+                return hashMap;
+            }
+        }else{
+            hashMap.put("code","2");
+            hashMap.put("message","查询不到技术负责人 杨荣华 的信息!请联系管理员");
+            return hashMap;
+        }
+
+        companyAction.setSealIds("[" + String.join(",", serialIdList) + "]");
+        companyAction.setAutoSign("true");
+        companyAction.setLocations(locations);
+        actions.add(companyAction);
+
+
+        //创建签署方信息表
+        List<SignatorieInfo> signatories = Lists.newArrayList();
+        SignatorieInfo signatorieInfo1 = new SignatorieInfo();
+        signatorieInfo1.setSerialNo("1");
+        signatorieInfo1.setTenantName("江苏兴光项目管理有限公司");
+        signatorieInfo1.setTenantType("COMPANY");
+        signatorieInfo1.setActions(actions);
+        signatories.add(signatorieInfo1);
+        SignatureContract signatureContract = new SignatureContract();
+        signatureContract.setDocuments(documentList);
+        //报告用印流程id
+        signatureContract.setCategoryId(REPORTYCCATEGORYID);
+        signatureContract.setSend(true);
+        signatureContract.setSignatories(signatories);
+        signatureContract.setSn("");
+        signatureContract.setSubject(ruralProjectRecords.getProjectName());//添加项目名称
+        net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(signatureContract);
+        String contractIdMapStr = SignaturePostUtil.sendPostApplicationJson(HTTPTOP + "/contract/createbycategory", json.toString());
+        hashMap = JSON.parseObject(contractIdMapStr, HashMap.class);
+
+        return hashMap;
+    }
 }

File diff suppressed because it is too large
+ 2428 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/yanChengSignature/RuralProjectMessageElectronicSealYCService.java


+ 305 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/ApprovalYCThread.java

@@ -0,0 +1,305 @@
+package com.jeeplus.modules.ruralprojectrecords.thread;
+
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.common.utils.SpringContextHolder;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageElectronicSealDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.ProjectApprovalSignature;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.service.WorkattachmentService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.tools.utils.SignaturePostUtil;
+import com.jeeplus.modules.workactivity.service.WorkActivityProcessService;
+import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
+import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
+import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.File;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author: 徐滕
+ * @create: 2021-12-07 16:36
+ **/
+public class ApprovalYCThread extends Thread {
+
+    private ProjectReportDataService projectReportDataService = SpringContextHolder.getBean(ProjectReportDataService.class);
+    private WorkattachmentService workattachmentService = SpringContextHolder.getBean(WorkattachmentService.class);
+    private RuralProjectMessageService ruralProjectMessageService = SpringContextHolder.getBean(RuralProjectMessageService.class);
+    private WorkActivityProcessService workActivityProcessService = SpringContextHolder.getBean(WorkActivityProcessService.class);
+    private WorkProjectNotifyService workProjectNotifyService = SpringContextHolder.getBean(WorkProjectNotifyService.class);
+    private RuralProjectMessageElectronicSealDao dao = SpringContextHolder.getBean(RuralProjectMessageElectronicSealDao.class);
+
+    private RuralProjectRecords ruralProjectRecords;
+    private ProjectApprovalSignature projectReportSignature;
+    private ProjectReportData projectReportData;
+    private Office office;
+    String documentId = "";
+
+
+    public ApprovalYCThread(RuralProjectRecords ruralProjectRecords, ProjectApprovalSignature projectReportSignature, ProjectReportData projectReportData, Office office)
+    {
+        this.ruralProjectRecords = ruralProjectRecords;
+        this.projectReportSignature = projectReportSignature;
+        this.projectReportData = projectReportData;
+        this.office = office;
+    }
+
+    public void run(){
+        Boolean bool = true;
+        String disposeResult = "";
+        //下载审定单文件
+        String deleteFile = null;
+        try {
+            //进行签章调用
+            //根据项目id查询是否已经提交过了审定单签章
+            if(null == projectReportData){
+                disposeResult = "查询不到该项目的质量复核信息";
+                bool = false;
+                notification(bool,disposeResult,"","","");
+            }
+            if(null!= projectReportData.getSignatureFlag() && 1 == projectReportData.getSignatureFlag()){
+                disposeResult = "该质量复核已经审定单盖章完成";
+                bool = false;
+                notification(bool,disposeResult,"","","");
+            }
+            if(StringUtils.isBlank(ruralProjectRecords.getProjectMasterId())){
+                disposeResult = "项目负责人为空,无法进行签章";
+                bool = false;
+                notification(bool,disposeResult,"","","");
+            }
+
+            //根据项目id和附件类型的
+            Workattachment workClientAttachment = new Workattachment();
+            workClientAttachment.setAttachmentFlag("171");
+            workClientAttachment.setAttachmentId(ruralProjectRecords.getId());
+            List<Workattachment> fileList = workattachmentService.findList(workClientAttachment);
+            if(fileList.size()>0){
+                Workattachment workattachment = fileList.get(0);
+                if(StringUtils.isBlank(workattachment.getUrl())){
+                    disposeResult = "审定单文件存储路径为空,无法进行签章操作,请驳回后重新上传审定单";
+                    bool = false;
+                    notification(bool,disposeResult,"","","");
+                }
+                //下载审定单文件
+                String path = null;
+                if(System.getProperty("os.name").toLowerCase().contains("win")){
+                    path = "D:/attachment-file/";
+                }else{
+                    path = "/attachment-file/";
+                }
+                String file = workattachment.getUrl();
+                file = file.replace("amp;","");
+                String fileName = file.substring(file.lastIndexOf("/") + 1, file.length());
+                String aliyunUrl = Global.getAliyunUrl();
+                String aliDownloadUrl = Global.getAliDownloadUrl();
+                String cons = "";
+                if (file.contains(aliyunUrl)){
+                    cons = aliyunUrl;
+                }else if (file.contains("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")){
+                    cons = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com";
+                }else {
+                    cons = aliDownloadUrl;
+                }
+                String ossKey = file.split(cons+"/")[1];
+                new OSSClientUtil().downByStreamSaveLocal(ossKey,fileName,path+fileName);
+                //将下载下来的文件转换为file文件
+                File srcFile = new File(path+fileName);
+                File verticalInvalidFile = new File(path+fileName);
+                deleteFile = path+fileName;
+
+                //截取文件名称
+                String srcFileName = srcFile.getName().substring(0,srcFile.getName().lastIndexOf("."));
+                //截取文件后缀名
+                String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".")+1, srcFile.getName().length());
+                if(!"doc".equals(substring.toLowerCase()) && !"docx".equals(substring.toLowerCase()) && !"pdf".equals(substring.toLowerCase())){
+                    disposeResult = "请上传doc、docx或者pdf的文件进行签章操作";
+                    bool = false;
+                    notification(bool,disposeResult,"","","");
+                }
+                //获取真签单的documentId
+                HashMap hashMap = SignaturePostUtil.getDocument(srcFile);
+                String code = hashMap.get("code").toString();
+
+                if("0".equals(code)){
+                    String result = hashMap.get("result").toString();
+                    HashMap documentIdMap = JSON.parseObject(result, HashMap.class);
+                    documentId =  documentIdMap.get("documentId").toString();
+                    if("".equals(documentId)){
+                        bool = false;
+                        disposeResult = "签章文件创建失败";
+                        notification(bool,disposeResult,"","","");
+                    }else{
+                        //签章完成则进行数据的保存
+                        projectReportData.setSignatureFlag(0);
+                        projectReportData.setSignatureDocumentId(documentId);
+                        projectReportData.setSignatureInvalidDocumentId("");
+                        projectReportData.setSignatureContractId("");
+                        projectReportData.setSignatureFileName(srcFileName);
+                        projectReportData.setSignatureUploadFileUser(UserUtils.getUser());
+                        projectReportData.setSignatureUploadDate(new Date());
+                        //修改签章对应信息文件
+                        projectReportDataService.updateSignatureInfo(projectReportData);
+
+
+                        List<String> documentList = Lists.newArrayList();
+                        List<String> invalidDocumentList = Lists.newArrayList();
+                        documentList.add(documentId);
+                        //将空白单的documentId存入数据库种
+                        projectReportData.setSignatureInvalidDocumentId(String.join(",", invalidDocumentList));
+                        //根据项目id 和 documentId生成合同id
+                        HashMap contractIdHashMap = ruralProjectMessageService.getYCSignatureContractId(ruralProjectRecords.getId(), documentList,ruralProjectRecords.getProjectMasterId(),"");
+                        String contractIdCode = contractIdHashMap.get("code").toString();
+                        String contractId = "";
+                        if("0".equals(contractIdCode)){
+                            contractId = contractIdHashMap.get("contractId").toString();
+                            if("".equals(contractId)){
+                                disposeResult = "签章文件创建失败";
+                                bool = false;
+                                notification(bool,disposeResult,"","","");
+                            }
+                        }else{
+                            bool = false;
+                            disposeResult = contractIdHashMap.get("message").toString();
+                            notification(bool,disposeResult,"","","");
+                        }
+
+                    }
+                }else{
+                    String message = hashMap.get("message").toString();
+                    bool = false;
+                    disposeResult = message;
+                    notification(bool,disposeResult,"","","");
+                }
+            }else{
+                disposeResult = "审定单文件未找到,无法进行签章操作";
+                bool = false;
+                notification(bool,disposeResult,"","","");
+            }
+        }catch (Exception e){
+            if(StringUtils.isBlank(documentId)){
+                bool = false;
+                disposeResult = e.getMessage();
+                notification(bool,disposeResult,"","","");
+            }
+        }finally {
+            if(StringUtils.isNotBlank(deleteFile)){
+                //根据路径创建文件对象
+                File file = new File(deleteFile);
+                //路径是个文件且不为空时删除文件
+                if(file.isFile()&&file.exists()){
+                    file.delete();
+                }
+            }
+        }
+
+    }
+
+    private void notification(Boolean bool,String disposeResult,String documentId,String contractId,String srcFileName){
+        if(bool){
+            //审核完成提示框
+            String title = "报告号【"+projectReportData.getNumber()+"】审定单签章审批登记完成";
+            String content = "报告号【"+projectReportData.getNumber()+"】审定单签章审批登记完成,项目编号:"+ruralProjectRecords.getProjectId();
+            if ("yes".equals(projectReportSignature.getAct().getFlag())) {
+                projectReportSignature.setStatus(ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(projectReportSignature.getId(),
+                                        projectReportSignature.getCreateBy(),
+                                        projectReportSignature.getCompany().getId(),
+                                        title,
+                                        content,
+                                        "171",
+                                        "0",
+                                        "待通知",
+                                        "审批通过"));
+
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                if (projectReportSignature.getStatus()!= ProjectStatusEnum.RECALL.getValue()){
+                    projectReportSignature.setStatus(ProjectStatusEnum.REJECTED.getValue());
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            projectReportSignature.getCreateBy(),
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "171",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            //签章完成则进行数据的保存
+            projectReportData.setSignatureFlag(1);
+            projectReportData.setSignatureDocumentId(documentId);
+            projectReportData.setSignatureContractId(contractId);
+            projectReportData.setSignatureFileName(srcFileName);
+            projectReportData.setSignatureUploadFileUser(UserUtils.getUser());
+            projectReportData.setSignatureUploadDate(new Date());
+            //修改签章对应信息文件
+            projectReportDataService.updateSignatureInfo(projectReportData);
+
+        }else{
+            //审核完成提示框
+            String title = "报告号【"+projectReportData.getNumber()+"】审定单签章失败。原因:"+ disposeResult;
+            String content = "报告号【"+projectReportData.getNumber()+"】审定单签章失败。原因:"+ disposeResult;
+            if ("yes".equals(projectReportSignature.getAct().getFlag())) {
+                projectReportSignature.setStatus(ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(projectReportSignature.getId(),
+                                        projectReportSignature.getCreateBy(),
+                                        projectReportSignature.getCompany().getId(),
+                                        title,
+                                        content,
+                                        "171",
+                                        "0",
+                                        "待通知",
+                                        "审批通过"));
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                if (projectReportSignature.getStatus()!= ProjectStatusEnum.RECALL.getValue()){
+                    projectReportSignature.setStatus(ProjectStatusEnum.REJECTED.getValue());
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            projectReportSignature.getCreateBy(),
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "171",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            projectReportSignature.setStatus(1);
+            dao.updateApprovalSignature(projectReportSignature);
+        }
+
+
+    }
+}

+ 373 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/SignatureYCThread.java

@@ -0,0 +1,373 @@
+package com.jeeplus.modules.ruralprojectrecords.thread;
+
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.common.utils.SpringContextHolder;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageElectronicSealDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.ProjectReportSignature;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.service.WorkattachmentService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.tools.utils.SignaturePostUtil;
+import com.jeeplus.modules.workactivity.service.WorkActivityProcessService;
+import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
+import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
+import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.File;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 报告签章线程信息
+ * @author: 徐滕
+ * @create: 2021-12-07 16:36
+ **/
+public class SignatureYCThread extends Thread {
+
+    private ProjectReportDataService projectReportDataService = SpringContextHolder.getBean(ProjectReportDataService.class);
+    private WorkattachmentService workattachmentService = SpringContextHolder.getBean(WorkattachmentService.class);
+    private RuralProjectMessageService ruralProjectMessageService = SpringContextHolder.getBean(RuralProjectMessageService.class);
+    private WorkActivityProcessService workActivityProcessService = SpringContextHolder.getBean(WorkActivityProcessService.class);
+    private WorkProjectNotifyService workProjectNotifyService = SpringContextHolder.getBean(WorkProjectNotifyService.class);
+    private RuralProjectMessageElectronicSealDao dao = SpringContextHolder.getBean(RuralProjectMessageElectronicSealDao.class);
+
+    private RuralProjectRecords ruralProjectRecords;
+    private ProjectReportSignature projectReportSignature;
+    private ProjectReportData projectReportData;
+    private Office office;
+    String documentId = "";
+
+
+    public SignatureYCThread(RuralProjectRecords ruralProjectRecords, ProjectReportSignature projectReportSignature, ProjectReportData projectReportData, Office office)
+    {
+        this.ruralProjectRecords = ruralProjectRecords;
+        this.projectReportSignature = projectReportSignature;
+        this.projectReportData = projectReportData;
+        this.office = office;
+    }
+
+    public void run(){
+        Boolean bool = true;
+        String disposeResult = "";
+        //下载审定单文件
+        String deleteFile = null;
+        try {
+            //进行签章调用
+            //根据项目id查询是否已经提交过了审定单签章
+            if(null == ruralProjectRecords){
+                bool = false;
+                disposeResult =  "查询不到该项目信息";
+                notification(bool,disposeResult,"","","");
+            }
+            if(null!= ruralProjectRecords.getReportSignatureFlag() && 1 == ruralProjectRecords.getReportSignatureFlag()){
+                bool = false;
+                disposeResult =  "该项目已经报告盖章完成";
+                notification(bool,disposeResult,"","","");
+            }
+            if(StringUtils.isBlank(ruralProjectRecords.getProjectMasterId())){
+                bool = false;
+                disposeResult =  "项目负责人为空,无法进行签章";
+                notification(bool,disposeResult,"","","");
+            }
+
+            //根据项目id和附件类型的
+            Workattachment workClientAttachment = new Workattachment();
+            workClientAttachment.setAttachmentFlag("145");
+            workClientAttachment.setAttachmentId(ruralProjectRecords.getId());
+            List<Workattachment> fileList = workattachmentService.findList(workClientAttachment);
+            if(fileList.size()>0){
+                Workattachment workattachment = fileList.get(0);
+                if(StringUtils.isBlank(workattachment.getUrl())){
+                    bool = false;
+                    disposeResult =  "报告签章文件存储路径为空,无法进行签章操作,请驳回后重新上传审定单";
+                    notification(bool,disposeResult,"","","");
+                }
+                //下载审定单文件
+                String path = null;
+                if(System.getProperty("os.name").toLowerCase().contains("win")){
+                    path = "D:/attachment-file/";
+                }else{
+                    path = "/attachment-file/";
+                }
+                String file = workattachment.getUrl();
+                file = file.replace("amp;","");
+                String fileName = file.substring(file.lastIndexOf("/") + 1, file.length());
+                String aliyunUrl = Global.getAliyunUrl();
+                String aliDownloadUrl = Global.getAliDownloadUrl();
+                String cons = "";
+                if (file.contains(aliyunUrl)){
+                    cons = aliyunUrl;
+                }else if (file.contains("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")){
+                    cons = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com";
+                }else {
+                    cons = aliDownloadUrl;
+                }
+                String ossKey = file.split(cons+"/")[1];
+                new OSSClientUtil().downByStreamSaveLocal(ossKey,fileName,path+fileName);
+                //将下载下来的文件转换为file文件
+                File srcFile = new File(path+fileName);
+                deleteFile = path+fileName;
+
+                //截取文件名称
+                String srcFileName = srcFile.getName().substring(0,srcFile.getName().lastIndexOf("."));
+                //截取文件后缀名
+                String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".")+1, srcFile.getName().length());
+                if(!"doc".equals(substring.toLowerCase()) && !"docx".equals(substring.toLowerCase()) && !"pdf".equals(substring.toLowerCase())){
+                    disposeResult =  "请上传doc、docx或者pdf的文件进行签章操作";
+                    bool = false;
+                    notification(bool,disposeResult,"","","");
+                }else{
+
+                    //获取真签单的documentId
+                    HashMap hashMap = SignaturePostUtil.getDocument(srcFile);
+                    String code = hashMap.get("code").toString();
+
+                    if("0".equals(code)){
+                        String result = hashMap.get("result").toString();
+                        HashMap documentIdMap = JSON.parseObject(result, HashMap.class);
+                        documentId =  documentIdMap.get("documentId").toString();
+                        if("".equals(documentId)){
+                            disposeResult =  "签章文件创建失败";
+                            bool = false;
+                            notification(bool,disposeResult,"","","");
+                        }else{
+                            //先将数据进行保存
+                            //签章完成则进行数据的保存
+                            ruralProjectRecords.setReportSignatureFlag(0);
+                            ruralProjectRecords.setReportSignatureDocumentId(documentId);
+                            ruralProjectRecords.setReportSignatureContractId("");
+                            ruralProjectRecords.setReportSignatureFileName(srcFileName);
+                            ruralProjectRecords.setReportSignatureUploadFileUser(UserUtils.getUser());
+                            ruralProjectRecords.setReportSignatureUploadDate(new Date());
+                            //修改签章对应信息文件
+                            projectReportDataService.updateReportSignatureInfo(ruralProjectRecords);
+
+
+
+                            List<String> documentList = Lists.newArrayList();
+                            documentList.add(documentId);
+                            //根据项目id 和 documentId生成合同id
+                            long s1 = System.currentTimeMillis();
+                            HashMap contractIdHashMap = ruralProjectMessageService.getReportYCSignatureContractId(ruralProjectRecords.getId(), documentList,ruralProjectRecords.getProjectMasterId(),"");
+                            String contractIdCode = contractIdHashMap.get("code").toString();
+                            String contractId = "";
+                            if("0".equals(contractIdCode)){
+                                contractId = contractIdHashMap.get("contractId").toString();
+                                if("".equals(contractId)){
+                                    disposeResult =  "签章文件创建失败";
+                                    bool = false;
+                                    notification(bool,disposeResult,"","","");
+                                }
+                            }else{
+                                disposeResult =  contractIdHashMap.get("message").toString();
+                                bool = false;
+                                notification(bool,disposeResult,"","","");
+                            }
+                            long s2 = System.currentTimeMillis();
+                            System.out.println("创建签章合同用时:" + (s2-s1));
+                        }
+                    }else{
+                        String message = hashMap.get("message").toString();
+                        disposeResult =  message;
+                        bool = false;
+                        notification(bool,disposeResult,"","","");
+                    }
+                }
+
+
+
+
+                //进行静默签署
+                /*long s3 = System.currentTimeMillis();
+                HashMap signbyCompanyHashMap = ruralProjectMessageService.signbyCompanyByKeyWord(contractId,documentList);
+                if(null != signbyCompanyHashMap){
+                    String signbyCompanyCode = signbyCompanyHashMap.get("code").toString();
+                    String signbyCompanyMessage = signbyCompanyHashMap.get("message").toString();
+                    if(!"0".equals(signbyCompanyCode) && (!"3001009".equals(signbyCompanyCode) || !"文件状态不是“签署中”".equals(signbyCompanyMessage))){
+                        disposeResult =  signbyCompanyMessage;
+                        bool = false;
+                    }
+                }
+                long s4 = System.currentTimeMillis();
+                System.out.println("进行静默签署用时:" + (s4-s3));*/
+                //notification(bool,disposeResult,documentId,contractId,srcFileName);
+                //将documentId 和contractId存储到质量复核对应的数据种
+            }else{
+                disposeResult =  "报告文件未找到,无法进行签章操作";
+                bool = false;
+                notification(bool,disposeResult,"","","");
+            }
+        }catch (Exception e){
+            if(StringUtils.isBlank(documentId)){
+                bool = false;
+                disposeResult = e.getMessage();
+                notification(bool,disposeResult,"","","");
+            }
+        }finally {
+            if(StringUtils.isNotBlank(deleteFile)){
+                //根据路径创建文件对象
+                File file = new File(deleteFile);
+                //路径是个文件且不为空时删除文件
+                if(file.isFile()&&file.exists()){
+                    file.delete();
+                }
+            }
+        }
+
+    }
+
+    private void notification(Boolean bool,String disposeResult,String documentId,String contractId,String srcFileName){
+        if(bool){
+            //users.add(projectReportSignature.getCreateBy());
+            //审核完成提示框
+            String title = "报告号【"+projectReportData.getNumber()+"】报告签章审批登记完成";
+            String content = "报告号【"+projectReportData.getNumber()+"】报告签章审批登记完成,项目编号:"+ruralProjectRecords.getProjectId();
+            if ("yes".equals(projectReportSignature.getAct().getFlag())) {
+                projectReportSignature.setStatus(ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                //userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.add(projectReportSignature.getCreateBy());
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(projectReportSignature.getId(),
+                                        projectReportSignature.getCreateBy(),
+                                        projectReportSignature.getCompany().getId(),
+                                        title,
+                                        content,
+                                        "172",
+                                        "0",
+                                        "待通知",
+                                        "审批通过"));
+                //给苏州质控中的人员发送通知
+                List<User> szzks = UserUtils.getByRoleActivityEnname("szzk",3,office.getId(),"4",projectReportSignature.getCreateBy());
+                for (User szzk: szzks) {
+                    if(StringUtils.isNotBlank(szzk.getId())){
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(projectReportSignature.getId(),
+                                                szzk,
+                                                projectReportSignature.getCompany().getId(),
+                                                title,
+                                                content,
+                                                "172",
+                                                "0",
+                                                "待通知",
+                                                "审批通过"));
+                    }
+                }
+
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                //userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.add(projectReportSignature.getCreateBy());
+                if (projectReportSignature.getStatus()!= ProjectStatusEnum.RECALL.getValue()){
+                    projectReportSignature.setStatus(ProjectStatusEnum.REJECTED.getValue());
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            projectReportSignature.getCreateBy(),
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "172",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            //签章完成则进行数据的保存
+            ruralProjectRecords.setReportSignatureFlag(1);
+            ruralProjectRecords.setReportSignatureDocumentId(documentId);
+            ruralProjectRecords.setReportSignatureContractId(contractId);
+            ruralProjectRecords.setReportSignatureFileName(srcFileName);
+            ruralProjectRecords.setReportSignatureUploadFileUser(UserUtils.getUser());
+            ruralProjectRecords.setReportSignatureUploadDate(new Date());
+            //修改签章对应信息文件
+            projectReportDataService.updateReportSignatureInfo(ruralProjectRecords);
+
+            projectReportSignature.setStatus(5);
+            dao.updateReportSignature(projectReportSignature);
+        }else{
+            //users.add(projectReportSignature.getCreateBy());
+            //审核完成提示框
+            String title = "报告号【"+projectReportData.getNumber()+"】报告签章失败。原因:"+ disposeResult;
+            String content = "报告号【"+projectReportData.getNumber()+"】报告签章失败。原因:"+ disposeResult;
+            if ("yes".equals(projectReportSignature.getAct().getFlag())) {
+                projectReportSignature.setStatus(ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                //userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.add(projectReportSignature.getCreateBy());
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(projectReportSignature.getId(),
+                                        projectReportSignature.getCreateBy(),
+                                        projectReportSignature.getCompany().getId(),
+                                        title,
+                                        content,
+                                        "172",
+                                        "0",
+                                        "待通知",
+                                        "审批通过"));
+                //给苏州质控中的人员发送通知
+                List<User> szzks = UserUtils.getByRoleActivityEnname("szzk",3,office.getId(),"4",projectReportSignature.getCreateBy());
+                for (User szzk: szzks) {
+                    if(StringUtils.isNotBlank(szzk.getId())){
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(projectReportSignature.getId(),
+                                                szzk,
+                                                projectReportSignature.getCompany().getId(),
+                                                title,
+                                                content,
+                                                "172",
+                                                "0",
+                                                "待通知",
+                                                "审批通过"));
+                    }
+                }
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                //userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.add(projectReportSignature.getCreateBy());
+                if (projectReportSignature.getStatus()!= ProjectStatusEnum.RECALL.getValue()){
+                    projectReportSignature.setStatus(ProjectStatusEnum.REJECTED.getValue());
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            projectReportSignature.getCreateBy(),
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "172",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            projectReportSignature.setStatus(1);
+            dao.updateReportSignature(projectReportSignature);
+        }
+
+
+    }
+}

+ 295 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java

@@ -206,6 +206,136 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         return null;
     }
 
+
+    /**
+     * 审定单签章回调操作(盐城)
+     * @param presignCallBack  回调参数
+     * @return
+     */
+    @RequestMapping(value = "/getApprovalYCCoordinates", method=RequestMethod.POST)
+    public String getApprovalYCCoordinates(PresignCallBack presignCallBack) {
+        long t1 = System.currentTimeMillis();
+        //根据contractId查询对应的报告信息
+        String[] documentIds = presignCallBack.getDocumentId().split(",");
+        ProjectReportData projectReportData = null;
+        if(documentIds.length>0){
+            projectReportData = projectReportDataService.getProjectReportDataByDocumentId(documentIds[0]);
+        }else{
+            return null;
+        }
+
+        if(null == projectReportData){
+            return null;
+        }
+
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(projectReportData.getProject().getId());
+
+        //根据contractId查询对应的报告信息
+        RuralProjectRecords records = projectRecordsService.get(projectReportData.getProject().getId());
+        if(StringUtils.isBlank(presignCallBack.getContractId())){
+            String title = "报告号【"+projectReportData.getNumber()+"】审定单签章失败。";
+            String content = "报告号【"+projectReportData.getNumber()+"】审定单签章失败。";
+            projectApprovalSignature.setStatus(ProjectStatusEnum.TSTORE.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectApprovalSignature.getId());
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(projectApprovalSignature.getId(),
+                                        projectApprovalSignature.getCreateBy(),
+                                        projectApprovalSignature.getCompany().getId(),
+                                        title,
+                                        content,
+                                        "171",
+                                        "0",
+                                        "待通知",
+                                        "审批通过"));
+            workActivityProcessService.deleteProcessIdAuditUsers(projectApprovalSignature.getProcessInstanceId());
+
+            projectApprovalSignature.setStatus(1);
+            dao.updateApprovalSignature(projectApprovalSignature);
+            return null;
+        }
+
+        String title = "报告号【"+projectReportData.getNumber()+"】审定单签章审批登记完成";
+        String content = "报告号【"+projectReportData.getNumber()+"】审定单签章审批登记完成,项目编号:"+records.getProjectId();
+        projectApprovalSignature.setStatus(ProjectStatusEnum.SIGNED.getValue());
+        WorkProjectNotify notify = new WorkProjectNotify();
+        notify.setNotifyId(projectApprovalSignature.getId());
+
+        //查询是否已经进行发送通知,没有发送则进行发送,否则  直接跳过
+        List<WorkProjectNotify> byTitle = workProjectNotifyService.getByTitle(title);
+        if(byTitle.size() == 0) {
+            workProjectNotifyService
+                    .save(UtilNotify
+                            .saveNotify(projectApprovalSignature.getId(),
+                                    projectApprovalSignature.getCreateBy(),
+                                    projectApprovalSignature.getCompany().getId(),
+                                    title,
+                                    content,
+                                    "171",
+                                    "0",
+                                    "待通知",
+                                    "审批通过"));
+            workActivityProcessService.deleteProcessIdAuditUsers(projectApprovalSignature.getProcessInstanceId());
+
+
+        }
+        //修改签章信息
+        //签章完成则进行数据的保存
+        projectReportData.setSignatureFlag(1);
+        projectReportData.setSignatureContractId(presignCallBack.getContractId());
+        projectReportData.setSignatureUploadDate(new Date());
+        //对文件回调路径进行处理并保存
+        String signatureUrl = null;
+        if(StringUtils.isNotBlank(presignCallBack.getStoragePath())){
+            signatureUrl = presignCallBack.getStoragePath().replace("oss:/","");
+            projectReportData.setSignatureUrl(signatureUrl);
+        }
+        //修改签章对应信息文件
+        projectReportDataService.updateSignatureInfo(projectReportData);
+
+        projectApprovalSignature.setStatus(5);
+        dao.updateApprovalSignature(projectApprovalSignature);
+        long t2 = System.currentTimeMillis();
+        System.out.println("审定单回调运行耗时:" + (t2-t1) + " 毫秒");
+
+        //将文件存储到项目审定单列表中
+        //签章完成则进行数据的保存
+
+        //将文件存储到对应的档案信息中的“咨询报告书正文”中
+        WorkClientAttachment attchment = new WorkClientAttachment();
+        attchment.setProjectId(records.getId());
+        attchment.setAttachmentId("058ef76b128a4d629acb039017f19161");
+        attchment.setDivIdType("signature");
+        //删除原有的数据信息
+        workattachmentService.deleteByAttachIdAndProject(attchment);
+        //查询原有文件的数据量
+        Integer fileCount = workattachmentService.getAttachmentCountByAttachmentIdAndProjectId(attchment);
+        if( null == fileCount){
+            fileCount = 0;
+        }
+        fileCount = fileCount + 1;
+        if(StringUtils.isNotBlank(signatureUrl)){
+            String fileName = signatureUrl.substring(signatureUrl.lastIndexOf("/")+1,signatureUrl.length());
+            String fileSuffix = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());
+            attchment.setFileSize("");
+            User user = UserUtils.get(records.getCreateBy().getId());
+            attchment.setCreateBy(user);
+            attchment.setUpdateBy(user);
+            attchment.setUrl(signatureUrl);
+            attchment.setType(fileSuffix);
+            attchment.setAttachmentUser(records.getCreateBy().getId());
+            attchment.setAttachmentName(fileName);
+            attchment.setAttachmentFlag("100");
+            attchment.setSort(fileCount.toString());
+            workattachmentService.insertOnWorkClientAttachment(attchment);
+        }
+
+
+        return null;
+    }
+
     /**
      * 报告签章签署完成回调操作
      * @param presignCallBack  回调参数
@@ -371,6 +501,171 @@ public class RuralProjectSignatureCallBackController extends BaseController {
     }
 
 
+    /**
+     * 报告签章签署完成回调操作(盐城)
+     * @param presignCallBack  回调参数
+     * @return
+     */
+    @RequestMapping(value = "/getSignatureYCCoordinates", method=RequestMethod.POST)
+    public String getSignatureYCCoordinates(PresignCallBack presignCallBack) {
+        long t1 = System.currentTimeMillis();
+        //根据contractId查询对应的报告信息
+        String[] documentIds = presignCallBack.getDocumentId().split(",");
+        //根据contractId查询对应的报告信息
+        RuralProjectRecords records = projectRecordsService.getSignatureByDocumentId(documentIds[0]);
+        if(null == records){
+            return null;
+        }
+        ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(records.getId());
+        ProjectReportSignature projectReportSignature = ruralProjectMessageElectronicSealService.getProjectReportSignature(records.getId());
+        //如果没有返回contractId 则进行数据暂存处理
+        if(StringUtils.isBlank(presignCallBack.getContractId())){
+            String title = "报告号【"+projectReportData.getNumber()+"】报告签章失败。请重新签章";
+            String content = "报告号【"+projectReportData.getNumber()+"】报告签章失败。请重新签章";
+            if ("yes".equals(projectReportSignature.getAct().getFlag())) {
+                projectReportSignature.setStatus(ProjectStatusEnum.TSTORE.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectReportSignature.getId());
+                //查询是否已经进行发送通知,没有发送则进行发送,否则  直接跳过
+                List<WorkProjectNotify> byTitle = workProjectNotifyService.getByTitle(title);
+                if(byTitle.size() == 0){
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            projectReportSignature.getCreateBy(),
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "145",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                    //给苏州质控中的人员发送通知
+                    List<User> szzks = UserUtils.getByRoleActivityEnname("XHMDZGS1551886525850yczk",3,projectReportSignature.getOffice().getId(),"4",projectReportSignature.getCreateBy());
+                    for (User szzk: szzks) {
+                        if(org.apache.commons.lang3.StringUtils.isNotBlank(szzk.getId())){
+                            workProjectNotifyService
+                                    .save(UtilNotify
+                                            .saveNotify(projectReportSignature.getId(),
+                                                    szzk,
+                                                    projectReportSignature.getCompany().getId(),
+                                                    title,
+                                                    content,
+                                                    "145",
+                                                    "0",
+                                                    "待通知",
+                                                    "审批通过"));
+                        }
+                    }
+                }
+
+            }
+
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            projectReportSignature.setStatus(1);
+            dao.updateReportSignature(projectReportSignature);
+            return null;
+
+        }
+        //修改签章信息
+
+        //签章完成则进行数据的保存
+        records.setReportSignatureFlag(1);
+        records.setReportSignatureDocumentId(documentIds[0]);
+        records.setReportSignatureContractId(presignCallBack.getContractId());
+        records.setReportSignatureUploadDate(new Date());
+        //对文件回调路径进行处理并保存
+        String signatureUrl = null;
+        if(StringUtils.isNotBlank(presignCallBack.getStoragePath())){
+            signatureUrl = presignCallBack.getStoragePath().replace("oss:/","");
+            records.setReportSignatureUrl(signatureUrl);
+        }
+        //修改签章对应信息文件
+        projectReportDataService.updateReportSignatureInfo(records);
+
+        //发送通知
+        String title = "报告号【"+projectReportData.getNumber()+"】报告签章审批登记完成";
+        String content = "报告号【"+projectReportData.getNumber()+"】报告签章审批登记完成,项目编号:"+records.getProjectId();
+        projectReportSignature.setStatus(ProjectStatusEnum.SIGNED.getValue());
+        WorkProjectNotify notify = new WorkProjectNotify();
+        notify.setNotifyId(projectReportSignature.getId());
+        //查询是否已经进行发送通知,没有发送则进行发送,否则  直接跳过
+        List<WorkProjectNotify> byTitle = workProjectNotifyService.getByTitle(title);
+        if(byTitle.size() == 0){
+            workProjectNotifyService
+                    .save(UtilNotify
+                            .saveNotify(projectReportSignature.getId(),
+                                    projectReportSignature.getCreateBy(),
+                                    projectReportSignature.getCompany().getId(),
+                                    title,
+                                    content,
+                                    "145",
+                                    "0",
+                                    "待通知",
+                                    "审批通过"));
+            //给苏州质控中的人员发送通知
+            List<User> szzks = UserUtils.getByRoleActivityEnnameSignature("XHMDZGS1551886525850yczk",3,projectReportSignature.getOffice().getId(),"4",projectReportSignature.getCreateBy());
+            for (User szzk: szzks) {
+                if(org.apache.commons.lang3.StringUtils.isNotBlank(szzk.getId())){
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectReportSignature.getId(),
+                                            szzk,
+                                            projectReportSignature.getCompany().getId(),
+                                            title,
+                                            content,
+                                            "145",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+
+        }
+        projectReportSignature.setStatus(5);
+        dao.updateReportSignature(projectReportSignature);
+
+
+
+        long t2 = System.currentTimeMillis();
+        System.out.println("报告签章回调运行耗时:" + (t2-t1) + " 毫秒");
+
+        if(StringUtils.isNotBlank(signatureUrl)) {
+            String fileName = signatureUrl.substring(signatureUrl.lastIndexOf("/")+1,signatureUrl.length());
+            //将文件存储到对应的档案信息中的“咨询报告书正文”中
+            WorkClientAttachment attchment = new WorkClientAttachment();
+            attchment.setProjectId(records.getId());
+            attchment.setAttachmentId("6c68d29ea00e4cdb8cf17fb54ee30f0f");
+            attchment.setDivIdType("signature");
+            //删除原有的数据信息
+            workattachmentService.deleteByAttachIdAndProject(attchment);
+            //查询原有文件的数据量
+            Integer fileCount = workattachmentService.getAttachmentCountByAttachmentIdAndProjectId(attchment);
+            if (null == fileCount) {
+                fileCount = 0;
+            }
+            fileCount = fileCount + 1;
+            String fileSuffix = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
+            attchment.setFileSize("");
+            User user = UserUtils.get(records.getCreateBy().getId());
+            attchment.setCreateBy(user);
+            attchment.setUpdateBy(user);
+            attchment.setUrl(signatureUrl);
+            attchment.setType(fileSuffix);
+            attchment.setAttachmentUser(records.getCreateBy().getId());
+            attchment.setAttachmentName(fileName);
+            attchment.setAttachmentFlag("100");
+            attchment.setSort(fileCount.toString());
+            workattachmentService.insertOnWorkClientAttachment(attchment);
+        }
+        return null;
+    }
+
+
 
 
 

+ 855 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/yanChengSignature/RuralProjectMessageElectronicSealYCController.java

@@ -0,0 +1,855 @@
+package com.jeeplus.modules.ruralprojectrecords.web.yanChengSignature;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.FreemarkerUtil;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.ThisLocalityDownloadUtil;
+import com.jeeplus.common.utils.excel.ImportExcelNew;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.projectEngineering.entity.ProjectEngineeringInfo;
+import com.jeeplus.modules.projectEngineering.service.ProjectEngineeringService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+import com.jeeplus.modules.projectrecord.entity.ProjectPlanInfo;
+import com.jeeplus.modules.ruralprojectrecords.entity.*;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageAllService;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageNewService;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.ruralprojectrecords.service.yanChengSignature.RuralProjectMessageElectronicSealYCService;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.UserService;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import jersey.repackaged.com.google.common.collect.Lists;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * (盐城)电子签章项目列表Controller
+ * B级项目
+ * @author 徐滕
+ * @version 2020-04-15
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/ruralProject/electronicSealYC")
+public class RuralProjectMessageElectronicSealYCController extends BaseController {
+    /**
+     * 阿里云文件服务器前缀
+     */
+    private final static String aliyunUrl = Global.getConfig("aliyunUrl");
+    @Autowired
+    private RuralProjectRecordsService projectRecordsService;
+    @Autowired
+    private RuralProjectMessageAllService ruralProjectMessageAllService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private ProjectEngineeringService engineeringService;
+    @Autowired
+    private RuralProjectMessageElectronicSealYCService ruralProjectMessageElectronicSealYCService;
+    @Autowired
+    private RuralProjectMessageNewService ruralProjectMessageService;
+    @Autowired
+    private ProjectReportDataService projectReportDataService;
+    @Autowired
+    private ActTaskService actTaskService;
+    @Autowired
+    private RuralProjectRecordsService ruralProjectRecordsService;
+
+    @ModelAttribute
+    public RuralProjectRecords get(@RequestParam(required=false) String id) {
+        RuralProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        if (entity == null){
+            entity = new RuralProjectRecords();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("ruralProject:electronicSealYC:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(RuralProjectRecords projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        String oldSubmitMoney = "";
+        //进行查询之后进行任何操作,返回还是查询之后的数据页面
+        if (StringUtils.isNotBlank(projectRecords.getToflag())){
+            request.getSession().removeAttribute("searchRuralProjectRecordsAll");
+            RuralProjectRecords search=projectRecords;
+            request.getSession().setAttribute("searchRuralProjectRecordsAll",search);
+        }else{
+            if (request.getSession().getAttribute("searchRuralProjectRecordsAll")!=null){
+                projectRecords= (RuralProjectRecords) request.getSession().getAttribute("searchRuralProjectRecordsAll");
+                model.addAttribute("ruralProjectRecords", projectRecords);
+            }
+        }
+        //添加查询类型(工程咨询)
+        List<String> typeList = Lists.newArrayList();
+        String oldProjectSort = null;
+        if (StringUtils.isBlank(projectRecords.getAttachmentProjectSort())){
+            typeList.add("1");
+            typeList.add("2");
+        }else {
+            oldProjectSort=projectRecords.getAttachmentProjectSort();
+            String attachmentProjectSort=projectRecords.getAttachmentProjectSort();
+            typeList.add(attachmentProjectSort.split("-")[0]);
+            projectRecords.setAttachmentProjectSort(attachmentProjectSort.split("-")[1]);
+        }
+
+        //查询总审人员信息
+        List<User> auditUserList = userService.getAuditUserList();
+        model.addAttribute("userList", auditUserList);
+        //添加查询类型list
+        projectRecords.setTypeList(typeList);
+        projectRecords.setSubmitMoney("1");
+        Page<RuralProjectRecords> page = ruralProjectMessageAllService.findSignatureYCPage(new Page<RuralProjectRecords>(request, response), projectRecords);
+        model.addAttribute("page", page);
+        if(null != projectRecords.getWorkContractInfo()){
+            model.addAttribute("workContractInfoName", projectRecords.getWorkContractInfo().getName());
+            if(null != projectRecords.getWorkContractInfo().getClient()){
+                model.addAttribute("workContractInfoClientName", projectRecords.getWorkContractInfo().getClient().getName());
+            }
+        }
+        //无合同状态下,获取委托方的名称
+        List<RuralProjectRecords> list = page.getList();
+        for (int i = 0; i < list.size(); i++) {
+            RuralProjectRecords records1 = list.get(i);
+            if(StringUtils.isNotBlank(records1.getReportSignatureUrl())){
+                records1.setReportSignatureUrlFlag(1);
+                //处理文件路径
+                //如果文件路径中包含 /xg-qz 则表示文件存储在签章的对应文件库中需要单独进行处理
+                if(records1.getReportSignatureUrl().contains("/xg-qz")){
+                    if(StringUtils.isNotBlank(records1.getReportSignatureUrl())){
+                        String signatureUrl = records1.getReportSignatureUrl().replace("/xg-qz","");
+                        records1.setReportSignatureUrl(signatureUrl);
+                    }
+                    records1.setReportSignatureUrl(new OSSClientUtil().getQzFileTemporaryLookUrl(aliyunUrl + records1.getReportSignatureUrl()));
+                }else{
+                    records1.setReportSignatureUrl(new OSSClientUtil().getFileTemporaryLookUrl(aliyunUrl + records1.getReportSignatureUrl()));
+                }
+            }else{
+                records1.setReportSignatureUrlFlag(0);
+            }
+
+            if(StringUtils.isNotBlank(records1.getSignatureUrl())){
+                records1.setApprovalSignatureUrlFlag(1);
+                //处理文件路径
+                //如果文件路径中包含 /xg-qz 则表示文件存储在签章的对应文件库中需要单独进行处理
+                if(records1.getSignatureUrl().contains("/xg-qz")){
+                    if(StringUtils.isNotBlank(records1.getSignatureUrl())){
+                        String signatureUrl = records1.getSignatureUrl().replace("/xg-qz","");
+                        records1.setSignatureUrl(signatureUrl);
+                    }
+                    records1.setSignatureUrl(new OSSClientUtil().getQzFileTemporaryLookUrl(aliyunUrl + records1.getSignatureUrl()));
+                }else{
+                    records1.setSignatureUrl(new OSSClientUtil().getFileTemporaryLookUrl(aliyunUrl + records1.getSignatureUrl()));
+                }
+            }else{
+                records1.setApprovalSignatureUrlFlag(0);
+            }
+            if (records1.getWorkContractInfo() == null) {
+                projectRecordsService.queryLinkmanInfos(records1);
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                    records1.getWorkContractInfo().setClientName(records1.getWorkContractInfo().getClient().getName());
+                }
+            }
+            //将生成的文件上传到阿里云中
+            ruralProjectMessageElectronicSealYCService.getFile(records1);
+        }
+        if(StringUtils.isNotBlank(oldSubmitMoney)){
+            projectRecords.setSubmitMoney(oldSubmitMoney);
+        }
+        //查询工程类型
+        if (projectRecords.getEngineeringType()!=null){
+            ProjectEngineeringInfo engineeringInfo=engineeringService.get(projectRecords.getEngineeringType());
+            model.addAttribute("engineeringInfo", engineeringInfo);
+        }
+        model.addAttribute("beginDate", projectRecords.getBeginDate());
+        model.addAttribute("endDate", projectRecords.getEndDate());
+        //计算营业总收入
+        //model.addAttribute("moneyAll", ruralProjectMessageAllService.getMoneyAll(projectRecords));
+        model.addAttribute("reportSwitch", BaseController.REPORTSWITCH);
+        if (StringUtils.isNotBlank(oldProjectSort)){
+            model.addAttribute("oldProjectSort", oldProjectSort);
+        }
+        return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectMessageElectronicSealYCList";
+    }
+
+
+    /**
+     * 查看,增加,编辑项目表单页面
+     */
+//    @RequiresPermissions(value={"ruralProject:ruralCostProjectRecords:add","ruralProject:ruralCostProjectRecords:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(@RequestParam(value = "id") String id, Model model) {
+        //查询到显示信息
+        ProjectReportSignatureInfo projectReportSignatureInfo = ruralProjectMessageElectronicSealYCService.findProjectReportSignatureInfoByProjectId(id);
+        /*if(null == projectReportSignatureInfo){
+            projectReportSignatureInfo = new ProjectReportSignatureInfo();
+            model.addAttribute("consultantName","");
+        }else{*/
+            //根据id查咨询员名称
+            String consultantName = ruralProjectMessageElectronicSealYCService.findZXYById(projectReportSignatureInfo.getConsultant());
+            model.addAttribute("consultantName",consultantName);
+        /*}*/
+        //将数据库拿到的科学计数法的数据转换成正常写法
+        //合同总价
+        if(null != projectReportSignatureInfo.getTotalContractPrice() && !projectReportSignatureInfo.getTotalContractPrice().equals("")) {
+            BigDecimal bd1 = new BigDecimal(projectReportSignatureInfo.getTotalContractPrice());
+            projectReportSignatureInfo.setTotalContractPrice(bd1.toPlainString());
+        }
+        //送审金额
+        if(null != projectReportSignatureInfo.getSubmitFee() && !projectReportSignatureInfo.getSubmitFee().equals("")) {
+            BigDecimal bd2 = new BigDecimal(projectReportSignatureInfo.getSubmitFee());
+            projectReportSignatureInfo.setSubmitFee(bd2.toPlainString());
+        }
+        //审定金额
+        if(null != projectReportSignatureInfo.getAuthorizeFee() && !projectReportSignatureInfo.getAuthorizeFee().equals("")) {
+            BigDecimal bd3 = new BigDecimal(projectReportSignatureInfo.getAuthorizeFee());
+            projectReportSignatureInfo.setAuthorizeFee(bd3.toPlainString());
+        }
+        //施工单位考核费
+        if(null != projectReportSignatureInfo.getConstructionUnitAssessmentFee() && !projectReportSignatureInfo.getConstructionUnitAssessmentFee().equals("")) {
+            BigDecimal bd4 = new BigDecimal(projectReportSignatureInfo.getConstructionUnitAssessmentFee());
+            projectReportSignatureInfo.setConstructionUnitAssessmentFee(bd4.toPlainString());
+        }
+        //扣除考核费后审定金额
+        if(null != projectReportSignatureInfo.getAuthorizeFeeDeductAssessmentFee() && !projectReportSignatureInfo.getAuthorizeFeeDeductAssessmentFee().equals("")) {
+            BigDecimal bd5 = new BigDecimal(projectReportSignatureInfo.getAuthorizeFeeDeductAssessmentFee());
+            projectReportSignatureInfo.setAuthorizeFeeDeductAssessmentFee(bd5.toPlainString());
+        }
+
+        model.addAttribute("projectReportSignatureInfo",projectReportSignatureInfo);
+        return "modules/ruralprojectrecords/electronicSeal/ruralProjectReportSignatureInfoForm";
+    }
+
+
+    //@RequiresPermissions("ruralProject:electronicSeal:approvalForm")
+    @RequestMapping(value="approvalForm")
+    public String approvalForm(RuralProjectRecords projectRecords, Model model){
+        if (projectRecords!=null&& StringUtils.isNotBlank(projectRecords.getId())) {
+            projectRecords = projectRecordsService.get(projectRecords.getId());
+            projectRecordsService.queryProjectDetailBySignature(projectRecords,"171");
+            ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
+            projectPlanInfo.setProjectId(projectRecords.getId());
+            if(null != projectRecords.getWorkContractInfo()){
+                if(null != projectRecords.getWorkContractInfo().getContractTypeDoc()){
+                    projectRecords.getWorkContractInfo().setContractType(DictUtils.getMainDictLabel(String.valueOf(projectRecords.getWorkContractInfo().getContractTypeDoc()),"contract_info_type",""));
+                }
+            }
+            List<MainDictDetail> mainDictList = com.google.common.collect.Lists.newArrayList();
+            //工程咨询
+            if("1".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+                //造价审核
+            } else if("2".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+            }
+            if(StringUtils.isNotBlank(projectRecords.getAttachmentProjectSort())){
+                //处理项目类别
+                for (MainDictDetail info: mainDictList) {
+                    if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                        projectRecords.setAttachmentProjectSort(info.getLabel());
+                        break;
+                    }
+                }
+            }
+
+            //查询项目报告信息
+            ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(projectRecords.getId());
+            //如果项目报告不为空,则查询项目线上归档信息
+            if(null != projectReportData){
+                ProjectReportRecord projectReportRecord = ruralProjectMessageService.getProjectReportRecord(projectReportData.getId());
+                if(null != projectReportRecord){
+                    model.addAttribute("projectId", projectRecords.getId());
+                }else{
+                    model.addAttribute("projectId", "");
+                }
+            }
+
+            model.addAttribute("flagProjectReportData",projectReportData);
+
+        }
+        model.addAttribute("projectRecords", projectRecords);
+        RuralProjectRecordsReported reported = ruralProjectMessageService.getRuralProjectRecordsReported(projectRecords.getId());
+        if (null!=reported){
+            model.addAttribute("reportedId",reported.getId());
+        }
+        //查询所有的工程类型
+        List<ProjectEngineeringInfo> engineeringInfos=engineeringService.findList(new ProjectEngineeringInfo());
+        model.addAttribute("engineeringInfo",engineeringInfos);
+        return "/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCForm";
+    }
+
+    /**
+     * 保存审定单签章送审信息
+     */
+    @RequestMapping(value = "approvalSave")
+    public String approvalSave(RuralProjectRecords projectRecords, Model model, RedirectAttributes redirectAttributes) throws Exception {
+        try {
+            //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+            ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectApprovalSignature(projectRecords.getId());
+            if(null != projectApprovalSignature){
+                if(projectApprovalSignature.getStatus() == 3 || projectApprovalSignature.getStatus() == 1) {
+                    //projectApprovalSignature.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+                }else if(projectApprovalSignature.getStatus() == 2){
+                    addMessage(redirectAttributes, "审定单签章申请已送审,无法重复送审");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+                }else if(projectApprovalSignature.getStatus() == 5){
+                    addMessage(redirectAttributes, "审定单签章申请已登记完成,无法再次送审");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+                }
+                projectApprovalSignature.setWorkAttachments(projectRecords.getWorkAttachments());
+                ruralProjectMessageElectronicSealYCService.approvalSave(projectApprovalSignature);//保存
+            }else{
+                projectApprovalSignature = new ProjectApprovalSignature();
+                projectApprovalSignature.setProjectId(projectRecords.getId());
+                projectApprovalSignature.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+                projectApprovalSignature.setWorkAttachments(projectRecords.getWorkAttachments());
+                ruralProjectMessageElectronicSealYCService.approvalSave(projectApprovalSignature);//保存
+            }
+            addMessage(redirectAttributes, "保存审定单签章申请成功");
+        }catch (Exception e){
+            logger.error("保存审定单签章申请异常:",e);
+            addMessage(redirectAttributes, "保存审定单签章申请异常:"+e.getMessage());
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+    }
+
+    /**
+     * 审批
+     * @param projectRecords
+     * @param model
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping("approvalSaveAudit")
+    public String approvalSaveAudit(RuralProjectRecords projectRecords, Model model, RedirectAttributes redirectAttributes,Integer saveAuditFlag)  {
+        String home = projectRecords.getHome();
+        try {
+            String taskDefKey = projectRecords.getAct().getTaskDefKey();
+            //当状态为未通过时,重新修改数据
+            if ("modifyApply".equals(taskDefKey)) {
+                projectRecords.getAct().setComment("重新申请");
+            }
+            //List<User> users = UserUtils.getByProssType(projectRecords.getProcessInstanceId(),1);
+            List<User> users = Lists.newArrayList();
+
+            User user = UserUtils.getByUserName("郑炎基");
+            if(null != user ){
+                users.add(user);
+            }
+            String flag = projectRecords.getAct().getFlag();
+            if ("yes".equals(flag) && (users==null || users.size()==0)){
+                addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
+            }else {
+                //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+                ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectApprovalSignature(projectRecords.getId());
+                projectApprovalSignature.setAct(projectRecords.getAct());
+                if(null != saveAuditFlag) {
+                    if (projectApprovalSignature.getStatus() != 4 && projectApprovalSignature.getStatus() != 5) {
+                        addMessage(redirectAttributes, "审定单签章申请已送审,请勿重复送审");
+                        if (StringUtils.isNotBlank(home) && "home".equals(home)) {
+                            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+                        } else {
+                            return "redirect:" + Global.getAdminPath() + "/ruralProject/electronicSealYC/?repage";
+                        }
+                    }
+                }
+                if(projectApprovalSignature.getStatus() == 5){
+                    addMessage(redirectAttributes, "审定单签章申请已登记完成,无法再次送审");
+                    if (StringUtils.isNotBlank(home) && "home".equals(home)){
+                        return "redirect:" + Global.getAdminPath() + "/home/?repage";
+                    }else {
+                        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+                    }
+                }
+                String str = ruralProjectMessageElectronicSealYCService.approvalSaveAudit(projectApprovalSignature,users);
+                addMessage(redirectAttributes, str);
+            }
+        }catch (Exception e){
+            addMessage(redirectAttributes, "审定单签章申请审批失败");
+            logger.error("Exception e:"+e);
+        }
+
+        if (StringUtils.isNotBlank(home) && "home".equals(home)){
+            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+        }else {
+            return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+        }
+    }
+
+    /**
+     * 读取单个实体流程
+     * @return
+     */
+    @RequestMapping(value = "getReportedProcess")
+    public String getReportedProcess(RuralProjectRecords projectRecords,Model model) {
+        model.addAttribute("processInstanceId", projectRecords.getProcessInstanceId());
+        return "modules/workreimbursement/workReimbursementTrack";
+    }
+
+
+    @RequestMapping(value = "approvalModify")
+    public String approvalModify(RuralProjectRecords projectRecords, Model model) {
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectApprovalSignature(projectRecords.getId());
+        projectRecords = projectRecordsService.get(projectRecords.getId());
+        projectRecordsService.queryProjectDetailBySignature(projectRecords,"171");
+        projectRecords.setProcessInstanceId(projectApprovalSignature.getProcessInstanceId());
+        projectRecords.setProjectStatus(projectApprovalSignature.getStatus());
+        ProcessInstance processInstance = actTaskService.getProcIns(projectRecords.getProcessInstanceId());
+        if (processInstance!=null) {
+            Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
+            Act act = new Act();
+            act.setTaskId(taskInfok.getId());
+            act.setTaskName(taskInfok.getName());
+            act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
+            act.setProcDefId(taskInfok.getProcessDefinitionId());
+            act.setProcInsId(taskInfok.getProcessInstanceId());
+            act.setTask(taskInfok);
+            projectRecords.setAct(act);
+        }
+
+        //查询所有的工程类型
+        List<ProjectEngineeringInfo> engineeringInfos=engineeringService.findList(new ProjectEngineeringInfo());
+
+        //处理项目类别
+        List<MainDictDetail> mainDictList = com.google.common.collect.Lists.newArrayList();
+        if("1".equals(projectRecords.getProjectType())){
+            mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+        }else if("2".equals(projectRecords.getProjectType())){
+            mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+        }
+        for (MainDictDetail info: mainDictList) {
+            if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                projectRecords.setAttachmentProjectSort(info.getLabel());
+                break;
+            }
+        }
+        //查询工程类型信息
+        ProjectEngineeringInfo engineeringInfo=engineeringService.get(projectRecords.getEngineeringType());
+        model.addAttribute("engInfo", engineeringInfo);
+        model.addAttribute("engineeringInfo",engineeringInfos);
+        model.addAttribute("processInstanceId", projectRecords.getProcessInstanceId());
+        model.addAttribute("projectRecords", projectRecords);
+        return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCModify";
+    }
+
+
+    @RequestMapping(value = "approvalRevoke")
+    public String approvalRevoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String id = requestMap.get("id");
+        try {
+            //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+            ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectApprovalSignature(id);
+
+            if("5".equals(projectApprovalSignature.getStatus())){
+                addMessage(redirectAttributes, "审定单签章申请已审批通过,无法撤回");
+                return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+            }
+            ruralProjectMessageElectronicSealYCService.cancelApprovalProcess(projectApprovalSignature);
+            addMessage(redirectAttributes, "撤回该审定单签章申请审批成功");
+        }catch (Exception e){
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该审定单签章申请审批失败");
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+    }
+
+
+
+
+
+
+
+
+
+    //@RequiresPermissions("ruralProject:electronicSeal:reportSignatureForm")
+    @RequestMapping(value="reportSignatureForm")
+    public String reportSignatureForm(RuralProjectRecords projectRecords, Model model){
+        if (projectRecords!=null&& StringUtils.isNotBlank(projectRecords.getId())) {
+            projectRecords = projectRecordsService.get(projectRecords.getId());
+            projectRecordsService.queryProjectDetailBySignature(projectRecords,"145");
+            ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
+            projectPlanInfo.setProjectId(projectRecords.getId());
+            if(null != projectRecords.getWorkContractInfo()){
+                if(null != projectRecords.getWorkContractInfo().getContractTypeDoc()){
+                    projectRecords.getWorkContractInfo().setContractType(DictUtils.getMainDictLabel(String.valueOf(projectRecords.getWorkContractInfo().getContractTypeDoc()),"contract_info_type",""));
+                }
+            }
+            List<MainDictDetail> mainDictList = com.google.common.collect.Lists.newArrayList();
+            //工程咨询
+            if("1".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+                //造价审核
+            } else if("2".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+            }
+            if(StringUtils.isNotBlank(projectRecords.getAttachmentProjectSort())){
+                //处理项目类别
+                for (MainDictDetail info: mainDictList) {
+                    if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                        projectRecords.setAttachmentProjectSort(info.getLabel());
+                        break;
+                    }
+                }
+            }
+
+            //查询项目报告信息
+            ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(projectRecords.getId());
+            //如果项目报告不为空,则查询项目线上归档信息
+            if(null != projectReportData){
+                ProjectReportRecord projectReportRecord = ruralProjectMessageService.getProjectReportRecord(projectReportData.getId());
+                if(null != projectReportRecord){
+                    model.addAttribute("projectId", projectRecords.getId());
+                }else{
+                    model.addAttribute("projectId", "");
+                }
+            }
+
+            model.addAttribute("flagProjectReportData",projectReportData);
+
+        }
+        model.addAttribute("projectRecords", projectRecords);
+        RuralProjectRecordsReported reported = ruralProjectMessageService.getRuralProjectRecordsReported(projectRecords.getId());
+        if (null!=reported){
+            model.addAttribute("reportedId",reported.getId());
+        }
+        //查询所有的工程类型
+        List<ProjectEngineeringInfo> engineeringInfos=engineeringService.findList(new ProjectEngineeringInfo());
+        model.addAttribute("engineeringInfo",engineeringInfos);
+        return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCForm";
+    }
+
+    /**
+     * 保存报告签章送审信息
+     */
+    @RequestMapping(value = "reportSignatureSave")
+    public String reportSignatureSave(RuralProjectRecords projectRecords, RedirectAttributes redirectAttributes) {
+        try {
+            //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+            ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectReportSignature(projectRecords.getId());
+            if(null != projectApprovalSignature){
+                if(projectApprovalSignature.getStatus() == 3 || projectApprovalSignature.getStatus() == 1) {
+                    //projectApprovalSignature.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+                }else if(projectApprovalSignature.getStatus() == 2){
+                    addMessage(redirectAttributes, "报告签章申请已送审,无法重复送审");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+                }else if(projectApprovalSignature.getStatus() == 5){
+                    addMessage(redirectAttributes, "报告签章申请已登记完成,无法再次送审");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+                }
+                ruralProjectMessageElectronicSealYCService.reportSignatureSave(projectApprovalSignature);//保存
+            }else{
+                projectApprovalSignature = new ProjectReportSignature();
+                projectApprovalSignature.setProjectId(projectRecords.getId());
+                projectApprovalSignature.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+                ruralProjectMessageElectronicSealYCService.reportSignatureSave(projectApprovalSignature);//保存
+            }
+            addMessage(redirectAttributes, "保存报告签章申请成功");
+        }catch (Exception e){
+            logger.error("保存报告签章申请异常:",e);
+            addMessage(redirectAttributes, "保存报告签章申请异常:"+e.getMessage());
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+    }
+
+    /**
+     * 审批
+     * @param projectRecords
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping("reportSignatureSaveAudit")
+    public String reportSignatureSaveAudit(RuralProjectRecords projectRecords, RedirectAttributes redirectAttributes,Integer saveAuditFlag)  {
+        String home = projectRecords.getHome();
+        try {
+            String taskDefKey = projectRecords.getAct().getTaskDefKey();
+            //当状态为未通过时,重新修改数据
+            if ("modifyApply".equals(taskDefKey)) {
+                projectRecords.getAct().setComment("重新申请");
+            }
+            //List<User> users = UserUtils.getByProssType(projectRecords.getProcessInstanceId(),1);
+            List<User> users = Lists.newArrayList();
+            if ("szzk".equals(taskDefKey)){
+                User user = UserUtils.getByUserName("郑炎基");
+                if(null != user ){
+                    users.add(user);
+                }
+                /*users = UserUtils.getByProssType(projectRecords.getProcessInstanceId(),2);
+                if (users==null )
+                    users = UserUtils.getByRoleActivityEnname("bmzr",2,projectRecords.getOffice().getId(),"2",projectRecords.getCreateBy());*/
+            }else  if ("bmzr".equals(taskDefKey)){
+                User user = UserUtils.getByUserName("郑炎基");
+                if(null != user ){
+                    users.add(user);
+                }
+                /*users = UserUtils.getByProssType(projectRecords.getProcessInstanceId(),2);
+                if (users==null )
+                    users = UserUtils.getByRoleActivityEnname("bmzr",2,projectRecords.getOffice().getId(),"2",projectRecords.getCreateBy());*/
+            }else if ("modifyApply".equals(taskDefKey)){
+                users = UserUtils.getByProssType(projectRecords.getProcessInstanceId(),1);
+            }
+            String flag = projectRecords.getAct().getFlag();
+            if ("yes".equals(flag) && (users==null || users.size()==0)){
+                addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
+            }else {
+                //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+                ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectReportSignature(projectRecords.getId());
+                projectApprovalSignature.setAct(projectRecords.getAct());
+                if(null != saveAuditFlag) {
+                    if (projectApprovalSignature.getStatus() != 4 && projectApprovalSignature.getStatus() != 5) {
+                        addMessage(redirectAttributes, "报告签章申请已送审,请勿重复送审");
+                        if (StringUtils.isNotBlank(home) && "home".equals(home)) {
+                            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+                        } else {
+                            return "redirect:" + Global.getAdminPath() + "/ruralProject/electronicSealYC/?repage";
+                        }
+                    }
+                }
+                if(projectApprovalSignature.getStatus() == 5){
+                    addMessage(redirectAttributes, "报告签章申请已登记完成,无法再次送审");
+                    if (StringUtils.isNotBlank(home) && "home".equals(home)){
+                        return "redirect:" + Global.getAdminPath() + "/home/?repage";
+                    }else {
+                        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+                    }
+                }
+                String str = ruralProjectMessageElectronicSealYCService.reportSignatureSaveAudit(projectApprovalSignature,users);
+                addMessage(redirectAttributes, str);
+            }
+        }catch (Exception e){
+            addMessage(redirectAttributes, "报告签章申请审批失败");
+            logger.error("Exception e:"+e);
+        }
+
+        if (StringUtils.isNotBlank(home) && "home".equals(home)){
+            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+        }else {
+            return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+        }
+    }
+
+
+    @RequestMapping(value = "reportSignatureModify")
+    public String reportSignatureModify(RuralProjectRecords projectRecords, Model model) {
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectReportSignature(projectRecords.getId());
+        projectRecords = projectRecordsService.get(projectRecords.getId());
+        projectRecordsService.queryProjectDetail(projectRecords);
+        projectRecords.setProcessInstanceId(projectApprovalSignature.getProcessInstanceId());
+        projectRecords.setProjectStatus(projectApprovalSignature.getStatus());
+        ProcessInstance processInstance = actTaskService.getProcIns(projectRecords.getProcessInstanceId());
+        if (processInstance!=null) {
+            Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
+            Act act = new Act();
+            act.setTaskId(taskInfok.getId());
+            act.setTaskName(taskInfok.getName());
+            act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
+            act.setProcDefId(taskInfok.getProcessDefinitionId());
+            act.setProcInsId(taskInfok.getProcessInstanceId());
+            act.setTask(taskInfok);
+            projectRecords.setAct(act);
+        }
+
+        //查询所有的工程类型
+        List<ProjectEngineeringInfo> engineeringInfos=engineeringService.findList(new ProjectEngineeringInfo());
+
+        //处理项目类别
+        List<MainDictDetail> mainDictList = com.google.common.collect.Lists.newArrayList();
+        if("1".equals(projectRecords.getProjectType())){
+            mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+        }else if("2".equals(projectRecords.getProjectType())){
+            mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+        }
+        for (MainDictDetail info: mainDictList) {
+            if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                projectRecords.setAttachmentProjectSort(info.getLabel());
+                break;
+            }
+        }
+        //查询工程类型信息
+        ProjectEngineeringInfo engineeringInfo=engineeringService.get(projectRecords.getEngineeringType());
+        model.addAttribute("engInfo", engineeringInfo);
+        model.addAttribute("engineeringInfo",engineeringInfos);
+        model.addAttribute("processInstanceId", projectRecords.getProcessInstanceId());
+        model.addAttribute("projectRecords", projectRecords);
+        return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC//ruralProjectRecordsReportSignatureYCModify";
+    }
+
+
+    @RequestMapping(value = "reportSignatureRevoke")
+    public String reportSignatureRevoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String id = requestMap.get("id");
+        try {
+            //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+            ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealYCService.getProjectReportSignature(id);
+
+            if("5".equals(projectApprovalSignature.getStatus())){
+                addMessage(redirectAttributes, "报告签章申请已审批通过,无法撤回");
+                return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+            }
+            ruralProjectMessageElectronicSealYCService.cancelReportSignatureProcess(projectApprovalSignature);
+            addMessage(redirectAttributes, "撤回该报告签章申请审批成功");
+        }catch (Exception e){
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该报告签章申请审批失败");
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+    /**
+     * 下载工程造价咨询质量控制流程单信息
+     * @param response
+     * @param projectReportData
+     */
+    @RequestMapping(value="downloadMassControl")
+    @ResponseBody
+    public void downloadMassControl(HttpServletResponse response, ProjectReportData projectReportData)  {
+        Map<String,Object> data = ruralProjectMessageElectronicSealYCService.disposeProjectReportdata(projectReportData);
+        String projectName = (String) data.get("projectName");
+        String number = (String) data.get("number");
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("projectSignature.ftl","UTF-8");
+            File docFile = new File("报告号【"+number + "】报告签章.doc");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            ResponseUtil.docResponse("报告号【"+number + "】项目名称:" + projectName + " 报告签章.doc",docFile,response);
+            //将生成的文件上传到阿里云中
+            ruralProjectMessageElectronicSealYCService.uploadOss(projectReportData,docFile);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+
+            //获取tomcat的路径
+            String tomcatFilePath=System.getProperty("catalina.home");
+            //删除tomcat目录下的处理后的文件信息
+            File tomcatFile = new File(tomcatFilePath+"/bin/"+"报告号【"+number + "】报告签章.doc");
+            if (tomcatFile.isFile()) {
+                tomcatFile.delete();
+            }
+        }
+
+
+    }
+
+    /**
+     * 导入造价审核B类项目数据
+     */
+    @RequiresPermissions("ruralProject:ruralProjectMessageAll:importB")
+    @RequestMapping(value = "importB", method=RequestMethod.POST)
+    public String importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
+        try {
+            ImportExcelNew importExcelNew = new ImportExcelNew();
+            List<ProjectReportSignatureInfo> list = importExcelNew.ImportExcelNew(file,1,0);  //只处理file 1不要也可以,0为sheet编号
+
+            //对数据进行处理
+            String resultStr = ruralProjectMessageElectronicSealYCService.disposeImportBRuralProjectRecords(list);
+            addMessage(redirectAttributes, resultStr);
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导入B类项目失败!失败信息:"+e.getMessage());
+        }
+        return "redirect:"+ Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+    }
+
+    /**
+     * 下载导入造价审核B类项目数据模板
+     */
+    @RequestMapping(value = "importB/template")
+    public String importFileTemplateB(HttpServletResponse response, HttpServletRequest request) {
+        try {
+            ThisLocalityDownloadUtil download = new ThisLocalityDownloadUtil();
+            download.download("签章导入数据模板.xlsx",request,response);  //自制的导入模板
+        } catch (Exception e) {
+            logger.error("导入数据模板下载失败!",e);
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+    }
+
+
+    /**
+     * 报告签章信息保存
+     */
+//    @RequiresPermissions(value={"ruralProject:ruralCostProjectRecords:add","ruralProject:ruralCostProjectRecords:edit"},logical= Logical.OR)
+    @Transactional(readOnly = false)
+    @RequestMapping(value = "save")
+    public String save(ProjectReportSignatureInfo projectReportSignatureInfo, RedirectAttributes redirectAttributes,
+                       @RequestParam(value = "consultantName") String consultantName) throws Exception {
+//        if (!beanValidator(model, projectRecords)){
+//            return form(projectRecords, model);
+//        }
+        if(null == projectReportSignatureInfo.getConsultant() || projectReportSignatureInfo.getConsultant().equals("")){
+            String consultant = ruralProjectMessageElectronicSealYCService.findZXYByName(consultantName);
+            projectReportSignatureInfo.setConsultant(consultant);
+        }
+        //修改
+        ruralProjectMessageElectronicSealYCService.updateProjectReportSignatureInfo(projectReportSignatureInfo);
+
+
+        addMessage(redirectAttributes, "报告签章信息修改成功");
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSealYC/?repage";
+    }
+}

+ 163 - 0
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -1390,6 +1390,87 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsApprovalView";
 					}
+				} else if (workProjectNotify.getType().equals("171")) {    //合同管理new
+					RuralProjectRecords ruralProjectRecords = ruralProjectMessageElectronicSealService.getProjectApprovalSignatureById(workProjectNotify.getNotifyId());
+					ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(ruralProjectRecords.getId());
+					ruralProjectRecords.setSignatureContractId(projectReportData.getSignatureContractId());
+					if (ruralProjectRecords != null && StringUtils.isNotBlank(ruralProjectRecords.getId())) {
+						//根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+						ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(ruralProjectRecords.getId());
+
+						ruralProjectRecordsService.queryProjectDetail(ruralProjectRecords);
+						ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
+						projectPlanInfo.setProjectId(ruralProjectRecords.getId());
+						//获取项目计划信息
+						List<ProjectPlanInfo> projectPlanList = projectPlanService.getProjectPlanList(projectPlanInfo);
+						//项目计划附件信息
+						//List<WorkClientAttachment> projectPlanAttachment = projectPlanService.getWorkAttachment(ruralProjectRecords.getId());
+						ruralProjectRecords.setProjectPlanList(projectPlanList);
+						//ruralProjectRecords.setWorkAttachments(projectPlanAttachment);
+						ruralProjectRecordsService.getWorkAttachmentBySignature(ruralProjectRecords,"171");
+						if(null != projectApprovalSignature){
+							ruralProjectRecords.setProjectStatus(projectApprovalSignature.getStatus());
+							ruralProjectRecords.setProcessInstanceId(projectApprovalSignature.getProcessInstanceId());
+						}
+
+						if(StringUtils.isNotBlank(projectReportData.getSignatureUrl())){
+							ruralProjectRecords.setApprovalSignatureUrlFlag(1);
+							//处理文件路径
+							//如果文件路径中包含 /xg-qz 则表示文件存储在签章的对应文件库中需要单独进行处理
+							if(projectReportData.getSignatureUrl().contains("/xg-qz")){
+								if(StringUtils.isNotBlank(projectReportData.getSignatureUrl())){
+									String signatureUrl = projectReportData.getSignatureUrl().replace("/xg-qz","");
+									projectReportData.setSignatureUrl(signatureUrl);
+								}
+								ruralProjectRecords.setSignatureUrl(new OSSClientUtil().getQzFileTemporaryLookUrl(aliyunUrl + projectReportData.getSignatureUrl()));
+							}else{
+								ruralProjectRecords.setSignatureUrl(new OSSClientUtil().getFileTemporaryLookUrl(aliyunUrl + projectReportData.getSignatureUrl()));
+							}
+						}else{
+							ruralProjectRecords.setApprovalSignatureUrlFlag(0);
+						}
+					}
+					ruralProjectRecords.setAct(getByAct(ruralProjectRecords.getProcessInstanceId()));
+					if(StringUtils.isNotBlank(workProjectNotify.getHome())){
+						ruralProjectRecords.setHome(workProjectNotify.getHome());
+					}else{
+						ruralProjectRecords.setHome("home");
+					}
+					//查询所有的工程类型
+					List<ProjectEngineeringInfo> engineeringInfos=engineeringService.findList(new ProjectEngineeringInfo());
+
+					//处理项目类别
+					List<MainDictDetail> mainDictList = Lists.newArrayList();
+					if("1".equals(ruralProjectRecords.getProjectType())){
+						mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+					}else if("2".equals(ruralProjectRecords.getProjectType())){
+						mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+					}
+					for (MainDictDetail info: mainDictList) {
+						if(ruralProjectRecords.getAttachmentProjectSort().equals(info.getValue())){
+							ruralProjectRecords.setAttachmentProjectSort(info.getLabel());
+							break;
+						}
+					}
+
+					model.addAttribute("engineeringInfo",engineeringInfos);
+					model.addAttribute("processInstanceId", ruralProjectRecords.getProcessInstanceId());
+					model.addAttribute("projectRecords", ruralProjectRecords);
+					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
+						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCView";
+					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
+						//审核模板标识
+						model.addAttribute("identification", "ruralprojectrecords");
+						model.addAttribute("identificationName","项目登记审核意见");
+						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCAudit";
+					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
+						//查询工程类型信息
+						ProjectEngineeringInfo engineeringInfo=engineeringService.get(ruralProjectRecords.getEngineeringType());
+						model.addAttribute("engInfo", engineeringInfo);
+						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCModify";
+					} else {
+						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCView";
+					}
 				} else if (workProjectNotify.getType().equals("145")) {    //合同管理new
 					RuralProjectRecords ruralProjectRecords = ruralProjectMessageElectronicSealService.getProjectReportSignatureById(workProjectNotify.getNotifyId());
 					ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectReportSignature(ruralProjectRecords.getId());
@@ -1472,6 +1553,88 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportSignatureView";
 					}
+				} else if (workProjectNotify.getType().equals("172")) {    //合同管理new
+					RuralProjectRecords ruralProjectRecords = ruralProjectMessageElectronicSealService.getProjectReportSignatureById(workProjectNotify.getNotifyId());
+					ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectReportSignature(ruralProjectRecords.getId());
+					if (ruralProjectRecords != null && StringUtils.isNotBlank(ruralProjectRecords.getId())) {
+
+						ruralProjectRecordsService.queryProjectDetail(ruralProjectRecords);
+						ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
+						projectPlanInfo.setProjectId(ruralProjectRecords.getId());
+						//获取项目计划信息
+						List<ProjectPlanInfo> projectPlanList = projectPlanService.getProjectPlanList(projectPlanInfo);
+						//项目计划附件信息
+						//List<WorkClientAttachment> projectPlanAttachment = projectPlanService.getWorkAttachment(ruralProjectRecords.getId());
+						ruralProjectRecords.setProjectPlanList(projectPlanList);
+						ruralProjectRecordsService.getWorkAttachmentBySignature(ruralProjectRecords,"145");
+						//ruralProjectRecords.setWorkAttachments(projectPlanAttachment);
+						if(null != projectApprovalSignature){
+							ruralProjectRecords.setProjectStatus(projectApprovalSignature.getStatus());
+							ruralProjectRecords.setProcessInstanceId(projectApprovalSignature.getProcessInstanceId());
+						}
+
+						if(StringUtils.isNotBlank(ruralProjectRecords.getReportSignatureUrl())){
+							ruralProjectRecords.setReportSignatureUrlFlag(1);
+							//处理文件路径
+							//如果文件路径中包含 /xg-qz 则表示文件存储在签章的对应文件库中需要单独进行处理
+							if(ruralProjectRecords.getReportSignatureUrl().contains("/xg-qz")){
+								if(StringUtils.isNotBlank(ruralProjectRecords.getReportSignatureUrl())){
+									String signatureUrl = ruralProjectRecords.getReportSignatureUrl().replace("/xg-qz","");
+									ruralProjectRecords.setReportSignatureUrl(signatureUrl);
+								}
+								ruralProjectRecords.setReportSignatureUrl(new OSSClientUtil().getQzFileTemporaryLookUrl(aliyunUrl + ruralProjectRecords.getReportSignatureUrl()));
+							}else{
+								ruralProjectRecords.setReportSignatureUrl(new OSSClientUtil().getFileTemporaryLookUrl(aliyunUrl + ruralProjectRecords.getReportSignatureUrl()));
+							}
+						}else{
+							ruralProjectRecords.setReportSignatureUrlFlag(0);
+						}
+					}
+					ruralProjectRecords.setAct(getByAct(ruralProjectRecords.getProcessInstanceId()));
+					if(StringUtils.isNotBlank(workProjectNotify.getHome())){
+						ruralProjectRecords.setHome(workProjectNotify.getHome());
+					}else{
+						ruralProjectRecords.setHome("home");
+					}
+					//查询所有的工程类型
+					List<ProjectEngineeringInfo> engineeringInfos=engineeringService.findList(new ProjectEngineeringInfo());
+
+					//处理项目类别
+					List<MainDictDetail> mainDictList = Lists.newArrayList();
+					if("1".equals(ruralProjectRecords.getProjectType())){
+						mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+					}else if("2".equals(ruralProjectRecords.getProjectType())){
+						mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+					}
+					for (MainDictDetail info: mainDictList) {
+						if(ruralProjectRecords.getAttachmentProjectSort().equals(info.getValue())){
+							ruralProjectRecords.setAttachmentProjectSort(info.getLabel());
+							break;
+						}
+					}
+					Act act = getByAct(projectApprovalSignature.getProcessInstanceId());
+					model.addAttribute("engineeringInfo",engineeringInfos);
+					model.addAttribute("processInstanceId", ruralProjectRecords.getProcessInstanceId());
+					model.addAttribute("projectRecords", ruralProjectRecords);
+					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
+						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCView";
+					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
+						//审核模板标识
+						model.addAttribute("identification", "ruralprojectrecords");
+						model.addAttribute("identificationName","项目登记审核意见");
+						if("szzk".equals(act.getTaskDefKey())){
+							return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCSzzkAudit";
+						}else{
+							return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCAudit";
+						}
+					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
+						//查询工程类型信息
+						ProjectEngineeringInfo engineeringInfo=engineeringService.get(ruralProjectRecords.getEngineeringType());
+						model.addAttribute("engInfo", engineeringInfo);
+						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCModify";
+					} else {
+						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCView";
+					}
 				} else if (workProjectNotify.getType().equals("18")) {
 					Company company = companyService.get(workProjectNotify.getNotifyId());
 					company.setHome("home");

+ 8 - 0
src/main/resources/jeeplus.properties

@@ -311,6 +311,10 @@ remoteServer.visit =
 #report_category_id = 2896237012158222343
 ##审定内用印流程id
 #judgement_category_id = 2912238663717396786
+#审定单用印流程id(盐城)
+#approval_YC_category_id = 2933219658963918882
+#报告用印流程id(盐城)
+#report_YC_category_id = 2933233335469383748
 
 #192.168.2.6签章测试参数
 apptoken = uIJQmTwyGJ
@@ -335,4 +339,8 @@ approval_category_id = 2895582833566102435
 report_category_id = 2895618951099527314
 ##审定内用印流程id
 judgement_category_id = 2920938119742709765
+#审定单用印流程id(盐城)
+approval_YC_category_id = 2932214418853044239
+#报告用印流程id(盐城)
+report_YC_category_id = 2933233458312618324
 

+ 1 - 1
src/main/webapp/webpage/modules/projectreportnum/reportAuditProject.jsp

@@ -134,4 +134,4 @@
 </div>
 </div>
 </body>
-</html>
+</html>

File diff suppressed because it is too large
+ 1509 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectMessageElectronicSealYCList.jsp


+ 572 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCAudit.jsp

@@ -0,0 +1,572 @@
+<%@ 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}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+	<script src="${ctxStatic}/common/html/js/script.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+				var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
+				$("#opinion").val(ss);
+                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() {
+
+			var tt = $("#contractNum").val();
+			if (tt == null || tt === "") {
+				$("#divv").hide();
+				$("#divv2").show();
+				$("#divv3").hide();
+				setTimeout(function () {
+					var tt = $("#workClientLinkmanList").find("tr").eq(0).find("td").eq(1).text().trim();
+					$("#clientName").val(tt);
+				},100);
+			}else{
+				$("#divv2").hide();
+			}
+
+			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);
+			}
+
+			var contractInformation='${projectRecords.workContractInfo.contractInformation}'
+			if(contractInformation == "1"){
+				$("#c2").show();
+				$("#c1").hide();
+			}else{
+				$("#c2").hide();
+				$("#c1").show();
+			}
+		});
+
+        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 = "projectRecods";
+            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="projectRecords" enctype="multipart/form-data" action="${ctx}/ruralProject/electronicSealYC/approvalSaveAudit" method="post" class="form-horizontal 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 path="processInstanceId"/>
+		<form:hidden id="flag" path="act.flag"/>
+		<input type="hidden" id="opinion" name="act.comment" value="" maxlength="255">
+		<c:set var="status" value="${projectRecords.act.status}" />
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目合同信息</h2></div>
+				<div id="div1">
+					<div class="layui-item layui-col-sm12 lw6">
+						<label class="layui-form-label">合同编号:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false" id="contractNum"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.contractNum}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">合同名称:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.name}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6" id="c1">
+						<label class="layui-form-label double-line">合同金额(元):</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatNumber value="${projectRecords.workContractInfo.contractPrice}" pattern="#,##0.00#"/>"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6" id="c2" style="display: none">
+						<label class="layui-form-label">费率描述:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" id="otherDetails"  class="form-control layui-input" value="${projectRecords.workContractInfo.otherDetails}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">委托方:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false" id="clientName" readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.client.name}"/>
+						</div>
+					</div>
+				</div>
+				<div id="divv2">
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">无合同</label>
+					</div>
+				</div>
+				<div id="div3">
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">合同类别:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" style="background-color: #f1f1f1" class="form-control layui-input" value="${fns:getMainDictLabel(projectRecords.workContractInfo.contractTypeDoc, 'contract_info_type', '')}"/>
+<%--							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.constructionProjectTypeStr}"/>--%>
+						</div>
+					</div>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目基础信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">报告号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectReportNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" cssStyle="background-color: #f1f1f1"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty projectRecords.projectStatus}">${fns:getDictLabel(projectRecords.projectStatus, 'rural_project_audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目所在地:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.province}-${projectRecords.city}-${projectRecords.county}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">投资性质:</label>
+					<div class="layui-input-block">
+						<c:if test="${projectRecords.projectProperties==null}">
+							<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+						</c:if>
+						<c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+							<c:if test="${v.value==projectRecords.projectProperties}">
+								<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+							</c:if>
+						</c:forEach>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">建设地点:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${projectRecords.projectSite}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.createBy.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目责任人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.leaderNameStr}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${projectRecords.officeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目负责人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.projectMasterName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">工程类型:</label>
+					<div class="layui-input-block">
+						<form:select path="engineeringType" disabled="true" style="background-color: #f1f1f1"  class="form-control simple-select">
+							<form:options items="${engineeringInfo}" itemLabel="engineeringName" itemValue="id" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目等级:</label>
+					<div class="layui-input-block">
+						<c:forEach items="${fns:getMainDictListOnProjectAdvent('attachment_project_grade')}" var="v">
+							<input type="radio" disabled name="submitMoney" id="submitMoney" value="${v.value}" title="${v.label}" <c:if test="${projectRecords.submitMoney==v.value}">checked</c:if>>
+						</c:forEach>
+						<p style="color: red;font-size: 12px;">200万以上部队或政府项目及500万以上其它项目为A级,其余为B级</p>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">送审规模(万元):</label>
+					<div class="layui-input-block">
+						<form:input path="submitScale" readonly="true" style="background-color: #f1f1f1" id="submitScale" maxlength="12" htmlEscape="false" placeholder="请输入送审规模" class="form-control layui-input number"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">工作开始日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">工作结束日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">项目类别:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${projectRecords.attachmentProjectSort}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6 with-textarea">
+					<label class="layui-form-label">工程概况:</label>
+					<div class="layui-input-block">
+						<textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${projectRecords.projectDesc}</textarea>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6 with-textarea">
+					<label class="layui-form-label">备注:</label>
+					<div class="layui-input-block">
+						<textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${projectRecords.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>委托方联系人信息</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th class="hide"></th>
+							<th width="25%">委托方</th>
+							<th width="25%">联系人姓名</th>
+							<th width="25%">联系方式1</th>
+							<th width="25%">联系方式2</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+							<tr>
+								<td >
+										${info.clientId.name}
+								</td>
+								<td>
+										${info.name}
+								</td>
+								<td>
+										${info.linkPhone}
+								</td>
+								<td>
+										${info.linkMobile}
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>施工方信息</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th class="hide"></th>
+							<th width="25%">施工方单位名称</th>
+							<th width="25%">联系人姓名</th>
+							<th width="25%">联系方式1</th>
+							<th width="25%">联系方式2</th>
+						</tr>
+						</thead>
+						<tbody id="workConstructionLinkmanList">
+						<c:forEach items="${projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+							<tr>
+								<td >
+										${info.clientId.name}
+								</td>
+								<td>
+										${info.name}
+								</td>
+								<td>
+										${info.linkPhone}
+								</td>
+								<td>
+										${info.linkMobile}
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审定单签章附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="listAttachment" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="180px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${projectRecords.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${projectRecords.uploadMode == 2}">
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+												<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+															</c:when>
+															<c:otherwise>
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+												<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${workReimbursement.uploadMode == 2}">
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																		<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:when>
+															<c:otherwise>
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																		<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											<%--													<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">--%>
+											<%--														<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>--%>
+											<%--													</c:if>--%>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+
+
+	</form:form>
+		<div class="form-group-label">
+			<div style="float: right"> <a href="javascript:void(0)" style='background-color: #FFB800' onclick="openDialogre('个人模板列表', '${ctx}/auditTemplate/auditTemplate/templateList?identification=${identification}&name=${identificationName}','80%', '70%','','关闭')" class="nav-btn layui-btn layui-btn-sm" ><i class="fa fa-file-excel-o"></i> 审核意见模板列表</a></div>
+			<h2>审批意见</h2>
+		</div>
+		<iframe id="iframe" src="${ctx}/auditTemplate/auditTemplate/iframeView?identification=${identification}" name="listresult" frameborder="0" align="left" width="100%" height="300" scrolling="value"></iframe>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批流程</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<act:flowChart procInsId="${processInstanceId}"/>
+					<act:histoicFlow procInsId="${processInstanceId}"/>
+				</div>
+			</div>
+	</div>
+</div>
+</body>
+</html>

File diff suppressed because it is too large
+ 1287 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCForm.jsp


+ 617 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCModify.jsp

@@ -0,0 +1,617 @@
+<%@ 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}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                var length = $("#file_attachment").find("tr").length ;
+                if(length == 0){
+                    top.layer.msg("请上传审定单签章附件", {icon: 0});
+                    return;
+                }
+                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() {
+
+            var tt = $("#contractNum").val();
+            if (tt == null || tt === "") {
+                $("#divv").hide();
+                $("#divv2").show();
+                $("#divv3").hide();
+                setTimeout(function () {
+                    var tt = $("#workClientLinkmanList").find("tr").eq(0).find("td").eq(1).text().trim();
+                    $("#clientName").val(tt);
+                },100);
+            }else{
+                $("#divv2").hide();
+            }
+
+            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);
+            }
+
+            var contractInformation='${projectRecords.workContractInfo.contractInformation}'
+            if(contractInformation == "1"){
+                $("#c2").show();
+                $("#c1").hide();
+            }else{
+                $("#c2").hide();
+                $("#c1").show();
+            }
+
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;
+            var length = $("#file_attachment").find("tr").length ;
+            if(length>0){
+                top.layer.msg("已上传审定单,审定单文件有且只能存在一条", {icon: 0});
+                return;
+            }
+            if(files.length>1){
+                top.layer.msg("只能够上传一个审定单签章文件", {icon: 0});
+                return;
+            }
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachTypes = "doc,docx,pdf";
+                var suffixResult = 0;
+                var fileName = file.name.lastIndexOf(".");//获取到文件名开始到最后一个“.”的长度。
+                var fileNameLength = file.name.length;//获取到文件名长度
+                var suffix = file.name.substring(fileName + 1, fileNameLength);//截取后缀名
+                suffix = suffix.toLowerCase();//后缀名转换小写
+                attachTypes = attachTypes.toLowerCase();
+                var attachTypeList = attachTypes.split(",");
+                for (var x in attachTypeList) {
+                    if(attachTypeList[x] == suffix){
+                        suffixResult = 1;
+                        break;
+                    }
+                }
+                if(suffixResult == 0 ){
+                    top.layer.msg("上传附件只能为:"+attachTypes+" 类型文件", {icon: 0});
+                    return false;
+                }
+
+                var attachmentId = $("#id").val();
+                var attachmentFlag = "144";
+                /*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="projectRecords" enctype="multipart/form-data" action="${ctx}/ruralProject/electronicSealYC/approvalSaveAudit" method="post" class="form-horizontal 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 path="processInstanceId"/>
+            <form:hidden id="flag" path="act.flag"/>
+            <input type="hidden" id="opinion" name="act.comment" value="" maxlength="255">
+            <c:set var="status" value="${projectRecords.act.status}" />
+
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目合同信息</h2></div>
+                <div id="div1">
+                    <div class="layui-item layui-col-sm12 lw6">
+                        <label class="layui-form-label">合同编号:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="contractNum"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.contractNum}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">合同名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.name}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6" id="c1">
+                        <label class="layui-form-label double-line">合同金额(元):</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatNumber value="${projectRecords.workContractInfo.contractPrice}" pattern="#,##0.00#"/>"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6" id="c2" style="display: none">
+                        <label class="layui-form-label">费率描述:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" id="otherDetails"  class="form-control layui-input" value="${projectRecords.workContractInfo.otherDetails}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">委托方:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="clientName" readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.client.name}"/>
+                        </div>
+                    </div>
+                </div>
+                <div id="divv2">
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">无合同</label>
+                    </div>
+                </div>
+                <div id="div3">
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">合同类别:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" style="background-color: #f1f1f1" class="form-control layui-input" value="${fns:getMainDictLabel(projectRecords.workContractInfo.contractTypeDoc, 'contract_info_type', '')}"/>
+                                <%--							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.constructionProjectTypeStr}"/>--%>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目基础信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">报告号:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectReportNumber}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <form:input path="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" cssStyle="background-color: #f1f1f1"/>
+                            <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty projectRecords.projectStatus}">${fns:getDictLabel(projectRecords.projectStatus, 'rural_project_audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目所在地:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.province}-${projectRecords.city}-${projectRecords.county}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">投资性质:</label>
+                    <div class="layui-input-block">
+                        <c:if test="${projectRecords.projectProperties==null}">
+                            <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+                        </c:if>
+                        <c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+                            <c:if test="${v.value==projectRecords.projectProperties}">
+                                <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+                            </c:if>
+                        </c:forEach>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">建设地点:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${projectRecords.projectSite}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.createBy.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目责任人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.leaderNameStr}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${projectRecords.officeName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目负责人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.projectMasterName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">工程类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="engineeringType" disabled="true" style="background-color: #f1f1f1"  class="form-control simple-select">
+                            <form:options items="${engineeringInfo}" itemLabel="engineeringName" itemValue="id" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目等级:</label>
+                    <div class="layui-input-block">
+                        <c:forEach items="${fns:getMainDictListOnProjectAdvent('attachment_project_grade')}" var="v">
+                            <input type="radio" disabled name="submitMoney" id="submitMoney" value="${v.value}" title="${v.label}" <c:if test="${projectRecords.submitMoney==v.value}">checked</c:if>>
+                        </c:forEach>
+                        <p style="color: red;font-size: 12px;">200万以上部队或政府项目及500万以上其它项目为A级,其余为B级</p>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">送审规模(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="submitScale" readonly="true" style="background-color: #f1f1f1" id="submitScale" maxlength="12" htmlEscape="false" placeholder="请输入送审规模" class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作结束日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">项目类别:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${projectRecords.attachmentProjectSort}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">工程概况:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${projectRecords.projectDesc}</textarea>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">备注:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${projectRecords.remarks}</textarea>
+                    </div>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>委托方联系人信息</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container" >
+                    <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">委托方</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>施工方信息</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container" >
+                    <table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">施工方单位名称</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workConstructionLinkmanList">
+                        <c:forEach items="${projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>审定单签章附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </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>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="listAttachment" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件预览</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="180px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${projectRecords.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${projectRecords.uploadMode == 2}">
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                <td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${workReimbursement.uploadMode == 2}">
+                                                                <c:choose>
+                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                                        <td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                                    </c:when>
+                                                                    <c:otherwise>
+                                                                        <c:choose>
+                                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+                                                                            </c:when>
+                                                                            <c:otherwise>
+                                                                                <c:choose>
+                                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:when>
+                                                                                    <c:otherwise>
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:otherwise>
+                                                                                </c:choose>
+                                                                            </c:otherwise>
+                                                                        </c:choose>
+                                                                    </c:otherwise>
+                                                                </c:choose>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <c:choose>
+                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                                    </c:when>
+                                                                    <c:otherwise>
+                                                                        <c:choose>
+                                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                                <td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
+                                                                            </c:when>
+                                                                            <c:otherwise>
+                                                                                <c:choose>
+                                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:when>
+                                                                                    <c:otherwise>
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:otherwise>
+                                                                                </c:choose>
+                                                                            </c:otherwise>
+                                                                        </c:choose>
+                                                                    </c:otherwise>
+                                                                </c:choose>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                            <%--													<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">--%>
+                                            <%--														<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>--%>
+                                            <%--													</c:if>--%>
+                                        <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+        </form:form>
+        <%--<iframe id="iframe" src="${ctx}/auditTemplate/auditTemplate/iframeView?identification=${identification}" name="listresult" frameborder="0" align="left" width="100%" height="300" scrolling="value"></iframe>--%>
+        <div class="form-group layui-row">
+            <div class="form-group-label"><h2>审批流程</h2></div>
+            <div class="layui-item layui-col-xs12 form-table-container" >
+                <act:flowChart procInsId="${processInstanceId}"/>
+                <act:histoicFlow procInsId="${processInstanceId}"/>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

File diff suppressed because it is too large
+ 1249 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsApprovalYCView.jsp


+ 570 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCAudit.jsp

@@ -0,0 +1,570 @@
+<%@ 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}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+	<script src="${ctxStatic}/common/html/js/script.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+				var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
+				$("#opinion").val(ss);
+                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() {
+
+			var tt = $("#contractNum").val();
+			if (tt == null || tt === "") {
+				$("#divv").hide();
+				$("#divv2").show();
+				$("#divv3").hide();
+				setTimeout(function () {
+					var tt = $("#workClientLinkmanList").find("tr").eq(0).find("td").eq(1).text().trim();
+					$("#clientName").val(tt);
+				},100);
+			}else{
+				$("#divv2").hide();
+			}
+
+			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);
+			}
+
+			var contractInformation='${projectRecords.workContractInfo.contractInformation}'
+			if(contractInformation == "1"){
+				$("#c2").show();
+				$("#c1").hide();
+			}else{
+				$("#c2").hide();
+				$("#c1").show();
+			}
+		});
+
+        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 = "projectRecods";
+            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="projectRecords" enctype="multipart/form-data" action="${ctx}/ruralProject/electronicSealYC/reportSignatureSaveAudit" method="post" class="form-horizontal 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 path="processInstanceId"/>
+		<form:hidden id="flag" path="act.flag"/>
+		<input type="hidden" id="opinion" name="act.comment" value="" maxlength="255">
+		<c:set var="status" value="${projectRecords.act.status}" />
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目合同信息</h2></div>
+				<div id="div1">
+					<div class="layui-item layui-col-sm12 lw6">
+						<label class="layui-form-label">合同编号:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false" id="contractNum"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.contractNum}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">合同名称:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.name}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6" id="c1">
+						<label class="layui-form-label double-line">合同金额(元):</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatNumber value="${projectRecords.workContractInfo.contractPrice}" pattern="#,##0.00#"/>"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6" id="c2" style="display: none">
+						<label class="layui-form-label">费率描述:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" id="otherDetails"  class="form-control layui-input" value="${projectRecords.workContractInfo.otherDetails}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">委托方:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false" id="clientName" readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.client.name}"/>
+						</div>
+					</div>
+				</div>
+				<div id="divv2">
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">无合同</label>
+					</div>
+				</div>
+				<div id="div3">
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">合同类别:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" style="background-color: #f1f1f1" class="form-control layui-input" value="${fns:getMainDictLabel(projectRecords.workContractInfo.contractTypeDoc, 'contract_info_type', '')}"/>
+<%--							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.constructionProjectTypeStr}"/>--%>
+						</div>
+					</div>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目基础信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">报告号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectReportNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" cssStyle="background-color: #f1f1f1"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty projectRecords.projectStatus}">${fns:getDictLabel(projectRecords.projectStatus, 'rural_project_audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目所在地:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.province}-${projectRecords.city}-${projectRecords.county}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">投资性质:</label>
+					<div class="layui-input-block">
+						<c:if test="${projectRecords.projectProperties==null}">
+							<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+						</c:if>
+						<c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+							<c:if test="${v.value==projectRecords.projectProperties}">
+								<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+							</c:if>
+						</c:forEach>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">建设地点:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${projectRecords.projectSite}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.createBy.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目责任人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.leaderNameStr}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${projectRecords.officeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目负责人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.projectMasterName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">工程类型:</label>
+					<div class="layui-input-block">
+						<form:select path="engineeringType" disabled="true" style="background-color: #f1f1f1"  class="form-control simple-select">
+							<form:options items="${engineeringInfo}" itemLabel="engineeringName" itemValue="id" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目等级:</label>
+					<div class="layui-input-block">
+						<c:forEach items="${fns:getMainDictListOnProjectAdvent('attachment_project_grade')}" var="v">
+							<input type="radio" disabled name="submitMoney" id="submitMoney" value="${v.value}" title="${v.label}" <c:if test="${projectRecords.submitMoney==v.value}">checked</c:if>>
+						</c:forEach>
+						<p style="color: red;font-size: 12px;">200万以上部队或政府项目及500万以上其它项目为A级,其余为B级</p>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">送审规模(万元):</label>
+					<div class="layui-input-block">
+						<form:input path="submitScale" readonly="true" style="background-color: #f1f1f1" id="submitScale" maxlength="12" htmlEscape="false" placeholder="请输入送审规模" class="form-control layui-input number"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">工作开始日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">工作结束日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">项目类别:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${projectRecords.attachmentProjectSort}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6 with-textarea">
+					<label class="layui-form-label">工程概况:</label>
+					<div class="layui-input-block">
+						<textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${projectRecords.projectDesc}</textarea>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6 with-textarea">
+					<label class="layui-form-label">备注:</label>
+					<div class="layui-input-block">
+						<textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${projectRecords.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>委托方联系人信息</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th class="hide"></th>
+							<th width="25%">委托方</th>
+							<th width="25%">联系人姓名</th>
+							<th width="25%">联系方式1</th>
+							<th width="25%">联系方式2</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+							<tr>
+								<td >
+										${info.clientId.name}
+								</td>
+								<td>
+										${info.name}
+								</td>
+								<td>
+										${info.linkPhone}
+								</td>
+								<td>
+										${info.linkMobile}
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>施工方信息</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th class="hide"></th>
+							<th width="25%">施工方单位名称</th>
+							<th width="25%">联系人姓名</th>
+							<th width="25%">联系方式1</th>
+							<th width="25%">联系方式2</th>
+						</tr>
+						</thead>
+						<tbody id="workConstructionLinkmanList">
+						<c:forEach items="${projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+							<tr>
+								<td >
+										${info.clientId.name}
+								</td>
+								<td>
+										${info.name}
+								</td>
+								<td>
+										${info.linkPhone}
+								</td>
+								<td>
+										${info.linkMobile}
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>报告签章附件信息</h2></div>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="listAttachment" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="180px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${projectRecords.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${projectRecords.uploadMode == 2}">
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+												<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+															</c:when>
+															<c:otherwise>
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+												<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${workReimbursement.uploadMode == 2}">
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																		<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:when>
+															<c:otherwise>
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																		<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+											<%--													<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">--%>
+											<%--														<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>--%>
+											<%--													</c:if>--%>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+	</form:form>
+		<div class="form-group-label">
+			<div style="float: right"> <a href="javascript:void(0)" style='background-color: #FFB800' onclick="openDialogre('个人模板列表', '${ctx}/auditTemplate/auditTemplate/templateList?identification=${identification}&name=${identificationName}','80%', '70%','','关闭')" class="nav-btn layui-btn layui-btn-sm" ><i class="fa fa-file-excel-o"></i> 审核意见模板列表</a></div>
+			<h2>审批意见</h2>
+		</div>
+		<iframe id="iframe" src="${ctx}/auditTemplate/auditTemplate/iframeView?identification=${identification}" name="listresult" frameborder="0" align="left" width="100%" height="300" scrolling="value"></iframe>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批流程</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<act:flowChart procInsId="${processInstanceId}"/>
+					<act:histoicFlow procInsId="${processInstanceId}"/>
+				</div>
+			</div>
+	</div>
+</div>
+</body>
+</html>

File diff suppressed because it is too large
+ 1290 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCForm.jsp


+ 623 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCModify.jsp

@@ -0,0 +1,623 @@
+<%@ 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}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+
+                var length = $("#file_attachment").find("tr").length ;
+                if(length == 0){
+                    top.layer.msg("请上传报告签章附件", {icon: 0});
+                    return;
+                }
+                //var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
+                //$("#opinion").val(ss);
+                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() {
+
+            var tt = $("#contractNum").val();
+            if (tt == null || tt === "") {
+                $("#divv").hide();
+                $("#divv2").show();
+                $("#divv3").hide();
+                setTimeout(function () {
+                    var tt = $("#workClientLinkmanList").find("tr").eq(0).find("td").eq(1).text().trim();
+                    $("#clientName").val(tt);
+                },100);
+            }else{
+                $("#divv2").hide();
+            }
+
+            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);
+            }
+
+            var contractInformation='${projectRecords.workContractInfo.contractInformation}'
+            if(contractInformation == "1"){
+                $("#c2").show();
+                $("#c1").hide();
+            }else{
+                $("#c2").hide();
+                $("#c1").show();
+            }
+
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            $("#flagFile").val(false);
+            var files = $("#attachment_file")[0].files;
+            var length = $("#file_attachment").find("tr").length ;
+            if(length>0){
+                top.layer.msg("已上传审定单,审定单文件有且只能存在一条", {icon: 0});
+                return;
+            }
+            if(files.length>1){
+                top.layer.msg("只能够上传一个审定单签章文件", {icon: 0});
+                return;
+            }
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachTypes = "doc,docx";
+                var suffixResult = 0;
+                var fileName = file.name.lastIndexOf(".");//获取到文件名开始到最后一个“.”的长度。
+                var fileNameLength = file.name.length;//获取到文件名长度
+                var suffix = file.name.substring(fileName + 1, fileNameLength);//截取后缀名
+                suffix = suffix.toLowerCase();//后缀名转换小写
+                attachTypes = attachTypes.toLowerCase();
+                var attachTypeList = attachTypes.split(",");
+                for (var x in attachTypeList) {
+                    if(attachTypeList[x] == suffix){
+                        suffixResult = 1;
+                        break;
+                    }
+                }
+                if(suffixResult == 0 ){
+                    top.layer.msg("上传附件只能为:"+attachTypes+" 类型文件", {icon: 0});
+                    return false;
+                }
+
+                var attachmentId = $("#id").val();
+                var attachmentFlag = "145";
+                /*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="projectRecords" enctype="multipart/form-data" action="${ctx}/ruralProject/electronicSealYC/reportSignatureSaveAudit" method="post" class="form-horizontal 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 path="processInstanceId"/>
+            <form:hidden id="flag" path="act.flag"/>
+            <%--<input type="hidden" id="opinion" name="act.comment" value="" maxlength="255">--%>
+            <c:set var="status" value="${projectRecords.act.status}" />
+
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目合同信息</h2></div>
+                <div id="div1">
+                    <div class="layui-item layui-col-sm12 lw6">
+                        <label class="layui-form-label">合同编号:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="contractNum"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.contractNum}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">合同名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.name}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6" id="c1">
+                        <label class="layui-form-label double-line">合同金额(元):</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatNumber value="${projectRecords.workContractInfo.contractPrice}" pattern="#,##0.00#"/>"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6" id="c2" style="display: none">
+                        <label class="layui-form-label">费率描述:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" id="otherDetails"  class="form-control layui-input" value="${projectRecords.workContractInfo.otherDetails}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">委托方:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="clientName" readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.client.name}"/>
+                        </div>
+                    </div>
+                </div>
+                <div id="divv2">
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">无合同</label>
+                    </div>
+                </div>
+                <div id="div3">
+                    <div class="layui-item layui-col-sm6 lw6">
+                        <label class="layui-form-label">合同类别:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false"  readonly="true" style="background-color: #f1f1f1" class="form-control layui-input" value="${fns:getMainDictLabel(projectRecords.workContractInfo.contractTypeDoc, 'contract_info_type', '')}"/>
+                                <%--							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.constructionProjectTypeStr}"/>--%>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目基础信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">报告号:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectReportNumber}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <div class="input-group">
+                            <form:input path="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" cssStyle="background-color: #f1f1f1"/>
+                            <span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty projectRecords.projectStatus}">${fns:getDictLabel(projectRecords.projectStatus, 'rural_project_audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目所在地:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.province}-${projectRecords.city}-${projectRecords.county}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">投资性质:</label>
+                    <div class="layui-input-block">
+                        <c:if test="${projectRecords.projectProperties==null}">
+                            <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+                        </c:if>
+                        <c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+                            <c:if test="${v.value==projectRecords.projectProperties}">
+                                <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+                            </c:if>
+                        </c:forEach>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">建设地点:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${projectRecords.projectSite}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.createBy.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目责任人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.leaderNameStr}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${projectRecords.officeName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目负责人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.projectMasterName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">工程类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="engineeringType" disabled="true" style="background-color: #f1f1f1"  class="form-control simple-select">
+                            <form:options items="${engineeringInfo}" itemLabel="engineeringName" itemValue="id" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目等级:</label>
+                    <div class="layui-input-block">
+                        <c:forEach items="${fns:getMainDictListOnProjectAdvent('attachment_project_grade')}" var="v">
+                            <input type="radio" disabled name="submitMoney" id="submitMoney" value="${v.value}" title="${v.label}" <c:if test="${projectRecords.submitMoney==v.value}">checked</c:if>>
+                        </c:forEach>
+                        <p style="color: red;font-size: 12px;">200万以上部队或政府项目及500万以上其它项目为A级,其余为B级</p>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">送审规模(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="submitScale" readonly="true" style="background-color: #f1f1f1" id="submitScale" maxlength="12" htmlEscape="false" placeholder="请输入送审规模" class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作结束日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">项目类别:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${projectRecords.attachmentProjectSort}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">工程概况:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${projectRecords.projectDesc}</textarea>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">备注:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${projectRecords.remarks}</textarea>
+                    </div>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>委托方联系人信息</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container" >
+                    <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">委托方</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>施工方信息</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container" >
+                    <table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">施工方单位名称</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workConstructionLinkmanList">
+                        <c:forEach items="${projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>报告签章附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </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>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="listAttachment" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件预览</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="180px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${projectRecords.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${projectRecords.uploadMode == 2}">
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                <td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${workReimbursement.uploadMode == 2}">
+                                                                <c:choose>
+                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                                        <td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                                    </c:when>
+                                                                    <c:otherwise>
+                                                                        <c:choose>
+                                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+                                                                            </c:when>
+                                                                            <c:otherwise>
+                                                                                <c:choose>
+                                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:when>
+                                                                                    <c:otherwise>
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:otherwise>
+                                                                                </c:choose>
+                                                                            </c:otherwise>
+                                                                        </c:choose>
+                                                                    </c:otherwise>
+                                                                </c:choose>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <c:choose>
+                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                                    </c:when>
+                                                                    <c:otherwise>
+                                                                        <c:choose>
+                                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                                <td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
+                                                                            </c:when>
+                                                                            <c:otherwise>
+                                                                                <c:choose>
+                                                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:when>
+                                                                                    <c:otherwise>
+                                                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
+                                                                                    </c:otherwise>
+                                                                                </c:choose>
+                                                                            </c:otherwise>
+                                                                        </c:choose>
+                                                                    </c:otherwise>
+                                                                </c:choose>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                            <%--													<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">--%>
+                                            <%--														<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>--%>
+                                            <%--													</c:if>--%>
+                                        <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+
+        </form:form>
+        <%--<iframe id="iframe" src="${ctx}/auditTemplate/auditTemplate/iframeView?identification=${identification}" name="listresult" frameborder="0" align="left" width="100%" height="300" scrolling="value"></iframe>--%>
+        <div class="form-group layui-row">
+            <div class="form-group-label"><h2>审批流程</h2></div>
+            <div class="layui-item layui-col-xs12 form-table-container" >
+                <act:flowChart procInsId="${processInstanceId}"/>
+                <act:histoicFlow procInsId="${processInstanceId}"/>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 623 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCSzzkAudit.jsp

@@ -0,0 +1,623 @@
+<%@ 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}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+	<script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+	<script src="${ctxStatic}/common/html/js/script.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+
+	<script type="text/javascript">
+		var validateForm;
+		function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+				var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
+				$("#opinion").val(ss);
+                if(obj == 1) {
+					var length = $("#file_attachment").find("tr").length ;
+					if(length == 0){
+						top.layer.msg("请上传报告签章附件", {icon: 0});
+						return;
+					}
+                    $("#flag").val("yes");
+                }else {
+                    if(obj == 2){
+                        $("#flag").val("no1");
+					}else {
+                        $("#flag").val("no2");
+					}
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+
+		  return false;
+		}
+		$(document).ready(function() {
+
+			var tt = $("#contractNum").val();
+			if (tt == null || tt === "") {
+				$("#divv").hide();
+				$("#divv2").show();
+				$("#divv3").hide();
+				setTimeout(function () {
+					var tt = $("#workClientLinkmanList").find("tr").eq(0).find("td").eq(1).text().trim();
+					$("#clientName").val(tt);
+				},100);
+			}else{
+				$("#divv2").hide();
+			}
+
+			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);
+			}
+
+			var contractInformation='${projectRecords.workContractInfo.contractInformation}'
+			if(contractInformation == "1"){
+				$("#c2").show();
+				$("#c1").hide();
+			}else{
+				$("#c2").hide();
+				$("#c1").show();
+			}
+
+			$("#attachment_btn").click(function () {
+				$("#attachment_file").click();
+			});
+		});
+
+		function insertTitle(tValue){
+			$("#flagFile").val(false);
+			var files = $("#attachment_file")[0].files;
+			var length = $("#file_attachment").find("tr").length ;
+			if(length>1){
+				top.layer.msg("报告文件最多只能存在两条", {icon: 0});
+				return;
+			}
+			if(files.length>1){
+				top.layer.msg("一次只能上传一个报告文件", {icon: 0});
+				return;
+			}
+			for(var i = 0;i<files.length;i++) {
+				var file = files[i];
+				var attachTypes = "doc,docx";
+				var suffixResult = 0;
+				var fileName = file.name.lastIndexOf(".");//获取到文件名开始到最后一个“.”的长度。
+				var fileNameLength = file.name.length;//获取到文件名长度
+				var suffix = file.name.substring(fileName + 1, fileNameLength);//截取后缀名
+				suffix = suffix.toLowerCase();//后缀名转换小写
+				attachTypes = attachTypes.toLowerCase();
+				var attachTypeList = attachTypes.split(",");
+				for (var x in attachTypeList) {
+					if(attachTypeList[x] == suffix){
+						suffixResult = 1;
+						break;
+					}
+				}
+				if(suffixResult == 0 ){
+					top.layer.msg("上传附件只能为:"+attachTypes+" 类型文件", {icon: 0});
+					return false;
+				}
+
+				var attachmentId = $("#id").val();
+				var attachmentFlag = "145";
+				/*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="projectRecords" enctype="multipart/form-data" action="${ctx}/ruralProject/electronicSealYC/reportSignatureSaveAudit" method="post" class="form-horizontal 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 path="processInstanceId"/>
+		<form:hidden id="flag" path="act.flag"/>
+		<input type="hidden" id="opinion" name="act.comment" value="" maxlength="255">
+		<c:set var="status" value="${projectRecords.act.status}" />
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目合同信息</h2></div>
+				<div id="div1">
+					<div class="layui-item layui-col-sm12 lw6">
+						<label class="layui-form-label">合同编号:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false" id="contractNum"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.contractNum}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">合同名称:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.name}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6" id="c1">
+						<label class="layui-form-label double-line">合同金额(元):</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="<fmt:formatNumber value="${projectRecords.workContractInfo.contractPrice}" pattern="#,##0.00#"/>"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6" id="c2" style="display: none">
+						<label class="layui-form-label">费率描述:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" id="otherDetails"  class="form-control layui-input" value="${projectRecords.workContractInfo.otherDetails}"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">委托方:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false" id="clientName" readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.client.name}"/>
+						</div>
+					</div>
+				</div>
+				<div id="divv2">
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">无合同</label>
+					</div>
+				</div>
+				<div id="div3">
+					<div class="layui-item layui-col-sm6 lw6">
+						<label class="layui-form-label">合同类别:</label>
+						<div class="layui-input-block">
+							<input htmlEscape="false"  readonly="true" style="background-color: #f1f1f1" class="form-control layui-input" value="${fns:getMainDictLabel(projectRecords.workContractInfo.contractTypeDoc, 'contract_info_type', '')}"/>
+<%--							<input htmlEscape="false"  readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.constructionProjectTypeStr}"/>--%>
+						</div>
+					</div>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row first">
+				<div class="form-group-label"><h2>项目基础信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">报告号:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectReportNumber}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目名称:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${projectRecords.projectName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目编号:</label>
+					<div class="layui-input-block">
+						<div class="input-group">
+							<form:input path="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" cssStyle="background-color: #f1f1f1"/>
+							<span class="input-group-btn">
+                                <label class="form-status"><c:choose><c:when test="${not empty projectRecords.projectStatus}">${fns:getDictLabel(projectRecords.projectStatus, 'rural_project_audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+                             </span>
+						</div>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目所在地:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.province}-${projectRecords.city}-${projectRecords.county}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">投资性质:</label>
+					<div class="layui-input-block">
+						<c:if test="${projectRecords.projectProperties==null}">
+							<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+						</c:if>
+						<c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+							<c:if test="${v.value==projectRecords.projectProperties}">
+								<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+							</c:if>
+						</c:forEach>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">建设地点:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${projectRecords.projectSite}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.createBy.name}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目责任人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.leaderNameStr}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">所属部门:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${projectRecords.officeName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目负责人:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${projectRecords.projectMasterName}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">工程类型:</label>
+					<div class="layui-input-block">
+						<form:select path="engineeringType" disabled="true" style="background-color: #f1f1f1"  class="form-control simple-select">
+							<form:options items="${engineeringInfo}" itemLabel="engineeringName" itemValue="id" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">项目等级:</label>
+					<div class="layui-input-block">
+						<c:forEach items="${fns:getMainDictListOnProjectAdvent('attachment_project_grade')}" var="v">
+							<input type="radio" disabled name="submitMoney" id="submitMoney" value="${v.value}" title="${v.label}" <c:if test="${projectRecords.submitMoney==v.value}">checked</c:if>>
+						</c:forEach>
+						<p style="color: red;font-size: 12px;">200万以上部队或政府项目及500万以上其它项目为A级,其余为B级</p>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">送审规模(万元):</label>
+					<div class="layui-input-block">
+						<form:input path="submitScale" readonly="true" style="background-color: #f1f1f1" id="submitScale" maxlength="12" htmlEscape="false" placeholder="请输入送审规模" class="form-control layui-input number"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">工作开始日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label double-line">工作结束日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label">创建日期:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">项目类别:</label>
+					<div class="layui-input-block">
+						<input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${projectRecords.attachmentProjectSort}"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6 with-textarea">
+					<label class="layui-form-label">工程概况:</label>
+					<div class="layui-input-block">
+						<textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${projectRecords.projectDesc}</textarea>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw6 with-textarea">
+					<label class="layui-form-label">备注:</label>
+					<div class="layui-input-block">
+						<textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${projectRecords.remarks}</textarea>
+					</div>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>委托方联系人信息</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th class="hide"></th>
+							<th width="25%">委托方</th>
+							<th width="25%">联系人姓名</th>
+							<th width="25%">联系方式1</th>
+							<th width="25%">联系方式2</th>
+						</tr>
+						</thead>
+						<tbody id="workClientLinkmanList">
+						<c:forEach items="${projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+							<tr>
+								<td >
+										${info.clientId.name}
+								</td>
+								<td>
+										${info.name}
+								</td>
+								<td>
+										${info.linkPhone}
+								</td>
+								<td>
+										${info.linkMobile}
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>施工方信息</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+						<thead>
+						<tr>
+							<th class="hide"></th>
+							<th width="25%">施工方单位名称</th>
+							<th width="25%">联系人姓名</th>
+							<th width="25%">联系方式1</th>
+							<th width="25%">联系方式2</th>
+						</tr>
+						</thead>
+						<tbody id="workConstructionLinkmanList">
+						<c:forEach items="${projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+							<tr>
+								<td >
+										${info.clientId.name}
+								</td>
+								<td>
+										${info.name}
+								</td>
+								<td>
+										${info.linkPhone}
+								</td>
+								<td>
+										${info.linkMobile}
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>报告签章附件信息</h2></div>
+				<div class="layui-item nav-btns">
+					<a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+				</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>
+				<input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+				<span id="attachment_title"></span>
+				<div class="layui-item layui-col-xs12" style="padding:0 16px;">
+					<table id="listAttachment" class="table table-bordered table-condensed details">
+						<thead>
+						<tr>
+								<%-- <th>序号</th>--%>
+							<th>文件预览</th>
+							<th>上传人</th>
+							<th>上传时间</th>
+							<th width="180px">操作</th>
+						</tr>
+						</thead>
+						<tbody id="file_attachment">
+						<c:forEach items="${projectRecords.workAttachments}" var = "workClientAttachment" varStatus="status">
+							<tr>
+									<%-- <td>${status.index + 1}</td>--%>
+								<c:choose>
+									<c:when test="${projectRecords.uploadMode == 2}">
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+												<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+															</c:when>
+															<c:otherwise>
+																<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:when>
+									<c:otherwise>
+										<c:choose>
+											<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+												<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+											</c:when>
+											<c:otherwise>
+												<c:choose>
+													<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+														<td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+													</c:when>
+													<c:otherwise>
+														<c:choose>
+															<c:when test="${workReimbursement.uploadMode == 2}">
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																		<td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.temporaryUrl}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:when>
+															<c:otherwise>
+																<c:choose>
+																	<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+																		<td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+																	</c:when>
+																	<c:otherwise>
+																		<c:choose>
+																			<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+																				<td><a href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',1)">${workClientAttachment.attachmentName}</a></td>
+																			</c:when>
+																			<c:otherwise>
+																				<c:choose>
+																					<c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'rar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'zip')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jar')
+                                                       or fn:containsIgnoreCase(workClientAttachment.attachmentName,'7z')}">
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',3)">${workClientAttachment.attachmentName}</a></td>
+																					</c:when>
+																					<c:otherwise>
+																						<td><a class="attention-info" href="javascript:void(0)" onclick="openPreview('${workClientAttachment.url}',2)">${workClientAttachment.attachmentName}</a></td>
+																					</c:otherwise>
+																				</c:choose>
+																			</c:otherwise>
+																		</c:choose>
+																	</c:otherwise>
+																</c:choose>
+															</c:otherwise>
+														</c:choose>
+													</c:otherwise>
+												</c:choose>
+											</c:otherwise>
+										</c:choose>
+									</c:otherwise>
+								</c:choose>
+
+								<td>${workClientAttachment.createBy.name}</td>
+								<td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+								<td class="op-td">
+									<div class="op-btn-box" >
+										<a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+											<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile_attachment','_attachment')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+										</c:if>
+									</div>
+								</td>
+							</tr>
+						</c:forEach>
+						</tbody>
+					</table>
+				</div>
+			</div>
+
+	</form:form>
+		<div class="form-group-label">
+			<div style="float: right"> <a href="javascript:void(0)" style='background-color: #FFB800' onclick="openDialogre('个人模板列表', '${ctx}/auditTemplate/auditTemplate/templateList?identification=${identification}&name=${identificationName}','80%', '70%','','关闭')" class="nav-btn layui-btn layui-btn-sm" ><i class="fa fa-file-excel-o"></i> 审核意见模板列表</a></div>
+			<h2>审批意见</h2>
+		</div>
+		<iframe id="iframe" src="${ctx}/auditTemplate/auditTemplate/iframeView?identification=${identification}" name="listresult" frameborder="0" align="left" width="100%" height="300" scrolling="value"></iframe>
+			<div class="form-group layui-row">
+				<div class="form-group-label"><h2>审批流程</h2></div>
+				<div class="layui-item layui-col-xs12 form-table-container" >
+					<act:flowChart procInsId="${processInstanceId}"/>
+					<act:histoicFlow procInsId="${processInstanceId}"/>
+				</div>
+			</div>
+	</div>
+</div>
+</body>
+</html>

File diff suppressed because it is too large
+ 1255 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCView.jsp