import cn.com.taiji.common.manager.net.http.ServiceHandleException; | import cn.com.taiji.common.manager.net.http.ServiceHandleException; | ||||
import cn.com.taiji.core.entity.dict.issue.TransactionBizType; | import cn.com.taiji.core.entity.dict.issue.TransactionBizType; | ||||
import cn.com.taiji.core.entity.issue.TransactionStatus; | import cn.com.taiji.core.entity.issue.TransactionStatus; | ||||
import cn.com.taiji.core.entity.log.InssInterfaceLog; | |||||
import cn.com.taiji.core.manager.comm.LogManager; | |||||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackRequest; | import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackRequest; | ||||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackResponse; | import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackResponse; | ||||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | ||||
import cn.com.taiji.core.repo.jpa.issue.TransactionStatusRepo; | import cn.com.taiji.core.repo.jpa.issue.TransactionStatusRepo; | ||||
import cn.com.taiji.core.repo.jpa.log.InssInterfaceLogRepo; | |||||
import cn.com.taiji.inss.manager.cache.RedisWrapManager; | import cn.com.taiji.inss.manager.cache.RedisWrapManager; | ||||
import cn.com.taiji.inss.manager.model.inst.IssueOrderVO; | import cn.com.taiji.inss.manager.model.inst.IssueOrderVO; | ||||
import com.google.common.collect.Maps; | import com.google.common.collect.Maps; | ||||
import static cn.com.taiji.inss.manager.model.inst.InstConstant.CMD_SUCCESS; | import static cn.com.taiji.inss.manager.model.inst.InstConstant.CMD_SUCCESS; | ||||
public abstract class AbstractCallBackManager extends AbstractManager { | |||||
public abstract class AbstractCallBackManager extends AbstractManager implements LogManager<InstCallBackRequest, InstCallBackResponse, InssInterfaceLog> { | |||||
@Autowired | @Autowired | ||||
private RedisWrapManager redisWrapManager; | private RedisWrapManager redisWrapManager; | ||||
@Autowired | @Autowired | ||||
private TransactionStatusRepo transactionStatusRepo; | private TransactionStatusRepo transactionStatusRepo; | ||||
@Autowired | |||||
private InssInterfaceLogRepo logRepo; | |||||
protected Map<Integer, AbstractCommandHandler> cmdHandlers = Maps.newHashMap(); | protected Map<Integer, AbstractCommandHandler> cmdHandlers = Maps.newHashMap(); | ||||
public final InstCallBackResponse serviceHandle(InstCallBackRequest request) throws ServiceHandleException { | public final InstCallBackResponse serviceHandle(InstCallBackRequest request) throws ServiceHandleException { | ||||
//读缓存 | |||||
IssueOrderVO vo = readCache(request.getTransOrderId()); | |||||
//业务校验 | |||||
valid(request, vo); | |||||
//上一步指令执行成功保存数据 | |||||
saveData(vo); | |||||
//初始化flag | |||||
vo.initFlag(); | |||||
//业务处理 | |||||
CommandHandler cmdHandler = cmdHandlers.get(request.getStepNo()); | |||||
if (cmdHandler == null) | |||||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("未找到处理模块,请联系管理员"); | |||||
InstCallBackResponse response = cmdHandler.doHandle(request, vo); | |||||
//写缓存 | |||||
writeCache(cmdHandler.getOrderVo()); | |||||
return response.setStepNo(nextStep(vo, request)).setTransOrderId(request.getTransOrderId()); | |||||
try { | |||||
long begin = System.currentTimeMillis(); | |||||
//读缓存 | |||||
IssueOrderVO vo = readCache(request.getTransOrderId()); | |||||
//业务校验 | |||||
valid(request, vo); | |||||
//上一步指令执行成功保存数据 | |||||
saveData(vo); | |||||
//初始化flag | |||||
vo.initFlag(); | |||||
//业务处理 | |||||
CommandHandler cmdHandler = cmdHandlers.get(request.getStepNo()); | |||||
if (cmdHandler == null) | |||||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("未找到处理模块,请联系管理员"); | |||||
InstCallBackResponse response = cmdHandler.doHandle(request, vo); | |||||
//写缓存 | |||||
writeCache(cmdHandler.getOrderVo()); | |||||
response.setStepNo(nextStep(vo, request)).setTransOrderId(request.getTransOrderId()); | |||||
return onSuccess(request, response, InssInterfaceLog.class, System.currentTimeMillis() - begin); | |||||
} catch (ServiceHandleException e) { | |||||
throw exception(request, InssInterfaceLog.class, e.getMessage()); | |||||
} | |||||
} | } | ||||
abstract void validInternal(InstCallBackRequest request, IssueOrderVO vo) throws ServiceHandleException; | abstract void validInternal(InstCallBackRequest request, IssueOrderVO vo) throws ServiceHandleException; | ||||
tx.setInfo(info); | tx.setInfo(info); | ||||
transactionStatusRepo.persist(tx); | transactionStatusRepo.persist(tx); | ||||
} | } | ||||
@Override | |||||
public void doSaveLog(InstCallBackRequest request, InstCallBackResponse response, InssInterfaceLog log) { | |||||
logRepo.persist(log); | |||||
} | |||||
} | } |
import cn.com.taiji.core.entity.invw.InvwObuDetails; | import cn.com.taiji.core.entity.invw.InvwObuDetails; | ||||
import cn.com.taiji.core.entity.invw.InvwWarehouse; | import cn.com.taiji.core.entity.invw.InvwWarehouse; | ||||
import cn.com.taiji.core.entity.issue.IssueOrderinfo; | import cn.com.taiji.core.entity.issue.IssueOrderinfo; | ||||
import cn.com.taiji.core.entity.log.InssInterfaceLog; | |||||
import cn.com.taiji.core.manager.cache.RedisCacheManager; | import cn.com.taiji.core.manager.cache.RedisCacheManager; | ||||
import cn.com.taiji.core.manager.comm.LogManager; | |||||
import cn.com.taiji.core.manager.tools.issue.QdCallUtil; | import cn.com.taiji.core.manager.tools.issue.QdCallUtil; | ||||
import cn.com.taiji.core.model.comm.protocol.ats.notice.AtsChannelNoticeResponse; | import cn.com.taiji.core.model.comm.protocol.ats.notice.AtsChannelNoticeResponse; | ||||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstApplyRequest; | import cn.com.taiji.core.model.comm.protocol.inss.inst.InstApplyRequest; | ||||
import cn.com.taiji.core.repo.jpa.invw.InvwObuDetailsRepo; | import cn.com.taiji.core.repo.jpa.invw.InvwObuDetailsRepo; | ||||
import cn.com.taiji.core.repo.jpa.invw.InvwWarehouseRepo; | import cn.com.taiji.core.repo.jpa.invw.InvwWarehouseRepo; | ||||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoRepo; | import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoRepo; | ||||
import cn.com.taiji.core.repo.jpa.log.InssInterfaceLogRepo; | |||||
import cn.com.taiji.inss.manager.model.MyFinals; | import cn.com.taiji.inss.manager.model.MyFinals; | ||||
import cn.com.taiji.inss.manager.model.inst.CmdType; | import cn.com.taiji.inss.manager.model.inst.CmdType; | ||||
import cn.com.taiji.inss.manager.model.inst.InstConstant; | import cn.com.taiji.inss.manager.model.inst.InstConstant; | ||||
import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||
@Service | @Service | ||||
public class InstApplyManager extends RedisCacheManager { | |||||
public class InstApplyManager extends RedisCacheManager implements LogManager<InstApplyRequest, InstApplyResponse, InssInterfaceLog> { | |||||
@Autowired | @Autowired | ||||
private IssueOrderinfoRepo orderInfoRepo; | private IssueOrderinfoRepo orderInfoRepo; | ||||
@Autowired | @Autowired | ||||
private InvwWarehouseRepo warehouseRepo; | private InvwWarehouseRepo warehouseRepo; | ||||
@Autowired | @Autowired | ||||
private InssInterfaceLogRepo logRepo; | |||||
@Autowired | |||||
private QdCallUtil qdCallUtil; | private QdCallUtil qdCallUtil; | ||||
public InstApplyResponse serviceHandle(InstApplyRequest req) throws ServiceHandleException { | |||||
IssueOrderinfo orderInfo = orderInfoRepo.findByOrderNo(req.getOrderNo()); | |||||
if (orderInfo == null) { | |||||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单不存在"); | |||||
} | |||||
// 业务校验 | |||||
businessValidate(orderInfo, req); | |||||
public InstApplyResponse serviceHandle(InstApplyRequest request) throws ServiceHandleException { | |||||
try { | |||||
long begin = System.currentTimeMillis(); | |||||
IssueOrderinfo orderInfo = orderInfoRepo.findByOrderNo(request.getOrderNo()); | |||||
if (orderInfo == null) { | |||||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单不存在"); | |||||
} | |||||
// 业务校验 | |||||
businessValidate(orderInfo, request); | |||||
// 指令回传所需信息加入缓存.有效期 20 秒 | |||||
String transOrderId = UUID.randomUUID().toString().replace("-", ""); | |||||
IssueOrderVO vo = new IssueOrderVO(transOrderId, orderInfo.getVehicleId(), orderInfo.getCustomerId(), | |||||
orderInfo.getOrderNo(), orderInfo.getOrderSource(), orderInfo.getProductId()); | |||||
vo.setCardId(req.getCardId()); | |||||
vo.setObuId(req.getObuId()); | |||||
vo.setCardVersion(req.getCardVersion()); | |||||
vo.setObuVersion(req.getObuVersion()); | |||||
redisManager.set(MyFinals.ISSUE_KEY + transOrderId, vo.toJson(), 300000, TimeUnit.SECONDS); | |||||
// 指令回传所需信息加入缓存.有效期 20 秒 | |||||
String transOrderId = UUID.randomUUID().toString().replace("-", ""); | |||||
IssueOrderVO vo = new IssueOrderVO(transOrderId, orderInfo.getVehicleId(), orderInfo.getCustomerId(), | |||||
orderInfo.getOrderNo(), orderInfo.getOrderSource(), orderInfo.getProductId()); | |||||
vo.setCardId(request.getCardId()); | |||||
vo.setObuId(request.getObuId()); | |||||
vo.setCardVersion(request.getCardVersion()); | |||||
vo.setObuVersion(request.getObuVersion()); | |||||
redisManager.set(MyFinals.ISSUE_KEY + transOrderId, vo.toJson(), 300000, TimeUnit.SECONDS); | |||||
if (vo.getCardStatus() == CardStatus.ZC) { | |||||
return new InstApplyResponse(9, InstConstant.GET_CARD_CMD, | |||||
CmdType.CARD.value(), transOrderId); | |||||
} else { | |||||
return new InstApplyResponse(1, InstConstant.HOME_DIRECTORY, | |||||
CmdType.CARD.value(), transOrderId); | |||||
if (vo.getCardStatus() == CardStatus.ZC) { | |||||
return onSuccess(request, new InstApplyResponse(9, InstConstant.GET_CARD_CMD, | |||||
CmdType.CARD.value(), transOrderId), InssInterfaceLog.class, System.currentTimeMillis() - begin); | |||||
} else { | |||||
return onSuccess(request, new InstApplyResponse(1, InstConstant.HOME_DIRECTORY, | |||||
CmdType.CARD.value(), transOrderId), InssInterfaceLog.class, System.currentTimeMillis() - begin); | |||||
} | |||||
} catch (ServiceHandleException e) { | |||||
throw exception(request, InssInterfaceLog.class, e.getMessage()); | |||||
} | } | ||||
} | } | ||||
private void businessValidate(IssueOrderinfo orderInfo, InstApplyRequest req) throws ServiceHandleException { | private void businessValidate(IssueOrderinfo orderInfo, InstApplyRequest req) throws ServiceHandleException { | ||||
} | } | ||||
} | } | ||||
@Override | |||||
public void doSaveLog(InstApplyRequest request, InstApplyResponse response, InssInterfaceLog log) { | |||||
logRepo.persist(log); | |||||
} | |||||
} | } |
import cn.com.taiji.common.manager.ManagerException; | import cn.com.taiji.common.manager.ManagerException; | ||||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | import cn.com.taiji.common.manager.net.http.ServiceHandleException; | ||||
import cn.com.taiji.core.entity.basic.QtkCustomerInfo; | import cn.com.taiji.core.entity.basic.QtkCustomerInfo; | ||||
import cn.com.taiji.core.entity.dict.issue.ExcuteByVfjStep; | |||||
import cn.com.taiji.core.entity.issue.VfjCOSRecord; | import cn.com.taiji.core.entity.issue.VfjCOSRecord; | ||||
import cn.com.taiji.core.model.comm.COSConstant; | import cn.com.taiji.core.model.comm.COSConstant; | ||||
import cn.com.taiji.core.model.comm.protocol.FormatException; | import cn.com.taiji.core.model.comm.protocol.FormatException; |
import cn.com.taiji.core.entity.invw.InvwObuDetails; | import cn.com.taiji.core.entity.invw.InvwObuDetails; | ||||
import cn.com.taiji.core.entity.issue.IssueOrderinfo; | import cn.com.taiji.core.entity.issue.IssueOrderinfo; | ||||
import cn.com.taiji.core.entity.issue.IssueProduct; | import cn.com.taiji.core.entity.issue.IssueProduct; | ||||
import cn.com.taiji.core.entity.log.InssInterfaceLog; | |||||
import cn.com.taiji.core.manager.tools.issue.QdCallUtil; | import cn.com.taiji.core.manager.tools.issue.QdCallUtil; | ||||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackRequest; | import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackRequest; | ||||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackResponse; | |||||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | ||||
import cn.com.taiji.core.repo.jpa.basic.*; | import cn.com.taiji.core.repo.jpa.basic.*; | ||||
import cn.com.taiji.core.repo.jpa.invw.InvwCardDetailsRepo; | import cn.com.taiji.core.repo.jpa.invw.InvwCardDetailsRepo; | ||||
} | } | ||||
} | } | ||||
} | } |