package com.vci.web.other; import com.vci.client.bof.ClientBusinessObject; import com.vci.client.bof.ClientBusinessObjectOperation; import com.vci.corba.common.PLException; import com.vci.web.annotation.FlowNotifyBefore; import com.vci.web.annotation.FlowNotifyWeb; import com.vci.web.bo.FlowNoticeInfo; import com.vci.web.service.WebBoServiceI; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import java.util.*; /** * Description: 流程终止时,恢复CodeAllCode状态 * * @author LiHang * @date Created on 2022/5/6 */ @FlowNotifyWeb public class WorkFlowEndedNotice { /** * 当前类的日志输出 */ private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private WebBoServiceI boService; @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 PLATFORMLT_INPUT WHERE F_OID = '" + wfOid + "'"; ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation(); List queryResult = boService.queryBySql(sql, new HashMap<>()); if (queryResult.size() == 0) { logger.info("没有找到业务数据"); return; } String btmName = queryResult.get(0).getAttributeValue("t_btwname"); String oid = queryResult.get(0).getAttributeValue("t_oid"); String querySql = "select cac.oid from PLATFORMBTM_CODEALLCODE cac\n" + " left join PLATFORMBTM_" + 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", codeResult.get(0).getAttributeValue("oid")); List allCodeList = boService.queryCBO("codeAllCode", conditionMap); if (allCodeList.size() == 0) { logger.info("没有找到编码"); return; } for (com.vci.client.bof.ClientBusinessObject codeAllCode : allCodeList) { codeAllCode.setLcStatus("Editing"); codeAllCode.setAttributeValue("lcstatus", "Editing"); } operation.batchUpdateBuinessObject(allCodeList.toArray(new ClientBusinessObject[0])); logger.info("编码生命周期恢复完成"); } } catch (PLException e) { e.printStackTrace(); } } }