package com.fjhx.purchase.flow; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fjhx.common.constant.SourceConstant; import com.fjhx.flow.core.FlowDelegate; import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum; import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum; import com.fjhx.purchase.entity.subscribe.po.Subscribe; import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail; import com.fjhx.purchase.service.subscribe.SubscribeDetailService; import com.fjhx.purchase.service.subscribe.SubscribeService; import com.fjhx.purchase.util.code.CodeEnum; import com.obs.services.internal.ServiceException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; /** * @Author:yzc * @DATE:2023/4/20 19:16 */ @DS(SourceConstant.PURCHASE) @Component public class SubscribeFlowByWdly extends FlowDelegate { @Autowired private SubscribeFlow subscribeFlow; @Override public String getFlowKey() { return "wdly_apply_purchase"; } /** * 发起流程 * @param flowId 流程ID * @param submitData 申购数据 * @return */ @Override public Long start(Long flowId, JSONObject submitData) { SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class); SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class); Subscribe subscribe = submitData.toJavaObject(Subscribe.class); subscribe.setCode(CodeEnum.SUBSCRIBE.getCode()); subscribe.setProcessInstanceId("wdly_apply_purchase"); subscribe.setFlowId(flowId); subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey()); subscribeService.save(subscribe); List SubscribeDetails = subscribe.getSubscribeDetailList(); if(CollectionUtils.isNotEmpty(SubscribeDetails)){ for(SubscribeDetail s : SubscribeDetails){ s.setSubscribeId(subscribe.getId()); } subscribeDetailService.saveBatch(SubscribeDetails); } return subscribe.getId(); } /** * 结束流程 * @param flowId 流程ID * @param businessId 业务ID * @param submitData 数据 */ @Override public void end(Long flowId, Long businessId, JSONObject submitData) { subscribeFlow.end(flowId,businessId,submitData); } }