Quellcode durchsuchen

版本号:X1.1.0
更新内容:苏州分部签章添加内审报告签章功能
数据库表进行调整:添加数据表:project_report_internal_audit,project_report_internal_audit_info。以及对项目表(rural_project_records)添加参数。

user5 vor 1 Jahr
Ursprung
Commit
5a2a708b75
32 geänderte Dateien mit 22855 neuen und 143 gelöschten Zeilen
  1. 173 1
      src/main/java/com/jeeplus/common/utils/excel/ImportExcelNew.java
  2. 7 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectReportDataDao.java
  3. 11 1
      src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportDataService.java
  4. 76 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageElectronicSealDao.java
  5. 7 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsDao.java
  6. 49 1
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ProjectReportSignatureInfo.java
  7. 119 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java
  8. 1013 104
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java
  9. 162 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java
  10. 10 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java
  11. 374 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/InternalAuditSignatureThread.java
  12. 390 21
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageElectronicSealController.java
  13. 164 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java
  14. 80 0
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  15. 2570 0
      src/main/resources/freemarker/projectInternalAuditSignature.ftl
  16. 4 0
      src/main/resources/jeeplus.properties
  17. 32 0
      src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml
  18. 11 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageAllDao.xml
  19. 257 1
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageElectronicSealDao.xml
  20. 25 1
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml
  21. 12573 0
      src/main/resources/mysqlDateBase/new_ccpm.sql
  22. 1 0
      src/main/webapp/WEB-INF/tags/table/importExcelSZSHImport.tag
  23. BIN
      src/main/webapp/dot/上海签章导入数据模板.xlsx
  24. BIN
      src/main/webapp/dot/内审报告导入数据模板.xlsx
  25. 1290 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsInternalAuditReportSignatureForm.jsp
  26. 570 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureAudit.jsp
  27. 623 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureModify.jsp
  28. 623 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureSzzkAudit.jsp
  29. 1255 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureView.jsp
  30. 275 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectReportNSBGSignatureInfoForm.jsp
  31. 73 13
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSeal/ruralProjectMessageElectronicSealList.jsp
  32. 38 0
      src/main/webapp/webpage/modules/ruralprojectrecords/view/ruralProjectRecordsView.jsp

+ 173 - 1
src/main/java/com/jeeplus/common/utils/excel/ImportExcelNew.java

@@ -128,6 +128,20 @@ public class ImportExcelNew {
 	 * 构造函数
 	 * @param headerNum 标题行号,数据行号=标题行号+1
 	 * @param sheetIndex 工作表编号
+	 * @param type 数据来源(nsbg:内审报告)
+	 * @throws InvalidFormatException
+	 * @throws IOException
+	 */
+	public List ImportExcelNSBGNews(MultipartFile multipartFile, int headerNum, int sheetIndex, String type)
+			throws IOException {
+		return this.nsbgList(multipartFile.getOriginalFilename(), multipartFile.getInputStream(), headerNum, sheetIndex, type);
+	}
+
+
+	/**
+	 * 构造函数
+	 * @param headerNum 标题行号,数据行号=标题行号+1
+	 * @param sheetIndex 工作表编号
 	 * @param type 数据来源(js:江苏;sh:上海)
 	 * @throws InvalidFormatException
 	 * @throws IOException
@@ -253,7 +267,7 @@ public class ImportExcelNew {
 					}
 				}
 
-			}else {
+			}else if("js".equals(type)) {
 				for(int i=2;i<lastCellNum;i++){ //第三列   0,1,2
 					//到每一列   获取对应行单元格数据
 					ProjectReportSignatureInfo projectReportSignatureInfo = new ProjectReportSignatureInfo();
@@ -523,6 +537,164 @@ public class ImportExcelNew {
 		return list;
 	}
 
+	/**
+	 * 构造函数
+	 * @param headerNum 标题行号,数据行号=标题行号+1
+	 * @param sheetIndex 工作表编号
+	 * @param type 数据来源(nsbg:内审报告)
+	 * @throws InvalidFormatException
+	 * @throws IOException
+	 */
+	public List nsbgList(String fileName, InputStream is, int headerNum, int sheetIndex, String type)
+			throws NullPointerException, IOException {
+		if (StringUtils.isBlank(fileName)){
+			throw new RuntimeException("导入文档为空!");
+		}else if(fileName.toLowerCase().endsWith("xls")){
+			this.wb = new HSSFWorkbook(is);
+		}else if(fileName.toLowerCase().endsWith("xlsx")){
+			this.wb = new XSSFWorkbook(is);
+		}else{
+			throw new RuntimeException("文档格式不正确!");
+		}
+		if (this.wb.getNumberOfSheets()<sheetIndex){
+			throw new RuntimeException("文档中没有工作表!");
+		}
+		this.sheet = this.wb.getSheetAt(sheetIndex);
+		this.headerNum = headerNum;
+
+		int firstRowNum = sheet.getFirstRowNum();
+		Row firstRow = sheet.getRow(firstRowNum);
+		int lastCellNum = firstRow.getLastCellNum();
+
+		List<ProjectReportSignatureInfo> list = new ArrayList<ProjectReportSignatureInfo>();
+
+		if(lastCellNum<2){
+			throw new RuntimeException("当前表格无数据!");
+		}else{
+			if ("nsbg".equals(type)){	//内审报告数据
+				for(int i=1;i<lastCellNum;i++){ //第二列   0,1
+					//到每一列   获取对应行单元格数据
+					ProjectReportSignatureInfo projectReportSignatureInfo = new ProjectReportSignatureInfo();
+					if(null != sheet.getRow(0).getCell(i) && StringUtils.isNotBlank(sheet.getRow(0).getCell(i).toString())) {
+						projectReportSignatureInfo.setProjectReportId(sheet.getRow(0).getCell(i).toString());
+
+						//送审额
+						if(sheet.getRow(1).getCell(i) != null) {
+							if(sheet.getRow(1).getCell(i).getCellType() == 0) {
+								BigDecimal bd = new BigDecimal(sheet.getRow(1).getCell(i).toString());
+								projectReportSignatureInfo.setSubmitFee(bd.toPlainString());
+							}else {
+								throw new RuntimeException("请填写正确的金额!");
+							}
+						}
+						//审定额
+						if(sheet.getRow(2).getCell(i) != null) {
+							if(sheet.getRow(2).getCell(i).getCellType() == 0) {
+								BigDecimal bd = new BigDecimal(sheet.getRow(2).getCell(i).toString());
+								projectReportSignatureInfo.setAuthorizeFee(bd.toPlainString());
+							}else {
+								throw new RuntimeException("请填写正确的金额!");
+							}
+						}
+						//核减额
+						if(StringUtils.isNotBlank(projectReportSignatureInfo.getSubmitFee()) && StringUtils.isNotBlank(projectReportSignatureInfo.getAuthorizeFee())){
+							//核减额 = 送审核-审定额
+							BigDecimal submitFeeB = new BigDecimal(projectReportSignatureInfo.getSubmitFee());
+							BigDecimal authorizeFeeB = new BigDecimal(projectReportSignatureInfo.getAuthorizeFee());
+							BigDecimal decreaseInAccountingFeeB= submitFeeB.subtract(authorizeFeeB).setScale(2,BigDecimal.ROUND_HALF_UP);
+							projectReportSignatureInfo.setDecreaseInAccountingFee(decreaseInAccountingFeeB.toString());
+						}else{
+							projectReportSignatureInfo.setDecreaseInAccountingFee("0");
+						}
+						//施工单位考核费
+						if(sheet.getRow(3).getCell(i) != null) {
+							if(sheet.getRow(3).getCell(i).getCellType() == 0) {
+								BigDecimal bd = new BigDecimal(sheet.getRow(3).getCell(i).toString());
+								projectReportSignatureInfo.setConstructionUnitAssessmentFee(bd.toPlainString());
+							}else {
+								throw new RuntimeException("请填写正确的金额!");
+							}
+						}
+						//扣除考核费后审定金额
+						//authorizeFeeDeductAssessmentFee
+						if(StringUtils.isNotBlank(projectReportSignatureInfo.getAuthorizeFee()) && StringUtils.isNotBlank(projectReportSignatureInfo.getConstructionUnitAssessmentFee())){
+							//扣除考核费后审定金额 = 审定额-施工单位考核费
+							BigDecimal authorizeFeeB = new BigDecimal(projectReportSignatureInfo.getAuthorizeFee());
+							BigDecimal constructionUnitAssessmentFeeB = new BigDecimal(projectReportSignatureInfo.getConstructionUnitAssessmentFee());
+							BigDecimal authorizeFeeDeductAssessmentFeeB= authorizeFeeB.subtract(constructionUnitAssessmentFeeB).setScale(2,BigDecimal.ROUND_HALF_UP);
+							projectReportSignatureInfo.setAuthorizeFeeDeductAssessmentFee(authorizeFeeDeductAssessmentFeeB.toString());
+						}else{
+							projectReportSignatureInfo.setAuthorizeFeeDeductAssessmentFee("0");
+						}
+
+
+						//审计开始时间
+						if(sheet.getRow(4).getCell(i) != null) {
+							if(sheet.getRow(4).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(4).getCell(i))) {
+									projectReportSignatureInfo.setAuditStartDate(sheet.getRow(4).getCell(i).getDateCellValue());
+								}
+							}
+						}
+						//审计结束时间
+						if(sheet.getRow(5).getCell(i) != null) {
+							if(sheet.getRow(5).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(5).getCell(i))) {
+									projectReportSignatureInfo.setAuditEndDate(sheet.getRow(5).getCell(i).getDateCellValue());
+								}
+							}
+						}
+						//工程审计项目
+						if(sheet.getRow(6).getCell(i) != null) {
+							projectReportSignatureInfo.setProjectName(sheet.getRow(6).getCell(i).toString());
+						}
+						//工程内容
+						if(sheet.getRow(7).getCell(i) != null) {
+							projectReportSignatureInfo.setMainContentsOfProject(sheet.getRow(7).getCell(i).toString());
+						}
+						//施工单位
+						if(sheet.getRow(8).getCell(i) != null) {
+							projectReportSignatureInfo.setConstructionUnit(sheet.getRow(8).getCell(i).toString());
+						}
+						//工程开始时间
+						if(sheet.getRow(9).getCell(i) != null) {
+							if(sheet.getRow(9).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(9).getCell(i))) {
+									projectReportSignatureInfo.setProjectStartDate(sheet.getRow(9).getCell(i).getDateCellValue());
+								}
+							}
+						}
+						//工程竣工时间
+						if(sheet.getRow(10).getCell(i) != null) {
+							if(sheet.getRow(10).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(10).getCell(i))) {
+									projectReportSignatureInfo.setProjectEndDate(sheet.getRow(10).getCell(i).getDateCellValue());
+								}
+							}
+						}
+						//特殊事项说明
+						if(sheet.getRow(11).getCell(i) != null) {
+							projectReportSignatureInfo.setDescriptionOfSpecialMatters(sheet.getRow(11).getCell(i).toString());
+						}
+						//核减情况说明
+						if(sheet.getRow(12).getCell(i) != null) {
+							projectReportSignatureInfo.setDescriptionOfDeduction(sheet.getRow(12).getCell(i).toString());
+						}
+						projectReportSignatureInfo.setType("3");
+						projectReportSignatureInfo.preInsert();
+						list.add(projectReportSignatureInfo);
+					}else {
+						return list;
+					}
+				}
+
+			}
+		}
+
+		log.debug("Initialize success.");
+		return list;
+	}
+
     public ImportExcelNew() {
     }
 

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

@@ -164,6 +164,13 @@ public interface ProjectReportDataDao extends CrudDao<ProjectReportData> {
     Integer updateReportSignatureInfo(RuralProjectRecords records);
 
     /**
+     * 修改内审报告签章 项目中的信息
+     * @param records
+     * @return
+     */
+    Integer updateReportInternalAuditSignatureInfo(RuralProjectRecords records);
+
+    /**
      * 修改质量复核签章 项目中的信息
      * @param records
      * @return

+ 11 - 1
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportDataService.java

@@ -1667,7 +1667,7 @@ public class ProjectReportDataService extends CrudService<ProjectReportDataDao,
 	}
 
 	/**
-	 * 修改报告签章 项目的信息
+	 * 修改报告签章 项目的信息
 	 * @param records
 	 * @return
 	 */
@@ -1675,6 +1675,16 @@ public class ProjectReportDataService extends CrudService<ProjectReportDataDao,
 	public void updateReportSignatureInfo(RuralProjectRecords records) {
 		dao.updateReportSignatureInfo(records);
 	}
+
+	/**
+	 * 修改内审报告签章 项目中的信息
+	 * @param records
+	 * @return
+	 */
+	@Transactional(readOnly = false)
+	public void updateReportInternalAuditSignatureInfo(RuralProjectRecords records) {
+		dao.updateReportInternalAuditSignatureInfo(records);
+	}
 	/**
 	 * 修改报告签章 项目重的信息
 	 * @param records

+ 76 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageElectronicSealDao.java

@@ -49,12 +49,25 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
      * @return
      */
     ProjectReportSignature getProjectReportSignature(String projectId);
+
+    /**
+     * 根据项目id查询报告签章是否存在送审信息(内审)
+     * @param projectId
+     * @return
+     */
+    ProjectReportSignature getProjectReportInternalAudit(String projectId);
     /**
      * 根据id查询报告签章是否存在送审信息
      * @param id
      * @return
      */
     ProjectReportSignature getProjectReportSignatureById(String id);
+    /**
+     * 根据id查询报告签章是否存在送审信息(内审)
+     * @param id
+     * @return
+     */
+    ProjectReportSignature getProjectReportInternalAuditSignatureById(String id);
 
     /**
      * 报告签章申请新增
@@ -64,12 +77,26 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
     Integer insertReportSignature(ProjectReportSignature projectApprovalSignature);
 
     /**
+     * 报告签章申请新增(内审)
+     * @param projectApprovalSignature
+     * @return
+     */
+    Integer insertReportInternalAuditSignature(ProjectReportSignature projectApprovalSignature);
+
+    /**
      * 报告签章申请修改
      * @param projectApprovalSignature
      * @return
      */
     Integer updateReportSignature(ProjectReportSignature projectApprovalSignature);
 
+    /**
+     * 报告签章申请修改(内审)
+     * @param projectApprovalSignature
+     * @return
+     */
+    Integer updateReportInternalAuditSignature(ProjectReportSignature projectApprovalSignature);
+
     //根据咨询员name查询咨询员的user_id
     /**
      * 根据咨询员name查询咨询员的user_id
@@ -86,6 +113,20 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
     List<String> getProjectReportIdByReportId(@Param("reportIdList") List<String> reportIdList);
 
     /**
+     * 根据报告号idlist查询数量(内审或内咨字报告)
+     * @param reportIdList
+     * @return
+     */
+    List<String> getInternalAuditProjectReportIdByReportId(@Param("reportIdList") List<String> reportIdList);
+
+    /**
+     * 根据报告号idlist查询数量(已完成质量复核的报告数据)
+     * @param reportIdList
+     * @return
+     */
+    List<String> getAccomplishStatusProjectReportByReportId(@Param("reportIdList") List<String> reportIdList);
+
+    /**
      * 根据报告号查询签章数据表数据量
      * @param reportIdList
      * @return
@@ -93,6 +134,13 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
     List<ProjectReportSignatureInfo> getInfoByReportId(@Param("reportIdList") List<String> reportIdList);
 
     /**
+     * 根据报告号查询签章数据表数据量
+     * @param reportIdList
+     * @return
+     */
+    List<ProjectReportSignatureInfo> getInternalAuditInfoByReportId(@Param("reportIdList") List<String> reportIdList);
+
+    /**
      * 批量添加
      * @param list
      * @return
@@ -100,6 +148,13 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
     void insertByList(List<ProjectReportSignatureInfo> list);
 
     /**
+     * 批量添加
+     * @param list
+     * @return
+     */
+    void insertInternalAuditByList(List<ProjectReportSignatureInfo> list);
+
+    /**
      * 根据项目id查询到的报告号查询project_report_signature_info表的信息
      * @param projectId
      * @return
@@ -107,6 +162,13 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
     ProjectReportSignatureInfo findProjectReportSignatureInfoByProjectId(String projectId);
 
     /**
+     * 根据项目id查询到的报告号查询project_report_internal_audit_info表的信息
+     * @param projectId
+     * @return
+     */
+    ProjectReportSignatureInfo findProjectReportInternalAuditInfoByProjectId(String projectId);
+
+    /**
     * 根据id查询咨询员
     * @param consultantId
     * @return
@@ -121,6 +183,13 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
     void updateProjectReportSignatureInfo(ProjectReportSignatureInfo projectReportSignatureInfo);
 
     /**
+     *  更新(内审报告)
+     * @param projectReportSignatureInfo
+     * @return
+     * */
+    void updateProjectReportInternalAuditInfo(ProjectReportSignatureInfo projectReportSignatureInfo);
+
+    /**
      * 根据name查询咨询员id
      * @param consultantName
      * @return
@@ -134,4 +203,11 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
      * @return
      */
     List<String> getProjectReportIdByReportIdAndType(@Param("reportIdList") List<String> reportIdList,@Param("type")String type);
+
+    /**
+     * 根据报告号查询内审报告信息
+     * @param reportNumber
+     * @return
+     */
+    ProjectReportSignatureInfo getInternalAuditByReportNumber(String reportNumber);
 }

+ 7 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsDao.java

@@ -292,6 +292,13 @@ public interface RuralProjectRecordsDao extends CrudDao<RuralProjectRecords> {
     RuralProjectRecords getSignatureByDocumentId(String documentId);
 
     /**
+     * 根据签章的documentId查询报告信息
+     * @param documentId
+     * @return
+     */
+    RuralProjectRecords getReportInternalAuditSignatureByDocumentId(String documentId);
+
+    /**
      * 根据签章documentId查询审定(内)信息
      * @param documentId
      * @return

+ 49 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ProjectReportSignatureInfo.java

@@ -73,7 +73,15 @@ public class ProjectReportSignatureInfo extends ActEntity<ProjectReportSignature
 	private String developmentOrganization;	//建设单位
 	private String calculateValuationBasisDocument;	//计算计价依据文件
 
-	private String type;	//类型(1:江苏;2:上海)
+
+	private Date auditStartDate;    //审计开始日期
+	private Date auditEndDate;      //审计结束日期
+	private Date projectStartDate;    //工程开始日期
+	private Date projectEndDate;      //工程结束日期
+	private String decreaseInAccountingFee;      //核减额
+
+
+	private String type;	//类型(1:江苏;2:上海;3:内审报告)
 
 
 
@@ -509,4 +517,44 @@ public class ProjectReportSignatureInfo extends ActEntity<ProjectReportSignature
 	public void setType(String type) {
 		this.type = type;
 	}
+
+	public Date getAuditStartDate() {
+		return auditStartDate;
+	}
+
+	public void setAuditStartDate(Date auditStartDate) {
+		this.auditStartDate = auditStartDate;
+	}
+
+	public Date getAuditEndDate() {
+		return auditEndDate;
+	}
+
+	public void setAuditEndDate(Date auditEndDate) {
+		this.auditEndDate = auditEndDate;
+	}
+
+	public Date getProjectStartDate() {
+		return projectStartDate;
+	}
+
+	public void setProjectStartDate(Date projectStartDate) {
+		this.projectStartDate = projectStartDate;
+	}
+
+	public Date getProjectEndDate() {
+		return projectEndDate;
+	}
+
+	public void setProjectEndDate(Date projectEndDate) {
+		this.projectEndDate = projectEndDate;
+	}
+
+	public String getDecreaseInAccountingFee() {
+		return decreaseInAccountingFee;
+	}
+
+	public void setDecreaseInAccountingFee(String decreaseInAccountingFee) {
+		this.decreaseInAccountingFee = decreaseInAccountingFee;
+	}
 }

+ 119 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java

@@ -393,6 +393,21 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private Date reportedEndDate;		//上报审核结束时间
 
 
+	private String reportInternalAuditStatus;		//内审报告审核状态
+	private String priaiId;		//内审报告id
+	private String reportInternalAuditSignatureProcessInstanceId; //内审报告签章申请流程id
+
+	private Integer reportInternalAuditSignatureFlag;		//是否内审报告签章(1为已签章)
+	private String reportInternalAuditSignatureUrl;		//内审报告签章id
+	private Integer reportInternalAuditSignatureUrlFlag;		//内审报告签章url状态
+	private String reportInternalAuditSignatureDocumentId;		//内审报告签章documentid
+	private String reportInternalAuditSignatureContractId;		//内审报告签章contractid
+	private String reportInternalAuditSignatureInvalidDocumentId;		//内审报告无效的签章documentid
+	private String reportInternalAuditSignatureFileName;		//内审报告签章文件名称
+	private User reportInternalAuditSignatureUploadFileUser;		//内审报告签章文件上传人信息
+	private Date reportInternalAuditSignatureUploadDate;		//内审报告签章文件上传时间
+	private String internalAuditFlag;		//内审报告判定条件
+
 
 	private List<String> civilProjectList = Lists.newArrayList();
 	private List<WorkClientAttachment> workAttachments = Lists.newArrayList();
@@ -2527,4 +2542,108 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setReportedEndDate(Date reportedEndDate) {
 		this.reportedEndDate = reportedEndDate;
 	}
+
+	public String getReportInternalAuditStatus() {
+		return reportInternalAuditStatus;
+	}
+
+	public void setReportInternalAuditStatus(String reportInternalAuditStatus) {
+		this.reportInternalAuditStatus = reportInternalAuditStatus;
+	}
+
+	public String getPriaiId() {
+		return priaiId;
+	}
+
+	public void setPriaiId(String priaiId) {
+		this.priaiId = priaiId;
+	}
+
+	public String getReportInternalAuditSignatureProcessInstanceId() {
+		return reportInternalAuditSignatureProcessInstanceId;
+	}
+
+	public void setReportInternalAuditSignatureProcessInstanceId(String reportInternalAuditSignatureProcessInstanceId) {
+		this.reportInternalAuditSignatureProcessInstanceId = reportInternalAuditSignatureProcessInstanceId;
+	}
+
+	public Integer getReportInternalAuditSignatureFlag() {
+		return reportInternalAuditSignatureFlag;
+	}
+
+	public void setReportInternalAuditSignatureFlag(Integer reportInternalAuditSignatureFlag) {
+		this.reportInternalAuditSignatureFlag = reportInternalAuditSignatureFlag;
+	}
+
+	public String getReportInternalAuditSignatureUrl() {
+		return reportInternalAuditSignatureUrl;
+	}
+
+	public void setReportInternalAuditSignatureUrl(String reportInternalAuditSignatureUrl) {
+		this.reportInternalAuditSignatureUrl = reportInternalAuditSignatureUrl;
+	}
+
+	public Integer getReportInternalAuditSignatureUrlFlag() {
+		return reportInternalAuditSignatureUrlFlag;
+	}
+
+	public void setReportInternalAuditSignatureUrlFlag(Integer reportInternalAuditSignatureUrlFlag) {
+		this.reportInternalAuditSignatureUrlFlag = reportInternalAuditSignatureUrlFlag;
+	}
+
+	public String getReportInternalAuditSignatureDocumentId() {
+		return reportInternalAuditSignatureDocumentId;
+	}
+
+	public void setReportInternalAuditSignatureDocumentId(String reportInternalAuditSignatureDocumentId) {
+		this.reportInternalAuditSignatureDocumentId = reportInternalAuditSignatureDocumentId;
+	}
+
+	public String getReportInternalAuditSignatureContractId() {
+		return reportInternalAuditSignatureContractId;
+	}
+
+	public void setReportInternalAuditSignatureContractId(String reportInternalAuditSignatureContractId) {
+		this.reportInternalAuditSignatureContractId = reportInternalAuditSignatureContractId;
+	}
+
+	public String getReportInternalAuditSignatureInvalidDocumentId() {
+		return reportInternalAuditSignatureInvalidDocumentId;
+	}
+
+	public void setReportInternalAuditSignatureInvalidDocumentId(String reportInternalAuditSignatureInvalidDocumentId) {
+		this.reportInternalAuditSignatureInvalidDocumentId = reportInternalAuditSignatureInvalidDocumentId;
+	}
+
+	public String getReportInternalAuditSignatureFileName() {
+		return reportInternalAuditSignatureFileName;
+	}
+
+	public void setReportInternalAuditSignatureFileName(String reportInternalAuditSignatureFileName) {
+		this.reportInternalAuditSignatureFileName = reportInternalAuditSignatureFileName;
+	}
+
+	public User getReportInternalAuditSignatureUploadFileUser() {
+		return reportInternalAuditSignatureUploadFileUser;
+	}
+
+	public void setReportInternalAuditSignatureUploadFileUser(User reportInternalAuditSignatureUploadFileUser) {
+		this.reportInternalAuditSignatureUploadFileUser = reportInternalAuditSignatureUploadFileUser;
+	}
+
+	public Date getReportInternalAuditSignatureUploadDate() {
+		return reportInternalAuditSignatureUploadDate;
+	}
+
+	public void setReportInternalAuditSignatureUploadDate(Date reportInternalAuditSignatureUploadDate) {
+		this.reportInternalAuditSignatureUploadDate = reportInternalAuditSignatureUploadDate;
+	}
+
+	public String getInternalAuditFlag() {
+		return internalAuditFlag;
+	}
+
+	public void setInternalAuditFlag(String internalAuditFlag) {
+		this.internalAuditFlag = internalAuditFlag;
+	}
 }

Datei-Diff unterdrückt, da er zu groß ist
+ 1013 - 104
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java


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

@@ -122,6 +122,7 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
     private static final String CUSTOMAPPROVALCATEGORYID = Global.getConfig("custom_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 REPORTINTERNALAUDITCATEGORYID = Global.getConfig("report_internal_audit_category_id");
     private static final String REPORTYCCATEGORYID = Global.getConfig("report_YC_category_id");
     private static final String JUDGEMENTCATEGORYID = Global.getConfig("judgement_category_id");
     //AES 对称加密公钥
@@ -6054,6 +6055,167 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         return hashMap;
     }
 
+    /**
+     * 内审报告签章信息获取
+     * @param projectId
+     * @param documentList
+     * @param principalUserId
+     * @param generalManagerUserId
+     * @param signatureType
+     * @return
+     */
+    public HashMap getReportInternalAuditSignatureContractId(String projectId, List<String> documentList ,String principalUserId,String generalManagerUserId,String signatureType){
+        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();
+        if("1".equals(signatureType)){
+            Action companyAction = new Action();
+            companyAction.setType("CORPORATE");
+            companyAction.setName("公司执业印章");
+            companyAction.setSerialNo("1");
+            //公司方章编号
+            serialIdList.add(COMPANYPARTIESSEALID);
+            //添加盖章位置
+            List<Location> locations = Lists.newArrayList();
+            Location location = new Location();
+            location.setDocumentId(documentList.get(0));
+            location.setSealId(COMPANYPARTIESSEALID);
+            location.setRectType("SEAL_CORPORATE");
+            location.setKeyword("咨询企业执业印章");
+            location.setKeywordIndex(1);
+            locations.add(location);
+            //公司圆章编号
+            serialIdList.add(COMPANYROUNDSEALID);
+            //添加盖章位置
+            Location locationCircle = new Location();
+            locationCircle.setDocumentId(documentList.get(0));
+            locationCircle.setSealId(COMPANYROUNDSEALID);
+            locationCircle.setRectType("SEAL_CORPORATE");
+            locationCircle.setKeyword("江苏兴光项目管理有限公司");
+            locationCircle.setKeywordIndex(1);
+            locationCircle.setOffsetX("-0.15");
+            locations.add(locationCircle);
+
+            //根据角色信息录入签署方信息
+            //负责人
+            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)){
+                        serialIdList.add(userSealId);
+                        //添加盖章位置
+                        Location principalLocation = new Location();
+                        principalLocation.setDocumentId(documentList.get(0));
+                        principalLocation.setSealId(userSealId);
+                        principalLocation.setRectType("SEAL_CORPORATE");
+                        principalLocation.setKeyword("项目负责人:");
+                        principalLocation.setKeywordIndex(1);
+                        locations.add(principalLocation);
+                        principalLocation.setOffsetX("-0.1");
+
+                    }else{
+                        hashMap.put("code","2");
+                        hashMap.put("message","查询不到项目负责人 " + user.getName() + " 的印章信息!请联系管理员");
+                        return hashMap;
+                    }
+
+                    /*//获取成员印章id信息
+                    String userSignatureSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"",user.getName() + "个人签名章");
+                    if(StringUtils.isNotBlank(userSignatureSealId)){
+
+                        serialIdList.add(userSignatureSealId);
+
+                        //添加盖章位置
+                        Location principalLocationSignFirst = new Location();
+                        principalLocationSignFirst.setDocumentId(documentList.get(0));
+                        principalLocationSignFirst.setSealId(userSignatureSealId);
+                        principalLocationSignFirst.setRectType("SEAL_CORPORATE");
+                        principalLocationSignFirst.setKeyword("造价工程师:");
+                        principalLocationSignFirst.setKeywordIndex(1);
+                        locations.add(principalLocationSignFirst);
+                        principalLocationSignFirst.setOffsetY("0.06");
+                    }else{
+                        hashMap.put("code","2");
+                        hashMap.put("message","查询不到项目负责人 " + user.getName() + " 的个人签名章信息!请联系管理员");
+                        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);
+        }else if ("2".equals(signatureType)){   //上海
+
+            Action companyAction = new Action();
+            companyAction.setType("CORPORATE");
+            companyAction.setName("公司执业印章");
+            companyAction.setSerialNo("1");
+            //公司方章编号
+            serialIdList.add(COMPANYPARTIESSEALID);
+            //添加盖章位置
+            List<Location> locations = Lists.newArrayList();
+            serialIdList.add(COMPANYROUNDSEALID);
+            //添加盖章位置
+            Location locationCircle = new Location();
+            locationCircle.setDocumentId(documentList.get(0));
+            locationCircle.setSealId(COMPANYROUNDSEALID);
+            locationCircle.setRectType("SEAL_CORPORATE");
+            locationCircle.setKeyword("江苏兴光项目管理有限公司");
+            locationCircle.setKeywordIndex(3);
+            locationCircle.setOffsetX("-0.2");
+            locations.add(locationCircle);
+
+            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(REPORTINTERNALAUDITCATEGORYID);
+        signatureContract.setSend(true);
+        signatureContract.setSignatories(signatories);
+        signatureContract.setSn("");
+        ProjectReportData reportData = projectReportDataService.getReportDataByProjectId(ruralProjectRecords.getId());
+        if(null != reportData && StringUtils.isNotBlank(reportData.getNumber())){
+            signatureContract.setSubject(reportData.getNumber() + "。" + ruralProjectRecords.getProjectName());//添加项目名称
+        }else{
+            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;
+    }
 
 
     /**

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

@@ -3997,6 +3997,16 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 	}
 
 	/**
+	 * 根据签章documentId查询报告信息
+	 * @param documentId
+	 * @return
+	 */
+	@Transactional(readOnly = false)
+	public RuralProjectRecords getReportInternalAuditSignatureByDocumentId(String documentId) {
+		return dao.getReportInternalAuditSignatureByDocumentId(documentId);
+	}
+
+	/**
 	 * 根据签章documentId查询审定(内)信息
 	 * @param documentId
 	 * @return

+ 374 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/InternalAuditSignatureThread.java

@@ -0,0 +1,374 @@
+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 InternalAuditSignatureThread 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 InternalAuditSignatureThread(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("147");
+            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.setReportInternalAuditSignatureFlag(0);
+                            ruralProjectRecords.setReportInternalAuditSignatureDocumentId(documentId);
+                            ruralProjectRecords.setReportInternalAuditSignatureContractId("");
+                            ruralProjectRecords.setReportInternalAuditSignatureFileName(srcFileName);
+                            ruralProjectRecords.setReportInternalAuditSignatureUploadFileUser(UserUtils.getUser());
+                            ruralProjectRecords.setReportInternalAuditSignatureUploadDate(new Date());
+                            //修改签章对应信息文件
+                            projectReportDataService.updateReportInternalAuditSignatureInfo(ruralProjectRecords);
+
+
+
+                            List<String> documentList = Lists.newArrayList();
+                            documentList.add(documentId);
+                            //根据项目id 和 documentId生成合同id
+                            long s1 = System.currentTimeMillis();
+                            User principalUser = UserUtils.getByUserName("姜亚亚");
+                            HashMap contractIdHashMap = ruralProjectMessageService.getReportInternalAuditSignatureContractId(ruralProjectRecords.getId(), documentList,principalUser.getId(),"",projectReportSignature.getSignatureType());
+                            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,
+                                        "145",
+                                        "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,
+                                                "145",
+                                                "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,
+                                            "145",
+                                            "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,
+                                        "145",
+                                        "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,
+                                                "145",
+                                                "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,
+                                            "145",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            projectReportSignature.setStatus(1);
+            dao.updateReportSignature(projectReportSignature);
+        }
+
+
+    }
+}

+ 390 - 21
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageElectronicSealController.java

@@ -133,7 +133,6 @@ public class RuralProjectMessageElectronicSealController extends BaseController
             typeList.add("1");
             typeList.add("2");
         }else {
-            oldProjectSort=projectRecords.getAttachmentProjectSort();
             String attachmentProjectSort=projectRecords.getAttachmentProjectSort();
             typeList.add(attachmentProjectSort.split("-")[0]);
             projectRecords.setAttachmentProjectSort(attachmentProjectSort.split("-")[1]);
@@ -147,12 +146,6 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         projectRecords.setSubmitMoney("1");
         Page<RuralProjectRecords> page = ruralProjectMessageAllService.findSignaturePage(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++) {
@@ -190,6 +183,24 @@ public class RuralProjectMessageElectronicSealController extends BaseController
             }else{
                 records1.setApprovalSignatureUrlFlag(0);
             }
+
+            if(StringUtils.isNotBlank(records1.getReportInternalAuditSignatureUrl())){
+                records1.setReportInternalAuditSignatureUrlFlag(1);
+                //处理文件路径
+                //如果文件路径中包含 /xg-qz 则表示文件存储在签章的对应文件库中需要单独进行处理
+                if(records1.getReportInternalAuditSignatureUrl().contains("/xg-qz")){
+                    if(StringUtils.isNotBlank(records1.getReportInternalAuditSignatureUrl())){
+                        String signatureUrl = records1.getReportInternalAuditSignatureUrl().replace("/xg-qz","");
+                        records1.setReportInternalAuditSignatureUrl(signatureUrl);
+                    }
+                    records1.setReportInternalAuditSignatureUrl(new OSSClientUtil().getQzFileTemporaryLookUrl(aliyunUrl + records1.getReportInternalAuditSignatureUrl()));
+                }else{
+                    records1.setReportInternalAuditSignatureUrl(new OSSClientUtil().getFileTemporaryLookUrl(aliyunUrl + records1.getReportInternalAuditSignatureUrl()));
+                }
+            }else{
+                records1.setReportInternalAuditSignatureUrlFlag(0);
+            }
+
             if (records1.getWorkContractInfo() == null) {
                 projectRecordsService.queryLinkmanInfos(records1);
                 if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
@@ -203,22 +214,30 @@ public class RuralProjectMessageElectronicSealController extends BaseController
             //将生成的文件上传到阿里云中
             ruralProjectMessageElectronicSealService.getFile(records1);
         }
+
+        for (RuralProjectRecords records : list) {
+            records.setInternalAuditFlag("0");
+            switch (records.getProjectType()){
+                case "1":   //工程咨询
+                    //项目为工程咨询的且项目类型为8的为内审字项目(需要进行内审报告签发)
+                    if(StringUtils.isNotBlank(records.getAttachmentProjectSort()) && records.getAttachmentProjectSort().equals("8")){
+                        records.setInternalAuditFlag("1");
+                    }
+                    break;
+
+                case "2":   //造价审核
+                    //项目为造价审核的且项目类型为5、6的为内审字项目(需要进行内审报告签发)
+                    if(StringUtils.isNotBlank(records.getAttachmentProjectSort()) && (records.getAttachmentProjectSort().equals("5") || records.getAttachmentProjectSort().equals("6"))){
+                        records.setInternalAuditFlag("1");
+                    }
+                    break;
+            }
+        }
         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/electronicSeal/ruralProjectMessageElectronicSealList";
     }
 
@@ -277,6 +296,53 @@ public class RuralProjectMessageElectronicSealController extends BaseController
     }
 
 
+    /**
+     * 查看,增加,编辑内审报告信息
+     */
+    @RequestMapping(value = "internalAuditForm")
+    public String internalAuditForm(@RequestParam(value = "id") String id, Model model) {
+        //查询到显示信息
+        ProjectReportSignatureInfo projectReportInternalAuditInfo = ruralProjectMessageElectronicSealService.findProjectReportInternalAuditInfoByProjectId(id);
+        /*if(null == projectReportSignatureInfo){
+            projectReportSignatureInfo = new ProjectReportSignatureInfo();
+            model.addAttribute("consultantName","");
+        }else{*/
+            //根据id查咨询员名称
+            String consultantName = ruralProjectMessageElectronicSealService.findZXYById(projectReportInternalAuditInfo.getConsultant());
+            model.addAttribute("consultantName",consultantName);
+        /*}*/
+        //将数据库拿到的科学计数法的数据转换成正常写法
+        //送审金额
+        if(null != projectReportInternalAuditInfo.getSubmitFee() && !projectReportInternalAuditInfo.getSubmitFee().equals("")) {
+            BigDecimal bd2 = new BigDecimal(projectReportInternalAuditInfo.getSubmitFee());
+            projectReportInternalAuditInfo.setSubmitFee(bd2.toPlainString());
+        }
+        //审定金额
+        if(null != projectReportInternalAuditInfo.getAuthorizeFee() && !projectReportInternalAuditInfo.getAuthorizeFee().equals("")) {
+            BigDecimal bd3 = new BigDecimal(projectReportInternalAuditInfo.getAuthorizeFee());
+            projectReportInternalAuditInfo.setAuthorizeFee(bd3.toPlainString());
+        }
+        //核减金额
+        if(null != projectReportInternalAuditInfo.getDecreaseInAccountingFee() && !projectReportInternalAuditInfo.getDecreaseInAccountingFee().equals("")) {
+            BigDecimal bd6 = new BigDecimal(projectReportInternalAuditInfo.getDecreaseInAccountingFee());
+            projectReportInternalAuditInfo.setDecreaseInAccountingFee(bd6.toPlainString());
+        }
+        //施工单位考核费
+        if(null != projectReportInternalAuditInfo.getConstructionUnitAssessmentFee() && !projectReportInternalAuditInfo.getConstructionUnitAssessmentFee().equals("")) {
+            BigDecimal bd4 = new BigDecimal(projectReportInternalAuditInfo.getConstructionUnitAssessmentFee());
+            projectReportInternalAuditInfo.setConstructionUnitAssessmentFee(bd4.toPlainString());
+        }
+        //扣除考核费后审定金额
+        if(null != projectReportInternalAuditInfo.getAuthorizeFeeDeductAssessmentFee() && !projectReportInternalAuditInfo.getAuthorizeFeeDeductAssessmentFee().equals("")) {
+            BigDecimal bd5 = new BigDecimal(projectReportInternalAuditInfo.getAuthorizeFeeDeductAssessmentFee());
+            projectReportInternalAuditInfo.setAuthorizeFeeDeductAssessmentFee(bd5.toPlainString());
+        }
+        model.addAttribute("projectReportInternalAuditInfo",projectReportInternalAuditInfo);
+
+        return "modules/ruralprojectrecords/electronicSeal/ruralProjectReportNSBGSignatureInfoForm";
+    }
+
+
     //@RequiresPermissions("ruralProject:electronicSeal:approvalForm")
     @RequestMapping(value="approvalForm")
     public String approvalForm(RuralProjectRecords projectRecords, Model model){
@@ -609,6 +675,64 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportSignatureForm";
     }
 
+
+    //@RequiresPermissions("ruralProject:electronicSeal:reportSignatureForm")
+    @RequestMapping(value="internalAuditReportSignatureForm")
+    public String internalAuditReportSignatureForm(RuralProjectRecords projectRecords, Model model){
+        if (projectRecords!=null&& StringUtils.isNotBlank(projectRecords.getId())) {
+            projectRecords = projectRecordsService.get(projectRecords.getId());
+            projectRecordsService.queryProjectDetailBySignature(projectRecords,"147");
+            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/electronicSeal/ruralProjectRecordsInternalAuditReportSignatureForm";
+    }
+
     /**
      * 保存报告签章送审信息
      */
@@ -643,6 +767,39 @@ public class RuralProjectMessageElectronicSealController extends BaseController
     }
 
     /**
+     * 保存报告签章送审信息
+     */
+    @RequestMapping(value = "reportInternalAuditSignatureSave")
+    public String reportInternalAuditSignatureSave(RuralProjectRecords projectRecords, RedirectAttributes redirectAttributes) {
+        try {
+            //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+            ProjectReportSignature projectInternalAuditSignature = ruralProjectMessageElectronicSealService.getProjectReportInternalAudit(projectRecords.getId());
+            if(null != projectInternalAuditSignature){
+                if(projectInternalAuditSignature.getStatus() == 3 || projectInternalAuditSignature.getStatus() == 1) {
+                    //projectApprovalSignature.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+                }else if(projectInternalAuditSignature.getStatus() == 2){
+                    addMessage(redirectAttributes, "内审报告签章申请已送审,无法重复送审");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
+                }else if(projectInternalAuditSignature.getStatus() == 5){
+                    addMessage(redirectAttributes, "内审报告签章申请已登记完成,无法再次送审");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
+                }
+                ruralProjectMessageElectronicSealService.reportInternalAuditSignatureSave(projectInternalAuditSignature);//保存
+            }else{
+                projectInternalAuditSignature = new ProjectReportSignature();
+                projectInternalAuditSignature.setProjectId(projectRecords.getId());
+                projectInternalAuditSignature.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+                ruralProjectMessageElectronicSealService.reportInternalAuditSignatureSave(projectInternalAuditSignature);//保存
+            }
+            addMessage(redirectAttributes, "保存报告签章申请成功");
+        }catch (Exception e){
+            logger.error("保存报告签章申请异常:",e);
+            addMessage(redirectAttributes, "保存报告签章申请异常:"+e.getMessage());
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
+    }
+
+    /**
      * 审批
      * @param projectRecords
      * @param redirectAttributes
@@ -709,6 +866,73 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         }
     }
 
+    /**
+     * 审批(内审报告审批)
+     * @param projectRecords
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping("reportInternalAuditSignatureSaveAudit")
+    public String reportInternalAuditSignatureSaveAudit(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);
+            if ("szzk".equals(taskDefKey)){
+                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)){
+                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 = ruralProjectMessageElectronicSealService.getProjectReportInternalAudit(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/electronicSeal/?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/electronicSeal/?repage";
+                    }
+                }
+                String str = ruralProjectMessageElectronicSealService.reportInternalAuditSignatureSaveAudit(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/electronicSeal/?repage";
+        }
+    }
+
 
     @RequestMapping(value = "reportSignatureModify")
     public String reportSignatureModify(RuralProjectRecords projectRecords, Model model) {
@@ -757,6 +981,53 @@ public class RuralProjectMessageElectronicSealController extends BaseController
     }
 
 
+    @RequestMapping(value = "reportInternalAuditSignatureModify")
+    public String reportInternalAuditSignatureModify(RuralProjectRecords projectRecords, Model model) {
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectReportInternalAudit(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/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureModify";
+    }
+
+
     @RequestMapping(value = "reportSignatureRevoke")
     public String reportSignatureRevoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
         HashMap<String, String> requestMap = findRequestMap(request);
@@ -780,6 +1051,29 @@ public class RuralProjectMessageElectronicSealController extends BaseController
 
 
 
+    @RequestMapping(value = "reportInternalAuditSignatureRevoke")
+    public String reportInternalAuditSignatureRevoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String id = requestMap.get("id");
+        try {
+            //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+            ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectReportInternalAudit(id);
+
+            if("5".equals(projectApprovalSignature.getStatus())){
+                addMessage(redirectAttributes, "内审报告签章申请已审批通过,无法撤回");
+                return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
+            }
+            ruralProjectMessageElectronicSealService.cancelReportInternalAuditSignatureProcess(projectApprovalSignature);
+            addMessage(redirectAttributes, "撤回该内审报告签章申请审批成功");
+        }catch (Exception e){
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该内审报告签章申请审批失败");
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
+    }
+
+
+
 
 
 
@@ -836,6 +1130,53 @@ public class RuralProjectMessageElectronicSealController extends BaseController
 
     }
 
+
+
+    /**
+     * 下载工程造价咨询质量控制流程单信息
+     * @param response
+     * @param projectReportData
+     */
+    @RequestMapping(value="downloadProjectInternalAuditSignatureControl")
+    @ResponseBody
+    public void downloadProjectInternalAuditSignatureControl(HttpServletResponse response, ProjectReportData projectReportData)  {
+        Map<String,Object> data = ruralProjectMessageElectronicSealService.disposeProjectInternalAuditReportdata(projectReportData);
+        String projectName = (String) data.get("projectName");
+        String number = (String) data.get("reportNumber");
+        String type = (String) data.get("type");
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            if("3".equals(type)){
+                template = cfg.getTemplate("projectInternalAuditSignature.ftl","UTF-8");
+            }
+            File docFile = new File("报告号【"+number + "】内审报告签章.doc");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            ResponseUtil.docResponse("报告号【"+number + "】项目名称:" + projectName + " 内审报告签章.doc",docFile,response);
+            //将生成的文件上传到阿里云中
+            ruralProjectMessageElectronicSealService.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类项目数据
      */
@@ -844,13 +1185,23 @@ public class RuralProjectMessageElectronicSealController extends BaseController
     public String importFile(MultipartFile file, RedirectAttributes redirectAttributes,String concealType) {
         try {
             ImportExcelNew importExcelNew = new ImportExcelNew();
-            List<ProjectReportSignatureInfo> list = importExcelNew.ImportExcelNews(file,1,0, concealType);  //只处理file 1不要也可以,0为sheet编号
-
+            List<ProjectReportSignatureInfo> list = Lists.newArrayList();
+            switch (concealType){
+                case "js":
+                    list = importExcelNew.ImportExcelNews(file,1,0, concealType);  //只处理file 1不要也可以,0为sheet编号
+                    break;
+                case "sh":
+                    list =importExcelNew.ImportExcelNews(file,1,0, concealType);  //只处理file 1不要也可以,0为sheet编号
+                    break;
+                case "nsbg":
+                    list = importExcelNew.ImportExcelNSBGNews(file,1,0, concealType);  //只处理file 1不要也可以,0为sheet编号
+                    break;
+            }
             //对数据进行处理
             String resultStr = ruralProjectMessageElectronicSealService.disposeImportBRuralProjectRecords(list,concealType);
             addMessage(redirectAttributes, resultStr);
         } catch (Exception e) {
-            addMessage(redirectAttributes, "导入项目信息失败!失败信息:"+e.getMessage());
+            addMessage(redirectAttributes, "导入数据信息失败!失败信息:"+e.getMessage());
         }
         return "redirect:"+ Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
     }
@@ -870,6 +1221,9 @@ public class RuralProjectMessageElectronicSealController extends BaseController
                     case "sh":
                         download.download("上海签章导入数据模板.xlsx",request,response);  //自制的导入模板
                         break;
+                    case "nsbg":
+                        download.download("内审报告导入数据模板.xlsx",request,response);  //自制的导入模板
+                        break;
                 }
             }
         } catch (Exception e) {
@@ -902,6 +1256,21 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
     }
 
+    /**
+     * 报告签章信息保存
+     */
+//    @RequiresPermissions(value={"ruralProject:ruralCostProjectRecords:add","ruralProject:ruralCostProjectRecords:edit"},logical= Logical.OR)
+    @Transactional(readOnly = false)
+    @RequestMapping(value = "internalAuditSave")
+    public String internalAuditSave(ProjectReportSignatureInfo projectReportSignatureInfo, RedirectAttributes redirectAttributes) {
+        //修改
+        ruralProjectMessageElectronicSealService.updateProjectReportInternalAuditInfo(projectReportSignatureInfo);
+
+
+        addMessage(redirectAttributes, "内审报告签章信息修改成功");
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
+    }
+
 
 
     @RequestMapping(value = "getManualSignatureUrl")

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

@@ -539,6 +539,170 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         return null;
     }
 
+/**
+     * 内审报告签章签署完成回调操作
+     * @param presignCallBack  回调参数
+     * @return
+     */
+    @RequestMapping(value = "/getReportInternalAuditSignatureCoordinates", method=RequestMethod.POST)
+    public String getReportInternalAuditSignatureCoordinates(PresignCallBack presignCallBack, HttpServletRequest request , HttpServletResponse response) {
+        long t1 = System.currentTimeMillis();
+        //根据contractId查询对应的报告信息
+        String[] documentIds = presignCallBack.getDocumentId().split(",");
+        //根据contractId查询对应的报告信息
+        RuralProjectRecords records = projectRecordsService.getReportInternalAuditSignatureByDocumentId(documentIds[0]);
+        if(null == records){
+            return null;
+        }
+        ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(records.getId());
+        ProjectReportSignature projectReportSignature = ruralProjectMessageElectronicSealService.getProjectReportInternalAudit(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,
+                                            "147",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                    //给苏州质控中的人员发送通知
+                    List<User> szzks = UserUtils.getByRoleActivityEnname("XHMDZGS1551886525850szzk",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,
+                                                    "147",
+                                                    "0",
+                                                    "待通知",
+                                                    "审批通过"));
+                        }
+                    }
+                }
+
+            }
+
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+            projectReportSignature.setStatus(1);
+            dao.updateReportInternalAuditSignature(projectReportSignature);
+            return null;
+
+        }
+        //修改签章信息
+
+        //签章完成则进行数据的保存
+        records.setReportInternalAuditSignatureFlag(1);
+        records.setReportInternalAuditSignatureDocumentId(documentIds[0]);
+        records.setReportInternalAuditSignatureContractId(presignCallBack.getContractId());
+        records.setReportInternalAuditSignatureUploadDate(new Date());
+        //对文件回调路径进行处理并保存
+        String signatureUrl = null;
+        if(StringUtils.isNotBlank(presignCallBack.getStoragePath())){
+            signatureUrl = presignCallBack.getStoragePath().replace("oss:/","");
+            records.setReportInternalAuditSignatureUrl(signatureUrl);
+        }
+        //修改签章对应信息文件
+        projectReportDataService.updateReportInternalAuditSignatureInfo(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,
+                                    "147",
+                                    "0",
+                                    "待通知",
+                                    "审批通过"));
+            //给苏州质控中的人员发送通知
+            List<User> szzks = UserUtils.getByRoleActivityEnnameSignature("XHMDZGS1551886525850szzk",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,
+                                            "147",
+                                            "0",
+                                            "待通知",
+                                            "审批通过"));
+                }
+            }
+
+            workActivityProcessService.deleteProcessIdAuditUsers(projectReportSignature.getProcessInstanceId());
+
+
+        }
+        projectReportSignature.setStatus(5);
+        dao.updateReportInternalAuditSignature(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;
+    }
+
 
     /**
      * 报告签章签署完成回调操作(盐城)

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

@@ -1740,6 +1740,86 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportSignatureView";
 					}
+				} else if (workProjectNotify.getType().equals("147")) {    //内审报告审核
+					RuralProjectRecords ruralProjectRecords = ruralProjectMessageElectronicSealService.getProjectReportInternalAuditSignatureById(workProjectNotify.getNotifyId());
+					ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectReportInternalAudit(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);
+						//项目计划附件信息
+						ruralProjectRecords.setProjectPlanList(projectPlanList);
+						ruralProjectRecordsService.getWorkAttachmentBySignature(ruralProjectRecords,"147");
+						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/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureView";
+					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
+						//审核模板标识
+						model.addAttribute("identification", "ruralprojectrecords");
+						model.addAttribute("identificationName","项目登记审核意见");
+						if("szzk".equals(act.getTaskDefKey())){
+							return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureSzzkAudit";
+						}else{
+							return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureAudit";
+						}
+					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
+						//查询工程类型信息
+						ProjectEngineeringInfo engineeringInfo=engineeringService.get(ruralProjectRecords.getEngineeringType());
+						model.addAttribute("engInfo", engineeringInfo);
+						return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureModify";
+					} else {
+						return "modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureView";
+					}
 				} else if (workProjectNotify.getType().equals("172")) {    //合同管理new
 					RuralProjectRecords ruralProjectRecords = ruralProjectMessageElectronicSealService.getProjectReportSignatureById(workProjectNotify.getNotifyId());
 					ProjectReportSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectReportSignature(ruralProjectRecords.getId());

Datei-Diff unterdrückt, da er zu groß ist
+ 2570 - 0
src/main/resources/freemarker/projectInternalAuditSignature.ftl


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

@@ -315,6 +315,8 @@ reportedUrl = https://comp.jszj.com.cn:8031/api/addProject
 #custom_approval_category_id = 3103876801745744240
 ##报告用印流程id
 #report_category_id = 2896237012158222343
+##内审报告用印流程id
+#report_internal_audit_category_id = 3117352569284948928
 ##审定内用印流程id
 #judgement_category_id = 2912238663717396786
 #审定单用印流程id(盐城)
@@ -345,6 +347,8 @@ approval_category_id = 2895582833566102435
 custom_approval_category_id = 3103151250849833169
 #报告用印流程id
 report_category_id = 2895618951099527314
+#内审报告用印流程id
+report_internal_audit_category_id = 3116948624000492165
 ##审定内用印流程id
 judgement_category_id = 2920938119742709765
 #审定单用印流程id(盐城)

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

@@ -1179,6 +1179,38 @@
 		WHERE id = #{id}
 	</update>
 
+	<update id="updateReportInternalAuditSignatureInfo">
+		UPDATE rural_project_records SET
+			<if test="reportInternalAuditSignatureDocumentId != null and reportInternalAuditSignatureDocumentId != ''">
+				report_internal_audit_signature_document_id = #{reportInternalAuditSignatureDocumentId}
+			</if>
+			<if test="reportInternalAuditSignatureUrl != null and reportInternalAuditSignatureUrl != ''">
+				,report_internal_audit_signature_url = #{reportInternalAuditSignatureUrl}
+			</if>
+			<if test="reportInternalAuditSignatureUrlFlag != null and reportInternalAuditSignatureUrlFlag != ''">
+				,report_internal_audit_signature_url_flag = #{reportInternalAuditSignatureUrlFlag}
+			</if>
+			<if test="reportInternalAuditSignatureInvalidDocumentId != null and reportInternalAuditSignatureInvalidDocumentId != ''">
+				,report_internal_audit_signature_invalid_document_id = #{reportInternalAuditSignatureInvalidDocumentId}
+			</if>
+			<if test="reportInternalAuditSignatureContractId != null and reportInternalAuditSignatureContractId != ''">
+				,report_internal_audit_signature_contract_id = #{reportInternalAuditSignatureContractId}
+			</if>
+			<if test="reportInternalAuditSignatureFlag != null and reportInternalAuditSignatureFlag != ''">
+				,report_internal_audit_signature_flag = #{reportInternalAuditSignatureFlag}
+			</if>
+			<if test="reportInternalAuditSignatureFileName != null and reportInternalAuditSignatureFileName != ''">
+				,report_internal_audit_signature_file_name = #{reportInternalAuditSignatureFileName}
+			</if>
+			<if test="reportInternalAuditSignatureUploadFileUser != null and reportInternalAuditSignatureUploadFileUser.id != null and reportInternalAuditSignatureUploadFileUser.id != ''">
+				,report_internal_audit_signature_upload_file_user = #{reportInternalAuditSignatureUploadFileUser.id}
+			</if>
+			<if test="reportInternalAuditSignatureUploadDate != null and reportInternalAuditSignatureUploadDate != ''">
+				,report_internal_audit_signature_upload_date = #{reportInternalAuditSignatureUploadDate}
+			</if>
+		WHERE id = #{id}
+	</update>
+
 	<update id="updateJudgementSignatureInfo">
 		UPDATE rural_project_records SET
 			<if test="qualitySignatureDocumentId != null and qualitySignatureDocumentId != ''">

+ 11 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageAllDao.xml

@@ -2355,6 +2355,7 @@ END) as projectScale*/
 		a.contract_id AS "workContractInfo.id",
 		a.project_id AS "projectId",
 		a.project_name AS "projectName",
+		a.attachment_project_sort AS "attachmentProjectSort",
 		a.scale_type AS "scaleType",
 		a.scale_unit AS "scaleUnit",
 		a.scale_quantity AS "scaleQuantity",
@@ -2406,7 +2407,12 @@ END) as projectScale*/
 		prd.signature_url AS "signatureUrl",
 		a.report_signature_url AS "reportSignatureUrl",
 		a.report_signature_contract_id AS "reportSignatureContractId",
+		a.report_internal_audit_signature_url AS "reportInternalAuditSignatureUrl",
+		a.report_internal_audit_signature_contract_id AS "reportInternalAuditSignatureContractId",
 		prsi.id AS "prsiId",
+		priai.id AS "priaiId",
+		ifnull( pria.STATUS, 0 ) AS "reportInternalAuditStatus",
+		ifnull( pria.process_instance_id, "" ) AS "reportInternalAuditSignatureProcessInstanceId",
 		(
 		SELECT
 		group_concat( su.NAME )
@@ -2438,6 +2444,8 @@ END) as projectScale*/
 		LEFT JOIN project_approval_signature pas ON pas.project_id = a.id
 		LEFT JOIN project_report_signature prs ON prs.project_id = a.id
 		LEFT JOIN project_report_signature_info prsi ON prsi.project_report_id = prd.number
+		LEFT JOIN project_report_internal_audit pria ON pria.project_id = a.id
+		LEFT JOIN project_report_internal_audit_info priai ON priai.project_report_id = prd.number
 		<where>
 			a.status = 5
 			<if test="bzshbUserId!=null and bzshbUserId!=''">
@@ -2446,6 +2454,9 @@ END) as projectScale*/
 			<if test="reportSignatureStatus!=null and reportSignatureStatus!=''">
 				and prs.status=#{reportSignatureStatus}
 			</if>
+			<if test="reportInternalAuditStatus!=null and reportInternalAuditStatus!=''">
+				and pria.status=#{reportInternalAuditStatus}
+			</if>
 			<if test="approvalSignatureStatus!=null and approvalSignatureStatus!=''">
 				and pas.status=#{approvalSignatureStatus}
 			</if>

+ 257 - 1
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageElectronicSealDao.xml

@@ -64,6 +64,30 @@
 			a.calculate_valuation_basis_document as "calculateValuationBasisDocument",
 			a.type as "type"
 	</sql>
+	<sql id="projectReportInternalAuditColumns">
+			a.id as "id",
+			a.create_by AS "createBy.id",
+			a.create_date AS "createDate",
+			(select name from sys_user user where user.id=a.create_by) AS "createBy.name",
+			a.update_by AS "updateBy.id",
+			a.update_date AS "updateDate",
+			a.project_report_id,
+			a.submit_fee as "submit_fee",
+			a.authorize_fee as "authorize_fee",
+			a.construction_unit_assessment_fee as "construction_unit_assessment_fee",
+			a.authorize_fee_deduct_assessment_fee as "authorize_fee_deduct_assessment_fee",
+			a.construction_unit as "construction_unit",
+			a.description_of_deduction as "description_of_deduction",
+			a.description_of_special_matters as "description_of_special_matters",
+			a.main_contents_of_project as "main_contents_of_project",
+			a.project_name as "projectName",
+			a.audit_start_date as "auditStartDate",
+			a.audit_end_date as "auditEndDate",
+			a.project_start_date as "projectStartDate",
+			a.project_end_date as "projectEndDate",
+			a.decrease_in_accounting_fee as "decreaseInAccountingFee",
+			a.type as "type"
+	</sql>
 
 
 	<select id="get" resultType="ProjectReportSignatureInfo">
@@ -75,6 +99,15 @@
 		limit 1
 	</select>
 
+	<select id="getInternalAuditByReportNumber" resultType="ProjectReportSignatureInfo">
+		SELECT
+		<include refid="projectReportInternalAuditColumns"/>
+		FROM project_report_internal_audit_info a
+		WHERE a.project_report_id = #{projectReportId}
+		order by a.id
+		limit 1
+	</select>
+
 	<insert id="insertByList" parameterType="java.util.List">
 		insert into project_report_signature_info(
 			id,
@@ -202,6 +235,57 @@
 		</foreach>
 	</insert>
 
+	<insert id="insertInternalAuditByList" parameterType="java.util.List">
+		insert into project_report_internal_audit_info(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			project_report_id,
+			submit_fee,
+			authorize_fee,
+			construction_unit_assessment_fee,
+			authorize_fee_deduct_assessment_fee,
+			construction_unit,
+			description_of_deduction,
+			description_of_special_matters,
+			main_contents_of_project,
+			project_name,
+			audit_start_date,
+			audit_end_date,
+			project_start_date,
+			project_end_date,
+			decrease_in_accounting_fee,
+			`type`
+		)values
+		<foreach collection="list" item="item" separator=",">
+			(
+			#{item.id},
+			#{item.createBy.id},
+			#{item.createDate},
+			#{item.updateBy.id},
+			#{item.updateDate},
+			#{item.projectReportId},
+			#{item.submitFee},
+			#{item.authorizeFee},
+			#{item.constructionUnitAssessmentFee},
+			#{item.authorizeFeeDeductAssessmentFee},
+			#{item.constructionUnit},
+			#{item.descriptionOfDeduction},
+			#{item.descriptionOfSpecialMatters},
+			#{item.mainContentsOfProject},
+			#{item.projectName},
+			#{item.auditStartDate},
+			#{item.auditEndDate},
+			#{item.projectStartDate},
+			#{item.projectEndDate},
+			#{item.decreaseInAccountingFee},
+			#{item.type}
+			)
+		</foreach>
+	</insert>
+
 
 	<select id="getConsultantIdByName" resultType="String">
 		select b.user_id from work_staff_certificate a,work_staff_achives b
@@ -224,6 +308,45 @@
 		</where>
 	</select>
 
+	<select id="getInternalAuditProjectReportIdByReportId" resultType="java.lang.String">
+		select a.number from project_report_data a
+		left join rural_project_records rpr on a.project_id = rpr.id
+		<where>
+			<if test="reportIdList!=null and reportIdList.size!=0">
+				a.number in
+				<foreach collection="reportIdList" item="reportId" separator="," open="(" close=")">
+					#{reportId}
+				</foreach>
+			</if>
+			and rpr.project_type = 1 and rpr.attachment_project_sort = 8
+		</where>
+		union all
+		select a.number from project_report_data a
+		left join rural_project_records rpr on a.project_id = rpr.id
+		<where>
+			<if test="reportIdList!=null and reportIdList.size!=0">
+				a.number in
+				<foreach collection="reportIdList" item="reportId" separator="," open="(" close=")">
+					#{reportId}
+				</foreach>
+			</if>
+			and rpr.project_type = 2 and rpr.attachment_project_sort in (5,6)
+		</where>
+	</select>
+
+	<select id="getAccomplishStatusProjectReportByReportId" resultType="java.lang.String">
+		select number from project_report_data a
+		<where>
+			<if test="reportIdList!=null and reportIdList.size!=0">
+				a.number in
+				<foreach collection="reportIdList" item="reportId" separator="," open="(" close=")">
+					#{reportId}
+				</foreach>
+			</if>
+			and (a.status = 5 or a.status = 7)
+		</where>
+	</select>
+
 	<select id="getInfoByReportId" resultType="ProjectReportSignatureInfo">
 		SELECT id,project_report_id as "projectReportId"
 		FROM project_report_signature_info a
@@ -237,6 +360,19 @@
 		</where>
 	</select>
 
+	<select id="getInternalAuditInfoByReportId" resultType="ProjectReportSignatureInfo">
+		SELECT id,project_report_id as "projectReportId"
+		FROM project_report_internal_audit_info a
+		<where>
+			<if test="reportIdList!=null and reportIdList.size!=0">
+				a.project_report_id in
+				<foreach collection="reportIdList" item="reportId" separator="," open="(" close=")">
+					#{reportId}
+				</foreach>
+			</if>
+		</where>
+	</select>
+
 	<select id="getProjectApprovalSignature" resultType="ProjectApprovalSignature">
 		select
 		  a.id AS "id",
@@ -278,6 +414,26 @@
 		  a.project_id = #{projectId}
 	</select>
 
+	<select id="getProjectReportInternalAudit" resultType="ProjectReportSignature">
+		select
+		  a.id AS "id",
+		  a.create_by AS "createBy.id",
+		  a.create_date AS "createDate",
+		  a.update_by AS "updateBy.id",
+		  a.update_date AS "updateDate",
+		  a.del_flag AS "delFlag",
+		  a.remarks AS "remarks",
+		  a.project_id as "projectId",
+		  a.status as "status",
+		  a.process_instance_id as "processInstanceId",
+		  a.company_id as "company.id",
+		  a.office_id as "office.id"
+		from
+		  project_report_internal_audit a
+		where
+		  a.project_id = #{projectId}
+	</select>
+
 	<select id="getProjectApprovalSignatureById" resultType="ProjectApprovalSignature">
 		select
 		  a.id AS "id",
@@ -318,6 +474,26 @@
 		  a.id = #{id}
 	</select>
 
+	<select id="getProjectReportInternalAuditSignatureById" resultType="ProjectReportSignature">
+		select
+		  a.id AS "id",
+		  a.create_by AS "createBy.id",
+		  a.create_date AS "createDate",
+		  a.update_by AS "updateBy.id",
+		  a.update_date AS "updateDate",
+		  a.del_flag AS "delFlag",
+		  a.remarks AS "remarks",
+		  a.project_id as "projectId",
+		  a.status as "status",
+		  a.process_instance_id as "processInstanceId",
+		  a.company_id as "company.id",
+		  a.office_id as "office.id"
+		from
+		  project_report_internal_audit a
+		where
+		  a.id = #{id}
+	</select>
+
 	<insert id="insertApprovalSignature" >
 		insert into project_approval_signature (
 		  id,
@@ -384,6 +560,38 @@
 		  )
 	</insert>
 
+	<insert id="insertReportInternalAuditSignature" >
+		insert into project_report_internal_audit (
+		  id,
+		  create_by,
+		  create_date,
+		  update_by,
+		  update_date,
+		  del_flag,
+		  project_id,
+		  remarks,
+		  status,
+		  process_instance_id,
+		  company_id,
+		  office_id
+		)
+		values
+		  (
+		  	#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{delFlag},
+			#{projectId},
+			#{remarks},
+			#{status},
+			#{processInstanceId},
+			#{company.id},
+			#{office.id}
+		  )
+	</insert>
+
 	<update id="updateApprovalSignature">
 		update
 		  project_approval_signature
@@ -417,6 +625,21 @@
 		where id = #{id}
 	</update>
 
+	<update id="updateReportInternalAuditSignature">
+		update
+		project_report_internal_audit
+		set
+		  update_by = #{updateBy.id},
+		  update_date = #{updateDate}
+		  <if test="status != null and status != ''">
+			,status =#{status}
+		  </if>
+		  <if test="processInstanceId != null and processInstanceId != ''">
+			,process_instance_id =#{processInstanceId}
+		  </if>
+		where id = #{id}
+	</update>
+
 	<select id="findProjectReportSignatureInfoByProjectId" resultType="ProjectReportSignatureInfo">
 		select
 		<include refid="projectReportRecordColumns"/>
@@ -427,11 +650,21 @@
 		</where>
 	</select>
 
+	<select id="findProjectReportInternalAuditInfoByProjectId" resultType="ProjectReportSignatureInfo">
+		select
+		<include refid="projectReportInternalAuditColumns"/>
+		from project_report_internal_audit_info a
+		<where>
+			a.project_report_id in
+			(select number from project_report_data where project_id=#{projectId})
+		</where>
+	</select>
+
 	<select id="findZXYById" resultType="String">
 		select name from sys_user where id=#{consultantId}
 	</select>
 
-	<update id="updateProjectReportSignatureInfo" parameterType="ProjectReportSignatureInfo">
+	<update id="updateProjectReportSignatureInfo">
 		update project_report_signature_info set
 			update_by = #{updateBy.id},
 			update_date = #{updateDate},
@@ -491,6 +724,29 @@
 			where project_report_id=#{projectReportId}
 	</update>
 
+	<update id="updateProjectReportInternalAuditInfo">
+		update project_report_internal_audit_info set
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			submit_fee=#{submitFee},
+			authorize_fee=#{authorizeFee},
+			construction_unit_assessment_fee=#{constructionUnitAssessmentFee},
+			authorize_fee_deduct_assessment_fee=#{authorizeFeeDeductAssessmentFee},
+			construction_unit=#{constructionUnit},
+			description_of_deduction=#{descriptionOfDeduction},
+			description_of_special_matters=#{descriptionOfSpecialMatters},
+			main_contents_of_project=#{mainContentsOfProject},
+			project_name = #{projectName},
+			audit_start_date=#{auditStartDate},
+			audit_end_date=#{auditEndDate},
+			project_start_date=#{projectStartDate},
+			project_end_date=#{projectEndDate},
+
+			decrease_in_accounting_fee=#{decreaseInAccountingFee},
+			`type` = #{type}
+			where project_report_id=#{projectReportId}
+	</update>
+
 	<select id="findZXYByName" resultType="String">
 		select id from sys_user where name=#{consultantName}
 	</select>

+ 25 - 1
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml

@@ -73,7 +73,17 @@
 		a.belonging_department as "belongingDepartment",
 		a.paper_filing_status as "paperFilingStatus",
 		ifnull(a.over_paper_filing_status,0) as "overPaperFilingStatus",
-		ifnull(a.over_batch_archive_status,0) as "overBatchArchiveStatus"
+		ifnull(a.over_batch_archive_status,0) as "overBatchArchiveStatus",
+
+		a.report_internal_audit_signature_flag as "reportInternalAuditSignatureFlag",
+		a.report_internal_audit_signature_document_id as "reportInternalAuditSignatureDocumentId",
+		a.report_internal_audit_signature_contract_id as "reportInternalAuditSignatureContractId",
+		a.report_internal_audit_signature_url as "reportInternalAuditSignatureUrl",
+		a.report_internal_audit_signature_invalid_document_id as "reportInternalAuditSignatureInvalidDocumentId",
+		a.report_internal_audit_signature_file_name as "reportInternalAuditSignatureFileName",
+		a.report_internal_audit_signature_upload_file_user as "reportInternalAuditSignatureUploadFileUser.id",
+		a.report_internal_audit_signature_upload_date as "reportInternalAuditSignatureUploadDate"
+
 	</sql>
 
 	<sql id="projectRecordsColumnss">
@@ -296,6 +306,20 @@
 	</select>
 
 
+	<select id="getReportInternalAuditSignatureByDocumentId" resultType="RuralProjectRecords" >
+		SELECT
+			<include refid="projectRecordsColumns"/>
+		,a.file_num AS "fileNum"
+	    ,a.check_process_instance_id AS "checkProcessInstanceId"
+		,a.project_master_id as "projectMasterId"
+		,a.submit_money as "submitMoney"
+		,a.engineering_type as "engineeringType"
+        FROM rural_project_records a
+        <include refid="projectRecordsJoins"/>
+		WHERE a.report_internal_audit_signature_document_id = #{documentId}
+	</select>
+
+
 	<select id="getJudgementSignatureByDocumentId" resultType="RuralProjectRecords" >
 		SELECT
 			<include refid="projectRecordsColumns"/>

Datei-Diff unterdrückt, da er zu groß ist
+ 12573 - 0
src/main/resources/mysqlDateBase/new_ccpm.sql


+ 1 - 0
src/main/webapp/WEB-INF/tags/table/importExcelSZSHImport.tag

@@ -20,6 +20,7 @@
 				<option value="">请选择</option>
 				<option value="js" selected="">江苏电力模板导入</option>
 				<option value="sh">上海电力模板导入</option>
+				<option value="nsbg">内审报告模板导入</option>
 			</select>
 		</div>
 

BIN
src/main/webapp/dot/上海签章导入数据模板.xlsx


BIN
src/main/webapp/dot/内审报告导入数据模板.xlsx


Datei-Diff unterdrückt, da er zu groß ist
+ 1290 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsInternalAuditReportSignatureForm.jsp


+ 570 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureAudit.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 = "147";
+            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/electronicSeal/reportInternalAuditSignatureSaveAudit" 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;">500万及500万以上为A级,500万以下为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>${projectNotifyType}审批流程</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/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureModify.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 = "147";
+                /*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/electronicSeal/reportInternalAuditSignatureSaveAudit" 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;">500万及500万以上为A级,500万以下为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>${projectNotifyType}审批流程</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/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureSzzkAudit.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 = "147";
+				/*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/electronicSeal/reportInternalAuditSignatureSaveAudit" 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;">500万及500万以上为A级,500万以下为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>${projectNotifyType}审批流程</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>

Datei-Diff unterdrückt, da er zu groß ist
+ 1255 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsReportInternalAuditSignatureView.jsp


+ 275 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectReportNSBGSignatureInfoForm.jsp

@@ -0,0 +1,275 @@
+<%@ 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"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            margin-left:-10px !important;
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+            background-color:#c2c2c2;
+        }
+
+        .notForbidden{
+            background-color:#3ca2e0;
+        }
+        .spanzj{
+            color: red;
+            font-size: 12px;
+            padding-left: 10px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }else{
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+            return false;
+        }
+        $(document).ready(function() {
+            var id;
+            var name;
+            var cname;
+            var cprice;
+            var ccname;
+            var cptype;
+            if ($("#contractIdId").val()!=null || $("#contractIdId").val()!=''){
+                id=$("#contractIdId").val();
+                name=$("#contractIdName").val();
+                cname=$("#contractName").val();
+                cprice=$("#contractPrice").val();
+                ccname=$("#contractClientName").val();
+                cptype=$("#constructionProjectType").val();
+            }
+            layui.use(['form', 'layer'], function () {
+                var form = layui.form;
+            });
+
+            var radioVal ;
+            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);
+                    }
+                }
+            });
+
+
+            laydate.render({
+                elem: '#auditStartDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+            });
+            laydate.render({
+                elem: '#auditEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+            laydate.render({
+                elem: '#projectStartDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+            laydate.render({
+                elem: '#projectEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+            });
+        });
+
+        function getBuildingFee() {
+            //获取送审金额
+            var submitFee = $("#submitFee").val();
+            //获取审定金额
+            var authorizeFee = $("#authorizeFee").val();
+            //获取施工单位考核费
+            var constructionUnitAssessmentFee = $("#constructionUnitAssessmentFee").val();
+            if(!submitFee){
+                submitFee = 0;
+            }
+            if(!authorizeFee){
+                authorizeFee = 0;
+            }
+            if(!constructionUnitAssessmentFee){
+                constructionUnitAssessmentFee = 0;
+            }
+            //计算核减额
+            if(submitFee !== ''&& authorizeFee !==''){
+                if(!isNaN(submitFee) && !isNaN(authorizeFee)){
+                    var decreaseInAccountingFee = (parseFloat(submitFee)-parseFloat(authorizeFee)).toFixed(2);
+                    $("#decreaseInAccountingFee").val(decreaseInAccountingFee);
+                }else{
+                    $("#decreaseInAccountingFee").val("");
+                }
+            }else{
+                $("#decreaseInAccountingFee").val("");
+            }
+
+            //计算扣除考核费后审定金额
+            if(authorizeFee !== ''&& constructionUnitAssessmentFee !==''){
+                if(!isNaN(authorizeFee) && !isNaN(constructionUnitAssessmentFee)){
+                    var authorizeFeeDeductAssessmentFee = (parseFloat(authorizeFee)-parseFloat(constructionUnitAssessmentFee)).toFixed(2);
+                    $("#authorizeFeeDeductAssessmentFee").val(authorizeFeeDeductAssessmentFee);
+                }else{
+                    $("#authorizeFeeDeductAssessmentFee").val("");
+                }
+            }else{
+                $("#authorizeFeeDeductAssessmentFee").val("");
+            }
+        }
+
+
+
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="projectReportInternalAuditInfo" action="${ctx}/ruralProject/electronicSeal/internalAuditSave" method="post" class="form-horizontal layui-form ">
+            <input type="hidden" id="id" name="id" value="${projectReportInternalAuditInfo.id}" />
+            <input type="hidden" id="type" name="type" value="${projectReportInternalAuditInfo.type}" />
+
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>项目基础信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>报告号:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="projectReportId" name="projectReportId" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input required" value="${projectReportInternalAuditInfo.projectReportId}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>送审金额:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="submitFee" name="submitFee"  class="form-control layui-input required" value="${projectReportInternalAuditInfo.submitFee}" onkeyup="wirteNum(this)" onchange="getBuildingFee()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>审定金额:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  id="authorizeFee" name="authorizeFee"  class="form-control layui-input required" value="${projectReportInternalAuditInfo.authorizeFee}" onkeyup="wirteNum(this)" onchange="getBuildingFee()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>核减金额:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly id="decreaseInAccountingFee" name="decreaseInAccountingFee"  class="form-control layui-input required" value="${projectReportInternalAuditInfo.decreaseInAccountingFee}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>施工单位考核费:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  id="constructionUnitAssessmentFee" name="constructionUnitAssessmentFee"  class="form-control layui-input required" value="${projectReportInternalAuditInfo.constructionUnitAssessmentFee}" onkeyup="wirteNum(this)" onchange="getBuildingFee()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>扣除考核费后审定金额:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly id="authorizeFeeDeductAssessmentFee" name="authorizeFeeDeductAssessmentFee"  class="form-control layui-input required" value="${projectReportInternalAuditInfo.authorizeFeeDeductAssessmentFee}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程审计项目:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  id="projectName" name="projectName" class="form-control layui-input required" value="${projectReportInternalAuditInfo.projectName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>工程内容:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  id="mainContentsOfProject" name="mainContentsOfProject" class="form-control layui-input required" value="${projectReportInternalAuditInfo.mainContentsOfProject}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>施工单位:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  id="constructionUnit" name="constructionUnit" class="form-control layui-input required" value="${projectReportInternalAuditInfo.constructionUnit}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>特殊事项说明:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  id="descriptionOfSpecialMatters" name="descriptionOfSpecialMatters" class="form-control layui-input required" value="${projectReportInternalAuditInfo.descriptionOfSpecialMatters}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>核减情况说明:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  id="descriptionOfDeduction" name="descriptionOfDeduction" class="form-control layui-input required" value="${projectReportInternalAuditInfo.descriptionOfDeduction}"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>审计开始时间:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date laydate-icon required"  style="background-color: #fff" readonly="true" id="auditStartDate" name="auditStartDate" value="<fmt:formatDate value="${projectReportInternalAuditInfo.auditStartDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>审计结束时间:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date laydate-icon required"  style="background-color: #fff" readonly="true" id="auditEndDate" name="auditEndDate" value="<fmt:formatDate value="${projectReportInternalAuditInfo.auditEndDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date laydate-icon required"  style="background-color: #fff" readonly="true" id="projectStartDate" name="projectStartDate" value="<fmt:formatDate value="${projectReportInternalAuditInfo.projectStartDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程竣工日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date laydate-icon required"  style="background-color: #fff" readonly="true" id="projectEndDate" name="projectEndDate" value="<fmt:formatDate value="${projectReportInternalAuditInfo.projectEndDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 73 - 13
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSeal/ruralProjectMessageElectronicSealList.jsp

@@ -265,6 +265,26 @@
 				if(d.prsiId != null && d.prsiId != undefined && d.prsiId != ""){
 					xml+="<a href=\"#\" onclick=\"openDialogre('修改报告签发信息', '${ctx}/ruralProject/electronicSeal/form?id=" + d.id +"','95%', '95%','','提交,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" style='height:32px;margin-top: 5px;margin-bottom: 5px;' > 修改报告信息</a>";
 				}
+
+				if(d.internalAuditFlag == 1){
+					if(d.reportInternalAuditStatus == 0){
+						xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogBySave('内审报告签章申请', '${ctx}/ruralProject/electronicSeal/internalAuditReportSignatureForm?id=" + d.id + "','90%', '90%','')\" class=\"layui-btn layui-btn-xs layui-bg-blue\" style='height: 32px;margin-top: 5px;margin-bottom: 5px;' >内审报告签章申请</a>";
+					}else if(d.reportInternalAuditStatus == 1){
+						xml+="<a href=\"#\" onclick=\"openDialogre('修改内审报告签章申请', '${ctx}/ruralProject/electronicSeal/internalAuditReportSignatureForm?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" style='height:32px;margin-top: 5px;margin-bottom: 5px;' >修改内审报告签章申请</a>";
+					}else if(d.reportInternalAuditStatus == 2){
+						xml+="<a href=\"${ctx}/ruralProject/electronicSeal/reportInternalAuditSignatureRevoke?id=" + d.id + "&processInstanceId=" + d.procId + "\" onclick=\"return confirmx('确认要撤回该内审报告签章申请吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" style='height:32px;margin-top: 5px;margin-bottom: 5px;' > 撤回</a>";
+					}else if(d.reportInternalAuditStatus == 3){
+						xml+="<a href=\"#\" onclick=\"openDialogre('修改内审报告签章申请', '${ctx}/ruralProject/electronicSeal/internalAuditReportSignatureForm?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" style='height:32px;margin-top: 5px;margin-bottom: 5px;' >修改内审报告签章申请</a>";
+					}else if(d.reportInternalAuditStatus == 4){
+						xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogreAudit('修改内审报告签章申请', '${ctx}/ruralProject/electronicSeal/reportInternalAuditSignatureModify?id=" + d.id + "','95%', '95%','')\" class=\"layui-btn layui-btn-xs layui-bg-green\" style='height:32px;margin-top: 5px;margin-bottom: 5px' >修改内审报告签章申请</a>";
+					}
+					if(d.priaiId != null && d.priaiId != undefined && d.priaiId != ""){
+						xml+="<a href=\"#\" onclick=\"openDialogre('修改内审报告签发信息', '${ctx}/ruralProject/electronicSeal/internalAuditForm?id=" + d.id +"','95%', '95%','','提交,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" style='height:32px;margin-top: 5px;margin-bottom: 5px;' > 修改内审报告信息</a>";
+						//报告下载
+						xml+="<a href=\"${ctx}/ruralProject/electronicSeal/downloadProjectInternalAuditSignatureControl?id="+ d.pidId +"\" class=\"layui-btn  layui-btn-xs layui-bg-orange\" style='height:32px;margin-top: 5px;margin-bottom: 5px;'>内审报告下载</a>"
+					}
+				}
+
 				if(d.signatureDownloadUrl != null && d.signatureDownloadUrl != undefined && d.signatureDownloadUrl != ""){
 					xml+="<a href=\"${ctx}/ruralProject/electronicSeal/downloadMassControl?id="+ d.pidId +"\" class=\"layui-btn  layui-btn-xs layui-bg-orange\" style='height:32px;margin-top: 5px;margin-bottom: 5px;'>报告下载</a>"
 					/*xml+="<a href=\""+d.signatureDownloadUrl+"\" class=\"layui-btn  layui-btn-xs layui-bg-orange\" style='height:32px;margin-top: 5px;margin-bottom: 5px;'>报告下载</a>"*/
@@ -296,6 +316,17 @@
 				}
 
 			}
+
+			if(d.reportInternalAuditStatus == 5){
+				//上传审定单进行签章
+
+				if(d.reportInternalAuditSignatureUrlFlag == 1){
+					xml+="<a href=\""+ d.reportInternalAuditSignatureUrl +"\" class=\"layui-btn  layui-btn-xs layui-bg-orange\" style='height:32px;margin-top: 5px;margin-bottom: 5px;'>内审报告签章下载</a>"
+				}else{
+					xml+="<a href=\"${ctx}/ruralProject/signatureCallBack/downLoadReportAttach?contractId="+ d.reportInternalAuditSignatureContractId +"\" class=\"layui-btn  layui-btn-xs layui-bg-orange\" style='height:32px;margin-top: 5px;margin-bottom: 5px;'>内审报告签章下载</a>"
+				}
+
+			}
 			xml+="</div>";
 			return[xml].join('');
 		}
@@ -365,23 +396,21 @@
 												cssStyle="background-color:#fff" title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false" />
 							</div>
 						</div>
+
 						<div class="layui-item query athird ">
-							<label class="layui-form-label">创建时间:</label>
+							<label class="layui-form-label double-line">审定单:</label>
 							<div class="layui-input-block readOnlyFFF">
-								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-									   value="<fmt:formatDate value="${beginDate}" pattern="yyyy-MM-dd"/>"/>
-								</input>
-								<span class="group-sep">-</span>
-								<input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-									   value="<fmt:formatDate value="${endDate}" pattern="yyyy-MM-dd"/>"/>
-								</input>
+								<form:select path="approvalSignatureStatus" class="form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('signature_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
 							</div>
 						</div>
 
 						<div class="layui-item query athird ">
-							<label class="layui-form-label double-line">审定单申请:</label>
+							<label class="layui-form-label double-line">报告签章:</label>
 							<div class="layui-input-block readOnlyFFF">
-								<form:select path="approvalSignatureStatus" class="form-control  simple-select">
+								<form:select path="reportSignatureStatus" class="form-control  simple-select">
 									<form:option value="" label=""/>
 									<form:options items="${fns:getDictList('signature_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
 								</form:select>
@@ -389,15 +418,27 @@
 						</div>
 
 						<div class="layui-item query athird ">
-							<label class="layui-form-label double-line">报告签章申请:</label>
+							<label class="layui-form-label double-line">内审报告签章:</label>
 							<div class="layui-input-block readOnlyFFF">
-								<form:select path="reportSignatureStatus" class="form-control  simple-select">
+								<form:select path="reportInternalAuditStatus" class="form-control  simple-select">
 									<form:option value="" label=""/>
 									<form:options items="${fns:getDictList('signature_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
 								</form:select>
 							</div>
 						</div>
 
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block readOnlyFFF">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${endDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+							</div>
+						</div>
 
 
 						<div class="layui-item query athird ">
@@ -538,6 +579,18 @@
 						}
 						return xml;
 					}}
+				,{align:'center', title: '内审签章申请',  width:130,templet:function(d){
+						var st = getAuditState(d.reportInternalAuditStatus);
+						if(st.action)
+							var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/electronicSeal/getReportedProcess?processInstanceId=" + d.reportInternalAuditSignatureProcessInstanceId + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+						else
+							var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+
+						if(d.priaiId != null && d.priaiId != undefined && d.priaiId != ""){
+							xml+="<span  style='margin-left: 5px;' class=\"layui-badge layui-bg-orange\">已填</span>";
+						}
+						return xml;
+					}}
 				,{align: 'center',title: '操作',width: 170,templet:'#barDemo'}
             ]]
             ,data: [
@@ -566,9 +619,16 @@
                     ,"reportSignatureStatus":"${projectRecords.reportSignatureStatus}"
                     ,"reportSignatureProcessInstanceId":"${projectRecords.reportSignatureProcessInstanceId}"
                     ,"prsiId":"${projectRecords.prsiId}"
+                    ,"internalAuditFlag":"${projectRecords.internalAuditFlag}"
+                    ,"priaiId":"${projectRecords.priaiId}"
+					,"reportInternalAuditStatus":"${projectRecords.reportInternalAuditStatus}"
+					,"reportInternalAuditSignatureProcessInstanceId":"${projectRecords.reportInternalAuditSignatureProcessInstanceId}"
                     ,"signatureDownloadUrl":"${projectRecords.signatureDownloadUrl}"
                     ,"reportSignatureUrlFlag":"${projectRecords.reportSignatureUrlFlag}"
-                    ,"reportSignatureUrl":"${projectRecords.reportSignatureUrl}"
+					,"reportSignatureUrl":"${projectRecords.reportSignatureUrl}"
+                    ,"reportInternalAuditSignatureUrlFlag":"${projectRecords.reportInternalAuditSignatureUrlFlag}"
+					,"reportInternalAuditSignatureUrl":"${projectRecords.reportInternalAuditSignatureUrl}"
+					,"reportInternalAuditSignatureContractId":"${projectRecords.reportInternalAuditSignatureContractId}"
                     ,"signatureUrl":"${projectRecords.signatureUrl}"
                     ,"approvalSignatureUrlFlag":"${projectRecords.approvalSignatureUrlFlag}"
 

+ 38 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/view/ruralProjectRecordsView.jsp

@@ -461,6 +461,44 @@
 					</div>
 				</div>
 			</c:if>
+
+			<c:if test="${projectRecords.reportInternalAuditSignatureFlag == 1}">
+				<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>文件</th>
+								<th>上传人</th>
+								<th>上传时间</th>
+								<th width="180px">操作</th>
+							</tr>
+							</thead>
+							<tbody>
+							<c:choose>
+								<c:when test="${projectRecords.reportInternalAuditSignatureFlag == 1}">
+									<tr>
+										<td><a class="attention-info" href="javascript:void(0)" onclick="openSignatureview('${projectRecords.reportInternalAuditSignatureContractId}')">${projectRecords.reportInternalAuditSignatureFileName}.zip</a></td>
+										<td>${projectRecords.reportInternalAuditSignatureUploadFileUser.name}</td>
+										<td><fmt:formatDate value="${projectRecords.reportInternalAuditSignatureUploadDate}" type="both"/></td>
+										<td class="op-td">
+											<a href="javascript:location.href='${ctx}/ruralProject/signatureCallBack/downLoadReportAttach?contractId=${projectRecords.reportSignatureContractId}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										</td>
+									</tr>
+								</c:when>
+								<c:otherwise>
+									<tr>
+										<td colspan="4" align="center">暂无数据</td>
+									</tr>
+								</c:otherwise>
+							</c:choose>
+							</tbody>
+						</table>
+					</div>
+				</div>
+			</c:if>
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>${projectNotifyType}审批流程</h2></div>
 				<div class="layui-item layui-col-xs12 form-table-container" >