ソースを参照

流程单下载功能

user5 4 年 前
コミット
18e89915b0
23 ファイル変更892 行追加64 行削除
  1. 81 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/entity/ProjectReportData.java
  2. 9 0
      src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectRecordTreeData.java
  3. 6 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsDao.java
  4. 9 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java
  5. 16 3
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java
  6. 1 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java
  7. 44 25
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageController.java
  8. 42 24
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java
  9. 143 0
      src/main/java/com/jeeplus/modules/workfullmanage/web/WorkFullManageController.java
  10. 14 7
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  11. 48 3
      src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml
  12. 1 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml
  13. 6 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml
  14. 63 0
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/reportForm.jsp
  15. 64 0
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/reportModify.jsp
  16. 52 0
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/reportView.jsp
  17. 1 0
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectMessageLists.jsp
  18. 58 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/projectRecordsMessageAudit.jsp
  19. 64 1
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/projectRecordsMessageModify.jsp
  20. 52 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/projectRecordsMessageView.jsp
  21. 64 1
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/reportForm.jsp
  22. 53 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/reportView.jsp
  23. 1 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageLists.jsp

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

@@ -104,6 +104,15 @@ public class ProjectReportData extends ActEntity<ProjectReportData> {
 	private String templateTypeName;
 	private String conditionType;   //判断条件
 	private Date auditPassDate;   //审核通过日期
+	private User consultant;		// 专业咨询员
+	private String consultantRemarks;  //咨询员意见
+	private Date consultantDate;  //咨询员审核时间
+	private User principal;		// 项目负责人
+	private String principalRemarks;  //项目负责人意见
+	private Date principalDate;  //项目负责人审核时间
+	private User technicist;		// 项目技术员
+	private String technicistRemarks;  //项目技术员意见
+	private Date technicistDate;  //项目技术员审核时间
 
 
 	public String getUpId() {
@@ -643,4 +652,76 @@ public class ProjectReportData extends ActEntity<ProjectReportData> {
 	public void setBzshbUserId(String bzshbUserId) {
 		this.bzshbUserId = bzshbUserId;
 	}
+
+	public User getConsultant() {
+		return consultant;
+	}
+
+	public void setConsultant(User consultant) {
+		this.consultant = consultant;
+	}
+
+	public String getConsultantRemarks() {
+		return consultantRemarks;
+	}
+
+	public void setConsultantRemarks(String consultantRemarks) {
+		this.consultantRemarks = consultantRemarks;
+	}
+
+	public User getPrincipal() {
+		return principal;
+	}
+
+	public void setPrincipal(User principal) {
+		this.principal = principal;
+	}
+
+	public String getPrincipalRemarks() {
+		return principalRemarks;
+	}
+
+	public void setPrincipalRemarks(String principalRemarks) {
+		this.principalRemarks = principalRemarks;
+	}
+
+	public User getTechnicist() {
+		return technicist;
+	}
+
+	public void setTechnicist(User technicist) {
+		this.technicist = technicist;
+	}
+
+	public String getTechnicistRemarks() {
+		return technicistRemarks;
+	}
+
+	public void setTechnicistRemarks(String technicistRemarks) {
+		this.technicistRemarks = technicistRemarks;
+	}
+
+	public Date getConsultantDate() {
+		return consultantDate;
+	}
+
+	public void setConsultantDate(Date consultantDate) {
+		this.consultantDate = consultantDate;
+	}
+
+	public Date getPrincipalDate() {
+		return principalDate;
+	}
+
+	public void setPrincipalDate(Date principalDate) {
+		this.principalDate = principalDate;
+	}
+
+	public Date getTechnicistDate() {
+		return technicistDate;
+	}
+
+	public void setTechnicistDate(Date technicistDate) {
+		this.technicistDate = technicistDate;
+	}
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectRecordTreeData.java

@@ -47,6 +47,7 @@ public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
     private String contractId;   //合同id
     private String prrdId;
     private String prrId;
+    private String prdId;
     private String prrProcessInstanceId;
     private Integer flag;
     private String flagAdmin;
@@ -410,4 +411,12 @@ public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
     public void setReportedProcessInstanceId(String reportedProcessInstanceId) {
         this.reportedProcessInstanceId = reportedProcessInstanceId;
     }
+
+    public String getPrdId() {
+        return prdId;
+    }
+
+    public void setPrdId(String prdId) {
+        this.prdId = prdId;
+    }
 }

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

@@ -134,4 +134,10 @@ public interface RuralProjectRecordsDao extends CrudDao<RuralProjectRecords> {
      * @return
      */
     String getReportRecordStatus(String reportId);
+
+    /**
+     * 修改项目开始结束时间
+     * @param projectRecords
+     */
+    void updateDate(RuralProjectRecords projectRecords);
 }

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

@@ -77,6 +77,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private String constructionLinkman; //施工方联系人
 
 	private String prrId;
+	private String prdId;
 	private String prrdId;
 	private String projectReportName;
 	private String officeName;
@@ -983,4 +984,12 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setCheckUserId(String checkUserId) {
 		this.checkUserId = checkUserId;
 	}
+
+	public String getPrdId() {
+		return prdId;
+	}
+
+	public void setPrdId(String prdId) {
+		this.prdId = prdId;
+	}
 }

+ 16 - 3
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -23,7 +23,6 @@ import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
 import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
-import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
@@ -71,7 +70,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.ui.Model;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -332,6 +330,8 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         projectRecordTreeData.setDownProjectReportRecordStatus(info.getDownProjectReportRecordStatus());
         //上报状态
         projectRecordTreeData.setReportedState(info.getReportedState());
+        //报告id
+        projectRecordTreeData.setPrdId(info.getPrdId());
         //委托方
         if(null != info.getWorkContractInfo()){
             if(null != info.getWorkContractInfo().getClient()){
@@ -440,6 +440,7 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
 
     @Transactional(readOnly = false)
     public String saveData(Projectcontentinfo projectcontentinfo,int type) {
+        RuralProjectRecords ruralProjectRecords = projectcontentinfo.getProjectOnRural();
         String count = "0";
         String infoId = "";
         Projectcontentinfo s = new Projectcontentinfo();
@@ -481,6 +482,8 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
                         processInstanceId = old.getProcessInstanceId();
                     }
                 }
+                projectReportData.setConsultantDate(new Date());
+                projectReportData.setPrincipalDate(new Date());
                 //获取项目信息
                 ProjectRecords projectRecord = this.getMasters(projectcontentinfo.getProject().getId());
                 projectcontentinfo.setProject(projectRecord);
@@ -492,6 +495,13 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
                     }
                 }
             }
+            //修改项目开始时间和结束时间
+            System.out.println(ruralProjectRecords.getStartDate());
+            System.out.println(ruralProjectRecords.getEndingDate());
+            if(null != ruralProjectRecords.getStartDate() && null != ruralProjectRecords.getEndingDate()){
+                ruralProjectRecordsService.updateDate(ruralProjectRecords);
+            }
+
             count="8";
             infoId = projectReportData.getId();
             contentinfo.setDictType(projectReportData.getType());
@@ -779,6 +789,7 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
                     taskCount = "2";
                     exp = "pass";
                     if ("yes".equals(flag)) {
+                        projectReportData.setTechnicistDate(new Date());
                         notifyRole = "审批通过";
                         synchronized (SYN_BYTE) {
                             String reportNo = createReportNo(reportData.getConditionType());
@@ -1019,6 +1030,8 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         if (!"yes".equals(flag)){
             workReviewAuditDao.delReviewAudit(projectReportData.getId());
         }
+        projectReportData.setTechnicist(reportData.getTechnicist());
+        projectReportData.setTechnicistRemarks(reportData.getTechnicistRemarks());
         projectReportDataDao.update(projectReportData);
         return "保存审核意见成功!";
     }
@@ -1390,7 +1403,7 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
     public String saveRuralProject(ProjectReportData projectReportData,Map<String, Object> variables,String processInstanceId,List<User> masters) {
         User user = UserUtils.getUser();
         Boolean insert = false;
-        if (com.jeeplus.common.utils.StringUtils.isBlank(projectReportData.getId())){
+        if (StringUtils.isBlank(projectReportData.getId())){
             projectReportData.preInsert();
             insert = true;
         }

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

@@ -1796,6 +1796,7 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 	 * 修改项目开始时间和结束时间
 	 * @param projectRecords
 	 */
+	@Transactional(readOnly = false)
 	public void updateDate(RuralProjectRecords projectRecords){
 		dao.updateDate(projectRecords);
 	}

+ 44 - 25
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageController.java

@@ -229,9 +229,16 @@ public class RuralCostProjectMessageController extends BaseController {
         //查询总审人员信息
         List<User> auditUserList = userService.getAuditUserList();
         records.setBzshbUserList(auditUserList);
+        if(null == projectcontentinfo.getProjectReportData().getConsultant()){
+            projectcontentinfo.getProjectReportData().setConsultant(UserUtils.getUser());
+        }
+        if(null == projectcontentinfo.getProjectReportData().getPrincipal()){
+            projectcontentinfo.getProjectReportData().setPrincipal(UserUtils.getUser());
+        }
         model.addAttribute("projectRecords", records);
         model.addAttribute("projectcontentinfo", projectcontentinfo);
         model.addAttribute("projectcontentinfo", projectcontentinfo);
+        model.addAttribute("projectReportData", projectcontentinfo.getProjectReportData());
         /*model.addAttribute("projectSort", projectSort);*/
         if (projectReportData != null && projectReportData.getCreateBy() != null && StringUtils.isNotBlank(projectReportData.getCreateBy().getId()) && projectReportData.getCreateBy().getId().equals(UserUtils.getUser().getId())) {
             return "modules/ruralprojectrecords/cost/projectcontentinfo/reportForm";
@@ -432,6 +439,7 @@ public class RuralCostProjectMessageController extends BaseController {
         System.out.println(status);
         Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectcontentinfo.getProjectId());
         ProjectReportData projectReportData = projectReportDataService.getOnRural(projectcontentinfo1.getInfoId());
+        projectReportData = projectReportDataService.get(projectReportData.getId());
         RuralProjectRecords ruralProjectRecords = projectRecordsService.getQueryProjectUsers(projectcontentinfo1.getProject().getId());
         Projectcontentinfo projectcontent = projectcontentinfoService.getByInfoId(projectReportData.getId());
         projectcontent.setProjectReportData(projectReportData);
@@ -490,11 +498,13 @@ public class RuralCostProjectMessageController extends BaseController {
         /*}*/
         //查询总审人员信息
         List<User> auditUserList = userService.getAuditUserList();
-        projectcontentinfo1.getProject().setBzshbUserList(auditUserList);
+        ruralProjectRecords.setBzshbUserList(auditUserList);
         model.addAttribute("processInstanceId",projectReportData.getProcessInstanceId());
+        model.addAttribute("projectReportData",projectReportData);
         model.addAttribute("projectId", projectcontentinfo1.getProject().getId());
         model.addAttribute("reportedId", projectcontentinfo.getReportedId());
-        model.addAttribute("projectRecords", projectcontentinfo1.getProject());
+        model.addAttribute("project", projectcontentinfo1.getProject());
+        model.addAttribute("projectRecords", ruralProjectRecords);
         model.addAttribute("id", projectcontentinfo.getId());
         model.addAttribute("projectcontentinfo", projectcontent);
         //获取是否含有上报信息
@@ -618,14 +628,14 @@ public class RuralCostProjectMessageController extends BaseController {
         //获取项目信息
         RuralProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo1.getProject().getId());
         //判断项目类别是否为打包项目(1:打包项目,0:非打包项目)
-        Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(records.getAttachmentProjectSort());
+        //Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(records.getAttachmentProjectSort());
         List<ProjectTemplateInfo> attachmentList = Lists.newArrayList();
-        Boolean flag = false;
+        /*Boolean flag = false;
         //如果是打包项目或者报告送审价不为null则可进行查询附件类型
         if(1 == projectSort || null != projectReportData.getReviewFee()){
             flag = true;
         }
-        if(flag) {
+        if(flag) {*/
             //查询报告文件、依据性文件、其他文件必填列表以及数据
             List<MainDictDetail> mainDictDetails = projectTemplateService.attachmentTemplateList();
             ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
@@ -635,25 +645,28 @@ public class RuralCostProjectMessageController extends BaseController {
             relateInfo.setId(records.getId());
             relateInfo.setAttachmentProjectSort(records.getAttachmentProjectSort());
             //判断是否为打包项目,打包项目无需查看项目送审金额是否为500w以上判定
-            if(0 == projectSort){
+            //if(0 == projectSort){
                 //查看送审金额是否为500w以上金额
                 Integer approvalMoney = projectAccessoryRelationService.decideAttachmentProjectApprovalMoney(projectReportData.getReviewFee());
-                if(1 == approvalMoney){
+                if(0 == approvalMoney){
+                    //金额为0
+                    relateInfo.setAttachmentProjectApprovalMoney(null);
+                }else if(1 == approvalMoney){
                     //500w以下金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("1");
                 }else{
                     //500w以上金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("2");
                 }
-            }else{
+            /*}else{
                 relateInfo.setAttachmentProjectApprovalMoney(null);
-            }
+            }*/
             for (MainDictDetail mainDict : mainDictDetails) {
                 //添加报告类型
                 relateInfo.setAttachType(mainDict.getValue());
                 attachmentList.addAll(projectTemplateService.getProjectTemplateList(relateInfo));
             }
-        }
+        //}
 
         //修改工作内容中的信息(将工作内容的info_id清空)
         ruralProjectMessageService.updateProjectcontentinfo(projectcontentinfo1);
@@ -883,32 +896,35 @@ public class RuralCostProjectMessageController extends BaseController {
 
         //根据条件查询附件必填项
         //判断项目类别是否为打包项目(1:打包项目,0:非打包项目)
-        Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+        /*Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
 
         Boolean flag = false;
         //如果是打包项目或者报告送审价不为null则可进行查询附件类型
         if(1 == projectSort || null != reportData.getReviewFee()){
             flag = true;
         }
-        if(flag) {
+        if(flag) {*/
             ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
             //添加项目类型
             relateInfo.setAttachmentProjectType(ruralProjectRecords.getProjectType());
             relateInfo.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
             //判断是否为打包项目,打包项目无需查看项目送审金额是否为500w以上判定
-            if(0 == projectSort){
+            //if(0 == projectSort){
                 //查看送审金额是否为500w以上金额
                 Integer approvalMoney = projectAccessoryRelationService.decideAttachmentProjectApprovalMoney(reportData.getReviewFee());
-                if(1 == approvalMoney){
+                if(0 == approvalMoney){
+                    //金额为0
+                    relateInfo.setAttachmentProjectApprovalMoney(null);
+                }else if(1 == approvalMoney){
                     //500w以下金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("1");
                 }else{
                     //500w以上金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("2");
                 }
-            }else{
+            /*}else{
                 relateInfo.setAttachmentProjectApprovalMoney(null);
-            }
+            }*/
 
             //添加报告类型
             relateInfo.setRequiredStage(2);
@@ -930,7 +946,7 @@ public class RuralCostProjectMessageController extends BaseController {
                 }
 
             }
-        }
+        //}
 
         if(null != projectContractInfo){
             if(projectContractInfo.getWorkClientInfoList().size()>0){
@@ -972,32 +988,35 @@ public class RuralCostProjectMessageController extends BaseController {
         RuralProjectRecords ruralProjectRecords = projectRecordsService.get(projectReportRecord.getReport().getProject().getId());
         //根据条件查询附件必填项
         //判断项目类别是否为打包项目(1:打包项目,0:非打包项目)
-        Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+        //Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
 
-        Boolean flag = false;
+        /*Boolean flag = false;
         //如果是打包项目或者报告送审价不为null则可进行查询附件类型
         if(1 == projectSort || null != projectReportRecord.getReport().getReviewFee()){
             flag = true;
         }
-        if(flag) {
+        if(flag) {*/
             ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
             //添加项目类型
             relateInfo.setAttachmentProjectType(ruralProjectRecords.getProjectType());
             relateInfo.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
             //判断是否为打包项目,打包项目无需查看项目送审金额是否为500w以上判定
-            if(0 == projectSort){
+            //if(0 == projectSort){
                 //查看送审金额是否为500w以上金额
                 Integer approvalMoney = projectAccessoryRelationService.decideAttachmentProjectApprovalMoney(projectReportRecord.getReport().getReviewFee());
-                if(1 == approvalMoney){
+                if(0 == approvalMoney){
+                    //金额为0
+                    relateInfo.setAttachmentProjectApprovalMoney(null);
+                }else if(1 == approvalMoney){
                     //500w以下金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("1");
                 }else{
                     //500w以上金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("2");
                 }
-            }else{
+            /*}else{
                 relateInfo.setAttachmentProjectApprovalMoney(null);
-            }
+            }*/
 
             //添加报告类型
             relateInfo.setRequiredStage(2);
@@ -1019,7 +1038,7 @@ public class RuralCostProjectMessageController extends BaseController {
                 }
 
             }
-        }
+        //}
 
         projectReportRecord.setView("modify");
         model.addAttribute("projectReportRecord", projectReportRecord);

+ 42 - 24
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -241,8 +241,15 @@ public class RuralProjectMessageController extends BaseController {
         //查询总审人员信息
         List<User> auditUserList = userService.getAuditUserList();
         records.setBzshbUserList(auditUserList);
+        if(null == projectcontentinfo.getProjectReportData().getConsultant()){
+            projectcontentinfo.getProjectReportData().setConsultant(UserUtils.getUser());
+        }
+        if(null == projectcontentinfo.getProjectReportData().getPrincipal()){
+            projectcontentinfo.getProjectReportData().setPrincipal(UserUtils.getUser());
+        }
         model.addAttribute("projectRecords", records);
         model.addAttribute("projectcontentinfo", projectcontentinfo);
+        model.addAttribute("projectReportData", projectcontentinfo.getProjectReportData());
         /*model.addAttribute("projectSort", projectSort);*/
         if (projectReportData != null && projectReportData.getCreateBy() != null && StringUtils.isNotBlank(projectReportData.getCreateBy().getId()) && projectReportData.getCreateBy().getId().equals(UserUtils.getUser().getId())) {
             return "modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/reportForm";
@@ -441,6 +448,7 @@ public class RuralProjectMessageController extends BaseController {
     public String modify(RuralProjectcontentinfo projectcontentinfo,Integer status, Model model, RedirectAttributes redirectAttributes) {
         Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectcontentinfo.getProjectId());
         ProjectReportData projectReportData = projectReportDataService.getOnRural(projectcontentinfo1.getInfoId());
+        projectReportData = projectReportDataService.get(projectReportData.getId());
         RuralProjectRecords ruralProjectRecords = projectRecordsService.getQueryProjectUsers(projectcontentinfo1.getProject().getId());
         Projectcontentinfo projectcontent = projectcontentinfoService.getByInfoId(projectReportData.getId());
         projectcontent.setProjectReportData(projectReportData);
@@ -500,12 +508,13 @@ public class RuralProjectMessageController extends BaseController {
 
         //查询总审人员信息
         List<User> auditUserList = userService.getAuditUserList();
-        projectcontentinfo1.getProject().setBzshbUserList(auditUserList);
+        ruralProjectRecords.setBzshbUserList(auditUserList);
         model.addAttribute("processInstanceId",projectReportData.getProcessInstanceId());
+        model.addAttribute("projectReportData",projectReportData);
         model.addAttribute("projectId", projectcontentinfo1.getProject().getId());
         model.addAttribute("project", projectcontentinfo1.getProject());
         model.addAttribute("reportedId", projectcontentinfo.getReportedId());
-        model.addAttribute("projectRecords", projectcontentinfo1.getProject());
+        model.addAttribute("projectRecords", ruralProjectRecords);
         model.addAttribute("id", projectcontentinfo.getId());
         model.addAttribute("projectcontentinfo", projectcontent);
         //获取是否含有上报信息
@@ -628,14 +637,14 @@ public class RuralProjectMessageController extends BaseController {
         //获取项目信息
         RuralProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo1.getProject().getId());
         //判断项目类别是否为打包项目(1:打包项目,0:非打包项目)
-        Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(records.getAttachmentProjectSort());
+        //Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(records.getAttachmentProjectSort());
         List<ProjectTemplateInfo> attachmentList = Lists.newArrayList();
-        Boolean flag = false;
+        /*Boolean flag = false;
         //如果是打包项目或者报告送审价不为null则可进行查询附件类型
         if(1 == projectSort || null != projectReportData.getReviewFee()){
             flag = true;
         }
-        if(flag) {
+        if(flag) {*/
             //查询报告文件、依据性文件、其他文件必填列表以及数据
             List<MainDictDetail> mainDictDetails = projectTemplateService.attachmentTemplateList();
             ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
@@ -645,25 +654,28 @@ public class RuralProjectMessageController extends BaseController {
             relateInfo.setId(records.getId());
             relateInfo.setAttachmentProjectSort(records.getAttachmentProjectSort());
             //判断是否为打包项目,打包项目无需查看项目送审金额是否为500w以上判定
-            if(0 == projectSort){
+            //if(0 == projectSort){
                 //查看送审金额是否为500w以上金额
                 Integer approvalMoney = projectAccessoryRelationService.decideAttachmentProjectApprovalMoney(projectReportData.getReviewFee());
-                if(1 == approvalMoney){
+                if(0 == approvalMoney){
+                    //金额为0
+                    relateInfo.setAttachmentProjectApprovalMoney(null);
+                }else if(1 == approvalMoney){
                     //500w以下金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("1");
                 }else{
                     //500w以上金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("2");
                 }
-            }else{
+            /*}else{
                 relateInfo.setAttachmentProjectApprovalMoney(null);
-            }
+            }*/
             for (MainDictDetail mainDict : mainDictDetails) {
                 //添加报告类型
                 relateInfo.setAttachType(mainDict.getValue());
                 attachmentList.addAll(projectTemplateService.getProjectTemplateList(relateInfo));
             }
-        }
+        //}
 
 
         //修改工作内容中的信息(将工作内容的info_id清空)
@@ -899,32 +911,35 @@ public class RuralProjectMessageController extends BaseController {
 
         //根据条件查询附件必填项
         //判断项目类别是否为打包项目(1:打包项目,0:非打包项目)
-        Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+        /*Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
 
         Boolean flag = false;
         //如果是打包项目或者报告送审价不为null则可进行查询附件类型
         if(1 == projectSort || null != reportData.getReviewFee()){
             flag = true;
         }
-        if(flag) {
+        if(flag) {*/
             ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
             //添加项目类型
             relateInfo.setAttachmentProjectType(ruralProjectRecords.getProjectType());
             relateInfo.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
             //判断是否为打包项目,打包项目无需查看项目送审金额是否为500w以上判定
-            if(0 == projectSort){
+            //if(0 == projectSort){
                 //查看送审金额是否为500w以上金额
                 Integer approvalMoney = projectAccessoryRelationService.decideAttachmentProjectApprovalMoney(reportData.getReviewFee());
-                if(1 == approvalMoney){
+                if(0 == approvalMoney){
+                    //金额为0
+                    relateInfo.setAttachmentProjectApprovalMoney(null);
+                }else if(1 == approvalMoney){
                     //500w以下金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("1");
                 }else{
                     //500w以上金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("2");
                 }
-            }else{
+            /*}else{
                 relateInfo.setAttachmentProjectApprovalMoney(null);
-            }
+            }*/
 
             //添加报告类型
             relateInfo.setRequiredStage(2);
@@ -946,7 +961,7 @@ public class RuralProjectMessageController extends BaseController {
                 }
 
             }
-        }
+        //}
 
 
         if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("view")){
@@ -984,32 +999,35 @@ public class RuralProjectMessageController extends BaseController {
         RuralProjectRecords ruralProjectRecords = projectRecordsService.get(projectReportRecord.getReport().getProject().getId());
         //根据条件查询附件必填项
         //判断项目类别是否为打包项目(1:打包项目,0:非打包项目)
-        Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+        /*Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
 
         Boolean flag = false;
         //如果是打包项目或者报告送审价不为null则可进行查询附件类型
         if(1 == projectSort || null != projectReportRecord.getReport().getReviewFee()){
             flag = true;
         }
-        if(flag) {
+        if(flag) {*/
             ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
             //添加项目类型
             relateInfo.setAttachmentProjectType(ruralProjectRecords.getProjectType());
             relateInfo.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
             //判断是否为打包项目,打包项目无需查看项目送审金额是否为500w以上判定
-            if(0 == projectSort){
+            //if(0 == projectSort){
                 //查看送审金额是否为500w以上金额
                 Integer approvalMoney = projectAccessoryRelationService.decideAttachmentProjectApprovalMoney(projectReportRecord.getReport().getReviewFee());
-                if(1 == approvalMoney){
+                if(0 == approvalMoney){
+                    //金额为0
+                    relateInfo.setAttachmentProjectApprovalMoney(null);
+                }else if(1 == approvalMoney){
                     //500w以下金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("1");
                 }else{
                     //500w以上金额状态
                     relateInfo.setAttachmentProjectApprovalMoney("2");
                 }
-            }else{
+            /*}else{
                 relateInfo.setAttachmentProjectApprovalMoney(null);
-            }
+            }*/
 
             //添加报告类型
             relateInfo.setRequiredStage(2);
@@ -1031,7 +1049,7 @@ public class RuralProjectMessageController extends BaseController {
                 }
 
             }
-        }
+        //}
 
         model.addAttribute("projectReportRecord", projectReportRecord);
         model.addAttribute("project", projectReportRecord.getReport().getProject());

+ 143 - 0
src/main/java/com/jeeplus/modules/workfullmanage/web/WorkFullManageController.java

@@ -15,7 +15,13 @@ import com.jeeplus.common.utils.*;
 import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.contractclient.entity.WorkContractClient;
+import com.jeeplus.modules.contractclient.service.WorkContractClientService;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.Role;
 import com.jeeplus.modules.sys.service.SystemService;
 import com.jeeplus.modules.sys.utils.DictUtils;
@@ -59,6 +65,7 @@ import java.net.HttpURLConnection;
 import java.net.URL;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import freemarker.template.Template;
 
@@ -93,6 +100,10 @@ public class WorkFullManageController extends BaseController {
 
 	@Autowired
 	private WorkProjectNotifyService workProjectNotifyService;
+	@Autowired
+	private ProjectReportDataService projectReportDataService;
+	@Autowired
+	private RuralProjectRecordsService ruralProjectRecordsService;
 
 	@Autowired
 	private WorkFullDesignService workFullDesignService;
@@ -835,4 +846,136 @@ public class WorkFullManageController extends BaseController {
 			imageFile.delete();//删除二维码图片临时文件
 		}
 	}
+
+	/**
+	 * 下载工程造价咨询质量控制流程单信息
+	 * @param response
+	 * @param projectReportData
+	 */
+	@RequestMapping(value="downloadMassControl")
+	@ResponseBody
+	public void downloadMassControl(HttpServletResponse response, ProjectReportData projectReportData)  {
+		//获取报告信息
+		projectReportData = projectReportDataService.get(projectReportData.getId());
+		//获取项目信息
+		RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(projectReportData.getProject().getId());
+		//获取合同信息
+		WorkContractInfo workContractInfo = workContractInfoService.get(ruralProjectRecords.getWorkContractInfo().getId());
+
+		List<MainDictDetail> mainDictList = Lists.newArrayList();
+		//工程咨询
+		if("1".equals(ruralProjectRecords.getProjectType())){
+			mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+			//造价审核
+		} else if("2".equals(ruralProjectRecords.getProjectType())){
+			mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+		}
+		String consultType = "";
+		if(StringUtils.isNotBlank(ruralProjectRecords.getAttachmentProjectSort())){
+			//处理项目类别
+			for (MainDictDetail info: mainDictList) {
+				if(ruralProjectRecords.getAttachmentProjectSort().equals(info.getValue())){
+					consultType = info.getLabel();
+					break;
+				}
+			}
+		}
+
+		//约定作业期处理
+		String promiseTime = "";
+		if(null!= ruralProjectRecords.getStartDate() && null != ruralProjectRecords.getEndingDate()){
+			String startDateStr = dateStr(ruralProjectRecords.getStartDate());
+			String endingDateStr = dateStr(ruralProjectRecords.getEndingDate());
+			promiseTime = startDateStr + "至" + endingDateStr;
+		}
+
+		//freemarker参数值准备
+		Map<String,Object> data  = new LinkedHashMap<>();
+		data.put("number",ruralProjectRecords.getProjectId());
+		data.put("projectName",ruralProjectRecords.getProjectName());
+		//咨询类别
+		data.put("consultType",consultType);
+		//委托单位
+		data.put("entrustUnit",workContractInfo.getClient().getName());
+		data.put("contractNumber",workContractInfo.getContractNum());
+		//约定作业期
+		data.put("promiseTime",promiseTime);
+		data.put("projectMaster",ruralProjectRecords.getLeaderNameStr());
+		//咨询员信息
+		data.put("consultantName",projectReportData.getConsultant().getName());
+		data.put("consultantProfession","");
+		data.put("consultantQualification","");
+
+		Map consultantMap = dateCalendar(projectReportData.getConsultantDate());
+		//专业咨询员
+		data.put("consultantName",projectReportData.getConsultant().getName());
+		data.put("consultantRemarks",projectReportData.getConsultantRemarks());
+		data.put("consultantYear",consultantMap.get("year"));
+		data.put("consultantMonth",consultantMap.get("month"));
+		data.put("consultantDay",consultantMap.get("day"));
+
+		Map principalMap = dateCalendar(projectReportData.getPrincipalDate());
+		//项目负责人
+		data.put("projectMaster",projectReportData.getPrincipal().getName());
+		data.put("projectMasterRemarks",projectReportData.getPrincipalRemarks());
+		data.put("projectYear",principalMap.get("year"));
+		data.put("projectMonth",principalMap.get("month"));
+		data.put("projectDay",principalMap.get("day"));
+
+		Map technicistMap = dateCalendar(projectReportData.getTechnicistDate());
+		//技术负责人
+		data.put("technicistName",projectReportData.getTechnicist().getName());
+		data.put("technicistRemarks",projectReportData.getTechnicistRemarks());
+		data.put("technicistYear",technicistMap.get("year"));
+		data.put("technicistMonth",technicistMap.get("month"));
+		data.put("technicistDay",technicistMap.get("day"));
+
+		//模板对象
+		Template template=null;
+		//freemaker模板路径
+		File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+		Configuration cfg = new Configuration();
+		try {
+			cfg.setDirectoryForTemplateLoading(path);
+			//选择对应的ftl文件
+			template = cfg.getTemplate("massControl.ftl","UTF-8");
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+		File docFile = new File("工程造价咨询质量控制流程单.doc");
+		FreemarkerUtil.generateFile(data,template,docFile);
+		ResponseUtil.docResponse("工程造价咨询质量控制流程单.doc",docFile,response);
+
+	}
+
+	/**
+	 * date转String
+	 * @param date
+	 * @return
+	 */
+	private String dateStr(Date date){
+		String pattern = "yyyy年MM月dd日";
+		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
+		String format = simpleDateFormat.format(date);
+		return format;
+	}
+	/**
+	 * date时间处理
+	 * @param date
+	 * @return
+	 */
+	private Map dateCalendar(Date date){
+		Map<String,String> map = new HashMap<>();
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(date);					//放入Date类型数据
+
+		Integer year = calendar.get(Calendar.YEAR);//获取年份
+		Integer month = calendar.get(Calendar.MONTH)+1;//获取月份
+		Integer day = calendar.get(Calendar.DATE);//获取日
+		map.put("year",year.toString());
+		map.put("month",month.toString());
+		map.put("day",day.toString());
+		return map;
+	}
 }

+ 14 - 7
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -1791,32 +1791,35 @@ public class WorkProjectNotifyController extends BaseController {
 
 					//根据条件查询附件必填项
 					//判断项目类别是否为打包项目(1:打包项目,0:非打包项目)
-					Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+					/*Integer projectSort = projectAccessoryRelationService.decideAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
 
 					Boolean flag = false;
 					//如果是打包项目或者报告送审价不为null则可进行查询附件类型
 					if(1 == projectSort || null != projectcontentinfo.getProjectReportData().getReviewFee()){
 						flag = true;
 					}
-					if(flag) {
+					if(flag) {*/
 						ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
 						//添加项目类型
 						relateInfo.setAttachmentProjectType(ruralProjectRecords.getProjectType());
 						relateInfo.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
 						//判断是否为打包项目,打包项目无需查看项目送审金额是否为500w以上判定
-						if(0 == projectSort){
+						//if(0 == projectSort){
 							//查看送审金额是否为500w以上金额
 							Integer approvalMoney = projectAccessoryRelationService.decideAttachmentProjectApprovalMoney(projectcontentinfo.getProjectReportData().getReviewFee());
-							if(1 == approvalMoney){
+							if(0 == approvalMoney){
+								//金额为0
+								relateInfo.setAttachmentProjectApprovalMoney(null);
+							}else if(1 == approvalMoney){
 								//500w以下金额状态
 								relateInfo.setAttachmentProjectApprovalMoney("1");
 							}else{
 								//500w以上金额状态
 								relateInfo.setAttachmentProjectApprovalMoney("2");
 							}
-						}else{
+						/*}else{
 							relateInfo.setAttachmentProjectApprovalMoney(null);
-						}
+						}*/
 
 						//添加报告类型
 						relateInfo.setRequiredStage(1);
@@ -1838,13 +1841,14 @@ public class WorkProjectNotifyController extends BaseController {
 							}
 
 						}
-					}
+					//}
 
 					projectcontentinfo.setHome("home");
 					model.addAttribute("processInstanceId",projectReportData.getProcessInstanceId());
 					model.addAttribute("projectId", projectcontentinfo.getProject().getId());
 					model.addAttribute("id", projectcontentinfo.getId());
 					model.addAttribute("projectcontentinfo", projectcontentinfo);
+					model.addAttribute("projectRecords", ruralProjectRecords);
 					WorkReviewAudit workReviewAudit = new WorkReviewAudit();
 					String type = "";
 					if ("master".equals(act.getTaskDefKey())) {
@@ -1854,8 +1858,11 @@ public class WorkProjectNotifyController extends BaseController {
 					} else if ("bzshbyg".equals(act.getTaskDefKey())) {
 						type = "4";
 					} else if ("bzshb".equals(act.getTaskDefKey())) {
+						if(null == projectReportData.getTechnicist())
+							projectReportData.setTechnicist(UserUtils.getUser());
 						type = "4";
 					}
+					model.addAttribute("projectReportData", projectReportData);
 					workReviewAudit.setCompanyId(UserUtils.getSelectCompany().getId());
 					workReviewAudit.setType(type);
 					workReviewAudit.setReportId(workProjectNotify.getNotifyId());

+ 48 - 3
src/main/resources/mappings/modules/projectcontentinfo/ProjectReportDataDao.xml

@@ -41,7 +41,17 @@
 		a.building_fee AS "buildingFee",
 		a.install_fee AS "installFee",
 		a.building_rate as "buildingRate",
-		a.install_rate as "installRate"
+		a.install_rate as "installRate",
+		a.consultant_id as "consultant.id",
+		a.consultant_remarks as "consultantRemarks",
+		a.principal_id as "principal.id",
+		a.principal_remarks as "principalRemarks",
+		a.technicist_id as "technicist.id",
+		a.technicist_remarks as "technicistRemarks",
+		a.consultant_date as "consultantDate",
+		a.principal_date as "principalDate",
+		a.technicist_date as "technicistDate"
+
 	</sql>
 	
 	<sql id="projectReportDataJoins">
@@ -53,8 +63,14 @@
 		SELECT
 			<include refid="projectReportDataColumns"/>
 			,a.bzshb_user_id as "bzshbUserId"
+			,c.name as "consultant.name"
+			,p.name as "principal.name"
+			,t.name as "technicist.name"
 		FROM project_report_data a
 		<include refid="projectReportDataJoins"/>
+		LEFT JOIN sys_user c ON c.id = a.consultant_id
+		LEFT JOIN sys_user p ON p.id = a.principal_id
+		LEFT JOIN sys_user t ON t.id = a.technicist_id
 		WHERE a.id = #{id}
 	</select>
 
@@ -534,7 +550,14 @@
 		    install_fee,
 		    building_rate,
 		    install_rate,
-		    bzshb_user_id
+		    bzshb_user_id,
+			consultant_id,
+			consultant_remarks,
+			principal_id,
+			principal_remarks,
+			consultant_date,
+			principal_date,
+			technicist_date
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -571,7 +594,14 @@
 			#{installFee},
 			#{buildingRate},
 			#{installRate},
-			#{bzshbUserId}
+			#{bzshbUserId},
+			#{consultant.id},
+			#{consultantRemarks},
+			#{principal.id},
+			#{principalRemarks},
+			#{consultantDate},
+			#{principalDate},
+			#{technicistDate}
 		)
 	</insert>
 	
@@ -649,6 +679,21 @@
 		<if test="auditPassDate != null and auditPassDate != ''">
 			,audit_pass_date = #{auditPassDate}
 		</if>
+		<if test="consultantDate != null and consultantDate != ''">
+			,consultant_date = #{consultantDate}
+		</if>
+		<if test="principalDate != null and principalDate != ''">
+			,principal_date = #{principalDate}
+		</if>
+		<if test="technicistDate != null and technicistDate != ''">
+			,technicist_date = #{technicistDate}
+		</if>
+		,consultant_id = #{consultant.id},
+		consultant_remarks = #{consultantRemarks},
+		principal_id = #{principal.id},
+		principal_remarks = #{principalRemarks},
+		technicist_id = #{technicist.id},
+		technicist_remarks = #{technicistRemarks}
 		WHERE id = #{id}
 	</update>
 

+ 1 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml

@@ -239,6 +239,7 @@
         prrd.file_num as recodeNum,
 		prr.process_instance_id as prrProcessInstanceId,
 		prrd.process_instance_id as prrdProcessInstanceId
+		,prd.id as prdId
 		,prr.id as prrId
 		,prrd.id as prrdId
 		,prd.audit_pass_date as auditPassDate

+ 6 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml

@@ -512,6 +512,12 @@
 			attachment_project_sort = #{attachmentProjectSort}
 		WHERE id = #{id}
 	</update>
+	<update id="updateDate">
+		UPDATE rural_project_records SET
+			start_date =  #{startDate},
+		    ending_date =  #{endingDate}
+		WHERE id = #{id}
+	</update>
 
 	<update id="adminUpdateProject">
 		UPDATE rural_project_records SET

+ 63 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/reportForm.jsp

@@ -18,6 +18,13 @@
 				var projectId = '${projectRecords.id}';
 				var leng = $("#file_attachment tr").length;
 				var boolFlag = true;
+				var startDate = new Date($("#startDate").val());
+				var endingDate = new Date($("#endingDate").val());
+
+				if(startDate.getTime() > endingDate.getTime()){
+					parent.layer.msg("工作开始日期不得大于工作结束日期!", {icon: 5});
+					return false;
+				}
 				for(var i=0; i<leng; i++) {
 					var numberStr = $("#file_attachment tr").eq(i).find("td:first").html();
 					var second = $("#file_attachment tr").eq(i).find("td:eq(1)").html();
@@ -138,6 +145,20 @@
             $("#other_btn").click(function () {
                 $("#other_file").click();
             });
+			laydate.render({
+				elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endingDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+				, trigger: 'click'
+			});
         });
         function hasInArr(id,idArr) {
             for(var i=0;i<idArr.length;i++){
@@ -465,6 +486,7 @@
 		<form:hidden path="projectReportData.createBy.id"/>
 		<form:hidden path="project.id"/>
 		<input type="hidden" id="projectSort" value="${projectSort}">
+		<input type="hidden" id="projectOnRuralId" name="projectOnRural.id" value="${projectRecords.id}">
 		<sys:message content="${message}"/>
 		<div class="form-group layui-row first lw12">
 			<div class="form-group-label"><h2>基本信息</h2></div>
@@ -593,7 +615,48 @@
 						<form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
 					</div>
 				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>工作开始日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date laydate-icon required" readonly="readonly" id="startDate" name="projectOnRural.startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>工作结束日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input layer-date laydate-icon required" readonly="readonly" id="endingDate" name="projectOnRural.endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselect id="consultant" name="projectReportData.consultant.id" value="${projectReportData.consultant.id}" labelName="projectReportData.consultant.name" labelValue="${projectReportData.consultant.name}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.consultantRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
 				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>项目负责人:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselect id="principal" name="projectReportData.principal.id" value="${projectReportData.principal.id}" labelName="projectReportData.principal.name" labelValue="${projectReportData.principal.name}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">项目负责人审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.principalRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+			</div>
 
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>成果文件</h2></div>

+ 64 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/reportModify.jsp

@@ -18,6 +18,13 @@
 				var projectId = '${projectId}';
 				var leng = $("#file_attachment tr").length;
 				var boolFlag = true;
+				var startDate = new Date($("#startDate").val());
+				var endingDate = new Date($("#endingDate").val());
+
+				if(startDate.getTime() > endingDate.getTime()){
+					parent.layer.msg("工作开始日期不得大于工作结束日期!", {icon: 5});
+					return false;
+				}
 				for(var i=0; i<leng; i++) {
 					var numberStr = $("#file_attachment tr").eq(i).find("td:first").html();
 					var second = $("#file_attachment tr").eq(i).find("td:eq(1)").html();
@@ -137,6 +144,20 @@
             $("#other_btn").click(function () {
                 $("#other_file").click();
             });
+			laydate.render({
+				elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endingDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+				, trigger: 'click'
+			});
         });
         function hasInArr(id,idArr) {
             for(var i=0;i<idArr.length;i++){
@@ -453,6 +474,7 @@
 		<form:hidden path="projectReportData.createBy.id"/>
 		<form:hidden path="project.id"/>
 			<input type="hidden" name="saveAuditFlag" value="1">
+			<input type="hidden" id="projectOnRuralId" name="projectOnRural.id" value="${projectRecords.id}">
 		<sys:message content="${message}"/>
 		<div class="form-group layui-row first lw12">
 			<div class="form-group-label"><h2>基本信息</h2></div>
@@ -538,7 +560,49 @@
 						<form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
 					</div>
 				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>工作开始日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input laydate-icon required" readonly="readonly" id="startDate" name="projectOnRural.startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>工作结束日期:</label>
+					<div class="layui-input-block">
+						<input class="laydate-icondate form-control layui-input laydate-icon required" readonly="readonly" id="endingDate" name="projectOnRural.endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+					</div>
 				</div>
+			</div>
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselect id="consultant" name="projectReportData.consultant.id" value="${projectReportData.consultant.id}" labelName="projectReportData.consultant.name" labelValue="${projectReportData.consultant.name}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.consultantRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>项目负责人:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselect id="principal" name="projectReportData.principal.id" value="${projectReportData.principal.id}" labelName="projectReportData.principal.name" labelValue="${projectReportData.principal.name}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">项目负责人审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.principalRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+			</div>
+
 
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>成果文件</h2></div>

+ 52 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/cost/projectcontentinfo/reportView.jsp

@@ -98,7 +98,59 @@
 					<form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
 				</div>
 			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">工作开始日期:</label>
+				<div class="layui-input-block with-icon">
+					<input class=" form-control layui-input" readonly="readonly" id="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">工作结束日期:</label>
+				<div class="layui-input-block with-icon">
+					<input class=" form-control layui-input" readonly="readonly" id="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+				</div>
+			</div>
 		</div>
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<input id="projectReportDataConsultantName" class="form-control layui-input" readonly="readonly" value="${projectReportData.consultant.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.consultantRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">项目负责人:</label>
+					<div class="layui-input-block">
+						<input id="projectReportDataPrincipalName" class="form-control layui-input" readonly="readonly" value="${projectReportData.principal.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">项目负责人审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.principalRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<input id="projectReportDataTechnicistName" class="form-control layui-input" readonly="readonly" value="${projectReportData.technicist.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.technicistRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+			</div>
 		<div class="form-group layui-row">
 			<div class="form-group-label"><h2>成果文件</h2></div>
 			<div id="addFile_attachment" style="display: none" class="upload-progress">

+ 1 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/cost/ruralCostProjectMessageLists.jsp

@@ -670,6 +670,7 @@
 					//线上归档操作
 					if(d.projectReportStatus == 5){
 						xml+="<a href=\"#\" style='background-color: #FFB800' onclick=\"openDialogre('下载模板', '${ctx}/ruralProject/ruralCostProjectMessage/skipDownloadFtl?id=" + d.id +"','35%', '35%','','下载,关闭')\" class=\"op-btn\" > 下载模板</a>";
+						xml+="<a href=\"${ctx}/workfullmanage/workFullManage/downloadMassControl?id=" + d.prdId + "\" onclick=\"return confirmx('确认要下载控制流程单吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"fa fa-file-excel-o\"></i> 下载流程单</a>";
 						if(d.projectReportRecordStatus == 0){
 							xml+="<a href=\"#\" onclick=\"openDialogre('新增归档信息', '${ctx}/ruralProject/ruralCostProjectMessage/formRecord?reportId=" + d.id +"','95%', '95%','','送审,暂存,关闭')\" class=\"op-btn layui-bg-green\" ><i class=\"fa fa-plus\"></i> 线上归档</a>";
 						}

+ 58 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/projectRecordsMessageAudit.jsp

@@ -193,6 +193,64 @@
 						<form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
 					</div>
 				</div>
+
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工作开始日期:</label>
+					<div class="layui-input-block with-icon">
+						<input class=" form-control layui-input" readonly="readonly" id="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工作结束日期:</label>
+					<div class="layui-input-block with-icon">
+						<input class=" form-control layui-input" readonly="readonly" id="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+
+				<c:if test="${type ==3}">
+					<div class="layui-item layui-col-sm6 lw7">
+						<label class="layui-form-label">专业咨询员:</label>
+						<div class="layui-input-block  with-icon">
+							<input id="projectReportDataConsultantName" class="form-control layui-input" readonly="readonly" value="${projectReportData.consultant.name}">
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm12 lw7 with-textarea">
+						<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+						<div class="layui-input-block">
+							<form:textarea path="projectReportData.consultantRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw7">
+						<label class="layui-form-label">项目负责人:</label>
+						<div class="layui-input-block">
+							<input id="projectReportDataPrincipalName" class="form-control layui-input" readonly="readonly" value="${projectReportData.principal.name}">
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm12 lw7 with-textarea">
+						<label class="layui-form-label double-line">项目负责人审核意见:</label>
+						<div class="layui-input-block">
+							<form:textarea path="projectReportData.principalRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+						</div>
+					</div>
+				</c:if>
+				<c:if test="${type == 4}">
+					<div class="layui-item layui-col-sm6 lw7">
+						<label class="layui-form-label"><span class="require-item">*</span>专业咨询员:</label>
+						<div class="layui-input-block  with-icon">
+							<sys:treeselect id="consultant" name="projectReportData.technicist.id" value="${projectReportData.technicist.id}" labelName="projectReportData.technicist.name" labelValue="${projectReportData.technicist.name}"
+											title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm12 lw7 with-textarea">
+						<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+						<div class="layui-input-block">
+							<form:textarea path="projectReportData.technicistRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+						</div>
+					</div>
+				</c:if>
 			</div>
 
 			<div class="form-group layui-row">

+ 64 - 1
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/projectRecordsMessageModify.jsp

@@ -4,7 +4,6 @@
 <head>
     <title>项目审批管理</title>
     <meta name="decorator" content="default"/>
-    <script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>
     <script type="text/javascript">
         var validateForm;
         function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
@@ -12,6 +11,13 @@
                 var projectId = '${projectcontentinfo.project.id}';
                 var leng = $("#file_attachment tr").length;
                 var boolFlag = true;
+                var startDate = new Date($("#startDate").val());
+                var endingDate = new Date($("#endingDate").val());
+
+                if(startDate.getTime() > endingDate.getTime()){
+                    parent.layer.msg("工作开始日期不得大于工作结束日期!", {icon: 5});
+                    return false;
+                }
                 for(var i=0; i<leng; i++) {
                     var numberStr = $("#file_attachment tr").eq(i).find("td:first").html();
                     var second = $("#file_attachment tr").eq(i).find("td:eq(1)").html();
@@ -135,6 +141,21 @@
                     $("#clientName").val(tt);
                 },100);
             }
+
+            laydate.render({
+                elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+                , trigger: 'click'
+            });
+            laydate.render({
+                elem: '#endingDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+                , trigger: 'click'
+            });
         });
         function getFee() {
             var rf = $("#reviewFee").val();
@@ -265,6 +286,7 @@
             <form:hidden path="projectReportData.act.procDefId"/>
             <form:hidden id="flag" path="projectReportData.act.flag"/>
             <c:set var="status" value="${projectReportData.act.status}" />
+            <input type="hidden" id="projectOnRuralId" name="projectOnRural.id" value="${projectRecords.id}">
 
 
             <sys:message content="${message}"/>
@@ -345,6 +367,47 @@
                         <form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
                     </div>
                 </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>工作开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input laydate-icon required" readonly="readonly" id="startDate" name="projectOnRural.startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>工作结束日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input laydate-icon required" readonly="readonly" id="endingDate" name="projectOnRural.endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row first lw12">
+                <div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>专业咨询员:</label>
+                    <div class="layui-input-block  with-icon">
+                        <sys:treeselect id="consultant" name="projectReportData.consultant.id" value="${projectReportData.consultant.id}" labelName="projectReportData.consultant.name" labelValue="${projectReportData.consultant.name}"
+                                        title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7 with-textarea">
+                    <label class="layui-form-label double-line">专业咨询员审核意见:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="projectReportData.consultantRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>项目负责人:</label>
+                    <div class="layui-input-block  with-icon">
+                        <sys:treeselect id="principal" name="projectReportData.principal.id" value="${projectReportData.principal.id}" labelName="projectReportData.principal.name" labelValue="${projectReportData.principal.name}"
+                                        title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7 with-textarea">
+                    <label class="layui-form-label double-line">项目负责人审核意见:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="projectReportData.principalRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+                    </div>
+                </div>
             </div>
 
             <div class="form-group layui-row">

+ 52 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/projectRecordsMessageView.jsp

@@ -90,6 +90,58 @@
 						<form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
 					</div>
 				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工作开始日期:</label>
+					<div class="layui-input-block with-icon">
+						<input class=" form-control layui-input" readonly="readonly" id="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">工作结束日期:</label>
+					<div class="layui-input-block with-icon">
+						<input class=" form-control layui-input" readonly="readonly" id="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+					</div>
+				</div>
+			</div>
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<input id="projectReportDataConsultantName" class="form-control layui-input" readonly="readonly" value="${projectReportData.consultant.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.consultantRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">项目负责人:</label>
+					<div class="layui-input-block">
+						<input id="projectReportDataPrincipalName" class="form-control layui-input" readonly="readonly" value="${projectReportData.principal.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">项目负责人审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.principalRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<input id="projectReportDataTechnicistName" class="form-control layui-input" readonly="readonly" value="${projectReportData.technicist.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.technicistRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
 			</div>
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>成果文件</h2></div>

+ 64 - 1
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/reportForm.jsp

@@ -18,6 +18,13 @@
 				var projectId = '${projectRecords.id}';
 				var leng = $("#file_attachment tr").length;
 				var boolFlag = true;
+				var startDate = new Date($("#startDate").val());
+				var endingDate = new Date($("#endingDate").val());
+
+				if(startDate.getTime() > endingDate.getTime()){
+					parent.layer.msg("工作开始日期不得大于工作结束日期!", {icon: 5});
+					return false;
+				}
 				for(var i=0; i<leng; i++) {
 					var numberStr = $("#file_attachment tr").eq(i).find("td:first").html();
 					var second = $("#file_attachment tr").eq(i).find("td:eq(1)").html();
@@ -141,6 +148,21 @@
             $("#other_btn").click(function () {
                 $("#other_file").click();
             });
+
+			laydate.render({
+				elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+				, trigger: 'click'
+			});
+			laydate.render({
+				elem: '#endingDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+				event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+				type : 'date'
+				, trigger: 'click'
+				, trigger: 'click'
+			});
         });
         function hasInArr(id,idArr) {
             for(var i=0;i<idArr.length;i++){
@@ -467,7 +489,7 @@
 		<form:hidden path="projectReportData.id"/>
 		<form:hidden path="projectReportData.createBy.id"/>
 		<form:hidden path="project.id"/>
-		<%--<input type="hidden" id="projectSort" value="${projectSort}">--%>
+		<input type="hidden" id="projectOnRuralId" name="projectOnRural.id" value="${projectRecords.id}">
 		<sys:message content="${message}"/>
 		<div class="form-group layui-row first lw12">
 			<div class="form-group-label"><h2>基本信息</h2></div>
@@ -596,7 +618,48 @@
 							<form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
 						</div>
 					</div>
+					<div class="layui-item layui-col-sm6 lw7">
+						<label class="layui-form-label"><span class="require-item">*</span>工作开始日期:</label>
+						<div class="layui-input-block">
+							<input class="laydate-icondate form-control layui-input layer-date laydate-icon required" readonly="readonly" id="startDate" name="projectOnRural.startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+						</div>
+					</div>
+					<div class="layui-item layui-col-sm6 lw7">
+						<label class="layui-form-label"><span class="require-item">*</span>工作结束日期:</label>
+						<div class="layui-input-block">
+							<input class="laydate-icondate form-control layui-input layer-date laydate-icon required" readonly="readonly" id="endingDate" name="projectOnRural.endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+						</div>
+					</div>
+				</div>
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselect id="consultant" name="projectReportData.consultant.id" value="${projectReportData.consultant.id}" labelName="projectReportData.consultant.name" labelValue="${projectReportData.consultant.name}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.consultantRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
 				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label"><span class="require-item">*</span>项目负责人:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselect id="principal" name="projectReportData.principal.id" value="${projectReportData.principal.id}" labelName="projectReportData.principal.name" labelValue="${projectReportData.principal.name}"
+										title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">项目负责人审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.principalRemarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+			</div>
 
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>成果文件</h2></div>

+ 53 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/reportView.jsp

@@ -98,7 +98,60 @@
 					<form:input id="installRate" path="projectReportData.installRate" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
 				</div>
 			</div>
+
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">工作开始日期:</label>
+				<div class="layui-input-block with-icon">
+					<input class=" form-control layui-input" readonly="readonly" id="startDate" value="<fmt:formatDate value="${projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">工作结束日期:</label>
+				<div class="layui-input-block with-icon">
+					<input class=" form-control layui-input" readonly="readonly" id="endingDate" value="<fmt:formatDate value="${projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+				</div>
+			</div>
 		</div>
+			<div class="form-group layui-row first lw12">
+				<div class="form-group-label"><h2>咨询质量控制信息</h2></div>
+
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<input id="projectReportDataConsultantName" class="form-control layui-input" readonly="readonly" value="${projectReportData.consultant.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.consultantRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">项目负责人:</label>
+					<div class="layui-input-block">
+						<input id="projectReportDataPrincipalName" class="form-control layui-input" readonly="readonly" value="${projectReportData.principal.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">项目负责人审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.principalRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6 lw7">
+					<label class="layui-form-label">专业咨询员:</label>
+					<div class="layui-input-block  with-icon">
+						<input id="projectReportDataTechnicistName" class="form-control layui-input" readonly="readonly" value="${projectReportData.technicist.name}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm12 lw7 with-textarea">
+					<label class="layui-form-label double-line">专业咨询员审核意见:</label>
+					<div class="layui-input-block">
+						<form:textarea path="projectReportData.technicistRemarks" readonly="true" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+					</div>
+				</div>
+			</div>
 		<div class="form-group layui-row">
 			<div class="form-group-label"><h2>成果文件</h2></div>
 			<div id="addFile_attachment" style="display: none" class="upload-progress">

+ 1 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageLists.jsp

@@ -670,6 +670,7 @@
 					//线上归档操作
 					if(d.projectReportStatus == 5){
 						xml+="<a href=\"#\" style='background-color: #FFB800' onclick=\"openDialogre('下载模板', '${ctx}/ruralProject/ruralProjectMessage/skipDownloadFtl?id=" + d.id +"','35%', '35%','','下载,关闭')\" class=\"op-btn\" > 下载模板</a>";
+						xml+="<a href=\"${ctx}/workfullmanage/workFullManage/downloadMassControl?id=" + d.prdId + "\" onclick=\"return confirmx('确认要下载控制流程单吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"fa fa-file-excel-o\"></i> 下载流程单</a>";
 						if(d.projectReportRecordStatus == 0){
 							xml+="<a href=\"#\" onclick=\"openDialogre('新增归档信息', '${ctx}/ruralProject/ruralProjectMessage/formRecord?reportId=" + d.id +"','95%', '95%','','送审,暂存,关闭')\" class=\"op-btn layui-bg-green\" ><i class=\"fa fa-plus\"></i> 线上归档</a>";
 						}