@Transactional(rollbackFor = Exception.class)
@Override
public Map<String,Object> getOderInfo(String processInstanceId) {
Map<String,Object> map=new HashMap<String,Object>();
SapOrderAll sapOrderAll=new SapOrderAll();
SapProcessPurchaseOrder sapProcessPurchaseOrder=purchaseOrderMapper.getOderInfo(processInstanceId);
sapOrderAll.setMaster(sapProcessPurchaseOrder);
sapOrderAll.setCompany(sapProcessPurchaseOrder.getCompany());
System.out.println("processInstanceId======"+processInstanceId+"---------sapProcessPurchaseOrder========="+sapProcessPurchaseOrder);
if(null!=sapProcessPurchaseOrder){
String orderNumber=sapProcessPurchaseOrder.getOrderNumber();
//获取采购订单明细
List<SapProcessPurchaseOrderDetail>list=purchaseOrderDetailMapper.getSapOrderDetail(orderNumber);
sapOrderAll.setSlave(list);
}
//先修改采购申请单数据
if(null!=sapOrderAll && null!=sapOrderAll.getSlave()){
List<PurchaseRequestLine> purchaseRequestList=new ArrayList<PurchaseRequestLine>();
List<SapProcessPurchaseOrderDetail>listRequest= sapOrderAll.getSlave();
System.out.println("采购订单信息反馈给采购申请单listRequest================="+listRequest);
if(null!=listRequest && listRequest.size()>0){
for (SapProcessPurchaseOrderDetail OrderDetail :listRequest){
PurchaseRequestLine purchaseRequestLine=new PurchaseRequestLine();
//将数据封装成 采购申请单需要的类型
purchaseRequestLine.setId(OrderDetail.getRequestId());
purchaseRequestLine.setQuantity(new BigDecimal(OrderDetail.getQuantity()));
log.info("采购订单信息反馈给采购申请单purchaseRequestLine================="+purchaseRequestLine);
//将数据放入list中
purchaseRequestList.add(purchaseRequestLine);
}
}
//插入sapc成功后信息返回给 采购申请单
log.info("插入sapc成功后信息返回给purchaseRequestList================="+purchaseRequestList);
boolean msg=purchaseRequestLineService.updateQuantity(purchaseRequestList);
log.info("插入sapc成功后信息返回给 采购申请单msg========="+msg);
//判断反馈给采购申请单是否成功
if(!msg){
throw new RuntimeException("修改采购申请单失败");
}
//数据进入sap
if(msg){
String json=new JSONObject().toJSONString(sapOrderAll);
log.info("json================"+json);
String url = SapConstant.PURCHASEORDER_CREATE;
String itemStr = HttpUtil.doJsonPost(url,json, SapUtil.getReadToken());
log.info("itemStr====================="+itemStr);
map.put("itemStr",itemStr);//将sap返回信息放入map中
//字符串转json
SapReturnResult sapReturnResult = JSONObject.parseObject(itemStr,SapReturnResult.class);
log.info("map=================="+itemStr);
//map.get("data")中有值说明 插入sap成功
if(sapReturnResult.isSuccess()){
updateResult(true,sapOrderAll.getMaster().getOrderNumber(),"写入sap成功,修改采购订单数量成功",sapReturnResult.getData());
}else {
throw new RuntimeException("插入sap失败");
}
}
}else{
map.put("msg",false);
map.put("data","查询要写入sap的数据为空");
map.put("itemStr","");
return map;
}
map.put("msg",true);
map.put("data","写入sap成功");
map.put("itemStr","");
return map;
} /**
* 根据执行结果判断插入采购订单是否成功
*/
public void updateResult(boolean mags,String orderNumber,String hint,String sapData){
log.info("根据执行结果判断插入采购订单是否成功mags====="+mags+"-----orderNumber========="+orderNumber+"--hint====="+hint);
//调用接口修改才有订单的状态值
if(mags){
//返回结果为true
purchaseOrderMapper.updateOderInfo("true"+hint,orderNumber,sapData);
}else {
//返回结果为false
purchaseOrderMapper.updateOderInfo("false"+hint,orderNumber,sapData);
}
}

  

采购订单写入sap失败后,抛出自定义异常,回滚数据库的更多相关文章

  1. 浅析调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException

    废话不多说,直接进入正题:如何使用JSR303的validate,进行数据校验,失败后直接抛出异常加入流转信息中,并在form页面提示出来. 首先我们为了启用验证,需要向 项目中添加Bean验证的实现 ...

  2. SQL Server 抛出自定义异常,由C#程序俘获之并进行相应的处理

    最近一直在找可以自定义异常,并用C#程序捕获并进行相应的处理,试了很多方法都没有成功.今天终于找到了不错的方法.所以转载并分享给大家. 摘自:http://www.cnblogs.com/scottc ...

  3. 抛出自定义异常,spring AOP事务不回滚的解决方案

    spring AOP 默认对RuntimeException()异常或是其子类进行事务回滚,也就是说 事务回滚:throw new RuntimeException("xxxxxxxxxxx ...

  4. 事务场景中,抛出异常被catch后,如果需要回滚,一定要手动回滚事务

    Spring使用声明式事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback:如果发生的异常是checked异常,默认情况下数据库操作还是会 ...

  5. 日常Bug排查-抛异常不回滚

    日常Bug排查-抛异常不回滚 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. Bug现场 最近有人反映java应用操作数据库的时候,抛异 ...

  6. 解决在SharePoint 2010/2013部署自己的Event Handler后,抛出”不能载入被引用的第三方的程序集&quot;的问题

    今天在处理客户的一个问题的时候.我们已经把我们SharePoint EventHandler依赖的第三方的TIBCO.EMS.dll注冊到GAC里面了,可是日志里面还是抛出了不能载入被引用的第三方的程 ...

  7. Python--day41--事件和信号量之模拟连接数据库并在连接三次后抛出连接超时异常

    #事件被创建的时候#False状态 #wait()阻塞#True状态 #wait() 非阻塞#clear 设置状态为False#set 设置状态为True #数据库 --- 文件夹#文件夹里有好多ex ...

  8. 自定义Exception:MVC抛出自定义异常,并以Json方式返回

    相关链接 优点: 可以统一处理所有页面的异常,对所有需要返回json数据的异常,都用同样的方法throw new DVMException().页面展示,controller的错误处理方式一样 节省编 ...

  9. python7.2抛出自定义异常

    pwd="123456"if len(pwd)<8: ex= Exception("密码不能低于8位数!")#自定义异常 raise ex #抛出自定义的 ...

随机推荐

  1. BootstrapBlazor 组件库使用体验---Table篇

    原文地址:https://www.cnblogs.com/ysmc/p/13323242.html Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 Ja ...

  2. 如何破解QQ闪照

    1.如何下载 通过公主公众号 "全是软件" 然后输入 294 即可获得下载链接 https://qsrj.lanzous.com/iU4Hddnnmne 目前的闪照破解工具只能破解 ...

  3. 混合云存储打开的正确姿势——腾讯云存储网关 CSG

    近年来,随着云计算的发展,越来越多的企业选择将IT系统基础设施转移到云上,上云有助于推动企业加快信息化.数字化.智能化的转型,但是很多企业对传统的业务系统依赖程度较高,短时间内将业务迁移上云将会面临很 ...

  4. mybatis批量修改数据

    xxxMapper.xml: <update id="updateSensorWarnings" parameterType="java.util.List&quo ...

  5. 2020武汉dotNET俱乐部分享交流圆满结束

    经过长达2个多月的准备,终于在12月5日圆满的举行了武汉首届dotNET俱乐部线下分享交流活动.我们一共精心准备了3个目前比较热门的主题,分别如下: Jason分享的<ABP开发框架的扩展应用& ...

  6. Trie 练习记录

    蒟蒻以前写的逊爆讲解 Trie CF665E Beautiful Subarrays 代码 把之前每个前缀和放进 trie 树里,然后 trie 树上查询即可. CF37C Old Berland L ...

  7. hashmap底层:jdk1.8前后的改变

    将hashmap和currenthashmap放一块进行比较,是因为二者的结构相差不多,只不过后者是线程安全的. 首先说hashmap,在jdk1.8之前,hashmap的存储结构是数组+链表的形式, ...

  8. 小白都看得懂的Javadoc上手教程

    Javadoc是什么 官方回答: Javadoc is a tool for generating API documentation in HTML format from doc comments ...

  9. 【网盘下载加速器】可爆破提取码 加速高达20M以上

    [软件名称]:网盘下载加速   [软件版本]:1.0.0   [软件大小]:3.95MB   [支持系统]:Android,4.4+及更高版本   [测试系统]:小米   [使用说明]:一款小巧的网盘 ...

  10. 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于Jsoup)

    1. 跨站点脚本编制   风险:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务.   原因:未对用户输入正确执行危险字符清 ...