package com.vci.web.other; import com.vci.bo.FlowNoticeInfo; import com.vci.corba.common.PLException; import com.vci.corba.omd.data.BusinessObject; import com.vci.omd.utils.ObjectTool; import com.vci.starter.web.annotation.FlowNotifyBefore; import com.vci.starter.web.annotation.FlowNotifyWeb; import com.vci.web.service.WebBoServiceI; import com.vci.web.util.PlatformClientUtil; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Description: 流程终止时,恢复CodeAllCode状态 * * @author LiHang * @date Created on 2022/5/6 */ @FlowNotifyWeb public class WorkFlowEndedNotice { /** * 当前类的日志输出 */ private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private WebBoServiceI boService; @Autowired private PlatformClientUtil platformClientUtil; @FlowNotifyBefore public void callBefore(FlowNoticeInfo noticeInfo) { try { if ("end".equals(noticeInfo.getOutcome())) { logger.info("当前是流程终止操作,开始恢复编码生命周期"); List finishItemList = noticeInfo.getFinishItemList(); String wfOid = String.valueOf(finishItemList.get(finishItemList.size() - 1).get("oid")); if (StringUtils.isBlank(wfOid)) { logger.info("没有找到流程主键"); return; } String sql = "SELECT T_OID,T_BTWNAME FROM PLT_INPUT WHERE F_OID = '" + wfOid + "'"; List queryResult = boService.queryBySql(sql, new HashMap<>()); if (queryResult.size() == 0) { logger.info("没有找到业务数据"); return; } String btmName = ObjectTool.getBOAttributeValue(queryResult.get(0),"t_btwname"); String oid = ObjectTool.getBOAttributeValue(queryResult.get(0),"t_oid"); String querySql = "select cac.oid from PBT_CODEALLCODE cac\n" + " left join PBT_" + btmName + " wp on cac.CREATECODEOID = wp.OID\n" + " where wp.OID = '" + oid + "'"; Map conditionMap = new HashMap<>(); conditionMap.put("oid", oid); List codeResult = boService.queryCBO(btmName, conditionMap); conditionMap.clear(); conditionMap.put("createCodeOid", ObjectTool.getBOAttributeValue(queryResult.get(0),"oid")); List allCodeList = boService.queryCBO("codeAllCode", conditionMap); if (allCodeList.size() == 0) { logger.info("没有找到编码"); return; } for (BusinessObject codeAllCode : allCodeList) { codeAllCode.lcStatus = "Editing"; ObjectTool.setBOAttributeValue(codeAllCode,"lcstatus", "Editing"); } platformClientUtil.getBOFService().batchUpdateBusinessObject(allCodeList.toArray(new BusinessObject[0])); logger.info("编码生命周期恢复完成"); } } catch (PLException e) { e.printStackTrace(); } } }