Explorar el Código

苏州签章功能添加上海项目的对应功能

user5 hace 2 años
padre
commit
ef8b0e7152
Se han modificado 39 ficheros con 3357 adiciones y 1875 borrados
  1. 287 384
      src/main/java/com/jeeplus/common/utils/excel/ImportExcelNew.java
  2. 8 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageElectronicSealDao.java
  3. 3 1
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/PresignCallBack.java
  4. 9 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ProjectApprovalSignature.java
  5. 9 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ProjectReportSignature.java
  6. 49 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ProjectReportSignatureInfo.java
  7. 882 818
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java
  8. 1151 555
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java
  9. 159 3
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java
  10. 1 1
      src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/ApprovalThread.java
  11. 1 1
      src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/SignatureThread.java
  12. 13 7
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java
  13. 247 14
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageElectronicSealController.java
  14. 38 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java
  15. 3 3
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureOldMessageDisposeController.java
  16. 1 1
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/yanChengSignature/RuralProjectMessageElectronicSealYCController.java
  17. 51 8
      src/main/java/com/jeeplus/modules/sys/web/RegisterController.java
  18. 17 1
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  19. 2 0
      src/main/resources/jeeplus.properties
  20. 74 7
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageElectronicSealDao.xml
  21. 5 1
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml
  22. 1 0
      src/main/resources/mappings/modules/statement/StatementCompanyComprehensiveDao.xml
  23. 1 0
      src/main/resources/spring-context-shiro.xml
  24. 23 0
      src/main/webapp/static/common/jeeplus.js
  25. 1 1
      src/main/webapp/webpage/include/head.jsp
  26. 3 3
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/adminReportEditForm.jsp
  27. 142 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsApprovalAudit.jsp
  28. 81 53
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsApprovalForm.jsp
  29. 81 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsApprovalModify.jsp
  30. 1 0
      src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectReportSignatureInfoForm.jsp
  31. 3 3
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/electronicSeal/ruralProjectMessageElectronicSealList.jsp
  32. 2 2
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/new/reportForm.jsp
  33. 1 1
      src/main/webapp/webpage/modules/sys/sysLogin.jsp
  34. 1 1
      src/main/webapp/webpage/modules/sys/sysLogin2.jsp
  35. 1 1
      src/main/webapp/webpage/modules/sys/userModifyPwd.jsp
  36. 1 1
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAllList.jsp
  37. 1 1
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAllTwoList.jsp
  38. 2 2
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAuditEnd.jsp
  39. 1 1
      src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoList.jsp

+ 287 - 384
src/main/java/com/jeeplus/common/utils/excel/ImportExcelNew.java

@@ -114,12 +114,13 @@ public class ImportExcelNew {
 	 * 构造函数
 	 * @param headerNum 标题行号,数据行号=标题行号+1
 	 * @param sheetIndex 工作表编号
+	 * @param type 数据来源(js:江苏;sh:上海)
 	 * @throws InvalidFormatException
 	 * @throws IOException
 	 */
-	public List ImportExcelNew(MultipartFile multipartFile, int headerNum, int sheetIndex)
+	public List ImportExcelNew(MultipartFile multipartFile, int headerNum, int sheetIndex, String type)
 			throws InvalidFormatException, IOException {
-		return this.list(multipartFile.getOriginalFilename(), multipartFile.getInputStream(), headerNum, sheetIndex);
+		return this.list(multipartFile.getOriginalFilename(), multipartFile.getInputStream(), headerNum, sheetIndex, type);
 	}
 
 
@@ -127,10 +128,11 @@ public class ImportExcelNew {
 	 * 构造函数
 	 * @param headerNum 标题行号,数据行号=标题行号+1
 	 * @param sheetIndex 工作表编号
+	 * @param type 数据来源(js:江苏;sh:上海)
 	 * @throws InvalidFormatException
 	 * @throws IOException
 	 */
-	public List list(String fileName, InputStream is, int headerNum, int sheetIndex)
+	public List list(String fileName, InputStream is, int headerNum, int sheetIndex, String type)
 			throws NullPointerException, IOException {
 		if (StringUtils.isBlank(fileName)){
 			throw new RuntimeException("导入文档为空!");
@@ -156,65 +158,157 @@ public class ImportExcelNew {
 		if(lastCellNum<3){
 			throw new RuntimeException("当前表格无数据!");
 		}else{
-			for(int i=2;i<lastCellNum;i++){ //第三列   0,1,2
-				//到每一列   获取对应行单元格数据
-                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 ("sh".equals(type)){
+				for(int i=2;i<lastCellNum;i++){ //第三列   0,1,2
+					//到每一列   获取对应行单元格数据
+					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) {
+							projectReportSignatureInfo.setProjectAccountNumber(sheet.getRow(1).getCell(i).toString());
 						}
-					}
-					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(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.setSubmitFee(bd.toPlainString());
+							}else {
+								throw new RuntimeException("请填写正确的金额!");
+							}
 						}
-					}
-					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("请填写正确的金额!");
+						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.setAuthorizeFee(bd.toPlainString());
+							}else {
+								throw new RuntimeException("请填写正确的金额!");
+							}
 						}
-					}
-					if(sheet.getRow(4).getCell(i) != null) {
-						if(sheet.getRow(4).getCell(i).getCellType() == 0) {
-							BigDecimal bd = new BigDecimal(sheet.getRow(4).getCell(i).toString());
-							projectReportSignatureInfo.setAuthorizeFeeDeductAssessmentFee(bd.toPlainString());
-						}else {
-							throw new RuntimeException("请填写正确的金额!");
+						if(sheet.getRow(4).getCell(i) != null) {
+							projectReportSignatureInfo.setProjectName(sheet.getRow(4).getCell(i).toString());
 						}
-					}
-					if(sheet.getRow(5).getCell(i) != null) {
-						projectReportSignatureInfo.setConstructionUnit(sheet.getRow(5).getCell(i).toString());
-					}
-					if(sheet.getRow(6).getCell(i) != null) {
-						projectReportSignatureInfo.setDescriptionOfDeduction(sheet.getRow(6).getCell(i).toString());
-					}
-					if(sheet.getRow(7).getCell(i) != null) {
-						projectReportSignatureInfo.setDescriptionOfExceedingTheContractAmount(sheet.getRow(7).getCell(i).toString());
-					}
-					if(sheet.getRow(8).getCell(i) != null) {
-						projectReportSignatureInfo.setDescriptionOfSpecialMatters(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.setStampDate(sheet.getRow(9).getCell(i).getDateCellValue());
+						if(sheet.getRow(5).getCell(i) != null) {
+							projectReportSignatureInfo.setDevelopmentOrganization(sheet.getRow(5).getCell(i).toString());
+						}
+						if(sheet.getRow(6).getCell(i) != null) {
+							projectReportSignatureInfo.setConstructionUnit(sheet.getRow(6).getCell(i).toString());
+						}
+
+						if(sheet.getRow(7).getCell(i) != null) {
+							projectReportSignatureInfo.setDescriptionOfDeduction(sheet.getRow(7).getCell(i).toString());
+						}
+
+						if(sheet.getRow(8).getCell(i) != null) {
+							if(sheet.getRow(8).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(8).getCell(i))) {
+									projectReportSignatureInfo.setStampDate(sheet.getRow(8).getCell(i).getDateCellValue());
+								}
 							}
 						}
+						if(sheet.getRow(9).getCell(i) != null) {
+							projectReportSignatureInfo.setPrintQuantity(sheet.getRow(9).getCell(i).toString());
+						}
+						if(sheet.getRow(10).getCell(i) != null) {
+							if(sheet.getRow(10).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(10).getCell(i))) {
+									projectReportSignatureInfo.setAgreedStartDate(sheet.getRow(10).getCell(i).getDateCellValue());
+								}
+							}
+						}
+						if(sheet.getRow(11).getCell(i) != null) {
+							if(sheet.getRow(11).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(11).getCell(i))) {
+									projectReportSignatureInfo.setAgreedEndDate(sheet.getRow(11).getCell(i).getDateCellValue());
+								}
+							}
+						}
+
+						if(sheet.getRow(12).getCell(i) != null) {
+							projectReportSignatureInfo.setConsultant(sheet.getRow(12).getCell(i).toString());
+						}
+						if(sheet.getRow(13).getCell(i) != null) {
+							projectReportSignatureInfo.setSelfCalibrationOpinion(sheet.getRow(13).getCell(i).toString());
+						}
+						if(sheet.getRow(14).getCell(i) != null) {
+							projectReportSignatureInfo.setReviewOpinion(sheet.getRow(14).getCell(i).toString());
+						}
+						if(sheet.getRow(15).getCell(i) != null) {
+							projectReportSignatureInfo.setSettlementPricingBasisDocument(sheet.getRow(15).getCell(i).toString());
+						}
+						if(sheet.getRow(16).getCell(i) != null) {
+							projectReportSignatureInfo.setCalculateValuationBasisDocument(sheet.getRow(16).getCell(i).toString());
+						}
+						projectReportSignatureInfo.setType("2");
+						projectReportSignatureInfo.preInsert();
+						list.add(projectReportSignatureInfo);
+					}else {
+						return list;
 					}
-					if(sheet.getRow(10).getCell(i) != null) {
-						projectReportSignatureInfo.setPrintQuantity(sheet.getRow(10).getCell(i).toString());
-					}
+				}
+
+			}else {
+				for(int i=2;i<lastCellNum;i++){ //第三列   0,1,2
+					//到每一列   获取对应行单元格数据
+					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(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("请填写正确的金额!");
+							}
+						}
+						if(sheet.getRow(4).getCell(i) != null) {
+							if(sheet.getRow(4).getCell(i).getCellType() == 0) {
+								BigDecimal bd = new BigDecimal(sheet.getRow(4).getCell(i).toString());
+								projectReportSignatureInfo.setAuthorizeFeeDeductAssessmentFee(bd.toPlainString());
+							}else {
+								throw new RuntimeException("请填写正确的金额!");
+							}
+						}
+						if(sheet.getRow(5).getCell(i) != null) {
+							projectReportSignatureInfo.setConstructionUnit(sheet.getRow(5).getCell(i).toString());
+						}
+						if(sheet.getRow(6).getCell(i) != null) {
+							projectReportSignatureInfo.setDescriptionOfDeduction(sheet.getRow(6).getCell(i).toString());
+						}
+						if(sheet.getRow(7).getCell(i) != null) {
+							projectReportSignatureInfo.setDescriptionOfExceedingTheContractAmount(sheet.getRow(7).getCell(i).toString());
+						}
+						if(sheet.getRow(8).getCell(i) != null) {
+							projectReportSignatureInfo.setDescriptionOfSpecialMatters(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.setStampDate(sheet.getRow(9).getCell(i).getDateCellValue());
+								}
+							}
+						}
+						if(sheet.getRow(10).getCell(i) != null) {
+							projectReportSignatureInfo.setPrintQuantity(sheet.getRow(10).getCell(i).toString());
+						}
 					/*if(sheet.getRow(11).getCell(i) != null) {
 						if(sheet.getRow(11).getCell(i).getCellType()==0) {
 							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(11).getCell(i))) {
@@ -222,29 +316,29 @@ public class ImportExcelNew {
 							}
 						}
 					}*/
-					if(sheet.getRow(11).getCell(i) != null) {
-						if(sheet.getRow(11).getCell(i).getCellType()==0) {
-							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(11).getCell(i))) {
-								projectReportSignatureInfo.setAgreedStartDate(sheet.getRow(11).getCell(i).getDateCellValue());
+						if(sheet.getRow(11).getCell(i) != null) {
+							if(sheet.getRow(11).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(11).getCell(i))) {
+									projectReportSignatureInfo.setAgreedStartDate(sheet.getRow(11).getCell(i).getDateCellValue());
+								}
 							}
 						}
-					}
-					if(sheet.getRow(12).getCell(i) != null) {
-						if(sheet.getRow(12).getCell(i).getCellType()==0) {
-							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(12).getCell(i))) {
-								projectReportSignatureInfo.setAgreedEndDate(sheet.getRow(12).getCell(i).getDateCellValue());
+						if(sheet.getRow(12).getCell(i) != null) {
+							if(sheet.getRow(12).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(12).getCell(i))) {
+									projectReportSignatureInfo.setAgreedEndDate(sheet.getRow(12).getCell(i).getDateCellValue());
+								}
 							}
 						}
-					}
-					if(sheet.getRow(13).getCell(i) != null) {
-						projectReportSignatureInfo.setConsultant(sheet.getRow(13).getCell(i).toString());
-					}
-					if(sheet.getRow(14).getCell(i) != null) {
-						projectReportSignatureInfo.setSelfCalibrationOpinion(sheet.getRow(14).getCell(i).toString());
-					}
-					if(sheet.getRow(15).getCell(i) != null) {
-						projectReportSignatureInfo.setReviewOpinion(sheet.getRow(15).getCell(i).toString());
-					}
+						if(sheet.getRow(13).getCell(i) != null) {
+							projectReportSignatureInfo.setConsultant(sheet.getRow(13).getCell(i).toString());
+						}
+						if(sheet.getRow(14).getCell(i) != null) {
+							projectReportSignatureInfo.setSelfCalibrationOpinion(sheet.getRow(14).getCell(i).toString());
+						}
+						if(sheet.getRow(15).getCell(i) != null) {
+							projectReportSignatureInfo.setReviewOpinion(sheet.getRow(15).getCell(i).toString());
+						}
 					/*if(sheet.getRow(17).getCell(i) != null) {
 						if(sheet.getRow(17).getCell(i).getCellType()==0) {
 							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(17).getCell(i))) {
@@ -280,142 +374,144 @@ public class ImportExcelNew {
 							}
 						}
 					}*/
-					if(sheet.getRow(16).getCell(i) != null) {
-						projectReportSignatureInfo.setProjectScaleContentScope(sheet.getRow(16).getCell(i).toString());
-					}
-					if(sheet.getRow(17).getCell(i) != null) {
-						projectReportSignatureInfo.setMainContentsOfProject(sheet.getRow(17).getCell(i).toString());
-					}
-					if(sheet.getRow(18).getCell(i) != null) {
-						if(sheet.getRow(18).getCell(i).getCellType() == 0) {
-							BigDecimal bd = new BigDecimal(sheet.getRow(18).getCell(i).toString());
-							projectReportSignatureInfo.setTotalContractPrice(bd.toPlainString());
-						}else {
-							throw new RuntimeException("请填写正确的金额!");
+						if(sheet.getRow(16).getCell(i) != null) {
+							projectReportSignatureInfo.setProjectScaleContentScope(sheet.getRow(16).getCell(i).toString());
+						}
+						if(sheet.getRow(17).getCell(i) != null) {
+							projectReportSignatureInfo.setMainContentsOfProject(sheet.getRow(17).getCell(i).toString());
+						}
+						if(sheet.getRow(18).getCell(i) != null) {
+							if(sheet.getRow(18).getCell(i).getCellType() == 0) {
+								BigDecimal bd = new BigDecimal(sheet.getRow(18).getCell(i).toString());
+								projectReportSignatureInfo.setTotalContractPrice(bd.toPlainString());
+							}else {
+								throw new RuntimeException("请填写正确的金额!");
+							}
 						}
-					}
-					if(sheet.getRow(19).getCell(i) != null) {
-						if(sheet.getRow(19).getCell(i).getCellType()==0) {
-							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(19).getCell(i))) {
-								projectReportSignatureInfo.setContractStartDate(sheet.getRow(19).getCell(i).getDateCellValue());
+						if(sheet.getRow(19).getCell(i) != null) {
+							if(sheet.getRow(19).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(19).getCell(i))) {
+									projectReportSignatureInfo.setContractStartDate(sheet.getRow(19).getCell(i).getDateCellValue());
+								}
 							}
 						}
-					}
-					if(sheet.getRow(20).getCell(i) != null) {
-						if(sheet.getRow(20).getCell(i).getCellType()==0) {
-							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(20).getCell(i))) {
-								projectReportSignatureInfo.setContractEndDate(sheet.getRow(20).getCell(i).getDateCellValue());
+						if(sheet.getRow(20).getCell(i) != null) {
+							if(sheet.getRow(20).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(20).getCell(i))) {
+									projectReportSignatureInfo.setContractEndDate(sheet.getRow(20).getCell(i).getDateCellValue());
+								}
 							}
 						}
-					}
-					if(sheet.getRow(21).getCell(i) != null) {
-						if(sheet.getRow(21).getCell(i).getCellType()==0) {
-							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(21).getCell(i))) {
-								projectReportSignatureInfo.setActualStartDate(sheet.getRow(21).getCell(i).getDateCellValue());
+						if(sheet.getRow(21).getCell(i) != null) {
+							if(sheet.getRow(21).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(21).getCell(i))) {
+									projectReportSignatureInfo.setActualStartDate(sheet.getRow(21).getCell(i).getDateCellValue());
+								}
 							}
 						}
-					}
-					if(sheet.getRow(22).getCell(i) != null) {
-						if(sheet.getRow(22).getCell(i).getCellType()==0) {
-							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(22).getCell(i))) {
-								projectReportSignatureInfo.setActualEndDate(sheet.getRow(22).getCell(i).getDateCellValue());
+						if(sheet.getRow(22).getCell(i) != null) {
+							if(sheet.getRow(22).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(22).getCell(i))) {
+									projectReportSignatureInfo.setActualEndDate(sheet.getRow(22).getCell(i).getDateCellValue());
+								}
 							}
 						}
-					}
-					if(sheet.getRow(23).getCell(i) != null) {
-						if(sheet.getRow(23).getCell(i).getCellType()==0) {
-							if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(23).getCell(i))) {
-								projectReportSignatureInfo.setCompletionAcceptanceDate(sheet.getRow(23).getCell(i).getDateCellValue());
+						if(sheet.getRow(23).getCell(i) != null) {
+							if(sheet.getRow(23).getCell(i).getCellType()==0) {
+								if (HSSFDateUtil.isCellDateFormatted(sheet.getRow(23).getCell(i))) {
+									projectReportSignatureInfo.setCompletionAcceptanceDate(sheet.getRow(23).getCell(i).getDateCellValue());
+								}
 							}
 						}
-					}
-					if(sheet.getRow(24).getCell(i) != null) {
-						projectReportSignatureInfo.setDesignUnit(sheet.getRow(24).getCell(i).toString());
-					}
-					if(sheet.getRow(25).getCell(i) != null) {
-						projectReportSignatureInfo.setConstructionControlUnit(sheet.getRow(25).getCell(i).toString());
-					}
-					if(sheet.getRow(26).getCell(i) != null) {
-						projectReportSignatureInfo.setFollowUpAuditUnit(sheet.getRow(26).getCell(i).toString());
-					}
+						if(sheet.getRow(24).getCell(i) != null) {
+							projectReportSignatureInfo.setDesignUnit(sheet.getRow(24).getCell(i).toString());
+						}
+						if(sheet.getRow(25).getCell(i) != null) {
+							projectReportSignatureInfo.setConstructionControlUnit(sheet.getRow(25).getCell(i).toString());
+						}
+						if(sheet.getRow(26).getCell(i) != null) {
+							projectReportSignatureInfo.setFollowUpAuditUnit(sheet.getRow(26).getCell(i).toString());
+						}
 
-					if(sheet.getRow(27).getCell(i) != null) {
-						projectReportSignatureInfo.setContractName(sheet.getRow(27).getCell(i).toString());
-					}
-					if(sheet.getRow(28).getCell(i) != null) {
-						projectReportSignatureInfo.setContractDetails(sheet.getRow(28).getCell(i).toString());
-					}
-					if(sheet.getRow(29).getCell(i) != null) {
-						projectReportSignatureInfo.setContractDate(sheet.getRow(29).getCell(i).toString());
-					}
+						if(sheet.getRow(27).getCell(i) != null) {
+							projectReportSignatureInfo.setContractName(sheet.getRow(27).getCell(i).toString());
+						}
+						if(sheet.getRow(28).getCell(i) != null) {
+							projectReportSignatureInfo.setContractDetails(sheet.getRow(28).getCell(i).toString());
+						}
+						if(sheet.getRow(29).getCell(i) != null) {
+							projectReportSignatureInfo.setContractDate(sheet.getRow(29).getCell(i).toString());
+						}
 
 
 
-					if(sheet.getRow(30).getCell(i) != null) {
-						projectReportSignatureInfo.setEngineeringDesignChangeOrder(sheet.getRow(30).getCell(i).toString());
-					}
-					if(sheet.getRow(31).getCell(i) != null) {
-						projectReportSignatureInfo.setConfirmationSheetOfQuantities(sheet.getRow(31).getCell(i).toString());
-					}
-					if(sheet.getRow(32).getCell(i) != null) {
-						projectReportSignatureInfo.setProjectVisa(sheet.getRow(32).getCell(i).toString());
-					}
+						if(sheet.getRow(30).getCell(i) != null) {
+							projectReportSignatureInfo.setEngineeringDesignChangeOrder(sheet.getRow(30).getCell(i).toString());
+						}
+						if(sheet.getRow(31).getCell(i) != null) {
+							projectReportSignatureInfo.setConfirmationSheetOfQuantities(sheet.getRow(31).getCell(i).toString());
+						}
+						if(sheet.getRow(32).getCell(i) != null) {
+							projectReportSignatureInfo.setProjectVisa(sheet.getRow(32).getCell(i).toString());
+						}
 
-					if(sheet.getRow(33).getCell(i) != null) {
-						projectReportSignatureInfo.setQualityPriceConfirmationOfEngineeringMaterials(sheet.getRow(33).getCell(i).toString());
-					}
-					if(sheet.getRow(34).getCell(i) != null) {
-						projectReportSignatureInfo.setListmaterialsEquipmentByA(sheet.getRow(34).getCell(i).toString());
-					}
-					if(sheet.getRow(35).getCell(i) != null) {
-						projectReportSignatureInfo.setProjectRewardAndDamages(sheet.getRow(35).getCell(i).toString());
-					}
+						if(sheet.getRow(33).getCell(i) != null) {
+							projectReportSignatureInfo.setQualityPriceConfirmationOfEngineeringMaterials(sheet.getRow(33).getCell(i).toString());
+						}
+						if(sheet.getRow(34).getCell(i) != null) {
+							projectReportSignatureInfo.setListmaterialsEquipmentByA(sheet.getRow(34).getCell(i).toString());
+						}
+						if(sheet.getRow(35).getCell(i) != null) {
+							projectReportSignatureInfo.setProjectRewardAndDamages(sheet.getRow(35).getCell(i).toString());
+						}
 
 
-					if(sheet.getRow(36).getCell(i) != null) {
-						projectReportSignatureInfo.setCharge(sheet.getRow(36).getCell(i).toString());
-					}
-					if(sheet.getRow(37).getCell(i) != null) {
-						projectReportSignatureInfo.setTaxes(sheet.getRow(37).getCell(i).toString());
-					}
-					if(sheet.getRow(38).getCell(i) != null) {
-						projectReportSignatureInfo.setDurationDifferenceCausesAndResponsibilities(sheet.getRow(38).getCell(i).toString());
-					}
-					if(sheet.getRow(39).getCell(i) != null) {
-						projectReportSignatureInfo.setQualityDifferenceCausesAndResponsibilities(sheet.getRow(39).getCell(i).toString());
-					}
-					if(sheet.getRow(40).getCell(i) != null) {
-						projectReportSignatureInfo.setOtherContentsAndExpenses(sheet.getRow(40).getCell(i).toString());
-					}
-					if(sheet.getRow(41).getCell(i) != null) {
-						projectReportSignatureInfo.setProjectCostConsultingContract(sheet.getRow(41).getCell(i).toString());
-					}
-					if(sheet.getRow(42).getCell(i) != null) {
-						projectReportSignatureInfo.setSettlementPricingBasisDocument(sheet.getRow(42).getCell(i).toString());
-					}
-					if(sheet.getRow(43).getCell(i) != null) {
-						projectReportSignatureInfo.setMaterialsAndEquipmentByA(sheet.getRow(43).getCell(i).toString());
-					}
-					if(sheet.getRow(44).getCell(i) != null) {
-						projectReportSignatureInfo.setaMaterialsByB(sheet.getRow(44).getCell(i).toString());
-					}
-					if(sheet.getRow(45).getCell(i) != null) {
-						projectReportSignatureInfo.setRewardAndPunishmentFees(sheet.getRow(45).getCell(i).toString());
-					}
-					if(sheet.getRow(46).getCell(i) != null) {
-						projectReportSignatureInfo.setWaterAndElectricityFeesHandleSituation(sheet.getRow(46).getCell(i).toString());
-					}
-					if(sheet.getRow(47).getCell(i) != null) {
-						projectReportSignatureInfo.setConstructionQualityWarrantyDeposit(sheet.getRow(47).getCell(i).toString());
-					}
-					if(sheet.getRow(48).getCell(i) != null) {
-						projectReportSignatureInfo.setTaxDifferenceCalculationAndProcessing(sheet.getRow(48).getCell(i).toString());
+						if(sheet.getRow(36).getCell(i) != null) {
+							projectReportSignatureInfo.setCharge(sheet.getRow(36).getCell(i).toString());
+						}
+						if(sheet.getRow(37).getCell(i) != null) {
+							projectReportSignatureInfo.setTaxes(sheet.getRow(37).getCell(i).toString());
+						}
+						if(sheet.getRow(38).getCell(i) != null) {
+							projectReportSignatureInfo.setDurationDifferenceCausesAndResponsibilities(sheet.getRow(38).getCell(i).toString());
+						}
+						if(sheet.getRow(39).getCell(i) != null) {
+							projectReportSignatureInfo.setQualityDifferenceCausesAndResponsibilities(sheet.getRow(39).getCell(i).toString());
+						}
+						if(sheet.getRow(40).getCell(i) != null) {
+							projectReportSignatureInfo.setOtherContentsAndExpenses(sheet.getRow(40).getCell(i).toString());
+						}
+						if(sheet.getRow(41).getCell(i) != null) {
+							projectReportSignatureInfo.setProjectCostConsultingContract(sheet.getRow(41).getCell(i).toString());
+						}
+						if(sheet.getRow(42).getCell(i) != null) {
+							projectReportSignatureInfo.setSettlementPricingBasisDocument(sheet.getRow(42).getCell(i).toString());
+						}
+						if(sheet.getRow(43).getCell(i) != null) {
+							projectReportSignatureInfo.setMaterialsAndEquipmentByA(sheet.getRow(43).getCell(i).toString());
+						}
+						if(sheet.getRow(44).getCell(i) != null) {
+							projectReportSignatureInfo.setaMaterialsByB(sheet.getRow(44).getCell(i).toString());
+						}
+						if(sheet.getRow(45).getCell(i) != null) {
+							projectReportSignatureInfo.setRewardAndPunishmentFees(sheet.getRow(45).getCell(i).toString());
+						}
+						if(sheet.getRow(46).getCell(i) != null) {
+							projectReportSignatureInfo.setWaterAndElectricityFeesHandleSituation(sheet.getRow(46).getCell(i).toString());
+						}
+						if(sheet.getRow(47).getCell(i) != null) {
+							projectReportSignatureInfo.setConstructionQualityWarrantyDeposit(sheet.getRow(47).getCell(i).toString());
+						}
+						if(sheet.getRow(48).getCell(i) != null) {
+							projectReportSignatureInfo.setTaxDifferenceCalculationAndProcessing(sheet.getRow(48).getCell(i).toString());
+						}
+						projectReportSignatureInfo.setType("1");
+						projectReportSignatureInfo.preInsert();
+						list.add(projectReportSignatureInfo);
+					}else {
+						return list;
 					}
-					projectReportSignatureInfo.preInsert();
-                    list.add(projectReportSignatureInfo);
-                }else {
-                    return list;
-                }
+				}
 			}
 		}
 
@@ -711,194 +807,6 @@ public class ImportExcelNew {
 		return dataList;
 	}
 
-	/**
-	 * 客户的报表数据
-	 * @return
-	 * @throws InstantiationException
-	 * @throws IllegalAccessException
-	 *//*
-	public <E> Map<Object,Object> getClientDataList(Class<E> cls, int... groups) throws InstantiationException, IllegalAccessException{
-		HashMap<Object, Object> map = Maps.newHashMap();
-		List<Object[]> annotationList = Lists.newArrayList();
-		// Get annotation field
-		Field[] fs = cls.getDeclaredFields();
-		for (Field f : fs){
-			ExcelField ef = f.getAnnotation(ExcelField.class);
-			if (ef != null && (ef.type()==0 || ef.type()==2)){
-				if (groups!=null && groups.length>0){
-					boolean inGroup = false;
-					for (int g : groups){
-						if (inGroup){
-							break;
-						}
-						for (int efg : ef.groups()){
-							if (g == efg){
-								inGroup = true;
-								annotationList.add(new Object[]{ef, f});
-								break;
-							}
-						}
-					}
-				}else{
-					annotationList.add(new Object[]{ef, f});
-				}
-			}
-		}
-		// Get annotation method
-		Method[] ms = cls.getDeclaredMethods();
-		for (Method m : ms){
-			ExcelField ef = m.getAnnotation(ExcelField.class);
-			if (ef != null && (ef.type()==0 || ef.type()==2)){
-				if (groups!=null && groups.length>0){
-					boolean inGroup = false;
-					for (int g : groups){
-						if (inGroup){
-							break;
-						}
-						for (int efg : ef.groups()){
-							if (g == efg){
-								inGroup = true;
-								annotationList.add(new Object[]{ef, m});
-								break;
-							}
-						}
-					}
-				}else{
-					annotationList.add(new Object[]{ef, m});
-				}
-			}
-		}
-		// Field sorting
-		Collections.sort(annotationList, new Comparator<Object[]>() {
-			public int compare(Object[] o1, Object[] o2) {
-				return new Integer(((ExcelField)o1[0]).sort()).compareTo(
-						new Integer(((ExcelField)o2[0]).sort()));
-			};
-		});
-		//log.debug("Import column count:"+annotationList.size());
-		// Get excel data
-		List<E> dataList = Lists.newArrayList();
-		List<String> errList = Lists.newArrayList();
-		for (int i = this.getDataRowNum(); i < this.getLastDataRowNum(); i++) {
-			E e = (E)cls.newInstance();
-			int column = 0;
-			Row row = this.getRow(i);
-			StringBuilder sb = new StringBuilder();
-			String errMsg = "";
-			for (Object[] os : annotationList){
-				Object val = this.getCellValue(row, column++);
-				if (val != null){
-					ExcelField ef = (ExcelField)os[0];
-					// If is dict type, get dict value
-					if (StringUtils.isNotBlank(ef.dictType())){
-						val = DictUtils.getDictValue(val.toString(), ef.dictType(), "");
-						//log.debug("Dictionary type value: ["+i+","+colunm+"] " + val);
-					}
-					// Get param type and type cast
-					Class<?> valType = Class.class;
-					if (os[1] instanceof Field){
-						valType = ((Field)os[1]).getType();
-					}else if (os[1] instanceof Method){
-						Method method = ((Method)os[1]);
-						if ("get".equals(method.getName().substring(0, 3))){
-							valType = method.getReturnType();
-						}else if("set".equals(method.getName().substring(0, 3))){
-							valType = ((Method)os[1]).getParameterTypes()[0];
-						}
-					}
-					//log.debug("Import value type: ["+i+","+column+"] " + valType);
-					try {
-						//如果导入的java对象,需要在这里自己进行变换。
-						if (valType == String.class){
-							String s = String.valueOf(val.toString());
-							if(StringUtils.endsWith(s, ".0")){
-								val = StringUtils.substringBefore(s, ".0");
-							}else{
-								val = String.valueOf(val.toString());
-							}
-						}else if (valType == Integer.class){
-							val = Double.valueOf(val.toString()).intValue();
-						}else if (valType == Long.class){
-							val = Double.valueOf(val.toString()).longValue();
-						}else if (valType == Double.class){
-							val = Double.valueOf(val.toString());
-						}else if (valType == Float.class){
-							val = Float.valueOf(val.toString());
-						}else if (valType == Date.class){
-							SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
-							val=sdf.parse(val.toString());
-						}else if (valType == User.class){
-							val = UserUtils.getByUserName(val.toString());
-						}else if (valType == Office.class){
-							val = UserUtils.getByOfficeName(val.toString());
-						}else if (valType == Area.class){
-							val = UserUtils.getByAreaName(val.toString());
-						}else{
-							if (ef.fieldType() != Class.class){
-								val = ef.fieldType().getMethod("getValue", String.class).invoke(null, val.toString());
-							}else{
-								val = Class.forName(this.getClass().getName().replaceAll(this.getClass().getSimpleName(),
-										"fieldtype."+valType.getSimpleName()+"Type")).getMethod("getValue", String.class).invoke(null, val.toString());
-							}
-						}
-					} catch (Exception ex) {
-						log.info("Get cell value ["+i+","+column+"] error: " + ex.toString());
-						val = null;
-					}
-					if(column == 1 || column == 2 || column == 3
-							|| column == 4 || column == 5 || column == 6 || column == 7
-							|| column == 8 || column == 9 || column == 10){
-						if(val == null || val == ""){
-							errMsg += "第+i+条,第"+column+"列数据不能为空";
-						}
-					}
-					// set entity value
-					if (os[1] instanceof Field){
-						if(Strings.isNullOrEmpty(errMsg)){
-							Reflections.invokeSetter(e, ((Field)os[1]).getName(), val);
-						}
-
-					}else if (os[1] instanceof Method){
-						String mthodName = ((Method)os[1]).getName();
-						if ("get".equals(mthodName.substring(0, 3))){
-							mthodName = "set"+StringUtils.substringAfter(mthodName, "get");
-						}
-						if(Strings.isNullOrEmpty(errMsg)){
-							Reflections.invokeMethod(e, mthodName, new Class[] {valType}, new Object[] {val});
-						}
-					}
-				}
-				sb.append(val+", ");
-			}
-			if(!"".equals(errMsg)){
-				errList.add(errMsg);
-			}else{
-				dataList.add(e);
-			}
-			log.debug("Read success: ["+i+"] "+sb.toString());
-		}
-		map.put("dataList",dataList);
-		map.put("errList",errList);
-		return map;
-	}*/
-
-//	/**
-//	 * 导入测试
-//	 */
-//	public static void main(String[] args) throws Throwable {
-//
-//		ImportExcel ei = new ImportExcel("target/export.xlsx", 1);
-//
-//		for (int i = ei.getDataRowNum(); i < ei.getLastDataRowNum(); i++) {
-//			Row row = ei.getRow(i);
-//			for (int j = 0; j < ei.getLastCellNum(); j++) {
-//				Object val = ei.getCellValue(row, j);
-//				System.out.print(val+", ");
-//			}
-//			System.out.print("\n");
-//		}
-//
-//	}
     public static String replaceBlank(String str) {
         String dest = "";
         if (str!=null) {
@@ -908,9 +816,4 @@ public class ImportExcelNew {
         }
         return dest;
     }
-
- /*   public static void main(String[] args) {
-        replaceBlank("桩基框架-剪力墙结构\n" +
-                "(主体部分)空间钢桁架结构(屋顶部分)");
-    }*/
 }

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

@@ -126,4 +126,12 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
      * @return
      * */
     String findZXYByName(String consultantName);
+
+    /**
+     * 根据项目类型筛选报告信息是否符合(上海要对应项目类型中的:工程审价(上海);其他的均为江苏项目)
+     * @param reportIdList
+     * @param type  报告信息类型(js:江苏;sh:上海)
+     * @return
+     */
+    List<String> getProjectReportIdByReportIdAndType(@Param("reportIdList") List<String> reportIdList,@Param("type")String type);
 }

+ 3 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/PresignCallBack.java

@@ -1,11 +1,13 @@
 package com.jeeplus.modules.ruralprojectrecords.entity;
 
+import java.io.Serializable;
+
 /**
  * 预签署回调参数表
  * @author: 大猫
  * @create: 2021-11-04 09:27
  **/
-public class PresignCallBack {
+public class PresignCallBack implements Serializable {
     private String contractId;  //文件编号
     private String documentId;  //文档ID
     private String tenantId;    //签署方编号

+ 9 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ProjectApprovalSignature.java

@@ -17,6 +17,7 @@ public class ProjectApprovalSignature extends ActEntity<ProjectApprovalSignature
     private String processInstanceId;   //流程编号
     private Office company;
     private Office office;
+    private String signatureType;		//苏州审定单选择类型(1:崇明;2:金山;3:自定义)
     private List<WorkClientAttachment> workAttachments = Lists.newArrayList();
 
     public String getProjectId() {
@@ -66,4 +67,12 @@ public class ProjectApprovalSignature extends ActEntity<ProjectApprovalSignature
     public void setWorkAttachments(List<WorkClientAttachment> workAttachments) {
         this.workAttachments = workAttachments;
     }
+
+    public String getSignatureType() {
+        return signatureType;
+    }
+
+    public void setSignatureType(String signatureType) {
+        this.signatureType = signatureType;
+    }
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ProjectReportSignature.java

@@ -13,6 +13,7 @@ public class ProjectReportSignature extends ActEntity<ProjectReportSignature> {
     private String processInstanceId;   //流程编号
     private Office company;
     private Office office;
+    private String signatureType;		//苏州审定单选择类型(1:江苏;2:上海;)
 
     public String getProjectId() {
         return projectId;
@@ -53,4 +54,12 @@ public class ProjectReportSignature extends ActEntity<ProjectReportSignature> {
     public void setOffice(Office office) {
         this.office = office;
     }
+
+    public String getSignatureType() {
+        return signatureType;
+    }
+
+    public void setSignatureType(String signatureType) {
+        this.signatureType = signatureType;
+    }
 }

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

@@ -68,6 +68,14 @@ public class ProjectReportSignatureInfo extends ActEntity<ProjectReportSignature
 	private String constructionQualityWarrantyDeposit;//工程质量保修金处理情况
 	private String taxDifferenceCalculationAndProcessing;//税金差额计算处理
 
+	private String projectAccountNumber;	//工程账号
+	private String projectName;	//工程名称
+	private String developmentOrganization;	//建设单位
+	private String calculateValuationBasisDocument;	//计算计价依据文件
+
+	private String type;	//类型(1:江苏;2:上海)
+
+
 
 	public String getProjectReportId() {
 		return projectReportId;
@@ -460,4 +468,45 @@ public class ProjectReportSignatureInfo extends ActEntity<ProjectReportSignature
 	public void setTaxDifferenceCalculationAndProcessing(String taxDifferenceCalculationAndProcessing) {
 		this.taxDifferenceCalculationAndProcessing = taxDifferenceCalculationAndProcessing;
 	}
+
+
+	public String getProjectAccountNumber() {
+		return projectAccountNumber;
+	}
+
+	public void setProjectAccountNumber(String projectAccountNumber) {
+		this.projectAccountNumber = projectAccountNumber;
+	}
+
+	public String getProjectName() {
+		return projectName;
+	}
+
+	public void setProjectName(String projectName) {
+		this.projectName = projectName;
+	}
+
+	public String getDevelopmentOrganization() {
+		return developmentOrganization;
+	}
+
+	public void setDevelopmentOrganization(String developmentOrganization) {
+		this.developmentOrganization = developmentOrganization;
+	}
+
+	public String getCalculateValuationBasisDocument() {
+		return calculateValuationBasisDocument;
+	}
+
+	public void setCalculateValuationBasisDocument(String calculateValuationBasisDocument) {
+		this.calculateValuationBasisDocument = calculateValuationBasisDocument;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 882 - 818
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1151 - 555
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java


+ 159 - 3
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java

@@ -99,6 +99,7 @@ import java.math.BigDecimal;
 import java.net.URI;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
 import java.util.*;
@@ -434,6 +435,33 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 			//查询报告文件、依据性文件、其他文件必填列表以及数据
 			List<MainDictDetail> projectSortList = projectSortList();
 
+			//查询超期时间天数
+			List<MainDictDetail> adventCount = DictUtils.getMainDictListOnProjectAdvent("advent_count");
+			//查询超期时间天数(电子归档)
+			List<MainDictDetail> adventRecordCount = DictUtils.getMainDictListOnProjectAdvent("advent_record_count");
+			//查询超期时间天数(A类纸质归档)
+			List<MainDictDetail> adventRecordACount = DictUtils.getMainDictListOnProjectAdvent("advent_record_A_count");
+			//查询超期时间天数(B类纸质归档)
+			List<MainDictDetail> adventRecordBCount = DictUtils.getMainDictListOnProjectAdvent("advent_record_B_count");
+
+			Integer endingAdventRecordCount = 0;
+			if(adventRecordCount.size()>0){
+				//获取超期时间天数(电子归档)转int
+				endingAdventRecordCount = Integer.parseInt(adventRecordCount.get(0).getLabel());
+			}
+			Integer endingAdventRecordACount = 0;
+			if(adventRecordACount.size()>0){
+				//获取超期时间天数(A类纸质归档)转int
+				endingAdventRecordACount = Integer.parseInt(adventRecordACount.get(0).getLabel());
+			}
+			Integer endingAdventRecordBCount = 0;
+			if(adventRecordBCount.size()>0){
+				//获取超期时间天数(A类纸质归档)转int
+				endingAdventRecordBCount = Integer.parseInt(adventRecordBCount.get(0).getLabel());
+			}
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+			Date date = new Date();
+
 			for (RuralProjectRecords info : recordsList) {
 				if (StringUtils.isNotBlank(info.getProjectType())){
 					if("1".equals(info.getProjectType())){  //工程咨询
@@ -457,6 +485,134 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 						}
 					}
 				}
+
+				//判断是A类还是B类 2是A类1是B类
+				if ("1".equals(info.getSubmitMoney())){
+					//设置电子未归档天数
+					if (null != info.getPrdAuditDate() && 5 != info.getProjectReportRecordStatus()
+							&& 7!= info.getProjectReportRecordStatus()){
+						try {
+							Date date2 = format.parse(info.getPrdAuditDate());
+							Long dateTimeLong = date.getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong)/(24*60*60*1000);
+							endTime = endTime - endingAdventRecordCount;
+							info.setNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+					}else if (null != info.getPrdAuditDate() && (5 == info.getProjectReportRecordStatus()
+							|| 7 == info.getProjectReportRecordStatus()) && null != info.getProjectReportRecordAuditDate()) {
+						try {
+							Date date2 = format.parse(info.getPrdAuditDate());
+							//获取电子归档审核通过时间
+							Long dateTimeLong = info.getProjectReportRecordAuditDate().getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong) / (24 * 60 * 60 * 1000);
+							endTime = endTime - endingAdventRecordCount;
+							info.setNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+					}
+
+					//设置纸质未归档天数
+					if (null != info.getPrdAuditDate()
+							&& !"5".equals(info.getPaperFilingStatus())
+							&& !"7".equals(info.getPaperFilingStatus()) && !"10".equals(info.getPaperFilingStatus())){
+						try {
+							Date date2 = format.parse(info.getPrdAuditDate());
+							Long dateTimeLong = date.getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong)/(24*60*60*1000);
+							endTime = endTime - endingAdventRecordBCount;
+							info.setPaperNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+					}else if(null != info.getPrdAuditDate()
+							&& ("5".equals(info.getPaperFilingStatus())
+							|| "10".equals(info.getPaperFilingStatus())) && null != info.getFilingBatchAuditPassDate()) {
+						try {
+							Date date2 = format.parse(info.getPrdAuditDate());
+							//获取电子归档审核通过时间
+							Long dateTimeLong = info.getFilingBatchAuditPassDate().getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong) / (24 * 60 * 60 * 1000);
+							endTime = endTime - endingAdventRecordBCount;
+							info.setPaperNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+
+					}
+				} else if ("2".equals(info.getSubmitMoney())){
+					//设置电子未归档天数
+					if (null != info.getTwoAuditPassDate() && 5 != info.getProjectReportRecordStatus()
+							&& 7!= info.getProjectReportRecordStatus()){
+						try {
+							Date date2 = format.parse(info.getTwoAuditPassDate());
+							Long dateTimeLong = date.getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong)/(24*60*60*1000);
+							endTime = endTime - endingAdventRecordCount;
+							info.setNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+					}else if (null != info.getTwoAuditPassDate() && (5 == info.getProjectReportRecordStatus()
+							|| 7 == info.getProjectReportRecordStatus()) && null != info.getProjectReportRecordAuditDate()) {
+						try {
+							Date date2 = format.parse(info.getTwoAuditPassDate());
+							//获取电子归档审核通过时间
+							Long dateTimeLong = info.getProjectReportRecordAuditDate().getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong) / (24 * 60 * 60 * 1000);
+							endTime = endTime - endingAdventRecordCount;
+							info.setNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+					}
+
+					//设置纸质未归档天数
+					if (null != info.getTwoAuditPassDate()
+							&& !"5".equals(info.getPaperFilingStatus()) &&
+							!"7".equals(info.getPaperFilingStatus()) && !"10".equals(info.getPaperFilingStatus())){
+						try {
+							Date date2 = format.parse(info.getTwoAuditPassDate());
+							Long dateTimeLong = date.getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong)/(24*60*60*1000);
+							endTime = endTime - endingAdventRecordACount;
+							info.setPaperNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+					}else if (null != info.getTwoAuditPassDate() && (5 == info.getProjectReportRecordStatus()
+							|| 7 == info.getProjectReportRecordStatus()) && null != info.getPaperFilingAuditPassDate()) {
+						try {
+							Date date2 = format.parse(info.getTwoAuditPassDate());
+							//获取电子归档审核通过时间
+							Long dateTimeLong = info.getPaperFilingAuditPassDate().getTime();
+							Long date2TimeLong = date2.getTime();
+							//计算未归档天数
+							Long endTime = (dateTimeLong - date2TimeLong) / (24 * 60 * 60 * 1000);
+							endTime = endTime - endingAdventRecordACount;
+							info.setPaperNoArchivedDays(endTime.toString());
+						} catch (ParseException e) {
+							e.printStackTrace();
+						}
+					}
+				}
+
 			}
 		}
 
@@ -605,7 +761,7 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 					}
 				} else if ("2".equals(projectRecords.getProjectType())) {	//造价审核
 					//预算审核、结算审核、分包审核 需要纸质归档
-					if ("2".equals(projectRecords.getAttachmentProjectSort()) || "4".equals(projectRecords.getAttachmentProjectSort()) || "7".equals(projectRecords.getAttachmentProjectSort()) || "9".equals(projectRecords.getAttachmentProjectSort())) {
+					if ("2".equals(projectRecords.getAttachmentProjectSort()) || "4".equals(projectRecords.getAttachmentProjectSort()) || "7".equals(projectRecords.getAttachmentProjectSort()) || "20".equals(projectRecords.getAttachmentProjectSort())) {
 						assert createBy != null;
 						projectRecords.setPaperFilingStatus("");
 						projectRecords.setProjectId(serialNumTplService.genSerialNum(createBy.getCompany(), RuralProjectRecords.SERIAL_COST_BIZCODE));
@@ -627,7 +783,7 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 				}
 				break;
 			case "2":
-				if("5".equals(projectRecords.getAttachmentProjectSort()) || "6".equals(projectRecords.getAttachmentProjectSort()) || "8".equals(projectRecords.getAttachmentProjectSort()) || "9".equals(projectRecords.getAttachmentProjectSort())){
+				if("5".equals(projectRecords.getAttachmentProjectSort()) || "6".equals(projectRecords.getAttachmentProjectSort()) || "8".equals(projectRecords.getAttachmentProjectSort()) || "20".equals(projectRecords.getAttachmentProjectSort())){
 					projectRecords.setReportedState("10");
 				}else{
 					projectRecords.setReportedState(null);
@@ -3034,7 +3190,7 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 						projectReportData.setConditionType("1005");
 					}else if("8".equals(projectRecords.getAttachmentProjectSort())){
 						projectReportData.setConditionType("1007");
-					}else if("9".equals(projectRecords.getAttachmentProjectSort())){
+					}else if("20".equals(projectRecords.getAttachmentProjectSort())){
 						projectReportData.setConditionType(RuralProjectRecords.SHANGHAI_COORDINATE_BIZCODE);
 					}
 					else{

+ 1 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/ApprovalThread.java

@@ -170,7 +170,7 @@ public class ApprovalThread extends Thread {
                             //将空白单的documentId存入数据库种
                             projectReportData.setSignatureInvalidDocumentId(String.join(",", invalidDocumentList));
                             //根据项目id 和 documentId生成合同id
-                            HashMap contractIdHashMap = ruralProjectMessageService.getSignatureContractId(ruralProjectRecords.getId(), documentList,ruralProjectRecords.getProjectMasterId(),"");
+                            HashMap contractIdHashMap = ruralProjectMessageService.getSignatureContractId(ruralProjectRecords.getId(), documentList,ruralProjectRecords.getProjectMasterId(),"",projectReportSignature.getSignatureType());
                             String contractIdCode = contractIdHashMap.get("code").toString();
                             String contractId = "";
                             if("0".equals(contractIdCode)){

+ 1 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/thread/SignatureThread.java

@@ -160,7 +160,7 @@ public class SignatureThread extends Thread {
                             documentList.add(documentId);
                             //根据项目id 和 documentId生成合同id
                             long s1 = System.currentTimeMillis();
-                            HashMap contractIdHashMap = ruralProjectMessageService.getReportSignatureContractId(ruralProjectRecords.getId(), documentList,ruralProjectRecords.getProjectMasterId(),"");
+                            HashMap contractIdHashMap = ruralProjectMessageService.getReportSignatureContractId(ruralProjectRecords.getId(), documentList,ruralProjectRecords.getProjectMasterId(),"",projectReportSignature.getSignatureType());
                             String contractIdCode = contractIdHashMap.get("code").toString();
                             String contractId = "";
                             if("0".equals(contractIdCode)){

+ 13 - 7
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -1884,7 +1884,7 @@ public class RuralProjectMessageController extends BaseController {
             //将空白单的documentId存入数据库种
             projectReportData.setSignatureInvalidDocumentId(String.join(",", invalidDocumentList));
             //根据项目id 和 documentId生成合同id
-            HashMap contractIdHashMap = ruralProjectMessageService.getSignatureContractId(projectId, documentList,principalUserId,generalManagerUserId);
+            HashMap contractIdHashMap = ruralProjectMessageService.getSignatureContractId(projectId, documentList,principalUserId,generalManagerUserId,"3");
             String contractIdCode = contractIdHashMap.get("code").toString();
             String contractId = "";
             if("0".equals(contractIdCode)){
@@ -2011,9 +2011,15 @@ public class RuralProjectMessageController extends BaseController {
             List<String> documentList = Lists.newArrayList();
             documentList.add(documentId);
 
-
+            String signatureType = "";
+            if(StringUtils.isNotBlank(records.getProjectType()) && "2".equals(records.getProjectType())
+                    && StringUtils.isNotBlank(records.getAttachmentProjectSort()) && "20".equals(records.getAttachmentProjectSort())){
+                signatureType = "2";
+            }else{
+                signatureType = "1";
+            }
             //根据项目id 和 documentId生成合同id
-            HashMap contractIdHashMap = ruralProjectMessageService.getReportSignatureContractId(projectId, documentList,principalUserId,"");
+            HashMap contractIdHashMap = ruralProjectMessageService.getReportSignatureContractId(projectId, documentList,principalUserId,"",signatureType);
             String contractIdCode = contractIdHashMap.get("code").toString();
             String contractId = "";
             if("0".equals(contractIdCode)){
@@ -2028,21 +2034,21 @@ public class RuralProjectMessageController extends BaseController {
             }
 
             //进行静默签署
-            HashMap signbyCompanyHashMap = ruralProjectMessageService.signbyCompanyByKeyWord(contractId, documentList);
+            /*HashMap signbyCompanyHashMap = ruralProjectMessageService.signbyCompanyByKeyWord(contractId, documentList);
             if(null != signbyCompanyHashMap){
                 String signbyCompany = signbyCompanyHashMap.get("code").toString();
                 if(!"0".equals(signbyCompany)){
                     map.put("str",signbyCompanyHashMap.get("message").toString());
                     return map;
                 }
-            }
+            }*/
 
             //获取contractUrl路径
-            /*String contractUrl = ruralProjectMessageService.getSignatureContractUrl(contractId);
+            String contractUrl = ruralProjectMessageService.getSignatureContractUrl(contractId);
             if("".equals(contractUrl)){
                 map.put("str","签章文件创建失败");
                 return map;
-            }*/
+            }
             //将documentId 和contractId存储到质量复核对应的数据种
             //签章完成则进行数据的保存
             records.setReportSignatureFlag(1);

+ 247 - 14
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageElectronicSealController.java

@@ -1,5 +1,7 @@
 package com.jeeplus.modules.ruralprojectrecords.web;
 
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Maps;
 import com.jeeplus.common.config.Global;
 import com.jeeplus.common.oss.OSSClientUtil;
 import com.jeeplus.common.persistence.Page;
@@ -16,15 +18,16 @@ import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
 import com.jeeplus.modules.projectrecord.entity.ProjectPlanInfo;
 import com.jeeplus.modules.ruralprojectrecords.entity.*;
 import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
-import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageAllService;
-import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageElectronicSealService;
-import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageNewService;
-import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.ruralprojectrecords.service.*;
+import com.jeeplus.modules.ruralprojectrecords.utils.FileUtil;
 import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.entity.Workattachment;
 import com.jeeplus.modules.sys.service.UserService;
+import com.jeeplus.modules.sys.service.WorkattachmentService;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.tools.utils.SignaturePostUtil;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 import freemarker.template.Configuration;
@@ -42,6 +45,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import org.springframework.web.multipart.MultipartFile;
+import redis.clients.jedis.Jedis;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -79,11 +83,15 @@ public class RuralProjectMessageElectronicSealController extends BaseController
     @Autowired
     private RuralProjectMessageNewService ruralProjectMessageService;
     @Autowired
+    private RuralProjectMessageService projectMessageService;
+    @Autowired
     private ProjectReportDataService projectReportDataService;
     @Autowired
     private ActTaskService actTaskService;
     @Autowired
     private RuralProjectRecordsService ruralProjectRecordsService;
+    @Autowired
+    private WorkattachmentService workattachmentService;
 
     @ModelAttribute
     public RuralProjectRecords get(@RequestParam(required=false) String id) {
@@ -257,8 +265,14 @@ public class RuralProjectMessageElectronicSealController extends BaseController
             BigDecimal bd5 = new BigDecimal(projectReportSignatureInfo.getAuthorizeFeeDeductAssessmentFee());
             projectReportSignatureInfo.setAuthorizeFeeDeductAssessmentFee(bd5.toPlainString());
         }
-
         model.addAttribute("projectReportSignatureInfo",projectReportSignatureInfo);
+
+        switch (projectReportSignatureInfo.getType()){
+            case "1":
+                return "modules/ruralprojectrecords/electronicSeal/ruralProjectReportSignatureInfoForm";
+            case "2":
+                return "modules/ruralprojectrecords/electronicSeal/ruralProjectReportHSSignatureInfoForm";
+        }
         return "modules/ruralprojectrecords/electronicSeal/ruralProjectReportSignatureInfoForm";
     }
 
@@ -268,6 +282,13 @@ public class RuralProjectMessageElectronicSealController extends BaseController
     public String approvalForm(RuralProjectRecords projectRecords, Model model){
         if (projectRecords!=null&& StringUtils.isNotBlank(projectRecords.getId())) {
             projectRecords = projectRecordsService.get(projectRecords.getId());
+
+            //判定是否为工程造价(上海)项目
+            if("2".equals(projectRecords.getProjectType()) && "20".equals(projectRecords.getAttachmentProjectSort())){
+                model.addAttribute("approvalType",1);
+            }else{
+                model.addAttribute("approvalType",0);
+            }
             projectRecordsService.queryProjectDetailBySignature(projectRecords,"144");
             ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
             projectPlanInfo.setProjectId(projectRecords.getId());
@@ -314,6 +335,14 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         if (null!=reported){
             model.addAttribute("reportedId",reported.getId());
         }
+
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(projectRecords.getId());
+        if(null != projectApprovalSignature && StringUtils.isNotBlank(projectApprovalSignature.getSignatureType())){
+            model.addAttribute("signatureType",projectApprovalSignature.getSignatureType());
+        }else{
+            model.addAttribute("signatureType","");
+        }
         //查询所有的工程类型
         List<ProjectEngineeringInfo> engineeringInfos=engineeringService.findList(new ProjectEngineeringInfo());
         model.addAttribute("engineeringInfo",engineeringInfos);
@@ -322,9 +351,15 @@ public class RuralProjectMessageElectronicSealController extends BaseController
 
     /**
      * 保存审定单签章送审信息
+     * @param projectRecords
+     * @param signatureType    苏州审定单选择类型(1:崇明;2:金山;3:自定义)
+     * @param model
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
      */
     @RequestMapping(value = "approvalSave")
-    public String approvalSave(RuralProjectRecords projectRecords, Model model, RedirectAttributes redirectAttributes) throws Exception {
+    public String approvalSave(RuralProjectRecords projectRecords, String signatureType, Model model, RedirectAttributes redirectAttributes) throws Exception {
         try {
             //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
             ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(projectRecords.getId());
@@ -338,6 +373,7 @@ public class RuralProjectMessageElectronicSealController extends BaseController
                     addMessage(redirectAttributes, "审定单签章申请已登记完成,无法再次送审");
                     return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
                 }
+                projectApprovalSignature.setSignatureType(signatureType);
                 projectApprovalSignature.setWorkAttachments(projectRecords.getWorkAttachments());
                 ruralProjectMessageElectronicSealService.approvalSave(projectApprovalSignature);//保存
             }else{
@@ -345,6 +381,7 @@ public class RuralProjectMessageElectronicSealController extends BaseController
                 projectApprovalSignature.setProjectId(projectRecords.getId());
                 projectApprovalSignature.setStatus(ProjectStatusEnum.IN_APRL.getValue());
                 projectApprovalSignature.setWorkAttachments(projectRecords.getWorkAttachments());
+                projectApprovalSignature.setSignatureType(signatureType);
                 ruralProjectMessageElectronicSealService.approvalSave(projectApprovalSignature);//保存
             }
             addMessage(redirectAttributes, "保存审定单签章申请成功");
@@ -363,7 +400,7 @@ public class RuralProjectMessageElectronicSealController extends BaseController
      * @return
      */
     @RequestMapping("approvalSaveAudit")
-    public String approvalSaveAudit(RuralProjectRecords projectRecords, Model model, RedirectAttributes redirectAttributes,Integer saveAuditFlag)  {
+    public String approvalSaveAudit(RuralProjectRecords projectRecords, String signatureType, Model model, RedirectAttributes redirectAttributes,Integer saveAuditFlag)  {
         String home = projectRecords.getHome();
         try {
             String taskDefKey = projectRecords.getAct().getTaskDefKey();
@@ -378,6 +415,7 @@ public class RuralProjectMessageElectronicSealController extends BaseController
             }else {
                 //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
                 ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(projectRecords.getId());
+                projectApprovalSignature.setSignatureType(signatureType);
                 projectApprovalSignature.setAct(projectRecords.getAct());
                 if(null != saveAuditFlag) {
                     if (projectApprovalSignature.getStatus() != 4 && projectApprovalSignature.getStatus() != 5) {
@@ -428,6 +466,21 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
         ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(projectRecords.getId());
         projectRecords = projectRecordsService.get(projectRecords.getId());
+
+        //判定是否为工程造价(上海)项目
+        if("2".equals(projectRecords.getProjectType()) && "20".equals(projectRecords.getAttachmentProjectSort())){
+            model.addAttribute("approvalType",1);
+        }else{
+            model.addAttribute("approvalType",0);
+        }
+
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        if(null != projectApprovalSignature && StringUtils.isNotBlank(projectApprovalSignature.getSignatureType())){
+            model.addAttribute("signatureType",projectApprovalSignature.getSignatureType());
+        }else{
+            model.addAttribute("signatureType","");
+        }
+
         projectRecordsService.queryProjectDetailBySignature(projectRecords,"144");
         projectRecords.setProcessInstanceId(projectApprovalSignature.getProcessInstanceId());
         projectRecords.setProjectStatus(projectApprovalSignature.getStatus());
@@ -747,6 +800,7 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         Map<String,Object> data = ruralProjectMessageElectronicSealService.disposeProjectReportdata(projectReportData);
         String projectName = (String) data.get("projectName");
         String number = (String) data.get("number");
+        String type = (String) data.get("type");
 
         //模板对象
         Template template=null;
@@ -756,7 +810,11 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         try {
             cfg.setDirectoryForTemplateLoading(path);
             //选择对应的ftl文件
-            template = cfg.getTemplate("projectSignature.ftl","UTF-8");
+            if("1".equals(type)){
+                template = cfg.getTemplate("projectSignature.ftl","UTF-8");
+            }else if("2".equals(type)){
+                template = cfg.getTemplate("projectHSSignature.ftl","UTF-8");
+            }
             File docFile = new File("报告号【"+number + "】报告签章.doc");
             FreemarkerUtil.generateFile(data,template,docFile);
             ResponseUtil.docResponse("报告号【"+number + "】项目名称:" + projectName + " 报告签章.doc",docFile,response);
@@ -783,16 +841,16 @@ public class RuralProjectMessageElectronicSealController extends BaseController
      */
     @RequiresPermissions("ruralProject:ruralProjectMessageAll:importB")
     @RequestMapping(value = "importB", method=RequestMethod.POST)
-    public String importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
+    public String importFile(MultipartFile file, RedirectAttributes redirectAttributes,String concealType) {
         try {
             ImportExcelNew importExcelNew = new ImportExcelNew();
-            List<ProjectReportSignatureInfo> list = importExcelNew.ImportExcelNew(file,1,0);  //只处理file 1不要也可以,0为sheet编号
+            List<ProjectReportSignatureInfo> list = importExcelNew.ImportExcelNew(file,1,0, concealType);  //只处理file 1不要也可以,0为sheet编号
 
             //对数据进行处理
-            String resultStr = ruralProjectMessageElectronicSealService.disposeImportBRuralProjectRecords(list);
+            String resultStr = ruralProjectMessageElectronicSealService.disposeImportBRuralProjectRecords(list,concealType);
             addMessage(redirectAttributes, resultStr);
         } catch (Exception e) {
-            addMessage(redirectAttributes, "导入B类项目失败!失败信息:"+e.getMessage());
+            addMessage(redirectAttributes, "导入项目信息失败!失败信息:"+e.getMessage());
         }
         return "redirect:"+ Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
     }
@@ -801,10 +859,19 @@ public class RuralProjectMessageElectronicSealController extends BaseController
      * 下载导入造价审核B类项目数据模板
      */
     @RequestMapping(value = "importB/template")
-    public String importFileTemplateB(HttpServletResponse response, HttpServletRequest request) {
+    public String importFileTemplateB(HttpServletResponse response, HttpServletRequest request,String type) {
         try {
             ThisLocalityDownloadUtil download = new ThisLocalityDownloadUtil();
-            download.download("签章导入数据模板.xlsx",request,response);  //自制的导入模板
+            if(StringUtils.isNotBlank(type)){
+                switch (type){
+                    case "js":
+                        download.download("签章导入数据模板.xlsx",request,response);  //自制的导入模板
+                        break;
+                    case "sh":
+                        download.download("上海签章导入数据模板.xlsx",request,response);  //自制的导入模板
+                        break;
+                }
+            }
         } catch (Exception e) {
             logger.error("导入数据模板下载失败!",e);
         }
@@ -834,4 +901,170 @@ public class RuralProjectMessageElectronicSealController extends BaseController
         addMessage(redirectAttributes, "报告签章信息修改成功");
         return "redirect:"+Global.getAdminPath()+"/ruralProject/electronicSeal/?repage";
     }
+
+
+
+    @RequestMapping(value = "getManualSignatureUrl")
+    @ResponseBody
+    public HashMap<String, Object> getManualSignatureUrl( String projectId, RedirectAttributes redirectAttributes) {
+        HashMap<String, Object> map = Maps.newHashMap();
+        map.put("contractUrl","");
+        map.put("success",false);
+        try {
+
+            //根据项目id查询是否已经提交过了报告签章
+            RuralProjectRecords records = projectRecordsService.get(projectId);
+            ProjectReportData projectReportData = projectReportDataService.getReportDataByProjectId(records.getId());
+            if(null == records){
+                map.put("str","查询不到该项目信息");
+                map.put("success",false);
+                return map;
+            }
+            if(null!= records.getReportSignatureFlag() && 1 == records.getReportSignatureFlag()){
+                map.put("str","该项目已经报告盖章完成");
+                map.put("success",false);
+                return map;
+            }
+            Workattachment workClientAttachment = new Workattachment();
+            workClientAttachment.setAttachmentFlag("144");
+            workClientAttachment.setAttachmentId(projectId);
+            List<Workattachment> fileList = workattachmentService.findList(workClientAttachment);
+
+            //下载审定单文件
+            if(fileList.size()>0){
+                Workattachment workattachment = fileList.get(0);
+                if(org.apache.commons.lang3.StringUtils.isBlank(workattachment.getUrl())){
+                    map.put("str","审定单文件存储路径为空,无法进行签章操作,请驳回后重新上传审定单");
+                    map.put("success",false);
+                    return map;
+                }
+                //下载审定单文件
+                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);
+
+                //截取文件后缀名
+                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())){
+                    map.put("str","请上传doc、docx或者pdf的文件进行签章操作");
+                    map.put("success",false);
+                    return map;
+                }
+
+                //获取真签单的documentId
+                HashMap hashMap = SignaturePostUtil.getDocument(srcFile);
+                String code = hashMap.get("code").toString();
+                String documentId = "";
+                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)){
+                        map.put("str","签章文件创建失败");
+                        map.put("success",false);
+                        return map;
+                    }
+                }else{
+                    String message = hashMap.get("message").toString();
+                    map.put("str",message);
+                    return map;
+                }
+                List<String> documentList = com.google.common.collect.Lists.newArrayList();
+                documentList.add(documentId);
+
+
+                //根据项目id 和 documentId生成合同id
+                HashMap contractIdHashMap = projectMessageService.getManualSignatureContractId(projectId, documentList,records.getProjectMasterId(),"","3");
+                String contractIdCode = contractIdHashMap.get("code").toString();
+                String contractId = "";
+                if("0".equals(contractIdCode)){
+                    contractId = contractIdHashMap.get("contractId").toString();
+                    if("".equals(contractId)){
+                        map.put("str","签章文件创建失败");
+                        map.put("success",false);
+                        return map;
+                    }
+                }else{
+                    map.put("str",contractIdHashMap.get("message").toString());
+                }
+
+
+                //获取contractUrl路径
+                String contractUrl = projectMessageService.getSignatureContractUrl(contractId);
+                if("".equals(contractUrl)){
+                    map.put("str","签章文件创建失败");
+                    map.put("success",false);
+                    return map;
+                }else{
+
+                    //修改报告信息中对应的签章contractId
+                    projectReportData.setSignatureDocumentId(documentId);
+                    projectReportData.setSignatureContractId(contractId);
+
+                    projectReportData.setSignatureUploadFileUser(UserUtils.getUser());
+                    projectReportData.setSignatureUploadDate(new Date());
+                    //修改签章对应信息文件
+                    projectReportDataService.updateSignatureInfo(projectReportData);
+
+                    map.put("contractUrl",contractUrl);
+                    map.put("success",true);
+                    return map;
+                }
+            }
+
+            map.put("contractUrl","");
+            map.put("str","审定单签章成功");
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "报告签章失败");
+        }
+
+
+        return map;
+    }
+
+
+    @RequestMapping(value = "getManualSignatureStatus")
+    @ResponseBody
+    public Map<String, Object> getManualSignatureStatus( String projectId, RedirectAttributes redirectAttributes) {
+        Map<String, Object> map = new HashMap();
+        map.put("success",false);
+
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(projectId);
+
+        Jedis jedis = null;
+        try {
+            jedis = JedisUtils.getResource();
+            String status = jedis.get("customApprovalCallBackAccomplishStatus" + projectApprovalSignature.getId());
+            map.put("success",status);
+        } catch (Exception e) {
+            logger.error("getApprovalCallBackAccomplish", e);
+        } finally {
+            JedisUtils.returnResource(jedis);
+        }
+
+        return map;
+    }
+
+
 }

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

@@ -2,6 +2,7 @@ package com.jeeplus.modules.ruralprojectrecords.web;
 
 import com.alibaba.fastjson.JSON;
 import com.jeeplus.common.config.Global;
+import com.jeeplus.common.utils.JedisUtils;
 import com.jeeplus.common.utils.SpringContextHolder;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
@@ -26,6 +27,7 @@ import org.activiti.engine.HistoryService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
+import redis.clients.jedis.Jedis;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -207,6 +209,42 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         return null;
     }
 
+    @RequestMapping(value = "/getApprovalCallBackAccomplish", method= RequestMethod.POST)
+    public String getApprovalCallBackAccomplish(PresignCallBack presignCallBack, HttpServletResponse response) {
+
+        //根据contractId查询对应的报告信息
+        String[] documentIds = presignCallBack.getDocumentId().split(",");
+        ProjectReportData projectReportData = null;
+        if(documentIds.length>0){
+            projectReportData = projectReportDataService.getProjectReportDataByDocumentId(documentIds[0]);
+        }else{
+            return null;
+        }
+
+        if(null == projectReportData){
+            return null;
+        }
+
+        //根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
+        ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(projectReportData.getProject().getId());
+
+        String json = JSON.toJSONString(presignCallBack);
+        Jedis jedis = null;
+        try {
+            jedis = JedisUtils.getResource();
+            //将页面签数据转json保存到redis中,并设置有效时间为1天
+            jedis.set("customApprovalCallBackAccomplish" + projectApprovalSignature.getId(),json);
+            jedis.expire("customApprovalCallBackAccomplish" + projectApprovalSignature.getId(), 86400);
+            jedis.set("customApprovalCallBackAccomplishStatus" + projectApprovalSignature.getId(),"true");
+            jedis.expire("customApprovalCallBackAccomplishStatus" + projectApprovalSignature.getId(),86400);
+        } catch (Exception e) {
+            logger.error("getApprovalCallBackAccomplish", e);
+        } finally {
+            JedisUtils.returnResource(jedis);
+        }
+        return null;
+    }
+
 
     /**
      * 审定单签章回调操作(盐城)

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

@@ -183,15 +183,15 @@ public class RuralProjectSignatureOldMessageDisposeController extends BaseContro
         long l1 = System.currentTimeMillis();
         Integer month = c.get(Calendar.MONTH); //第一个月从0开始,所以得到月份+1
         //当月最后一天
-        projectRecordsService.getBatchArchiveNotify();
+        //projectRecordsService.getBatchArchiveNotify();
         logger.info("-----------公司级—月度报表(开始)------------------");
-        //statementCompanyComprehensiveService.disposeStatementCompany(year,2,month);
+        statementCompanyComprehensiveService.disposeStatementCompany(year,2,month);
         logger.info("------------公司级—月度报表(结束)------------------");
         logger.info("-----------部门级—月度报表(开始)------------------");
         //statementCompanyComprehensiveService.disposeStatementOffice(year,2,month);
         logger.info("------------部门级—月度报表(结束)------------------");
         logger.info("------------公司级—年度报表(月报中年度信息)(开始)------------------");
-        //statementCompanyComprehensiveService.disposeStatementCompanyByYear(year,0,month);
+        statementCompanyComprehensiveService.disposeStatementCompanyByYear(year,0,month);
         logger.info("------------公司级—年度报表(月报中年度信息)(结束)------------------");
         logger.info("-----------部门级—年度报表(月报中年度信息)(开始)------------------");
         //statementCompanyComprehensiveService.disposeStatementOfficeByYear(year,0,month);

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

@@ -804,7 +804,7 @@ public class RuralProjectMessageElectronicSealYCController extends BaseControlle
     public String importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
         try {
             ImportExcelNew importExcelNew = new ImportExcelNew();
-            List<ProjectReportSignatureInfo> list = importExcelNew.ImportExcelNew(file,1,0);  //只处理file 1不要也可以,0为sheet编号
+            List<ProjectReportSignatureInfo> list = importExcelNew.ImportExcelNew(file,1,0,"");  //只处理file 1不要也可以,0为sheet编号
 
             //对数据进行处理
             String resultStr = ruralProjectMessageElectronicSealYCService.disposeImportBRuralProjectRecords(list);

+ 51 - 8
src/main/java/com/jeeplus/modules/sys/web/RegisterController.java

@@ -9,10 +9,7 @@ import com.jeeplus.common.utils.JedisUtils;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.sys.dao.UserDao;
-import com.jeeplus.modules.sys.entity.MainDictDetail;
-import com.jeeplus.modules.sys.entity.Office;
-import com.jeeplus.modules.sys.entity.SystemConfig;
-import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.entity.*;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.service.SystemConfigService;
 import com.jeeplus.modules.sys.service.SystemService;
@@ -20,13 +17,12 @@ import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.utils.ErrorCode;
 import net.sf.json.JSONObject;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import redis.clients.jedis.Jedis;
 
@@ -34,6 +30,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户Controller
@@ -426,6 +423,52 @@ public class RegisterController extends BaseController {
 			return "false";
 		}
 	}
+	/**
+	 * web端ajax验证密码是否正确
+	 */
+	@ResponseBody
+	@RequestMapping(value = "validatePasswordPublic")
+	public String validatePasswordPublic(HttpServletRequest request,
+										 @RequestBody String data) {
+//		User user1 = new User();
+//		user1.setName(loginName);
+//		List<User> list = userDao.getByName(user1);
+//		if(list != null && list.size()>1){
+//			return "cf";
+//		}
+		data = data.replaceAll("\\{","");
+		data = data.replaceAll("}","");
+		data = data.replaceAll(" ","");
+		Map map = new HashMap<>();
+		String[] keyValuePairs = data.split(",");
+		for(String pair : keyValuePairs){
+			String[] entry = pair.split("=");
+			map.put(entry[0],entry[1]);
+		}
+		String loginName = (String) map.get("loginName");
+		String password = (String) map.get("password");
+		password = DigestUtils.md5Hex(password);
+		User user = UserUtils.getByLoginName(loginName);
+		if (user ==null || org.apache.commons.lang3.StringUtils.isBlank(user.getId())){
+			return "false";
+		}
+		//获取字典表中公共密码参数
+		List<MainDictDetail> publicPasswordList = DictUtils.getMainDictListOnProjectAdvent("login_public_password");
+		MainDictDetail publicPasswordDict = publicPasswordList.get(0);
+		String publicPassword = publicPasswordDict.getLabel();
+		//对公共密码进行加密
+		publicPassword = SystemService.encrypeString(publicPassword);
+		publicPassword = SystemService.entryptPassword(publicPassword);
+		//password = SystemService.encrypeString(password);
+		//判断 当前登陆人登陆密码和数据库的是否一样或者 登陆密码是否为字典表中通用登陆密码
+		if (SystemService.validatePassword(password, user.getPassword()) || SystemService.validatePassword(password, publicPassword) ) {
+			return "true";
+		} else {
+			return "false";
+		}
+	}
+
+
 
 
 	@ResponseBody

+ 17 - 1
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -1487,7 +1487,11 @@ public class WorkProjectNotifyController extends BaseController {
 					if (ruralProjectRecords != null && StringUtils.isNotBlank(ruralProjectRecords.getId())) {
 						//根据项目id查询对应的审定单数据状态是否是已经被送审或者 是否存在值
 						ProjectApprovalSignature projectApprovalSignature = ruralProjectMessageElectronicSealService.getProjectApprovalSignature(ruralProjectRecords.getId());
-
+						if(null != projectApprovalSignature && StringUtils.isNotBlank(projectApprovalSignature.getSignatureType())){
+							model.addAttribute("signatureType",projectApprovalSignature.getSignatureType());
+						}else{
+							model.addAttribute("signatureType","");
+						}
 						ruralProjectRecordsService.queryProjectDetail(ruralProjectRecords);
 						ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
 						projectPlanInfo.setProjectId(ruralProjectRecords.getId());
@@ -1519,6 +1523,18 @@ public class WorkProjectNotifyController extends BaseController {
 						}else{
 							ruralProjectRecords.setApprovalSignatureUrlFlag(0);
 						}
+						//判定是否为工程造价(上海)项目
+						if("2".equals(ruralProjectRecords.getProjectType()) && "20".equals(ruralProjectRecords.getAttachmentProjectSort())){
+							model.addAttribute("approvalType",1);
+							if(!"3".equals(projectApprovalSignature.getSignatureType())){
+								model.addAttribute("auditFlag",1);
+							}else{
+								model.addAttribute("auditFlag",0);
+							}
+						}else{
+							model.addAttribute("approvalType",0);
+							model.addAttribute("auditFlag",1);
+						}
 					}
 					ruralProjectRecords.setAct(getByAct(ruralProjectRecords.getProcessInstanceId()));
 					if(StringUtils.isNotBlank(workProjectNotify.getHome())){

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

@@ -339,6 +339,8 @@ company_round_seal_id_vertical = 2898043523878957918
 company_parties_seal_id = 2894163220106129636
 #审定单用印流程id
 approval_category_id = 2895582833566102435
+#(自定义(页面签))审定单用印流程id
+custom_approval_category_id = 3103151250849833169
 #报告用印流程id
 report_category_id = 2895618951099527314
 ##审定内用印流程id

+ 74 - 7
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageElectronicSealDao.xml

@@ -4,6 +4,11 @@
 
 	<sql id="projectReportRecordColumns">
 			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",
@@ -52,7 +57,12 @@
 			a.tax_difference_calculation_and_processing as "tax_difference_calculation_and_processing",
 			a.contract_name as "contractName",
 			a.contract_details as "contractDetails",
-			a.contract_date as "contractDate"
+			a.contract_date as "contractDate",
+			a.project_account_number as "projectAccountNumber",
+			a.project_name as "projectName",
+			a.development_organization as "developmentOrganization",
+			a.calculate_valuation_basis_document as "calculateValuationBasisDocument",
+			a.type as "type"
 	</sql>
 
 
@@ -68,6 +78,10 @@
 	<insert id="insertByList" parameterType="java.util.List">
 		insert into project_report_signature_info(
 			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
 			project_report_id,
 			submit_fee,
 			authorize_fee,
@@ -116,11 +130,20 @@
 			tax_difference_calculation_and_processing,
 			contract_name,
 			contract_details,
-			contract_date
+			contract_date,
+			project_account_number,
+			project_name,
+			development_organization,
+			calculate_valuation_basis_document,
+			`type`
 		)values
 		<foreach collection="list" item="item" separator=",">
 			(
-			 #{item.id},
+			#{item.id},
+			#{item.createBy.id},
+			#{item.createDate},
+			#{item.updateBy.id},
+			#{item.updateDate},
 			#{item.projectReportId},
 			#{item.submitFee},
 			#{item.authorizeFee},
@@ -169,7 +192,12 @@
 			#{item.taxDifferenceCalculationAndProcessing},
 			#{item.contractName},
 			#{item.contractDetails},
-			#{item.contractDate}
+			#{item.contractDate},
+			#{item.projectAccountNumber},
+			#{item.projectName},
+			#{item.developmentOrganization},
+			#{item.calculateValuationBasisDocument},
+			#{item.type}
 			)
 		</foreach>
 	</insert>
@@ -221,6 +249,7 @@
 		  a.project_id as "projectId",
 		  a.status as "status",
 		  a.process_instance_id as "processInstanceId",
+		  a.signature_type as "signatureType",
 		  a.company_id as "company.id",
 		  a.office_id as "office.id"
 		from
@@ -302,7 +331,8 @@
 		  status,
 		  process_instance_id,
 		  company_id,
-		  office_id
+		  office_id,
+		  signature_type
 		)
 		values
 		  (
@@ -317,7 +347,8 @@
 			#{status},
 			#{processInstanceId},
 			#{company.id},
-			#{office.id}
+			#{office.id},
+			#{signatureType}
 		  )
 	</insert>
 
@@ -365,6 +396,9 @@
 		  <if test="processInstanceId != null and processInstanceId != ''">
 			,process_instance_id =#{processInstanceId}
 		  </if>
+		  <if test="signatureType != null and signatureType != ''">
+			,signature_type =#{signatureType}
+		  </if>
 		where id = #{id}
 	</update>
 
@@ -399,6 +433,8 @@
 
 	<update id="updateProjectReportSignatureInfo" parameterType="ProjectReportSignatureInfo">
 		update project_report_signature_info set
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
 			submit_fee=#{submitFee},
 			authorize_fee=#{authorizeFee},
 			construction_unit_assessment_fee=#{constructionUnitAssessmentFee},
@@ -446,7 +482,12 @@
 			tax_difference_calculation_and_processing=#{taxDifferenceCalculationAndProcessing},
 			contract_name=#{contractName},
 			contract_details=#{contractDetails},
-			contract_date=#{contractDate}
+			contract_date=#{contractDate},
+			project_account_number = #{projectAccountNumber},
+			project_name = #{projectName},
+			development_organization = #{developmentOrganization},
+			calculate_valuation_basis_document = #{calculateValuationBasisDocument},
+			`type` = #{type}
 			where project_report_id=#{projectReportId}
 	</update>
 
@@ -454,4 +495,30 @@
 		select id from sys_user where name=#{consultantName}
 	</select>
 
+
+	<select id="getProjectReportIdByReportIdAndType" resultType="java.lang.String">
+		select a.number from project_report_data a
+		left join rural_project_records b on a.project_id = b.id
+		<where>
+			<if test="reportIdList!=null and reportIdList.size!=0">
+				a.number in
+				<foreach collection="reportIdList" item="reportId" separator="," open="(" close=")">
+					#{reportId}
+				</foreach>
+			</if>
+
+			<if test="type != null and type != ''">
+				<choose>
+					<when test="type == 'js'">
+						and b.attachment_project_sort !=20
+					</when>
+					<otherwise>
+						and b.attachment_project_sort =20
+					</otherwise>
+				</choose>
+			</if>
+
+		</where>
+	</select>
+
 </mapper>

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

@@ -3270,6 +3270,7 @@
 		,prr.id as prrId
 		,prrd.id as prrdId
 		,prd.audit_pass_date as auditPassDate
+		,prd.audit_pass_date as "prdAuditDate"
 		,if(date_add(prd.audit_pass_date,interval #{ruralProjectRecords.endingCount} day) >now(),"0","1") as reportedType
 		,ifnull(rprr.report_status,0) as "reportStatus"
 		,ifnull(rprr.sync_status,0) as "syncStatus"
@@ -3280,6 +3281,7 @@
 		,rprr.process_instance_id as "reportedProcessInstanceId"
 		,ifnull(prdt.status,0) as "projectReportStatusTwo"
 		,prdt.id as prdtId
+		,prdt.audit_pass_date as "twoAuditPassDate"
 		,prdt.process_instance_id as prdtProcessinstanceId
 		,ifnull(pmdr.status,0) as "defectRecordStatus"
 		,pmdr.process_instance_id as "pmdrProcessInstanceId"
@@ -3594,11 +3596,13 @@
 			and sdi.year = #{statementCompanyComprehensiveInfo.year}
 			and sdi.type = #{statementCompanyComprehensiveInfo.type}
 			and sdi.big_date_type = #{statementCompanyComprehensiveInfo.bigDateType}
+
 			<if test="statementCompanyComprehensiveInfo.smallDateType != null and statementCompanyComprehensiveInfo.smallDateType !=''">
 				and sdi.small_date_type = #{statementCompanyComprehensiveInfo.smallDateType}
 			</if>
+
 			<if test="statementCompanyComprehensiveInfo.officeId != null and statementCompanyComprehensiveInfo.officeId !=''">
-				and a.office_id in(select id  from sys_office where id = #{statementCompanyComprehensiveInfo.officeId}  ${ruralProjectRecords.sqlMap.officeId})
+				and sdi.office_id = #{statementCompanyComprehensiveInfo.officeId}
 			</if>
 			<if test="statementCompanyComprehensiveInfo.field5 == '5'.toString() ">
 				and a.record_state != 7

+ 1 - 0
src/main/resources/mappings/modules/statement/StatementCompanyComprehensiveDao.xml

@@ -2321,6 +2321,7 @@
 		<where>
 			a.del_flag=0
 			and a.status = 5
+			and a.submit_money = 2
 			and a.paper_filing_status != 7
 			AND a.paper_filing_status != '10'
 			AND a.paper_filing_status != '11'

+ 1 - 0
src/main/resources/spring-context-shiro.xml

@@ -40,6 +40,7 @@
                 ${adminPath}/sys/register/getRegisterCode = anon
                 ${adminPath}/sys/register/validateMobileCode = anon
                 ${adminPath}/sys/register/validatePassword = anon
+                ${adminPath}/sys/register/validatePasswordPublic = anon
                 ${adminPath}/workstaff/workStaffBasicInfo/repeatName = anon
                 ${adminPath}/sys/register/users = anon
                 ${adminPath}/login/getRandomCode = anon

+ 23 - 0
src/main/webapp/static/common/jeeplus.js

@@ -578,6 +578,29 @@ function getAuditState(id)
     return result;
 }
 
+function getWorkInvoiceAuditState(id)
+{
+    var result ={};
+    result.action = true;
+    switch(id)
+    {
+        case "0":result.label = "tempstore";result.status="未复核";result.action = false;break;
+        case "1":result.label = "tempstore";result.status="暂存";result.action = false;break;
+        case "2":result.label = "auditing";result.status="审批中";break;
+        case "3":result.label = "cancel";result.status="撤回";break;
+        case "4":result.label = "reject";result.status="驳回";break;
+        case "5":result.label = "signed";result.status="已完成";break;
+        case "7":result.label = "signed";result.status="作废";break;
+        case "9":result.label = "reject";result.status="作废驳回";break;
+        case "8":result.label = "changing";result.status="变更中";break;
+        case "10":result.label = "signed";result.status="无复核";result.action = false;break;
+        case "11":result.label = "cancel";result.status="作废撤回";break;
+        default:
+            result.label = "unknown";result.status="未知";break;
+    }
+    return result;
+}
+
 function getReportIssueState(id)
 {
     var result ={};

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

@@ -36,7 +36,7 @@
 
 <!-- jeeplus -->
 <link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
-<script src="${ctxStatic}/common/jeeplus.js?11" type="text/javascript"></script>
+<script src="${ctxStatic}/common/jeeplus.js?12" type="text/javascript"></script>
 <script type="text/javascript" src="${ctxStatic}/common/openShow.js"></script>
 
 <!-- jquery ui -->

+ 3 - 3
src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/adminReportEditForm.jsp

@@ -1872,7 +1872,7 @@
 										<c:choose>
 											<c:when test="${fileAttachment.flag == 0}">
 <%--												<div style="overflow: hidden"><span class="file_nei">内容:</span><div class="file_neirong">${fileAttachment.attachName}</div></div>--%>
-												<div><span style="font-weight: bold">文件格式及大小:</span>${fileAttachment.attachLength}M;  ${fileAttachment.attachTypes}</div>
+												<div style="white-space:normal; word-break:break-all;overflow:hidden;"><span style="font-weight: bold">文件格式及大小:</span>${fileAttachment.attachLength}M;</div><div style="white-space:normal; word-break:break-all;overflow:hidden;">  ${fileAttachment.attachTypes}</div>
 											</c:when>
 											<c:otherwise>
 												<c:choose>
@@ -2004,7 +2004,7 @@
 										<c:choose>
 											<c:when test="${fileGistdata.flag == 0}">
 <%--												<div style="overflow: hidden"><span class="file_nei">内容:</span><div class="file_neirong">${fileGistdata.attachName}</div></div>--%>
-												<div><span style="font-weight: bold">文件格式及大小:</span>${fileGistdata.attachLength}M;  ${fileGistdata.attachTypes}</div>
+												<div style="white-space:normal; word-break:break-all;overflow:hidden;"><span style="font-weight: bold">文件格式及大小:</span>${fileGistdata.attachLength}M;</div><div style="white-space:normal; word-break:break-all;overflow:hidden;">  ${fileGistdata.attachTypes}</div>
 											</c:when>
 											<c:otherwise>
 												<c:choose>
@@ -2136,7 +2136,7 @@
 										<c:choose>
 											<c:when test="${fileOther.flag == 0}">
 <%--												<div style="overflow: hidden"><span class="file_nei">内容:</span><div class="file_neirong">${fileOther.attachName}</div></div>--%>
-												<div><span style="font-weight: bold">文件格式及大小:</span>${fileOther.attachLength}M;  ${fileOther.attachTypes}</div>
+												<div style="white-space:normal; word-break:break-all;overflow:hidden;"><span style="font-weight: bold">文件格式及大小:</span>${fileOther.attachLength}M;</div><div style="white-space:normal; word-break:break-all;overflow:hidden;">  ${fileOther.attachTypes}</div>
 											</c:when>
 											<c:otherwise>
 												<c:choose>

+ 142 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsApprovalAudit.jsp

@@ -18,6 +18,13 @@
 				var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
 				$("#opinion").val(ss);
                 if(obj == 1) {
+
+					var auditFlag = $("#auditFlag").val();
+					console.log(123123)
+					if(auditFlag != 1){
+						top.layer.msg('审定单签章未审核完成,请审核后点击同意', {icon: 0});
+						return false;
+					}
                     $("#flag").val("yes");
                 }else {
                     if(obj == 2){
@@ -33,6 +40,52 @@
 		  return false;
 		}
 		$(document).ready(function() {
+			if(null != '${signatureType}' && undefined != '${signatureType}' && '' != '${signatureType}'){
+				if("${signatureType}" == "1"){
+					$("#signaturePhotoDiv").show();
+					$("#chongming").show();
+					$("#jinshan").hide();
+					$("#custom").hide();
+				}else if("${signatureType}" == "2"){
+					$("#signaturePhotoDiv").show();
+					$("#jinshan").show();
+					$("#chongming").hide();
+					$("#custom").hide();
+				}else if("${signatureType}" == "3"){
+					$("#signaturePhotoDiv").show();
+					$("#custom").show();
+					$("#chongming").hide();
+					$("#jinshan").hide();
+
+				}
+			}
+			if("3" === '${signatureType}'){
+				getManualSignatureStatus('${projectRecords.id}')
+			}
+
+			layui.use(['form', 'layer'], function () {
+				var form = layui.form;
+				//审定单签章样式调整
+				layui.form.on('radio(signatureTypeRadio)', function(data){
+					var span=data.value;
+					if(span==1){
+						$("#signaturePhotoDiv").show();
+						$("#chongming").show();
+						$("#jinshan").hide();
+						$("#custom").hide();
+					}else if(span==2){
+						$("#signaturePhotoDiv").show();
+						$("#jinshan").show();
+						$("#chongming").hide();
+						$("#custom").hide();
+					}else if(span==3){
+						$("#signaturePhotoDiv").show();
+						$("#custom").show();
+						$("#chongming").hide();
+						$("#jinshan").hide();
+					}
+				});
+			});
 
 			var tt = $("#contractNum").val();
 			if (tt == null || tt === "") {
@@ -83,6 +136,25 @@
 			}
 		});
 
+        function getManualSignatureStatus(projectId){
+			$.ajax({
+				type:"post",
+				url:'${ctx}/ruralProject/electronicSeal/getManualSignatureStatus',
+				data:{"projectId": projectId},
+				dataType:"json",
+				success:function(data){
+					if(data.success) {
+						//签章按钮隐藏
+						$("#approvaButton").css("display","none");
+
+						//设置可以审核操作
+						$("#auditFlag").val(1)
+						top.layer.msg('签章已完成,请点击审核通过或驳回!', {icon: 1});
+					}
+				}
+			})
+        }
+
         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();
@@ -123,6 +195,42 @@
                 }
             });
         }
+
+		function getManualSignatureUrl(projectId){
+			$.ajax({
+				type:"post",
+				url:'${ctx}/ruralProject/electronicSeal/getManualSignatureUrl',
+				data:{"projectId": projectId},
+				dataType:"json",
+				success:function(data){
+					if(data.success) {
+						window.open(data.contractUrl);
+						var interVal = setInterval(function (){
+									$.ajax({
+										type:"post",
+										url:'${ctx}/ruralProject/electronicSeal/getManualSignatureStatus',
+										data:{"projectId": projectId},
+										dataType:"json",
+										success:function(data){
+											if(data.success) {
+												//签章按钮隐藏
+												$("#approvaButton").css("display","none");
+												//设置可以审核操作
+												$("#auditFlag").val(1)
+												clearInterval(interVal)
+												top.layer.msg('签章已完成,请点击审核通过或驳回!', {icon: 1});
+											}
+										}
+									})
+								}
+								,3000)
+					}else {
+						top.layer.msg("签章失败!", {icon: 0});
+					}
+				}
+			})
+			return;
+		}
 	</script>
 </head>
 <body >
@@ -139,6 +247,8 @@
 		<form:hidden path="processInstanceId"/>
 		<form:hidden id="flag" path="act.flag"/>
 		<input type="hidden" id="opinion" name="act.comment" value="" maxlength="255">
+		<input type="hidden" id="signatureType" name="signatureType" value="${signatureType}">
+		<input type="hidden" id="auditFlag" name="auditFlag" value="${auditFlag}">
 		<c:set var="status" value="${projectRecords.act.status}" />
 
 			<div class="form-group layui-row first">
@@ -327,6 +437,35 @@
 				</div>
 			</div>
 
+			<c:if test="${approvalType == 1}">
+				<div class="form-group layui-row first">
+					<div class="form-group-label"><h2>审定单签章类型</h2></div>
+					<div class="layui-item layui-col-sm12 lw6 with-textarea">
+						<label class="layui-form-label double-line"><span class="require-item">*</span>审定单签章类型:</label>
+						<div class="layui-input-block with-icon">
+							<div style="overflow: hidden">
+								<input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType1" disabled title="审定单-崇明" value="1" <c:if test="${signatureType == 1}">checked</c:if>>
+								<input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType2" disabled title="审定单-金山" value="2" <c:if test="${signatureType == 2}">checked</c:if>>
+								<input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType3" disabled title="审定单-自定义" value="3" <c:if test="${signatureType == 3}">checked</c:if>>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="form-group layui-row" id="signaturePhotoDiv" style="display: none">
+					<div class="layui-item nav-btns">
+						<label class="layui-form-label double-line">审定单签章模板:</label>
+						<div class="layui-upload-list" id="chongming" >
+							<img class="layui-upload-img" title="崇明审定单自动盖章" width="200px" height="150px" id="chongmingImg" onclick="openDialogView('预览','${ctxStatic}/common/images/chongming.jpg','90%','90%')" src="${ctxStatic}/common/images/chongming.jpg">
+						</div>
+						<div class="layui-upload-list" id="jinshan">
+							<img class="layui-upload-img" title="金山审定单自动盖章" width="200px" height="150px" id="jinshanImg" onclick="openDialogView('预览','${ctxStatic}/common/images/jinshan.jpg','90%','90%')" src="${ctxStatic}/common/images/jinshan.jpg">
+						</div>
+						<div class="layui-upload-list" id="custom">
+							<img class="layui-upload-img" title="审定单手动盖章" width="200px" height="150px" id="customImg" onclick="openDialogView('预览','${ctxStatic}/common/images/customSignature.jpg','90%','90%')" src="${ctxStatic}/common/images/customSignature.jpg">
+						</div>
+					</div>
+				</div>
+			</c:if>
 
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>委托方联系人信息</h2></div>
@@ -400,6 +539,9 @@
 
 
 			<div class="form-group layui-row">
+				<c:if test="${auditFlag != 1}">
+					<div style="float: right"> <a id="approvaButton" href=javascript:void(0);  onclick="getManualSignatureUrl('${projectRecords.id}')" class="layui-btn layui-btn-sm" >审定单审核</a></div>
+				</c:if>
 				<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">

+ 81 - 53
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsApprovalForm.jsp

@@ -47,6 +47,14 @@
         var clientCount = 0;
         function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
             if(validateForm.form()){
+                var approvalType = '${approvalType}'
+                if(approvalType === '1'){
+                    var signatureType=$('input:radio[name="signatureType"]:checked').val();
+                    if(null == signatureType || undefined == signatureType || '' == signatureType){
+                        parent.layer.msg("请选择审定单签章类型",{icon:0});
+                        return false;
+                    }
+                }
                 var length = $("#file_attachment").find("tr").length ;
                 if(length == 0){
                     top.layer.msg("请上传审定单签章附件", {icon: 0});
@@ -60,6 +68,31 @@
             return false;
         }
         $(document).ready(function() {
+
+
+            if(null != '${signatureType}' && undefined != '${signatureType}' && '' != '${signatureType}'){
+                if("${signatureType}" == "1"){
+                    $("#signatureType1").iCheck('check');
+                    $("#signaturePhotoDiv").show();
+                    $("#chongming").show();
+                    $("#jinshan").hide();
+                    $("#custom").hide();
+                }else if("${signatureType}" == "2"){
+                    $("#signatureType2").iCheck('check');
+                    $("#signaturePhotoDiv").show();
+                    $("#jinshan").show();
+                    $("#chongming").hide();
+                    $("#custom").hide();
+                }else if("${signatureType}" == "3"){
+                    $("#signatureType3").iCheck('check');
+                    $("#signaturePhotoDiv").show();
+                    $("#custom").show();
+                    $("#chongming").hide();
+                    $("#jinshan").hide();
+
+                }
+            }
+
             var tt = $("#contractNum").val();
             if (tt == null || tt === "") {
                 $("#divv").hide();
@@ -97,52 +130,28 @@
             }
             layui.use(['form', 'layer'], function () {
                 var form = layui.form;
-                //自动选择合同状态
-                if ($("#projectName").val() != "") {
-                    if ($("#contractName").val() == "") {
-                        $("#ext1").attr("checked",true);
-                        $("#divv").hide();
-                        $("#divv3").hide();
-                        form.render();
-                    }else{
-                        $("#ext").attr("checked",true);
-                        $("#divv").show();
-                        $("#divv3").show();
-                        var contractInformation='${ruralProjectRecords.workContractInfo.contractInformation}'
-                        if(contractInformation == "1"){
-                            $("#c2").show();
-                            $("#c1").hide();
-                        }else{
-                            $("#c2").hide();
-                            $("#c1").show();
-                        }
-                        form.render();
-                    }
-                }
-                //有无合同监听器
-                layui.form.on('radio(ext)', function(data){
+                //审定单签章样式调整
+                layui.form.on('radio(signatureTypeRadio)', function(data){
                     var span=data.value;
-                    if(span==0){
-                        $("#contractIdId").val(id);
-                        $("#contractIdName").val(name);
-                        $("#contractName").val(cname);
-                        $("#contractPrice").val(cprice);
-                        $("#contractClientName").val(ccname);
-                        $("#constructionProjectType").val(cptype);
-                        $("#divv").show();
-                        $("#divv3").show();
-                    }else{
-                        var h=$("#d1").html();
-                        $("#contractIdId").val("");
-                        $("#contractIdName").val("");
-                        $("#contractName").val("");
-                        $("#contractPrice").val("");
-                        $("#contractClientName").val("");
-                        $("#constructionProjectType").val("");
-                        $("#divv").hide();
-                        $("#divv3").hide();
+                    if(span==1){
+                        $("#signaturePhotoDiv").show();
+                        $("#chongming").show();
+                        $("#jinshan").hide();
+                        $("#custom").hide();
+                    }else if(span==2){
+                        $("#signaturePhotoDiv").show();
+                        $("#jinshan").show();
+                        $("#chongming").hide();
+                        $("#custom").hide();
+                    }else if(span==3){
+                        $("#signaturePhotoDiv").show();
+                        $("#custom").show();
+                        $("#chongming").hide();
+                        $("#jinshan").hide();
                     }
                 });
+
+
                 $.ajax({
                     type : "POST",
                     url : "${ctx}/ruralProject/ruralProjectRecords/engineeringTreeMenu",
@@ -181,16 +190,6 @@
                         $("#emergencyProjectFlag").val("1");
                     }
                 });
-                // form.on('switch(emergencyProject)',function(data){
-                //     var flag=$(this).prop("checked")
-                //     if (flag){
-                //         //是紧急项目
-                //         $("#emergencyProjectFlag").val("1");
-                //     }else{
-                //         //不是紧急项目
-                //         $("#emergencyProjectFlag").val("0");
-                //     }
-                // })
             });
             //默认打开判断是否时紧急项目
             var submitMoney="${ruralProjectRecords.submitMoney}"
@@ -1034,6 +1033,35 @@
                     </div>
                 </div>
             </div>
+            <c:if test="${approvalType == 1}">
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>审定单签章类型</h2></div>
+                    <div class="layui-item layui-col-sm12 lw6 with-textarea">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>审定单签章类型:</label>
+                        <div class="layui-input-block with-icon">
+                            <div style="overflow: hidden">
+                                <input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType1" title="审定单-崇明" value="1">
+                                <input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType2" title="审定单-金山" value="2">
+                                <input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType3" title="审定单-自定义" value="3">
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row" id="signaturePhotoDiv" style="display: none">
+                    <div class="layui-item nav-btns">
+                        <label class="layui-form-label double-line">审定单签章模板:</label>
+                        <div class="layui-upload-list" id="chongming" >
+                            <img class="layui-upload-img" title="崇明审定单自动盖章" width="200px" height="150px" id="chongmingImg" onclick="openDialogView('预览','${ctxStatic}/common/images/chongming.jpg','90%','90%')" src="${ctxStatic}/common/images/chongming.jpg">
+                        </div>
+                        <div class="layui-upload-list" id="jinshan">
+                            <img class="layui-upload-img" title="金山审定单自动盖章" width="200px" height="150px" id="jinshanImg" onclick="openDialogView('预览','${ctxStatic}/common/images/jinshan.jpg','90%','90%')" src="${ctxStatic}/common/images/jinshan.jpg">
+                        </div>
+                        <div class="layui-upload-list" id="custom">
+                            <img class="layui-upload-img" title="审定单手动盖章" width="200px" height="150px" id="customImg" onclick="openDialogView('预览','${ctxStatic}/common/images/customSignature.jpg','90%','90%')" src="${ctxStatic}/common/images/customSignature.jpg">
+                        </div>
+                    </div>
+                </div>
+            </c:if>
 
             <div class="form-group layui-row">
                 <div class="form-group-label"><h2>委托方联系人信息</h2></div>

+ 81 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectRecordsApprovalModify.jsp

@@ -15,6 +15,14 @@
         var validateForm;
         function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
             if(validateForm.form()){
+                var approvalType = '${approvalType}'
+                if(approvalType === '1'){
+                    var signatureType=$('input:radio[name="signatureType"]:checked').val();
+                    if(null == signatureType || undefined == signatureType || '' == signatureType){
+                        parent.layer.msg("请选择审定单签章类型",{icon:0});
+                        return false;
+                    }
+                }
                 var length = $("#file_attachment").find("tr").length ;
                 if(length == 0){
                     top.layer.msg("请上传审定单签章附件", {icon: 0});
@@ -37,6 +45,49 @@
         }
         $(document).ready(function() {
 
+            if(null != '${signatureType}' && undefined != '${signatureType}' && '' != '${signatureType}'){
+                if("${signatureType}" == "1"){
+                    $("#signaturePhotoDiv").show();
+                    $("#chongming").show();
+                    $("#jinshan").hide();
+                    $("#custom").hide();
+                }else if("${signatureType}" == "2"){
+                    $("#signaturePhotoDiv").show();
+                    $("#jinshan").show();
+                    $("#chongming").hide();
+                    $("#custom").hide();
+                }else if("${signatureType}" == "3"){
+                    $("#signaturePhotoDiv").show();
+                    $("#custom").show();
+                    $("#chongming").hide();
+                    $("#jinshan").hide();
+
+                }
+            }
+            layui.use(['form', 'layer'], function () {
+                var form = layui.form;
+                //审定单签章样式调整
+                layui.form.on('radio(signatureTypeRadio)', function(data){
+                    var span=data.value;
+                    if(span==1){
+                        $("#signaturePhotoDiv").show();
+                        $("#chongming").show();
+                        $("#jinshan").hide();
+                        $("#custom").hide();
+                    }else if(span==2){
+                        $("#signaturePhotoDiv").show();
+                        $("#jinshan").show();
+                        $("#chongming").hide();
+                        $("#custom").hide();
+                    }else if(span==3){
+                        $("#signaturePhotoDiv").show();
+                        $("#custom").show();
+                        $("#chongming").hide();
+                        $("#jinshan").hide();
+                    }
+                });
+            });
+
             var tt = $("#contractNum").val();
             if (tt == null || tt === "") {
                 $("#divv").hide();
@@ -364,6 +415,36 @@
                 </div>
             </div>
 
+            <c:if test="${approvalType == 1}">
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>审定单签章类型</h2></div>
+                    <div class="layui-item layui-col-sm12 lw6 with-textarea">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>审定单签章类型:</label>
+                        <div class="layui-input-block with-icon">
+                            <div style="overflow: hidden">
+                                <input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType1" title="审定单-崇明" value="1" <c:if test="${signatureType == 1}">checked</c:if>>
+                                <input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType2" title="审定单-金山" value="2" <c:if test="${signatureType == 2}">checked</c:if>>
+                                <input type="radio" name="signatureType" lay-filter="signatureTypeRadio" id="signatureType3" title="审定单-自定义" value="3" <c:if test="${signatureType == 3}">checked</c:if>>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row" id="signaturePhotoDiv" style="display: none">
+                    <div class="layui-item nav-btns">
+                        <label class="layui-form-label double-line">审定单签章模板:</label>
+                        <div class="layui-upload-list" id="chongming" >
+                            <img class="layui-upload-img" title="崇明审定单自动盖章" width="200px" height="150px" id="chongmingImg" onclick="openDialogView('预览','${ctxStatic}/common/images/chongming.jpg','90%','90%')" src="${ctxStatic}/common/images/chongming.jpg">
+                        </div>
+                        <div class="layui-upload-list" id="jinshan">
+                            <img class="layui-upload-img" title="金山审定单自动盖章" width="200px" height="150px" id="jinshanImg" onclick="openDialogView('预览','${ctxStatic}/common/images/jinshan.jpg','90%','90%')" src="${ctxStatic}/common/images/jinshan.jpg">
+                        </div>
+                        <div class="layui-upload-list" id="custom">
+                            <img class="layui-upload-img" title="审定单手动盖章" width="200px" height="150px" id="customImg" onclick="openDialogView('预览','${ctxStatic}/common/images/customSignature.jpg','90%','90%')" src="${ctxStatic}/common/images/customSignature.jpg">
+                        </div>
+                    </div>
+                </div>
+            </c:if>
+
 
             <div class="form-group layui-row">
                 <div class="form-group-label"><h2>委托方联系人信息</h2></div>

+ 1 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/electronicSeal/ruralProjectReportSignatureInfoForm.jsp

@@ -865,6 +865,7 @@
         <sys:message content="${message}"/>
         <form:form id="inputForm" modelAttribute="projectReportSignatureInfo" action="${ctx}/ruralProject/electronicSeal/save" method="post" class="form-horizontal layui-form ">
             <input type="hidden" id="id" name="id" value="${projectReportSignatureInfo.id}" />
+            <input type="hidden" id="type" name="type" value="${projectReportSignatureInfo.type}" />
 
 
 

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

@@ -39,6 +39,8 @@
 				var form = layui.form;
 			})
 
+			$(".layui-select-title").css("display","none");
+
 		});
 
 		function openDialog(title,url,width,height,target) {
@@ -420,9 +422,7 @@
 				<div class="nav-btns">
 					<%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
 					<div class="layui-btn-group">
-						<shiro:hasPermission name="ruralProject:ruralProjectMessageAll:importB">
-							<table:importExcel url="${ctx}/ruralProject/electronicSeal/importB"></table:importExcel><!-- 导入按钮 -->
-						</shiro:hasPermission>
+						<table:importExcelSZSHImport url="${ctx}/ruralProject/electronicSeal/importB"></table:importExcelSZSHImport> <!-- 导入按钮 -->
 						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
 
 					</div>

+ 2 - 2
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/new/reportForm.jsp

@@ -914,9 +914,9 @@
                         </div>
                     </div>--%>
 				<div class="layui-item layui-col-sm6 lw7">
-					<label class="layui-form-label">项目类:</label>
+					<label class="layui-form-label">项目类:</label>
 					<div class="layui-input-block">
-						<input htmlEscape="false"  readonly="true" 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="${fns:getMainDictLabel(projectRecords.attachmentProjectSort, 'attachment_project_sort', '')}"/>
 							<%--						<form:select path="projectTypeId" class="form-control editable-select layui-input" id="projectTypeId" value="${projectTypeId}" readonly="true">--%>
 							<%--							&lt;%&ndash;<form:option value=""/>--%>
 							<%--                            <form:options items="${fns:getProjectType()}" itemLabel="label" itemValue="label" htmlEscape="false"/>&ndash;%&gt;--%>

+ 1 - 1
src/main/webapp/webpage/modules/sys/sysLogin.jsp

@@ -18,7 +18,7 @@
 	<link href="${ctxStatic}/awesome/4.4/css/font-awesome.min.css" rel="stylesheet" />
 	<!-- jeeplus -->
 	<link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
-	<script src="${ctxStatic}/common/jeeplus.js?11" type="text/javascript"></script>
+	<script src="${ctxStatic}/common/jeeplus.js?12" type="text/javascript"></script>
 	<link rel="shortcut icon" href="images/favicon.png" type="image/png">
 	<!-- text fonts -->
 	<link rel="stylesheet" href="${ctxStatic }/common/login/ace-fonts.css" />

+ 1 - 1
src/main/webapp/webpage/modules/sys/sysLogin2.jsp

@@ -16,7 +16,7 @@
 		<link href="${ctxStatic}/awesome/4.4/css/font-awesome.min.css" rel="stylesheet" />
 		<!-- jeeplus -->
 		<link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
-		<script src="${ctxStatic}/common/jeeplus.js?11" type="text/javascript"></script>
+		<script src="${ctxStatic}/common/jeeplus.js?12" type="text/javascript"></script>
 		<link rel="shortcut icon" href="images/favicon.png" type="image/png">
 		<!-- text fonts -->
 		<link rel="stylesheet" href="${ctxStatic }/common/login/ace-fonts.css" />

+ 1 - 1
src/main/webapp/webpage/modules/sys/userModifyPwd.jsp

@@ -28,7 +28,7 @@
                 return;
             });
 
-            $("#oldPassword").blur(function(){
+            $("#oldPassword").blur(function(){()
                 var val = $("#oldPassword").val();
                 if(val==null || val.trim()=='' || val.length <3){
                     $("#span").empty();

+ 1 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllList.jsp

@@ -695,7 +695,7 @@
 
                         <%--var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workinvoiceAll/workInvoiceAll/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";--%>
                         <%--return xml;--%>
-                        var st = getAuditState(d.status);
+                        var st = getWorkInvoiceAuditState(d.status);
                         if(st.action)
                             var xml = "<span onclick=\"openDialogListView('发票流程追踪', '${ctx}/workinvoiceAll/workInvoiceAll/getProcessOne?id=" + d.id + "','"+ d.id +"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         else

+ 1 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllTwoList.jsp

@@ -763,7 +763,7 @@
 
                         <%--var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workinvoiceAllTwo/workinvoiceAllTwo/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";--%>
                         <%--return xml;--%>
-                        var st = getAuditState(d.status);
+                        var st = getWorkInvoiceAuditState(d.status);
                         if(st.action)
                             var xml = "<span onclick=\"openDialogListView('发票流程追踪', '${ctx}/workinvoiceAllTwo/workinvoiceAllTwo/getProcessOne?id=" + d.id + "','"+ d.id +"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         else

+ 2 - 2
src/main/webapp/webpage/modules/workinvoice/workInvoiceAuditEnd.jsp

@@ -527,9 +527,9 @@
 				</div>
 			</div>--%>
 			<div class="layui-item layui-col-sm6">
-				<label class="layui-form-label"><span class="require-item">*</span>发票类型:</label>
+				<label class="layui-form-label"><span class="require-item" style=" font-weight: bold;">*<c:choose><c:when test="${workInvoice.invoiceType eq '2'}">发票类型:</c:when></c:choose></span><c:choose><c:when test="${workInvoice.invoiceType eq '1'}">发票类型:</c:when></c:choose></label>
 				<div class="layui-input-block">
-					<input htmlEscape="false" readonly="true" id="invoiceType"  class="form-control layui-input" value="<c:choose><c:when test="${workInvoice.invoiceType eq '1'}">专票</c:when><c:when test="${workInvoice.invoiceType eq '2'}">普票</c:when></c:choose>"/>
+					<input htmlEscape="false" readonly="true" id="invoiceType"  class="form-control layui-input" <c:choose><c:when test="${workInvoice.invoiceType eq '2'}"> style=" font-weight: bold;color: red;" </c:when></c:choose> value="<c:choose><c:when test="${workInvoice.invoiceType eq '1'}">专票</c:when><c:when test="${workInvoice.invoiceType eq '2'}">普票</c:when></c:choose>"/>
 				</div>
 			</div>
 			<div class="layui-item layui-col-sm6">

+ 1 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoList.jsp

@@ -778,7 +778,7 @@
 
                         <%--var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/workinvoice/workInvoice/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";--%>
                         <%--return xml;--%>
-                        var st = getAuditState(d.status);
+                        var st = getWorkInvoiceAuditState(d.status);
                         if(st.action)
                             var xml = "<span onclick=\"openDialogListView('发票流程追踪', '${ctx}/workinvoiceTwo/workinvoiceTwo/getProcessOne?id=" + d.id + "','"+ d.id +"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         else