Bläddra i källkod

项目报告、报告归档流程调用中的伪状态问题

user5 4 år sedan
förälder
incheckning
2989b25ab9

+ 6 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectReportRecordDao.java

@@ -47,4 +47,10 @@ public interface ProjectReportRecordDao extends CrudDao<ProjectReportRecord> {
      * @return
      */
     String getProjectId(String reportId);
+
+    /**
+     * 根据报告id查询归档信息
+     * @param reportId
+     */
+    ProjectReportRecord getprojectReportRecord(String reportId);
 }

+ 4 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportRecordService.java

@@ -743,4 +743,8 @@ public class ProjectReportRecordService extends CrudService<ProjectReportRecordD
 		ProjectReportRecord reportRecord=projectReportRecordDao.getRecord(projectReportRecord);
 		return reportRecord;
 	}
+
+	public ProjectReportRecord getprojectReportRecord(String reportId){
+		return dao.getprojectReportRecord(reportId);
+	}
 }

+ 53 - 5
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageController.java

@@ -272,6 +272,17 @@ public class RuralCostProjectMessageController extends BaseController {
     @RequestMapping(value = {"saveReport"})
     public String saveReport(Projectcontentinfo projectcontentinfo, Model model,RedirectAttributes redirectAttributes)  {
         try{
+            Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectcontentinfo.getProject().getId());
+            ProjectReportData reportData = projectReportDataService.get(projectcontentinfo1.getInfoId());
+            if(null != reportData){
+                if(reportData.getStatus().equals("2")){
+                    addMessage(redirectAttributes, "报告已送审,请勿重复提交");
+                    return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+                } else if(reportData.getStatus().equals("5")){
+                    addMessage(redirectAttributes, "报告已审核完毕,请勿再次送审");
+                    return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+                }
+            }
             String str = ruralProjectMessageService.saveData(projectcontentinfo,2);
             addMessage(redirectAttributes, "发起报告审批"+(str.equals("true")?"成功":"失败"));
             ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
@@ -377,13 +388,23 @@ public class RuralCostProjectMessageController extends BaseController {
     //报告流程审批
     @RequestMapping(value = {"reportAudit"})
     public String reportAudit(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model,
-                              RedirectAttributes redirectAttributes) throws Exception {
+                              RedirectAttributes redirectAttributes,Integer saveAuditFlag) throws Exception {
         ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
         if(StringUtils.isNotBlank(projectReportData.getProcessInstanceId())){
             Act act = getByAct(projectReportData.getProcessInstanceId());
             projectReportData.setAct(act);
         }
         ProjectReportData t = projectReportDataService.getOnRural(projectReportData.getId());//从数据库取出记录的值
+        if(null != saveAuditFlag){
+            if(1 == saveAuditFlag && !t.getStatus().equals("4") && !t.getStatus().equals("5")){
+                addMessage(redirectAttributes, "项目报告已送审,请勿重复送审");
+                return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+            }
+        }
+        if(t.getStatus().equals("5")){
+            addMessage(redirectAttributes, "项目报告已登记完成,无法再次送审");
+            return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+        }
         try {
             MyBeanUtils.copyBeanNotNull2Bean(projectReportData, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
             if(StringUtils.isNotBlank(t.getProcessInstanceId())){
@@ -448,7 +469,10 @@ public class RuralCostProjectMessageController extends BaseController {
         String id = requestMap.get("id");
         /*try {*/
             RuralProjectRecords projectRecords = ruralProjectMessageService.get(id);
-            if(5==projectRecords.getProjectReportStatus()){
+            if(3==projectRecords.getProjectReportStatus()){
+                addMessage(redirectAttributes, "项目报告已撤回,请勿重复撤回");
+                return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
+            }else if(5==projectRecords.getProjectReportStatus()){
                 addMessage(redirectAttributes, "项目报告已审批通过,无法撤回");
                 return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
             }
@@ -648,7 +672,7 @@ public class RuralCostProjectMessageController extends BaseController {
      * 保存报告归档
      */
     @RequestMapping(value = "saveRecord")
-    public String save(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes) throws Exception{
+    public String save(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes,Integer saveAuditFlag) throws Exception{
         if (!beanValidator(model, projectReportRecord)){
             return form(projectReportRecord, model);
         }
@@ -669,12 +693,26 @@ public class RuralCostProjectMessageController extends BaseController {
             Map<String, Object> variables = new HashMap<>();
             if(!projectReportRecord.getIsNewRecord()){//编辑表单保存
                 ProjectReportRecord t = projectReportRecordService.get(projectReportRecord.getId());//从数据库取出记录的值
+                if(null != saveAuditFlag){
+                    if(1 == saveAuditFlag && !t.getStatus().equals("4") && !t.getStatus().equals("5")){
+                        addMessage(redirectAttributes, "报告归档已送审,请勿重复送审");
+                        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+                    }
+                    if(t.getStatus().equals("5")){
+                        addMessage(redirectAttributes, "报告归档已登记完成,无法再次送审");
+                        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+                    }
+                }
                 MyBeanUtils.copyBeanNotNull2Bean(projectReportRecord,t);//将编辑表单中的非NULL值覆盖数据库记录中的值
                 if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("modify")){
                     projectReportRecord.setStatus("2");
                 }
                 ruralProjectMessageService.saveProjectReportRecord(t,variables,processInstanceId);//保存
             }else {//新增表单保存
+                ProjectReportRecord reportRecord = projectReportRecordService.getprojectReportRecord(projectReportRecord.getReport().getId());//从数据库取出记录的值
+                if(null !=reportRecord){
+                    projectReportRecord.setId(reportRecord.getId());
+                }
                 ruralProjectMessageService.saveProjectReportRecord(projectReportRecord,variables,processInstanceId);//保存
             }
             addMessage(redirectAttributes, "保存报告归档成功");
@@ -723,6 +761,11 @@ public class RuralCostProjectMessageController extends BaseController {
                 }
                 ruralProjectMessageService.saveProjectReportRecord(t,variables,processInstanceId);//保存
             }else {//新增表单保存
+                ProjectReportRecord reportRecord = projectReportRecordService.getprojectReportRecord(projectReportRecord.getReport().getId());//从数据库取出记录的值
+                if(null != reportRecord){
+                    addMessage(redirectAttributes, "报告归档已存在,请勿重复提交");
+                    return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectMessage/?repage";
+                }
                 ruralProjectMessageService.saveProjectReportRecord(projectReportRecord,variables,processInstanceId);//保存
             }
             addMessage(redirectAttributes, "保存报告归档暂存成功");
@@ -797,8 +840,13 @@ public class RuralCostProjectMessageController extends BaseController {
             if(projectReportRecord.getStatus().equals("5")){
                 addMessage(redirectAttributes, "报告归档已审批通过,无法撤回");
             }else{
-                ruralProjectMessageService.cancelInvalidate(projectReportRecord);
-                addMessage(redirectAttributes, "强制撤回报告归档成功");
+                if(projectReportRecord.getStatus().equals("2")){
+                    ruralProjectMessageService.cancelInvalidate(projectReportRecord);
+                    addMessage(redirectAttributes, "强制撤回报告归档成功");
+                }else{
+                    addMessage(redirectAttributes, "报告归档不是送审状态,无法撤回");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectMessage/?repage";
+                }
             }
         }catch (Exception e){
             addMessage(redirectAttributes, "强制撤回报告归档失败");

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

@@ -209,10 +209,10 @@ public class RuralCostProjectRecordsController extends BaseController {
 					projectRecordsService.saveProject(t, ProjectStatusEnum.IN_APRL);//保存
 				}else if(t.getProjectStatus() == 2){
 					addMessage(redirectAttributes, "项目已送审,无法重复送审");
-					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectRecords/?repage";
 				}else if(t.getProjectStatus() == 5){
 					addMessage(redirectAttributes, "项目已登记完成,无法再次送审");
-					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectRecords/?repage";
 				}
             } else {//新增表单保存
 				//添加查询类型(造价审核)
@@ -244,10 +244,10 @@ public class RuralCostProjectRecordsController extends BaseController {
 					projectRecordsService.saveProject(t, ProjectStatusEnum.TSTORE);//保存
 				}else if(t.getProjectStatus() == 2){
 					addMessage(redirectAttributes, "项目已送审,无法暂存");
-					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectRecords/?repage";
 				}else if(t.getProjectStatus() == 5){
 					addMessage(redirectAttributes, "项目已登记完成,无法暂存");
-					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectRecords/?repage";
 				}
             } else {//新增表单保存
             	// 添加查询类型(工程咨询)
@@ -464,7 +464,7 @@ public class RuralCostProjectRecordsController extends BaseController {
 			RuralProjectRecords projectRecords = projectRecordsService.get(id);
 			if(projectRecords.getProjectStatus() != projectStatus){
 				addMessage(redirectAttributes, "项目登记不是送审状态,无法撤回");
-				return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+				return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectRecords/?repage";
 			}
             projectRecordsService.cancelProcess(projectRecords);
 			addMessage(redirectAttributes, "撤回该项目登记成功");
@@ -591,12 +591,12 @@ public class RuralCostProjectRecordsController extends BaseController {
 				if(null != saveAuditFlag){
 					if(1 == saveAuditFlag && t.getProjectStatus() != 4 && t.getProjectStatus() != 5){
 						addMessage(redirectAttributes, "项目已送审,请勿重复送审");
-						return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+						return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectRecords/?repage";
 					}
 				}
 				if(t.getProjectStatus() == 5){
 					addMessage(redirectAttributes, "项目已登记完成,无法再次送审");
-					return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+					return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralCostProjectRecords/?repage";
 				}
 				String str = projectRecordsService.auditSave(projectRecords,users);
 				addMessage(redirectAttributes, str);

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

@@ -273,6 +273,17 @@ public class RuralProjectMessageController extends BaseController {
     @RequestMapping(value = {"saveReport"})
     public String saveReport(Projectcontentinfo projectcontentinfo, Model model,RedirectAttributes redirectAttributes) {
         try{
+            Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectcontentinfo.getProject().getId());
+            ProjectReportData reportData = projectReportDataService.get(projectcontentinfo1.getInfoId());
+            if(null != reportData){
+                if(reportData.getStatus().equals("2")){
+                    addMessage(redirectAttributes, "报告已送审,请勿重复提交");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+                } else if(reportData.getStatus().equals("5")){
+                    addMessage(redirectAttributes, "报告已审核完毕,请勿再次送审");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+                }
+            }
             String str = ruralProjectMessageService.saveData(projectcontentinfo,2);
             if(str.equals("true") || str.equals("false")){
                 addMessage(redirectAttributes, "发起报告审批"+(str.equals("true")?"成功":"失败"));
@@ -377,13 +388,23 @@ public class RuralProjectMessageController extends BaseController {
     //报告流程审批
     @RequestMapping(value = {"reportAudit"})
     public String reportAudit(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model,
-                              RedirectAttributes redirectAttributes) throws Exception {
+                              RedirectAttributes redirectAttributes,Integer saveAuditFlag) throws Exception {
         ProjectReportData projectReportData = projectcontentinfo.getProjectReportData();
         if(StringUtils.isNotBlank(projectReportData.getProcessInstanceId())){
             Act act = getByAct(projectReportData.getProcessInstanceId());
             projectReportData.setAct(act);
         }
         ProjectReportData t = projectReportDataService.getOnRural(projectReportData.getId());//从数据库取出记录的值
+        if(null != saveAuditFlag){
+            if(1 == saveAuditFlag && !t.getStatus().equals("4") && !t.getStatus().equals("5")){
+                addMessage(redirectAttributes, "项目报告已送审,请勿重复送审");
+                return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+            }
+        }
+        if(t.getStatus().equals("5")){
+            addMessage(redirectAttributes, "项目报告已登记完成,无法再次送审");
+            return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+        }
         try {
             MyBeanUtils.copyBeanNotNull2Bean(projectReportData, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
             if(StringUtils.isNotBlank(t.getProcessInstanceId())){
@@ -448,7 +469,10 @@ public class RuralProjectMessageController extends BaseController {
         String id = requestMap.get("id");
         /*try {*/
             RuralProjectRecords projectRecords = ruralProjectMessageService.get(id);
-            if(5==projectRecords.getProjectReportStatus()){
+            if(3==projectRecords.getProjectReportStatus()){
+                addMessage(redirectAttributes, "项目报告已撤回,请勿重复撤回");
+                return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+            }else if(5==projectRecords.getProjectReportStatus()){
                 addMessage(redirectAttributes, "项目报告已审批通过,无法撤回");
                 return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
             }
@@ -652,7 +676,7 @@ public class RuralProjectMessageController extends BaseController {
      * 保存报告归档
      */
     @RequestMapping(value = "saveRecord")
-    public String save(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes) throws Exception{
+    public String save(ProjectReportRecord projectReportRecord, Model model, RedirectAttributes redirectAttributes,Integer saveAuditFlag) throws Exception{
         if (!beanValidator(model, projectReportRecord)){
             return form(projectReportRecord, model);
         }
@@ -672,12 +696,26 @@ public class RuralProjectMessageController extends BaseController {
             Map<String, Object> variables = new HashMap<>();
             if(!projectReportRecord.getIsNewRecord()){//编辑表单保存
                 ProjectReportRecord t = projectReportRecordService.get(projectReportRecord.getId());//从数据库取出记录的值
+                if(null != saveAuditFlag){
+                    if(1 == saveAuditFlag && !t.getStatus().equals("4") && !t.getStatus().equals("5")){
+                        addMessage(redirectAttributes, "报告归档已送审,请勿重复送审");
+                        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
+                    }
+                    if(t.getStatus().equals("5")){
+                        addMessage(redirectAttributes, "报告归档已登记完成,无法再次送审");
+                        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
+                    }
+                }
                 MyBeanUtils.copyBeanNotNull2Bean(projectReportRecord,t);//将编辑表单中的非NULL值覆盖数据库记录中的值
                 if (StringUtils.isNotBlank(projectReportRecord.getView()) && projectReportRecord.getView().equals("modify")){
                     projectReportRecord.setStatus("2");
                 }
                 ruralProjectMessageService.saveProjectReportRecord(t,variables,processInstanceId);//保存
             }else {//新增表单保存
+                ProjectReportRecord reportRecord = projectReportRecordService.getprojectReportRecord(projectReportRecord.getReport().getId());//从数据库取出记录的值
+                if(null !=reportRecord){
+                    projectReportRecord.setId(reportRecord.getId());
+                }
                 ruralProjectMessageService.saveProjectReportRecord(projectReportRecord,variables,processInstanceId);//保存
             }
             addMessage(redirectAttributes, "保存报告归档成功");
@@ -725,6 +763,11 @@ public class RuralProjectMessageController extends BaseController {
                 }
                 ruralProjectMessageService.saveProjectReportRecord(t,variables,processInstanceId);//保存
             }else {//新增表单保存
+                ProjectReportRecord reportRecord = projectReportRecordService.getprojectReportRecord(projectReportRecord.getReport().getId());//从数据库取出记录的值
+                if(null != reportRecord){
+                    addMessage(redirectAttributes, "报告归档已存在,请勿重复提交");
+                    return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
+                }
                 ruralProjectMessageService.saveProjectReportRecord(projectReportRecord,variables,processInstanceId);//保存
             }
             addMessage(redirectAttributes, "保存报告归档暂存成功");
@@ -799,8 +842,13 @@ public class RuralProjectMessageController extends BaseController {
             if(projectReportRecord.getStatus().equals("5")){
                 addMessage(redirectAttributes, "报告归档已审批通过,无法撤回");
             }else{
-                ruralProjectMessageService.cancelInvalidate(projectReportRecord);
-                addMessage(redirectAttributes, "强制撤回报告归档成功");
+                if(projectReportRecord.getStatus().equals("2")){
+                    ruralProjectMessageService.cancelInvalidate(projectReportRecord);
+                    addMessage(redirectAttributes, "强制撤回报告归档成功");
+                }else{
+                    addMessage(redirectAttributes, "报告归档不是送审状态,无法撤回");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+                }
             }
         }catch (Exception e){
             addMessage(redirectAttributes, "强制撤回报告归档失败");

+ 8 - 0
src/main/resources/mappings/modules/projectcontentinfo/ProjectReportRecordDao.xml

@@ -331,4 +331,12 @@
 	<select id="getProjectId" resultType="java.lang.String">
 		select project_id as projectId from project_report_data where id = #{reportId}
 	</select>
+
+	<select id="getprojectReportRecord" resultType="ProjectReportRecord">
+		SELECT
+		<include refid="projectReportRecordColumns"/>
+		FROM rural_project_report_record a
+		<include refid="projectReportRecordJoins"/>
+		WHERE a.report_id = #{reportId}
+	</select>
 </mapper>

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

@@ -192,6 +192,7 @@
 			<form:hidden path="numberCount"/>
 			<form:hidden id="reportId" path="report.id"/>
 			<form:hidden path="report.name"/>
+			<input type="hidden" name="saveAuditFlag" value="1">
 
 			<div class="form-group layui-row first lw12">
 				<div class="form-group-label"><h2>基本信息</h2></div>

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

@@ -451,6 +451,7 @@
 		<form:hidden path="projectReportData.id"/>
 		<form:hidden path="projectReportData.createBy.id"/>
 		<form:hidden path="project.id"/>
+			<input type="hidden" name="saveAuditFlag" value="1">
 		<sys:message content="${message}"/>
 		<div class="form-group layui-row first lw12">
 			<div class="form-group-label"><h2>基本信息</h2></div>

+ 1 - 1
src/main/webapp/webpage/modules/ruralprojectrecords/projectReportRecord/projectReportRecordModify.jsp

@@ -192,7 +192,7 @@
 			<form:hidden path="numberCount"/>
 			<form:hidden id="reportId" path="report.id"/>
 			<form:hidden path="report.name"/>
-
+			<input type="hidden" name="saveAuditFlag" value="1">
 			<div class="form-group layui-row first lw12">
 				<div class="form-group-label"><h2>基本信息</h2></div>
 				<div class="layui-item layui-col-sm6">

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

@@ -452,6 +452,7 @@
 		<form:hidden path="projectReportData.id"/>
 		<form:hidden path="projectReportData.createBy.id"/>
 		<form:hidden path="project.id"/>
+			<input type="hidden" name="saveAuditFlag" value="1">
 		<sys:message content="${message}"/>
 		<div class="form-group layui-row first lw12">
 			<div class="form-group-label"><h2>基本信息</h2></div>