浏览代码

合同登记、归档、借用操作流程调用中的伪状态问题修改

user5 4 年之前
父节点
当前提交
dcfa3a6b9a

+ 7 - 1
src/main/java/com/jeeplus/modules/workcontractinfo/web/WorkContractBorrowController.java

@@ -306,7 +306,13 @@ public class WorkContractBorrowController extends BaseController {
 	 */
 	 */
 	@RequestMapping("cancelInvalidate")
 	@RequestMapping("cancelInvalidate")
 	public String cancelInvalidate(WorkCntractBorrow workCntractBorrow,RedirectAttributes redirectAttributes){
 	public String cancelInvalidate(WorkCntractBorrow workCntractBorrow,RedirectAttributes redirectAttributes){
-		workCntractBorrowService.cancelInvalidate(workCntractBorrow);
+		WorkCntractBorrow cntractBorrow = workCntractBorrowService.get(workCntractBorrow.getId());
+		if(null == cntractBorrow){
+			addMessage(redirectAttributes, "该借用信息已撤回,无法重复操作");
+		}else{
+			workCntractBorrowService.cancelInvalidate(workCntractBorrow);
+			addMessage(redirectAttributes, "撤回成功");
+		}
 		return "redirect:"+Global.getAdminPath()+"/workcontractinfo/workContractInfo/?repage";
 		return "redirect:"+Global.getAdminPath()+"/workcontractinfo/workContractInfo/?repage";
 	}
 	}
 
 

+ 15 - 3
src/main/java/com/jeeplus/modules/workcontractinfo/web/WorkContractInfoController.java

@@ -1080,8 +1080,13 @@ public class WorkContractInfoController extends BaseController {
     @RequestMapping(value = "revoke")
     @RequestMapping(value = "revoke")
     public String revoke(WorkContractInfo workContractInfo,HttpServletRequest request, RedirectAttributes redirectAttributes) {
     public String revoke(WorkContractInfo workContractInfo,HttpServletRequest request, RedirectAttributes redirectAttributes) {
         try {
         try {
-            addMessage(redirectAttributes, "撤回成功");
-            workContractInfoService.auditInvalidate(workContractInfo);
+            WorkContractInfo contractInfo = workContractInfoService.get(workContractInfo.getId());
+            if(contractInfo.getContractState().equals(workContractInfo.getContractState())){
+                addMessage(redirectAttributes, "撤回成功");
+                workContractInfoService.auditInvalidate(workContractInfo);
+            }else{
+                addMessage(redirectAttributes, "该合同不是送审状态,无法撤回");
+            }
         }catch (Exception e){
         }catch (Exception e){
             addMessage(redirectAttributes, "撤回失败");
             addMessage(redirectAttributes, "撤回失败");
         }
         }
@@ -1120,7 +1125,14 @@ public class WorkContractInfoController extends BaseController {
     @RequiresPermissions("workcontractinfo:workContractInfo:del")
     @RequiresPermissions("workcontractinfo:workContractInfo:del")
     @RequestMapping(value = "delete")
     @RequestMapping(value = "delete")
     public String delete(WorkContractInfo workContractInfo, RedirectAttributes redirectAttributes) {
     public String delete(WorkContractInfo workContractInfo, RedirectAttributes redirectAttributes) {
-        workContractInfoService.delete(workContractInfo);
+        WorkContractInfo contractInfo = workContractInfoService.get(workContractInfo.getId());
+        if(contractInfo.getContractState().equals(workContractInfo.getContractState())){
+            addMessage(redirectAttributes, "作废成功");
+            workContractInfoService.delete(workContractInfo);
+        }else{
+            addMessage(redirectAttributes, "该合同不是撤回、驳回状态,无法作废");
+        }
+
         /*WorkProjectNotify notify = new WorkProjectNotify();
         /*WorkProjectNotify notify = new WorkProjectNotify();
         notify.setNotifyId(workContractInfo.getId());
         notify.setNotifyId(workContractInfo.getId());
         workProjectNotifyService.readByNotifyId(notify);
         workProjectNotifyService.readByNotifyId(notify);

+ 2 - 0
src/main/java/com/jeeplus/modules/workcontractrecord/dao/WorkContractRecordDao.java

@@ -35,4 +35,6 @@ public interface WorkContractRecordDao extends CrudDao<WorkContractRecord> {
 	public int updateRecordStatus(String id);
 	public int updateRecordStatus(String id);
 	//按照合同编号获取最新的归档编号
 	//按照合同编号获取最新的归档编号
 	public String findRecordNum(@Param("num") String num);
 	public String findRecordNum(@Param("num") String num);
+
+	WorkContractRecord getByContractId(WorkContractRecord workContractRecord);
 }
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/workcontractrecord/service/WorkContractRecordService.java

@@ -125,6 +125,15 @@ public class WorkContractRecordService extends CrudService<WorkContractRecordDao
 	}
 	}
 
 
 	/**
 	/**
+	 * 根据合同id查询合同归档信息
+	 * @param workContractRecord
+	 * @return
+	 */
+	public WorkContractRecord getByContractId(WorkContractRecord workContractRecord){
+		return dao.getByContractId(workContractRecord);
+	}
+
+	/**
 	 * 提交存储
 	 * 提交存储
 	 * @param
 	 * @param
 	 * @param variables
 	 * @param variables

+ 26 - 3
src/main/java/com/jeeplus/modules/workcontractrecord/web/WorkContractRecordController.java

@@ -66,6 +66,8 @@ public class WorkContractRecordController extends BaseController {
 	private ActTaskService actTaskService;
 	private ActTaskService actTaskService;
 	@Autowired
 	@Autowired
 	private WorkContractInfoService workContractInfoService;
 	private WorkContractInfoService workContractInfoService;
+
+	private static byte[] SYN_BYTE = new byte[0];
 	@ModelAttribute
 	@ModelAttribute
 	public WorkContractRecord get(@RequestParam(required=false) String id) {
 	public WorkContractRecord get(@RequestParam(required=false) String id) {
 		WorkContractRecord entity = null;
 		WorkContractRecord entity = null;
@@ -171,7 +173,13 @@ public class WorkContractRecordController extends BaseController {
 			MyBeanUtils.copyBeanNotNull2Bean(workContractRecord, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
 			MyBeanUtils.copyBeanNotNull2Bean(workContractRecord, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
 			workContractRecordService.save(t);//保存
 			workContractRecordService.save(t);//保存
 		}else{//新增表单保存
 		}else{//新增表单保存
-			workContractRecordService.save(workContractRecord);//保存
+			//根据合同id查询合同归档信息
+			WorkContractRecord byContractId = workContractRecordService.getByContractId(workContractRecord);
+			if(null == byContractId){
+				workContractRecordService.save(workContractRecord);//保存
+			}else{
+				addMessage(redirectAttributes, "该合同已归档、无法重复归档");
+			}
 		}
 		}
 		addMessage(redirectAttributes, "保存合同归档成功");
 		addMessage(redirectAttributes, "保存合同归档成功");
 		return "redirect:"+Global.getAdminPath()+"/workcontractrecord/workContractRecord/?repage";
 		return "redirect:"+Global.getAdminPath()+"/workcontractrecord/workContractRecord/?repage";
@@ -185,6 +193,7 @@ public class WorkContractRecordController extends BaseController {
 		if (!beanValidator(model, workContractRecord)){
 		if (!beanValidator(model, workContractRecord)){
 			return form(workContractRecord, model);
 			return form(workContractRecord, model);
 		}
 		}
+		String oldStatus = workContractRecord.getStatus();
 		//归档中状态
 		//归档中状态
 		if(workContractRecord.getWorkContractInfo()!=null){
 		if(workContractRecord.getWorkContractInfo()!=null){
 			if(StringUtils.isNotBlank(workContractRecord.getWorkContractInfo().getId())){
 			if(StringUtils.isNotBlank(workContractRecord.getWorkContractInfo().getId())){
@@ -209,7 +218,15 @@ public class WorkContractRecordController extends BaseController {
 			Map<String, Object> variables = Maps.newHashMap();
 			Map<String, Object> variables = Maps.newHashMap();
 			workContractRecord.setCompanyId(UserUtils.getSelectCompany().getId());
 			workContractRecord.setCompanyId(UserUtils.getSelectCompany().getId());
 			workContractRecord.setOfficeId(UserUtils.getSelectOffice().getId());
 			workContractRecord.setOfficeId(UserUtils.getSelectOffice().getId());
-			String str = workContractRecordService.save(workContractRecord, variables,processInstanceId);
+			String str = null;
+			//新增或修改操作
+			synchronized (SYN_BYTE) {
+				//根据合同id查询合同归档信息
+				WorkContractRecord byContractId = workContractRecordService.getByContractId(workContractRecord);
+				if (null == byContractId || oldStatus.equals(byContractId.getStatus())) {
+					str = workContractRecordService.save(workContractRecord, variables, processInstanceId);
+				}
+			}
 			if (StringUtils.isNotBlank(str)){
 			if (StringUtils.isNotBlank(str)){
 				addMessage(redirectAttributes, "合同归档申请提交失败:"+str);
 				addMessage(redirectAttributes, "合同归档申请提交失败:"+str);
 			}else {
 			}else {
@@ -374,7 +391,13 @@ public class WorkContractRecordController extends BaseController {
 	 */
 	 */
 	@RequestMapping("cancelInvalidate")
 	@RequestMapping("cancelInvalidate")
 	public String cancelInvalidate(WorkContractRecord workContractRecord,RedirectAttributes redirectAttributes){
 	public String cancelInvalidate(WorkContractRecord workContractRecord,RedirectAttributes redirectAttributes){
-		workContractRecordService.cancelInvalidate(workContractRecord);
+		WorkContractRecord contractRecord = workContractRecordService.get(workContractRecord.getId());
+		if(contractRecord.getStatus().equals(workContractRecord.getStatus())){
+			addMessage(redirectAttributes, "撤回成功");
+			workContractRecordService.cancelInvalidate(workContractRecord);
+		}else{
+			addMessage(redirectAttributes, "该合同归档不是送审状态,无法撤回");
+		}
 		return "redirect:"+Global.getAdminPath()+"/workcontractinfo/workContractInfo/?repage";
 		return "redirect:"+Global.getAdminPath()+"/workcontractinfo/workContractInfo/?repage";
 	}
 	}
 	/**
 	/**

+ 8 - 0
src/main/resources/mappings/modules/workcontractrecord/WorkContractRecordDao.xml

@@ -299,4 +299,12 @@
 		 SELECT a2.record_num from(select * from work_contract_record a
 		 SELECT a2.record_num from(select * from work_contract_record a
 		 where a.del_flag = 0 and a.record_num like concat(#{num},'%') ORDER BY a.create_date desc LIMIT 1) a2
 		 where a.del_flag = 0 and a.record_num like concat(#{num},'%') ORDER BY a.create_date desc LIMIT 1) a2
 	</select>
 	</select>
+
+	<select id="getByContractId" resultType="WorkContractRecord">
+		SELECT
+		<include refid="workContractRecordColumns"/>
+		FROM work_contract_record a
+		<include refid="workContractRecordJoins"/>
+		WHERE a.contract_info_id = #{workContractInfo.id}
+	</select>
 </mapper>
 </mapper>

+ 5 - 5
src/main/webapp/webpage/modules/workcontractinfo/workContractInfoList.jsp

@@ -667,19 +667,19 @@
                         }*/
                         }*/
 							if(d.canedit != undefined && d.canedit =="1")
 							if(d.canedit != undefined && d.canedit =="1")
 							{
 							{
-								xml +="<a href=\"javascript:void(0)\" onclick=\"contractOpenDialogre('修改合同管理', '${ctx}/workcontractinfo/workContractInfo/form?id=" + d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改合同</a>";
+								xml +="<a href=\"javascript:void(0)\" onclick=\"contractOpenDialogre('修改合同管理', '${ctx}/workcontractinfo/workContractInfo/form?id=" + d.id + "&contractState="+d.status+"','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改合同</a>";
 							}
 							}
 							if(d.canedits != undefined && d.canedits =="1")
 							if(d.canedits != undefined && d.canedits =="1")
 							{
 							{
-								xml +="<a href=\"javascript:void(0)\" onclick=\"contractOpenDialogres('修改合同管理', '${ctx}/workcontractinfo/workContractInfo/form?id=" + d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改合同</a>";
+								xml +="<a href=\"javascript:void(0)\" onclick=\"contractOpenDialogres('修改合同管理', '${ctx}/workcontractinfo/workContractInfo/form?id=" + d.id + "&contractState="+d.status+"','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改合同</a>";
 							}
 							}
 							if(d.candelete != undefined && d.candelete =="1")
 							if(d.candelete != undefined && d.candelete =="1")
 							{
 							{
-								xml += "<a href=\"${ctx}/workcontractinfo/workContractInfo/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要作废该合同信息吗?', this.href)\" class=\"op-btn op-btn-invalid\"><i class=\"fa fa-trash-o\"></i> 合同作废</a>";
+								xml += "<a href=\"${ctx}/workcontractinfo/workContractInfo/delete?id=" + d.id + "&contractState="+d.status+"\" onclick=\"return confirmx('确认要作废该合同信息吗?', this.href)\" class=\"op-btn op-btn-invalid\"><i class=\"fa fa-trash-o\"></i> 合同作废</a>";
 							}
 							}
 							if(d.cancancel != undefined && d.cancancel =="1")
 							if(d.cancancel != undefined && d.cancancel =="1")
 							{
 							{
-								xml += "<a href=\"${ctx}/workcontractinfo/workContractInfo/revoke?id="+ d.id +"&processInstanceId="+ d.processInstanceId +"\" onclick=\"return confirmx('确认要撤回该合同管理吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回合同</a>";
+								xml += "<a href=\"${ctx}/workcontractinfo/workContractInfo/revoke?id="+ d.id +"&contractState="+d.status+"&processInstanceId="+ d.processInstanceId +"\" onclick=\"return confirmx('确认要撤回该合同管理吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回合同</a>";
 							}
 							}
 
 
 							/*if(d.canalterCom != undefined && d.canalterCom =="1")
 							/*if(d.canalterCom != undefined && d.canalterCom =="1")
@@ -704,7 +704,7 @@
 							}
 							}
 
 
 							if(d.cancancelRecord != undefined && d.cancancelRecord == "1")
 							if(d.cancancelRecord != undefined && d.cancancelRecord == "1")
-								xml += "<a href=\"${ctx}/workcontractrecord/workContractRecord/cancelInvalidate?id=" + d.contrractRecordId + "\" onclick=\"return confirmx('确认要强制撤回?', this.href)\"   class=\"op-btn op-btn-cancel\"><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回归档</a>";
+								xml += "<a href=\"${ctx}/workcontractrecord/workContractRecord/cancelInvalidate?id=" + d.contrractRecordId + "&status="+d.contrractRecordStatus+"\" onclick=\"return confirmx('确认要强制撤回?', this.href)\"   class=\"op-btn op-btn-cancel\"><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回归档</a>";
 							if(d.caneditRecord1 != undefined && d.caneditRecord1 == "1")
 							if(d.caneditRecord1 != undefined && d.caneditRecord1 == "1")
 								xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改归档信息', '${ctx}/workcontractrecord/workContractRecord/form?id="+ d.contrractRecordId + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改归档</a>";
 								xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改归档信息', '${ctx}/workcontractrecord/workContractRecord/form?id="+ d.contrractRecordId + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改归档</a>";
 							if(d.caneditRecord2 != undefined && d.caneditRecord2 == "1")
 							if(d.caneditRecord2 != undefined && d.caneditRecord2 == "1")