1.前言
? ? ? ? ?在現(xiàn)有的業(yè)務(wù)邏輯上增加社裆,簡歷手動上傳和插件上傳的控制:
@Component
@Aspect
public class ResumeControAspectextends Observable {
private final static Loggerlogger = LoggerFactory.getLogger(ResumeControAspect.class);
//增加觀察者
? ? public ResumeControAspect(InResumeFlowObserver inResumeFlow, AlreadyEntryResumeObserver alreadyEntryResume, TalentResumeFlowObserver talentResumeFlow, ResumeOutObserver resumeOutObserver) {
this.addObserver(inResumeFlow);//流程中
? ? ? ? this.addObserver(alreadyEntryResume);//已入職處理
? ? ? ? this.addObserver(talentResumeFlow);//事業(yè)部人才庫
? ? ? ? this.addObserver(resumeOutObserver);
? ? }
private ResumeOutVoresumeOutVo;
? ? public void setResumeId(ResumeOutVo resumeOutVo) {
//增加入?yún)?
this.resumeOutVo = resumeOutVo;
//被觀察的東西發(fā)生改變,
? ? ? ? setChanged();
//喚醒觀察者
? ? ? ? notifyObservers(resumeOutVo);
? ? }
@Autowired
? ? private ResumeServiceresumeService;
? ? @Before("excuteService()")
public void doBeforeMethod(JoinPoint joinPoint) {
Object[] obj = joinPoint.getArgs();
? ? ? ? BaseResumeEntity baseResumeEntity =null;
? ? ? ? SysLoginUserDTO sysLoginUserDTO =null;
? ? ? ? ResumeAccessVo? resumeAccessVo =null;
? ? ? ? for (Object argItem : obj) {
if (argIteminstanceof BaseResumeEntity) {
baseResumeEntity = (BaseResumeEntity) argItem;
? ? ? ? ? ? }
if (argIteminstanceof ResumeAccessVo) {
resumeAccessVo = (ResumeAccessVo) argItem;
? ? ? ? ? ? }
if (argIteminstanceof SysLoginUserDTO) {
sysLoginUserDTO = (SysLoginUserDTO) argItem;
? ? ? ? ? ? }
}
if (sysLoginUserDTO.getBussDeptId()==null){
throw? new CustomException("登錄用戶事業(yè)部信息異常");
? ? ? ? }
/***********************************************簡歷上傳****************************************************************************/
? ? ? ? //判斷是不是在該事業(yè)部人才庫中 phone +buss_dept_id
? ? ? ? if (baseResumeEntity !=null && sysLoginUserDTO !=null) {
List bussIds =? sysLoginUserDTO.getAccessibleDeptIds();
? ? ? ? ? ? //根據(jù)部門ID和手機號判斷是否已存在
? ? ? ? ? ? List resumeOutVos =resumeService.selectIdByPhone(baseResumeEntity.getPhone(), bussIds);
? ? ? ? ? ? if (resumeOutVos!=null && resumeOutVos.size()>0){
List collect = resumeOutVos.stream().filter(t -> t.getState().equals(StateEnum.FLOW.getCode())).collect(Collectors.toList());
? ? ? ? ? ? ? ? if (collect.size()>0){
collect.get(0).setOperUserId(sysLoginUserDTO.getId());
? ? ? ? ? ? ? ? ? ? collect.get(0).setBaseResumeEntity(baseResumeEntity);
? ? ? ? ? ? ? ? ? ? for (Object argItem : obj) {
if (argIteminstanceof BaseResumeEntity) {
baseResumeEntity = (BaseResumeEntity) argItem;
? ? ? ? ? ? ? ? ? ? ? ? ? ? //在流程中的簡歷需要繼續(xù)往下走 其他的直接返回
? ? ? ? ? ? ? ? ? ? ? ? ? ? baseResumeEntity.setIsContinue(!StateEnum.FLOW.getCode().equals(collect.get(0).getState())?false:true);
? ? ? ? ? ? ? ? ? ? ? ? }
}
//喚醒觀察者
? ? ? ? ? ? ? ? ? ? setResumeId(collect.get(0));
? ? ? ? ? ? ? ? }else{
resumeOutVos.get(0).setOperUserId(sysLoginUserDTO.getId());
? ? ? ? ? ? ? ? ? ? resumeOutVos.get(0).setBaseResumeEntity(baseResumeEntity);
? ? ? ? ? ? ? ? ? ? for (Object argItem : obj) {
if (argIteminstanceof BaseResumeEntity) {
baseResumeEntity = (BaseResumeEntity) argItem;
? ? ? ? ? ? ? ? ? ? ? ? ? ? baseResumeEntity.setBussDeptId(sysLoginUserDTO.getBussDeptId());
? ? ? ? ? ? ? ? ? ? ? ? ? ? //在流程中的簡歷需要繼續(xù)往下走 其他的直接返回
? ? ? ? ? ? ? ? ? ? ? ? ? ? baseResumeEntity.setIsContinue(!StateEnum.FLOW.getCode().equals(resumeOutVos.get(0).getState())?false:true);
? ? ? ? ? ? ? ? ? ? ? ? }
}
//喚醒觀察者
? ? ? ? ? ? ? ? ? ? setResumeId(resumeOutVos.get(0));
? ? ? ? ? ? ? ? }
}
}
/***********************************************簡歷插件上傳****************************************************************************/
? ? ? ? if (resumeAccessVo!=null && sysLoginUserDTO !=null){
List bussId =? sysLoginUserDTO.getAccessibleDeptIds();
? ? ? ? ? ? //根據(jù)部門ID和手機號判斷是否已存在
? ? ? ? ? ? List resumeOutVos =resumeService.selectIdByPhone(resumeAccessVo.getPhone(), bussId);
? ? ? ? ? ? if (resumeOutVos!=null && resumeOutVos.size()>0){
List collect = resumeOutVos.stream().filter(t -> t.getState().equals(StateEnum.FLOW.getCode())).collect(Collectors.toList());
? ? ? ? ? ? ? ? if (collect.size()>0){
collect.get(0).setOperUserId(sysLoginUserDTO.getId());
? ? ? ? ? ? ? ? ? ? collect.get(0).setResumeAccessVo(resumeAccessVo);
? ? ? ? ? ? ? ? ? ? for (Object argItem : obj) {
if (argIteminstanceof ResumeAccessVo) {
resumeAccessVo = (ResumeAccessVo) argItem;
? ? ? ? ? ? ? ? ? ? ? ? ? ? //在流程中的簡歷需要繼續(xù)往下走 其他的直接返回
? ? ? ? ? ? ? ? ? ? ? ? ? ? resumeAccessVo.setIsContinue(!StateEnum.FLOW.getCode().equals(collect.get(0).getState())?false:true);
? ? ? ? ? ? ? ? ? ? ? ? }
}
setResumeId(collect.get(0));
? ? ? ? ? ? ? ? }else{
resumeOutVos.get(0).setOperUserId(sysLoginUserDTO.getId());
? ? ? ? ? ? ? ? ? ? resumeOutVos.get(0).setResumeAccessVo(resumeAccessVo);
? ? ? ? ? ? ? ? ? ? for (Object argItem : obj) {
if (argIteminstanceof ResumeAccessVo) {
resumeAccessVo = (ResumeAccessVo) argItem;
? ? ? ? ? ? ? ? ? ? ? ? ? ? resumeAccessVo.setBussDeptId(sysLoginUserDTO.getBussDeptId());
? ? ? ? ? ? ? ? ? ? ? ? ? ? //在流程中的簡歷需要繼續(xù)往下走 其他的直接返回
? ? ? ? ? ? ? ? ? ? ? ? ? ? resumeAccessVo.setIsContinue(!StateEnum.FLOW.getCode().equals(resumeOutVos.get(0).getState())?false:true);
? ? ? ? ? ? ? ? ? ? ? ? }
}
setResumeId(resumeOutVos.get(0));
? ? ? ? ? ? ? ? }
}
}
}
@Pointcut(value ="@annotation(ResumeContro)")
public void excuteService() {
}
}