Selaa lähdekoodia

[task-836]后台开发:快照管理,修改状态放在生成快照之前进行

szjbdgzl 2 vuotta sitten
vanhempi
sitoutus
cd5215744d

+ 25 - 0
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/listener/ProcEndEventListener.java

@@ -4,6 +4,7 @@ import com.lc.ibps.api.base.model.User;
 import com.lc.ibps.base.core.exception.BaseException;
 import com.lc.ibps.base.core.util.BeanUtils;
 import com.lc.ibps.base.core.util.string.StringValidator;
+import com.lc.ibps.base.framework.table.ICommonDao;
 import com.lc.ibps.base.saas.context.TenantContext;
 import com.lc.ibps.base.web.context.ContextUtil;
 import com.lc.ibps.bpmn.api.cmd.ActionCmd;
@@ -32,6 +33,8 @@ import com.lc.ibps.org.api.IPartyUserService;
 import com.lc.ibps.org.party.persistence.entity.PartyUserPo;
 import org.activiti.engine.impl.entity.SubProcessStartOrEndEventModel;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.core.Ordered;
@@ -57,6 +60,8 @@ import java.util.*;
 @Service
 public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,Ordered {
 
+	private static final Logger LOGGER = LoggerFactory.getLogger(ProcStartEventListener.class);
+
 	@Resource
 	private BpmInstHisRepository bpmInstHisRepository;
 	@Resource
@@ -69,6 +74,8 @@ public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,O
 	private BpmOperNotifyRepository bpmOperNotifyRepository;
 	@Autowired
 	private IPartyUserService partyUserService;
+	@Autowired
+	private ICommonDao<?> commonDao;
 	
 	@Override
 	public void onApplicationEvent(ProcEndEvent ev) {
@@ -168,6 +175,7 @@ public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,O
 		BpmInst bpmInstDomain = bpmInstRepository.newInstance();
 		bpmInstDomain.createHistory(instId);
 		bpmInstDomain.delete(instId);
+		this.updateFlowStatus(instId);
 		Map<String, Object> var = new HashMap<>();
 		var.put("userId",ContextUtil.getCurrentUserId());
 		var.put("instId",instId);
@@ -175,6 +183,23 @@ public class ProcEndEventListener implements ApplicationListener<ProcEndEvent>,O
 		return instance;
 	}
 
+	/**
+	 *  流程结束修改数据状态
+	 * @param instId
+	 */
+	private void updateFlowStatus(String instId){
+		Map<String, Object> hisMap = commonDao.queryOne("SELECT PROC_DEF_KEY_,BIZ_KEY_ FROM ibps_bpm_inst_his WHERE id_ = '" + instId + "' ");
+		if (BeanUtils.isNotEmpty(hisMap)){
+			Map<String, Object> defMap = commonDao.queryOne("select BO_CODE_ from ibps_bpm_def where DEF_KEY_ = '" + hisMap.get("PROC_DEF_KEY_") + "' ");
+			if (BeanUtils.isNotEmpty(defMap)) {
+				commonDao.execute("update t_" + defMap.get("BO_CODE_") + " set shi_fou_guo_shen_ = '已完成' where id_ = '" + hisMap.get("BIZ_KEY_") + "' ");
+				LOGGER.warn("Update Status BIZ_KEY_=" + hisMap.get("BIZ_KEY_"));
+			}
+		}else {
+			LOGGER.warn("Query His By instId is null instId=" +instId);
+		}
+	}
+
 	private DefaultMessage buildSnapshotMessage(Map<String, Object> var){
 		DefaultMessage<String> message = new DefaultMessage<String>();
 

+ 2 - 5
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/mq/consumer/rabbit/RabbitSnapshotMessageQueueConsumer.java

@@ -119,14 +119,11 @@ public class RabbitSnapshotMessageQueueConsumer   {
 
             Map<String, Object> defMap = commonDao.queryOne("select BO_CODE_ from ibps_bpm_def where DEF_KEY_ = '" + hisMap.get("PROC_DEF_KEY_") + "' ");
             if (BeanUtils.isNotEmpty(defMap)) {
-                StringBuilder sql = new StringBuilder();
-                sql.append("update t_").append(defMap.get("BO_CODE_")).append(" set shi_fou_guo_shen_ = '已完成' ");
                 if (result.getState() == 200 && BeanUtils.isNotEmpty(result.getData())) {
-                    sql.append(" , kuai_zhao_ = '").append(result.getData().getId()).append("' ");
+                    String sql = "update t_" + defMap.get("BO_CODE_") + " set kuai_zhao_ = '" + result.getData().getId() + "'  where id_ = '" + hisMap.get("BIZ_KEY_") + "' ";
+                    commonDao.execute(sql);
                     LOGGER.warn("Generated Snapshot ID=" + result.getData().getId());
                 }
-                sql.append(" where id_ = '").append(hisMap.get("BIZ_KEY_")).append("' ");
-                commonDao.execute(sql.toString());
             }
 
         } else{