Переглянути джерело

审定单签章部分代码

user5 3 роки тому
батько
коміт
80fa12f60e

+ 18 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/entity/ProjectReportData.java

@@ -125,6 +125,8 @@ public class ProjectReportData extends ActEntity<ProjectReportData> {
 	private String signatureContractId;		//签章contractid
 	private String signatureInvalidDocumentId;		//无效的签章documentid
 	private String signatureFileName;		//签章文件名称
+	private User signatureUploadFileUser;		//签章文件上传人信息
+	private Date signatureUploadDate;		//签章文件上传时间
 
 
 	public String getUpId() {
@@ -844,4 +846,20 @@ public class ProjectReportData extends ActEntity<ProjectReportData> {
 	public void setSignatureFileName(String signatureFileName) {
 		this.signatureFileName = signatureFileName;
 	}
+
+	public User getSignatureUploadFileUser() {
+		return signatureUploadFileUser;
+	}
+
+	public void setSignatureUploadFileUser(User signatureUploadFileUser) {
+		this.signatureUploadFileUser = signatureUploadFileUser;
+	}
+
+	public Date getSignatureUploadDate() {
+		return signatureUploadDate;
+	}
+
+	public void setSignatureUploadDate(Date signatureUploadDate) {
+		this.signatureUploadDate = signatureUploadDate;
+	}
 }

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

@@ -258,6 +258,8 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private String whetherReportNumber; //是否需要报告号
 	private String signatureFlag; //审定单签章状态
 	private String signatureContractId; //审定单签章contractId
+	private String signatureFileName;		//签章文件名称
+	private String operateFlag; //操作状态
 
 	private List<String> civilProjectList = Lists.newArrayList();
 	private List<WorkClientAttachment> workAttachments = Lists.newArrayList();
@@ -1884,4 +1886,20 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setSignatureContractId(String signatureContractId) {
 		this.signatureContractId = signatureContractId;
 	}
+
+	public String getOperateFlag() {
+		return operateFlag;
+	}
+
+	public void setOperateFlag(String operateFlag) {
+		this.operateFlag = operateFlag;
+	}
+
+	public String getSignatureFileName() {
+		return signatureFileName;
+	}
+
+	public void setSignatureFileName(String signatureFileName) {
+		this.signatureFileName = signatureFileName;
+	}
 }

+ 34 - 8
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.gson.Gson;
+import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.Collections3;
@@ -106,7 +107,7 @@ import java.util.*;
 @Service
 @Transactional(readOnly = true)
 public class RuralProjectMessageService extends CrudService<RuralProjectMessageDao, RuralProjectRecords> {
-    private static final String HTTPTOP = "http://121.40.158.10:9182";
+    private static final String HTTPTOP = Global.getConfig("signature_http_top");
     //AES 对称加密公钥
     private static final String AES_KEY = "63304b5db43265c103ebe576d38bd9f8";
     //RSA 非对称加密密钥
@@ -3858,7 +3859,7 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
      * @param documentList
      * @return
      */
-    public String getSignatureContractId(String projectId, List<String> documentList ){
+    public String getSignatureContractId(String projectId, List<String> documentList ,String principalUserId,String generalManagerUserId){
         //根据项目id查询项目信息
         RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(projectId);
         //创建签署方信息
@@ -3870,12 +3871,37 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         companyAction.setSealId("2893044362440138791");
         actions.add(companyAction);
 
-        Action action2 = new Action();
-        action2.setType("CORPORATE");
-        action2.setName("测试印章");    //填写人员信息
-        action2.setSerialNo("1");
-        action2.setSealId("2893435338694385711");   //人员印章id
-        actions.add(action2);
+        //根据角色信息录入签署方信息
+        //负责人
+        if(StringUtils.isNotBlank(principalUserId)){
+            User user = UserUtils.get(principalUserId);
+            if(null != user){
+                //获取成员印章id信息
+                String userSealId = SignaturePostUtil.getUserSealByMobile(user.getMobile(),"");
+                if(StringUtils.isNotBlank(userSealId)){
+                    Action actionUser = new Action();
+                    actionUser.setType("CORPORATE");
+                    actionUser.setName(user.getName() + "印章");    //填写人员信息
+                    actionUser.setSerialNo("1");
+                    actionUser.setSealId(userSealId);   //人员印章id
+                    actions.add(actionUser);
+                }
+            }
+        }
+        //总经理
+        User technologyPrincipalUser = UserUtils.getByLoginName("陈红星");
+        if(null != technologyPrincipalUser){
+            //获取成员印章id信息
+            String userSealId = SignaturePostUtil.getUserSealByMobile(technologyPrincipalUser.getMobile(),"chenhongxing_yuan");
+            if(StringUtils.isNotBlank(userSealId)){
+                Action actionUser = new Action();
+                actionUser.setType("CORPORATE");
+                actionUser.setName(technologyPrincipalUser.getName() + "印章");    //填写人员信息
+                actionUser.setSerialNo("1");
+                actionUser.setSealId(userSealId);   //人员印章id
+                actions.add(actionUser);
+            }
+        }
 
 
         //创建签署方信息表

+ 11 - 5
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -1782,7 +1782,7 @@ public class RuralProjectMessageController extends BaseController {
     @RequiresPermissions("ruralProject:ruralProjectMessage:importApprovalFile")
     @RequestMapping(value = "importApprovalFile", method= RequestMethod.POST)
     @ResponseBody
-    public HashMap<String, String> importApprovalFile(MultipartFile uploadFile, String visitType,String projectId, RedirectAttributes redirectAttributes) {
+    public HashMap<String, String> importApprovalFile(MultipartFile uploadFile,String principalUserId,String generalManagerUserId, String visitType,String projectId, RedirectAttributes redirectAttributes) {
         HashMap<String, String> map = Maps.newHashMap();
         map.put("contractUrl","");
         try {
@@ -1801,15 +1801,18 @@ public class RuralProjectMessageController extends BaseController {
                 return map;
             }
 
-            //获取成员印章id信息
-            String userSealByMobile = SignaturePostUtil.getUserSealByMobile("15240492484");
-
             //MultipartFile转File
             File srcFile = FileUtil.transformMultipartFile(uploadFile);
             File verticalInvalidFile = FileUtil.transformMultipartFile(uploadFile);
             File acrossInvalidFile = FileUtil.transformMultipartFile(uploadFile);
             //截取文件名称
             String fileName = srcFile.getName().substring(0,srcFile.getName().lastIndexOf("."));
+            //截取文件后缀名
+            String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".")+1, srcFile.getName().length());
+            if(!"doc".equals(substring) && !"docx".equals(substring)){
+                map.put("str","请上传doc或者docx的文件进行签章操作");
+                return map;
+            }
             //获取真签单的documentId
             String documentId = SignaturePostUtil.getDocument(srcFile);
             //获取竖版假(空白)签单的documentId
@@ -1826,16 +1829,19 @@ public class RuralProjectMessageController extends BaseController {
             //将空白单的documentId存入数据库种
             projectReportData.setSignatureInvalidDocumentId(String.join(",", invalidDocumentList));
             //根据项目id 和 documentId生成合同id
-            String contractId = ruralProjectMessageService.getSignatureContractId(projectId, documentList);
+            String contractId = ruralProjectMessageService.getSignatureContractId(projectId, documentList,principalUserId,generalManagerUserId);
             //获取contractUrl路径
             String contractUrl = ruralProjectMessageService.getSignatureContractUrl(contractId);
             //将documentId 和contractId存储到质量复核对应的数据种
             projectReportData.setSignatureDocumentId(documentId);
             projectReportData.setSignatureContractId(contractId);
             projectReportData.setSignatureFileName(fileName);
+            projectReportData.setSignatureUploadFileUser(UserUtils.getUser());
+            projectReportData.setSignatureUploadDate(new Date());
             //修改签章对应信息文件
             projectReportDataService.updateSignatureInfo(projectReportData);
             map.put("contractUrl",contractUrl);
+            map.put("str","正在进行签章操作,大概需要10秒。");
         } catch (Exception e) {
             addMessage(redirectAttributes, "审定单签章失败!");
         }

+ 24 - 13
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java

@@ -119,7 +119,11 @@ public class RuralProjectSignatureCallBackController extends BaseController {
 
     private static byte[] SYN_BYTE = new byte[0];
 
-    private static final String HTTPTOP = "http://121.40.158.10:9182";
+    private static final String HTTPTOP = Global.getConfig("signature_http_top");
+
+    private final static String apptoken = Global.getConfig("apptoken");
+    private final static String appsecret = Global.getConfig("appsecret");
+    private final static String signature = Global.getConfig("signature");
 
     @ModelAttribute
     public RuralProjectRecords get(@RequestParam(required=false) String id) {
@@ -140,6 +144,7 @@ public class RuralProjectSignatureCallBackController extends BaseController {
      */
     @RequestMapping(value = "/getPresignCoordinates", method=RequestMethod.POST)
     public String getPresignCoordinates(PresignCallBack presignCallBack) {
+        long t1 = System.currentTimeMillis();
         //根据contractId查询对应的报告信息
         ProjectReportData projectReportData = projectReportDataService.getProjectReportDataByContractId(presignCallBack.getContractId());
         if(null == projectReportData){
@@ -204,8 +209,9 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         }
         //签章完成则进行数据的保存
         projectReportData.setSignatureFlag(1);
-        projectReportDataService.updateInvalidProcessInstanceId(projectReportData);
-
+        projectReportDataService.updateSignatureInfo(projectReportData);
+        long t2 = System.currentTimeMillis();
+        System.out.println("审定单回调运行耗时:" + (t2-t1) + " 毫秒");
         return null;
     }
 
@@ -223,9 +229,9 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         //根据contractId将文件下载下来 并上传到阿里云服务种
         //添加请求头
         Map<String,String> requestHeaderMap = new HashMap<>();
-        requestHeaderMap.put("x-qys-accesstoken","cUUUYYw5R0");
-        requestHeaderMap.put("x-qys-signature","0584191d6eb2f9411f8645fd16b32327");
-        requestHeaderMap.put("x-qys-timestamp","0");
+        requestHeaderMap.put("x-qys-accesstoken", apptoken);
+        requestHeaderMap.put("x-qys-signature", signature);
+        requestHeaderMap.put("x-qys-timestamp", "0");
         SignaturePostUtil.downloadZipGet(HTTPTOP + "/contract/download?contractId="+contractId,requestHeaderMap,projectReportData.getSignatureFileName()+".zip","",response);
     }
 
@@ -233,18 +239,21 @@ public class RuralProjectSignatureCallBackController extends BaseController {
      * 查看附件
      */
     @RequestMapping(value = "/getViewUrlByContractId", method=RequestMethod.GET)
-    public String getViewUrlByContractId(String contractId) {
+    @ResponseBody
+    public Map getViewUrlByContractId(String contractId) {
+        Map resultMap = new HashMap();
+        resultMap.put("success",false);
         //根据contractId查询对应的报告信息
         ProjectReportData projectReportData = projectReportDataService.getProjectReportDataByContractId(contractId);
         if(null == projectReportData || StringUtils.isBlank(projectReportData.getSignatureContractId())){
-            return "";
+            return resultMap;
         }
         //根据contractId将文件下载下来 并上传到阿里云服务种
         //添加请求头
         Map<String,String> requestHeaderMap = new HashMap<>();
-        requestHeaderMap.put("x-qys-accesstoken","cUUUYYw5R0");
-        requestHeaderMap.put("x-qys-signature","0584191d6eb2f9411f8645fd16b32327");
-        requestHeaderMap.put("x-qys-timestamp","0");
+        requestHeaderMap.put("x-qys-accesstoken", apptoken);
+        requestHeaderMap.put("x-qys-signature", signature);
+        requestHeaderMap.put("x-qys-timestamp", "0");
 
         Map map =new HashMap();
         map.put("contractId",contractId);
@@ -252,8 +261,10 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         HashMap viewUrlStrMap = JSON.parseObject(viewUrlStr, HashMap.class);
         String code = viewUrlStrMap.get("code").toString();
         if("0".equals(code)){
-            return viewUrlStrMap.get("viewUrl").toString();
+            resultMap.put("success",true);
+            resultMap.put("viewUrl",viewUrlStrMap.get("viewUrl").toString());
+            return resultMap;
         }
-        return "";
+        return resultMap;
     }
 }

+ 19 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectViewController.java

@@ -3,6 +3,7 @@ package com.jeeplus.modules.ruralprojectrecords.web;
 import com.google.common.collect.Lists;
 import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.Collections3;
 import com.jeeplus.common.utils.MyBeanUtils;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
@@ -23,6 +24,7 @@ import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 import com.jeeplus.modules.projectcontentinfo.service.*;
 import com.jeeplus.modules.projectrecord.entity.ProjectPlanInfo;
 import com.jeeplus.modules.projectrecord.service.ProjectPlanService;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.*;
 import com.jeeplus.modules.ruralprojectrecords.service.ProjectPaperFilingService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
@@ -112,6 +114,8 @@ public class RuralProjectViewController extends BaseController {
     private WorkReviewStandardService workReviewStandardService;
     @Autowired
     private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private RuralWorkProjectUserDao workProjectUserDao;
     /**
      * 项目查看
      * 传参:项目id
@@ -248,7 +252,22 @@ public class RuralProjectViewController extends BaseController {
             return "modules/ruralprojectrecords/view/reportView";
         }
         projectReportData = projectReportDataService.get(projectReportData.getId());
+        if(null != projectReportData.getSignatureUploadFileUser() && StringUtils.isNotBlank(projectReportData.getSignatureUploadFileUser().getId())){
+            projectReportData.setSignatureUploadFileUser(UserUtils.get(projectReportData.getSignatureUploadFileUser().getId()));
+        }
         RuralProjectRecords ruralProjectRecords = projectRecordsService.getQueryProjectUsers(projectcontentinfo1.getProject().getId());
+        //获取项目负责人
+        List<User> users = workProjectUserDao.getProjectprincipalList(ruralProjectRecords.getId());
+        ruralProjectRecords.setProjectLeaders(users);
+        ruralProjectRecords.setLeaderNameStr(Collections3.extractToString(users, "name", ","));
+        ruralProjectRecords.setLeaderIds(Collections3.extractToString(users, "id", ","));
+        User loginUser = UserUtils.getUser();
+        if(ruralProjectRecords.getLeaderIds().contains(loginUser.getId()) || loginUser.getId().equals(ruralProjectRecords.getCreateBy().getId())){
+            ruralProjectRecords.setOperateFlag("1");
+        }else{
+            ruralProjectRecords.setOperateFlag("0");
+        }
+
         Projectcontentinfo projectcontent = projectcontentinfoService.getByInfoId(projectReportData.getId());
         projectcontent.setProjectReportData(projectReportData);
         //根据条件查询附件必填项

+ 26 - 22
src/main/java/com/jeeplus/modules/tools/utils/SignaturePostUtil.java

@@ -3,12 +3,9 @@ package com.jeeplus.modules.tools.utils;
 import com.alibaba.fastjson.JSON;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
+import com.jeeplus.common.config.Global;
 import com.jeeplus.common.utils.StringUtils;
-import com.jeeplus.modules.ruralprojectrecords.entity.CoordinateInfo;
-import com.jeeplus.modules.ruralprojectrecords.entity.Location;
 import com.jeeplus.modules.ruralprojectrecords.entity.SealUserInfo;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
@@ -41,7 +38,12 @@ public class SignaturePostUtil {
     private static final String VERTICALTEMPLATEID = "2893051207158391002";
     //横板模板templateId
     private static final String ACROSSTEMPLATEID = "2893769317217788089";
-    private static final String HTTPTOP = "http://121.40.158.10:9182";
+    private static final String HTTPTOP = Global.getConfig("signature_http_top");
+
+    private final static String apptoken = Global.getConfig("apptoken");
+    private final static String appsecret = Global.getConfig("appsecret");
+    private final static String signature = Global.getConfig("signature");
+
 
     /**
      * 发送get请求
@@ -306,8 +308,8 @@ public class SignaturePostUtil {
         // 为httpPost实例设置配置
         httpPost.setConfig(requestConfig);
         // 设置请求头鉴权
-        httpPost.setHeader("x-qys-accesstoken", "cUUUYYw5R0");
-        httpPost.setHeader("x-qys-signature", "0584191d6eb2f9411f8645fd16b32327");
+        httpPost.setHeader("x-qys-accesstoken", apptoken);
+        httpPost.setHeader("x-qys-signature", signature);
         httpPost.setHeader("x-qys-timestamp", "0");
         // 包含内容格式设置
         httpPost.addHeader("Content-Type", "application/json");
@@ -425,9 +427,9 @@ public class SignaturePostUtil {
         String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".")+1, srcFile.getName().length());
         //添加请求头
         Map<String,String> requestHeaderMap = new HashMap<>();
-        requestHeaderMap.put("x-qys-accesstoken","cUUUYYw5R0");
-        requestHeaderMap.put("x-qys-signature","0584191d6eb2f9411f8645fd16b32327");
-        requestHeaderMap.put("x-qys-timestamp","0");
+        requestHeaderMap.put("x-qys-accesstoken", apptoken);
+        requestHeaderMap.put("x-qys-signature", signature);
+        requestHeaderMap.put("x-qys-timestamp", "0");
         //添加文件参数
         Map<String,String> formTextsMap = new HashMap<>();
         formTextsMap.put("title",srcFile.getName());
@@ -453,9 +455,9 @@ public class SignaturePostUtil {
         File[] files = new File[]{invalidFile};
         //添加请求头
         Map<String,String> requestHeaderMap = new HashMap<>();
-        requestHeaderMap.put("x-qys-accesstoken","cUUUYYw5R0");
-        requestHeaderMap.put("x-qys-signature","0584191d6eb2f9411f8645fd16b32327");
-        requestHeaderMap.put("x-qys-timestamp","0");
+        requestHeaderMap.put("x-qys-accesstoken", apptoken);
+        requestHeaderMap.put("x-qys-signature", signature);
+        requestHeaderMap.put("x-qys-timestamp", "0");
         //添加文件参数
         Map<String,String> formTextsMap = new HashMap<>();
         formTextsMap.put("title",fileName);
@@ -477,9 +479,9 @@ public class SignaturePostUtil {
         File[] files = new File[]{invalidFile};
         //添加请求头
         Map<String,String> requestHeaderMap = new HashMap<>();
-        requestHeaderMap.put("x-qys-accesstoken","cUUUYYw5R0");
-        requestHeaderMap.put("x-qys-signature","0584191d6eb2f9411f8645fd16b32327");
-        requestHeaderMap.put("x-qys-timestamp","0");
+        requestHeaderMap.put("x-qys-accesstoken", apptoken);
+        requestHeaderMap.put("x-qys-signature", signature);
+        requestHeaderMap.put("x-qys-timestamp", "0");
         //添加文件参数
         Map<String,String> formTextsMap = new HashMap<>();
         formTextsMap.put("title",fileName);
@@ -497,8 +499,8 @@ public class SignaturePostUtil {
         HttpGet get = new HttpGet(url);
         try{
             // 设置请求头鉴权
-            get.setHeader("x-qys-accesstoken", "cUUUYYw5R0");
-            get.setHeader("x-qys-signature", "0584191d6eb2f9411f8645fd16b32327");
+            get.setHeader("x-qys-accesstoken", apptoken);
+            get.setHeader("x-qys-signature", signature);
             get.setHeader("x-qys-timestamp", "0");
             CloseableHttpClient httpClient = HttpClients.createDefault();
             List<NameValuePair> params = setHttpParams(paramMap);
@@ -552,19 +554,21 @@ public class SignaturePostUtil {
     /**
      * 根据用户手机号查询用户章信息
      * @param userMobile
+     * @param employeeNo 用户编号
      * @return
      */
-    public static String getUserSealByMobile(String userMobile){
+    public static String getUserSealByMobile(String userMobile,String employeeNo){
         //根据contractId将文件下载下来 并上传到阿里云服务种
         //添加请求头
         Map<String,String> requestHeaderMap = new HashMap<>();
-        requestHeaderMap.put("x-qys-accesstoken","cUUUYYw5R0");
-        requestHeaderMap.put("x-qys-signature","0584191d6eb2f9411f8645fd16b32327");
-        requestHeaderMap.put("x-qys-timestamp","0");
+        requestHeaderMap.put("x-qys-accesstoken", apptoken);
+        requestHeaderMap.put("x-qys-signature", signature);
+        requestHeaderMap.put("x-qys-timestamp", "0");
 
         Map map =new HashMap();
         map.put("companyName","江苏兴光项目管理有限公司");
         map.put("mobile",userMobile);
+        map.put("employeeNo",employeeNo);
         String viewUrlStr = SignaturePostUtil.doGet(map, HTTPTOP + "/seal/user/charge");
         HashMap userSealStrMap = JSON.parseObject(viewUrlStr, HashMap.class);
         String code = userSealStrMap.get("code").toString();

+ 9 - 1
src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml

@@ -58,7 +58,9 @@
 		a.signature_document_id as "signatureDocumentId",
 		a.signature_invalid_document_id as "signatureInvalidDocumentId",
 		a.signature_contract_id as "signatureContractId",
-		a.signature_file_name as "signatureFileName"
+		a.signature_file_name as "signatureFileName",
+		a.signature_upload_file_user as "signatureUploadFileUser.id",
+		a.signature_upload_date as "signatureUploadDate"
 	</sql>
 
 	<sql id="projectReportDataJoins">
@@ -1115,6 +1117,12 @@
 			<if test="signatureFileName != null and signatureFileName != ''">
 				,signature_file_name = #{signatureFileName}
 			</if>
+			<if test="signatureUploadFileUser != null and signatureUploadFileUser.id != null and signatureUploadFileUser.id != ''">
+				,signature_upload_file_user = #{signatureUploadFileUser.id}
+			</if>
+			<if test="signatureUploadDate != null and signatureUploadDate != ''">
+				,signature_upload_date = #{signatureUploadDate}
+			</if>
 		WHERE id = #{id}
 	</update>
 

+ 9 - 5
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/downloadType/importWordApprovalForm.jsp

@@ -40,24 +40,28 @@
 		<form:form id="inputForm" modelAttribute="projectReportData" enctype="multipart/form-data" action="${ctx}/ruralProject/ruralProjectMessage/importApprovalFile" method="post" class="form-horizontal">
 			<input type="hidden" id="visitType" name="visitType" value="${visitType}">
 			<input type="hidden" id="projectId" name="projectId" value="${projectId}">
+			<input type="hidden" id="generalManagerUserId" name="generalManagerUserId" value="${projectId}">
 			<div class="form-group layui-row first">
 				<div class="layui-item layui-col-sm12 ">
 					<input id="uploadFile" name="uploadFile" type="file" style="width:330px"/>导入文件不能超过5M,仅允许导入“doc”或“docx”格式文件!<br/> 
 				</div>
-				<div class="layui-item layui-col-sm6">
-					<label class="layui-form-label"><span class="require-item">*</span>负责人:</label>
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label" style="padding-left: 0px"><span class="require-item">*</span>项目负责人:</label>
 					<div class="layui-input-block  ">
 						<sys:reportedtreeselectUserZXY id="principalUserId" name="principalUserId" value="" labelName="principalUserName" labelValue=""
 										cssStyle="background-color: #fff" title="用户" url="/sys/office/treeDataAll?type=5" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm6">
-					<label class="layui-form-label "><span class="require-item">*</span>总经理:</label>
+			</div>
+			<%--<div class="form-group layui-row first">
+				<div class="layui-item layui-col-sm12">
+					<label class="layui-form-label " style="padding-left: 0px"><span class="require-item">*</span>总经理:</label>
 					<div class="layui-input-block ">
 						<sys:reportedtreeselectUser id="generalManagerUserId" name="generalManagerUserId" value="" labelName="generalManagerUserName" labelValue=""
-										cssStyle="background-color: #fff" title="用户" url="/sys/office/treeDataAll?type=4" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+													cssStyle="background-color: #fff" title="用户" url="/sys/office/treeDataAll?type=4" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
 					</div>
 				</div>
+			</div>--%>
 
 		</form:form>
 	</div>

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

@@ -406,15 +406,29 @@
 						var d = data;
 						if(d.contractUrl.length>0){
 							window.open(d.contractUrl)
+							//关闭当前页
+							top.layer.close(index)
+							layer.open({
+								content: "正在进行签章操作,大概需要10秒。"
+								,btn: ['确定']
+								,yes: function(index, layero){
+									//关闭所有弹出页
+									layer.closeAll();
+									setTimeout("reloadView()","10000");  //10000毫秒后执行reloadView()函数,只执行一次。
+								}
+								,cancel: function(){
+									//右上角关闭回调
+									setTimeout("reloadView()","10000");  //10000毫秒后执行reloadView()函数,只执行一次。
+								}
+							});
 						}else{
 							//输出提示信息
 							if(d.str.length>0){
 								parent.layer.msg(d.str,{icon:0});
+								//关闭当前页
+								top.layer.close(index)
 							}
 						}
-						window.location.reload();
-						//关闭当前页
-						top.layer.close(index)
 					}
 				});
 			}
@@ -1041,7 +1055,7 @@
 							//上传审定单进行签章
 							<shiro:hasPermission name="ruralProject:ruralProjectMessage:importApprovalFile">
 								if(d.signatureFlag != "1"){
-									xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogreByImportFile('上传审定单签章', '${ctx}/ruralProject/ruralProjectMessage/skipImportApprovalWord?id=" + d.id + "&visitType=1','400px', '35%','','导入,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-blue\" > 上传审定单签章</a>";
+									xml+="<a href=\"javascript:void(0)\" onclick=\"openDialogreByImportFile('上传审定单签章', '${ctx}/ruralProject/ruralProjectMessage/skipImportApprovalWord?id=" + d.id + "&visitType=1','500px', '400px','','导入,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-blue\" > 上传审定单签章</a>";
 								}
 							</shiro:hasPermission>
 							<%--<shiro:hasPermission name="ruralProject:ruralProjectMessage:importReportFile">

+ 179 - 3
src/main/webapp/webpage/modules/ruralprojectrecords/view/reportView.jsp

@@ -149,6 +149,139 @@
 				content: value
 			});
 		}
+
+		function openDialogreByImportFile(title,url,width,height,target,buttons) {
+			if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+				width = 'auto';
+				height = 'auto';
+			} else {//如果是PC端,根据用户设置的width和height显示。
+
+			}
+			var split = buttons.split(",");
+			top.layer.open({
+				type: 2,
+				area: [width, height],
+				title: title,
+				maxmin: true, //开启最大化最小化按钮
+				skin: 'three-btns',
+				content: url,
+				btn: split,
+				btn1: function(index, layero){
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					inputForm.attr("action","${ctx}/ruralProject/ruralProjectMessage/importApprovalFile");//表单提交成功后,从服务器返回的url在当前tab中展示
+					var $document = iframeWin.contentWindow.document;
+
+					formSubmitsignature($document,"inputForm",index);
+					/*if(iframeWin.contentWindow.doSubmit(1) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}*/
+				},
+				btn2:function(index,layero){
+					if(split.length==2){return}
+					var body = top.layer.getChildFrame('body', index);
+					var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+					var inputForm = body.find('#inputForm');
+					var top_iframe;
+					if(target){
+						top_iframe = target;//如果指定了iframe,则在改frame中跳转
+					}else{
+						top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+					}
+					inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+					if(iframeWin.contentWindow.doSubmit(2) ){
+						// top.layer.close(index);//关闭对话框。
+						setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+					}else {
+						return false;
+					}
+				},
+				btn3: function (index) {
+				}
+			});
+		}
+
+		function formSubmitsignature($document,inputForm,index,tableId){
+
+			var validateForm = $($document.getElementById(inputForm)).validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+			if(validateForm.form()){
+				$($document.getElementById(inputForm)).ajaxSubmit({
+					success:function(data) {
+						var d = data;
+						if(d.contractUrl.length>0){
+							window.open(d.contractUrl)
+							//关闭当前页
+							top.layer.close(index)
+							layer.open({
+								content: d.str
+								,btn: ['确定']
+								,yes: function(index, layero){
+									//关闭所有弹出页
+									layer.closeAll();
+									setTimeout("reloadView()","10000");  //10000毫秒后执行reloadView()函数,只执行一次。
+								}
+								,cancel: function(){
+									//右上角关闭回调
+									setTimeout("reloadView()","10000");  //10000毫秒后执行reloadView()函数,只执行一次。
+								}
+							});
+						}else{
+							//输出提示信息
+							if(d.str.length>0){
+								parent.layer.msg(d.str,{icon:0});
+								//关闭当前页
+								top.layer.close(index)
+							}
+						}
+					}
+				});
+			}
+		}
+		function reloadView(){
+			window.location.reload();
+		}
+
+
+		function openSignatureview(contractId){
+			$.ajax({
+				type:"get",
+				url:'${ctx}/ruralProject/signatureCallBack/getViewUrlByContractId',
+				data:{
+					"contractId":contractId
+				},
+				dataType:"json",
+				success:function(data){
+					if(data.success) {
+						window.open(data.viewUrl);
+					}else {
+						top.layer.msg("文件预览页打开失败", {icon: 0});
+					}
+				}
+			})
+		}
 	</script>
 </head>
 
@@ -207,9 +340,13 @@
 			<div class="form-group layui-row first lw12">
 				<div class="form-group-label">
 					<c:if test="${projectRecords.submitMoney == 2}">
-						<shiro:hasPermission name="ruralProject:ruralProjectMessage:importApprovalFile">
-							<div style="float: right;margin:0px 0px 0px 5px;"> <a href="javascript:void(0)" style='background-color: #009FFA' onclick="openDialogre('审定单签章', '${ctx}/ruralProject/ruralProjectMessage/skipImportApprovalWord?id=${projectRecords.id}&visitType=0','400px', '35%','','导入,关闭')" class="layui-btn layui-btn-sm" > 审定单签章</a></div>
-						</shiro:hasPermission>
+						<c:if test="${projectRecords.operateFlag == 1}">
+							<c:if test="${projectReportData.signatureFlag != 1}">
+								<shiro:hasPermission name="ruralProject:ruralProjectMessage:importApprovalFile">
+									<div style="float: right;margin:0px 0px 0px 5px;"> <a href="javascript:void(0)" style='background-color: #009FFA' onclick="openDialogreByImportFile('审定单签章', '${ctx}/ruralProject/ruralProjectMessage/skipImportApprovalWord?id=${projectRecords.id}&visitType=0','500px', '400px','','导入,关闭')" class="layui-btn layui-btn-sm" > 审定单签章</a></div>
+								</shiro:hasPermission>
+							</c:if>
+						</c:if>
 					</c:if>
 					<div style="float: right"> <a href="javascript:void(0)" style='background-color: #FFB800' onclick="openDialogre('下载模板', '${ctx}/ruralProject/ruralProjectMessage/skipDownloadFtl?id=${projectRecords.id}','35%', '35%','','下载,关闭')" class="layui-btn layui-btn-sm" ><i class="fa fa-file-excel-o"></i> 下载模板</a></div>
 					<h2>质量复核信息</h2>
@@ -422,6 +559,45 @@
 					</div>
 				</div>
 			</c:if>
+
+			<c:if test="${projectReportData.signatureFlag == 1}">
+				<div class="form-group layui-row">
+					<div class="form-group-label"><h2>审定单签章附件表</h2></div>
+					<div class="layui-item layui-col-xs12 form-table-container" >
+						<table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+							<thead>
+							<tr>
+
+								<th>文件</th>
+								<th>上传人</th>
+								<th>上传时间</th>
+								<th width="180px">操作</th>
+							</tr>
+							</thead>
+							<tbody>
+							<c:choose>
+								<c:when test="${projectReportData.signatureFlag == 1}">
+									<tr>
+										<td><a class="attention-info" href="javascript:void(0)" onclick="openSignatureview('${projectReportData.signatureContractId}')">${projectReportData.signatureFileName}.zip</a></td>
+										<td>${projectReportData.signatureUploadFileUser.name}</td>
+										<td><fmt:formatDate value="${projectReportData.signatureUploadDate}" type="both"/></td>
+										<td class="op-td">
+											<a href="javascript:location.href='${ctx}/ruralProject/signatureCallBack/downLoadAttach?contractId=${projectReportData.signatureContractId}'" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+										</td>
+									</tr>
+								</c:when>
+								<c:otherwise>
+									<tr>
+										<td colspan="4" align="center">暂无数据</td>
+									</tr>
+								</c:otherwise>
+							</c:choose>
+							</tbody>
+						</table>
+					</div>
+				</div>
+			</c:if>
+
 			<c:if test="${not empty processInstanceId}">
 				<div class="form-group layui-row">
 					<div class="form-group-label"><h2>审批流程</h2></div>