package cn.iocoder.yudao.module.mes.service.qc.seedquality.listener;
|
|
import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
|
import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
|
import cn.iocoder.yudao.module.mes.service.qc.seedquality.MesQcSeedQualityService;
|
import jakarta.annotation.Resource;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
/**
|
* 种子质检公司质检审批状态监听器
|
*
|
* <p>流程定义 key:mes_seed_quality_company_approve;businessKey 为生产批次号。
|
* 该批次双线质检全部完成后只发起一次该流程,审批完成后按每个袋的两条线结果统一放行或报废。
|
*/
|
@Component
|
@Slf4j
|
public class MesQcSeedCompanyStatusListener extends BpmProcessInstanceStatusEventListener {
|
|
private static final String BPM_PROCESS_DEFINITION_KEY = "mes_seed_quality_company_approve";
|
|
@Resource
|
private MesQcSeedQualityService seedQualityService;
|
|
@Override
|
protected String getProcessDefinitionKey() {
|
return BPM_PROCESS_DEFINITION_KEY;
|
}
|
|
@Override
|
protected void onEvent(BpmProcessInstanceStatusEvent event) {
|
if (!BpmProcessInstanceStatusEnum.isProcessEndStatus(event.getStatus())
|
|| BpmProcessInstanceStatusEnum.CANCEL.getStatus().equals(event.getStatus())) {
|
return;
|
}
|
String businessKey = event.getBusinessKey();
|
if (businessKey == null || businessKey.isBlank()) {
|
log.warn("[onEvent][公司质检审批 businessKey 为空,忽略]");
|
return;
|
}
|
boolean approved = BpmProcessInstanceStatusEnum.APPROVE.getStatus().equals(event.getStatus());
|
log.info("[onEvent][公司质检审批完成,批次={} 结果={}]", businessKey, event.getStatus());
|
seedQualityService.handleCompanyProcessResult(event.getId(), businessKey, approved, event.getReason());
|
}
|
}
|