@Override
// 事务注解
@Transactional
public String insertByBo(EhsExaminationBo bo) {
String flag = remoteEsbService.zkGetPerson(bo, SecurityConstants.INNER);
EhsExamination add = BeanUtil.toBean(bo, EhsExamination.class);
validEntityBeforeSave(add);
add.setDelFlag("0");
String id = IdWorker.getIdStr();
add.setId(id);
List<EhsExaminationResult> ehsExaminationResults = new ArrayList<>();
if (bo.getPastHistoryList() != null && bo.getPastHistoryList().size() > 0) {
ehsExaminationResults.addAll(bo.getPastHistoryList());// 既往史
}
if (bo.getPersonalHistoryList() != null && bo.getPersonalHistoryList().size() > 0) {
ehsExaminationResults.addAll(bo.getPersonalHistoryList()); // 个人史
}
if (bo.getFamilyHistoryList() != null && bo.getFamilyHistoryList().size() > 0) {
ehsExaminationResults.addAll(bo.getFamilyHistoryList()); // 家族史
}
if (bo.getRecentHealthList() != null && bo.getRecentHealthList().size() > 0) {
ehsExaminationResults.addAll(bo.getRecentHealthList()); // 近期健康情况
}
if (ehsExaminationResults.size() > 0) {
for (EhsExaminationResult ehsExaminationResult : ehsExaminationResults) {
ehsExaminationResult.setExaminationId(add.getId());
}
ehsExaminationResultMapper.insertBatch(ehsExaminationResults);
}
bo.setPhysicalId(flag);
bo.setEhsExaminationResults(ehsExaminationResults);
add.setPushSuccess("1");
int i=baseMapper.insert(add);
if(i>0){
bo.setId(add.getId());
// 调用异步方法
wjAsync.async(bo);
}
return add.getId();
}
办法就是异步方法抽出来单独做一个类
import cn.hutool.core.bean.BeanUtil;
import com.qc.common.core.constant.SecurityConstants;
import com.qc.hms.api.esb.RemoteEsbService;
import com.qc.hms.api.serve.eval.domain.EhsExamination;
import com.qc.hms.api.serve.eval.domain.bo.EhsExaminationBo;
import com.qc.hms.serve.eval.mapper.EhsExaminationMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
@Slf4j
@RequiredArgsConstructor
public class WjAsync {
@Autowired
private RemoteEsbService remoteEsbService;
private final EhsExaminationMapper baseMapper;
// 异步注解
@Async
public Boolean async(EhsExaminationBo bo){
Boolean flag=true;
EhsExamination update = BeanUtil.toBean(bo, EhsExamination.class);
update.setPushSuccess("0");
log.info("检前问卷实体======" +bo.toString());
try {
flag=remoteEsbService.zkWjResult(bo, SecurityConstants.INNER);
if(!flag){
baseMapper.updateById(update);
log.info(bo.getStaffName()+"======推送失败,接口返回失败");
}
log.info(bo.getStaffName()+"========推送成功");
return flag;
}catch (Exception e){
baseMapper.updateById(update);
log.info(bo.getStaffName()+"======推送失败,接口调用失败");
return flag;
}
}
}