泛微 事务回滚相关方法

一、事务回滚相关方法
RecordSetTrans rs = new RecordSetTrans();//创建事务

rs.setAutoCommit(false);//开启手动提交
rs.rollback();//回滚

rs.commit();//提交
二、具体例子
package weaversj.webservice.workflow.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import weaver.general.Util;
import weaversj.util.BigDecimalArithUtil;
import weaversj.util.InsertOrUpdateTableUtil;
import weaversj.util.LogInfoUtil;
import weaversj.util.WeaverSJUtil;

public class OptionBudgetAction {
private static LogInfoUtil logs = new LogInfoUtil(“budget_ys”);
private static final String info = “【预算管理】”;

private String mess = "";
private String nowDate = "";
public synchronized String execute(String type,String reqs) {
	logs.logWriter("---reqs----"+reqs);
	JSONObject returnJson = new JSONObject();
	try {
		JSONArray jsonArrData = JSONArray.parseArray(reqs);
		nowDate = WeaverSJUtil.getNowDate("yyyy-MM-dd");
		if("".equals(type)) {
			returnJson.put("code", 1);
			returnJson.put("mess", "type 为空");
			return returnJson.toString();
		}
		
		
		if(jsonArrData.size() == 0) {
			returnJson.put("code", 1);
			returnJson.put("mess", "reqs 为空");
			return returnJson.toString();
		}
		
		for(int i=0;i<jsonArrData.size();i++) {
			JSONObject jsonData = jsonArrData.getJSONObject(i);
			String xmbh = Util.null2String(jsonData.get("projectCode"));
			String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
			String linNum = Util.null2String(jsonData.get("linNum"));
			String reqNum = Util.null2String(jsonData.get("reqNum"));

			if("".equals(xmbh)) {
				returnJson.put("code", 1);
				returnJson.put("mess", "xmbh 为空");
				return returnJson.toString();
			}
			if("".equals(linNum)) {
				returnJson.put("code", 1);
				returnJson.put("mess", "linNum 为空");
				return returnJson.toString();
			}
			if("".equals(reqNum)) {
				returnJson.put("code", 1);
				returnJson.put("mess", "reqNum 为空");
				return returnJson.toString();
			}
			if(("0".equals(type)||"1".equals(type)||"2".equals(type))&&"".equals(budgetMoney)) {
				returnJson.put("code", 1);
				returnJson.put("mess", "金额必填");
				return returnJson.toString();
			}
		}
		
		
		if("4".equals(type)) {
			returnJson.put("code", 0);
			returnJson.put("mess", "success");
			returnJson.put("data",getBudgetData(jsonArrData));
		}else if("0".equals(type)) {
			if(ZYBudget(jsonArrData)) {
				returnJson.put("code", 0);
				returnJson.put("mess", "success");
			}else{
				returnJson.put("code", 1);
				returnJson.put("mess", mess+"占用失败");
			}
		}else if("1".equals(type)) {
			if(SFBudget(jsonArrData)) {
				returnJson.put("code", 0);
				returnJson.put("mess", "success");
			}else{
				returnJson.put("code", 1);
				returnJson.put("mess", mess+"释放失败");
			}
		}else if("2".equals(type)) {
			if(XHBudget(jsonArrData)) {
				returnJson.put("code", 0);
				returnJson.put("mess", "success");
			}else{
				returnJson.put("code", 1);
				returnJson.put("mess",mess+"消耗失败");
			}
		}
	}catch (Exception e) {
		logs.logWriter("---e----",e);

		e.printStackTrace();
		// TODO: handle exception
		returnJson.put("code", 1);
		returnJson.put("mess", e.getMessage());
		return returnJson.toString();
	}
	return returnJson.toString();
}

//消耗
private boolean XHBudget(JSONArray jsonArrData) {
	
	boolean flag = false;
	RecordSetTrans rs = new RecordSetTrans();
	try {
		rs.setAutoCommit(false);
		for(int i=0;i<jsonArrData.size();i++) {
			JSONObject jsonData = jsonArrData.getJSONObject(i);
			String xmbh = Util.null2String(jsonData.get("projectCode"));
			String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
			
			rs.execute("select shijhf,hlyzy,xmzys from uf_xmlxglb where xmbh = '"+xmbh+"'");
			if(rs.next()) {
				double shijhf = BigDecimalArithUtil.getDouble(Util.null2String(rs.getString("shijhf")));

				double hlyzy = BigDecimalArithUtil.getDouble(Util.null2String(rs.getString("hlyzy")));
				double zy_je = BigDecimalArithUtil.getDouble(budgetMoney);
				if(zy_je>hlyzy) {
					rs.rollback();
					mess = xmbh;
					return false;
				}
				
				double zje = BigDecimalArithUtil.sub(hlyzy, zy_je);
				double xhzye = BigDecimalArithUtil.add(shijhf, zy_je);
				String sql = "update uf_xmlxglb set hlyzy = '"+zje+"',shijhf='"+xhzye+"' where xmbh = '"+xmbh+"'";
				flag = rs.execute(sql);
				logs.logWriter("---消耗----"+sql);
			
			}
		}
		if(flag) {
			rs.commit();
			JSONObject jsonsLog = null;
			for(int i=0;i<jsonArrData.size();i++) {
				JSONObject jsonData = jsonArrData.getJSONObject(i);
				String xmbh = Util.null2String(jsonData.get("projectCode"));
				String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
				String linNum = Util.null2String(jsonData.get("linNum"));
				String reqNum = Util.null2String(jsonData.get("reqNum"));
				jsonsLog  =  new JSONObject();
				jsonsLog.put("projectCode",xmbh);
				jsonsLog.put("reqNum",reqNum);
				jsonsLog.put("linNum",linNum);
				jsonsLog.put("budgetMoney",budgetMoney);
				jsonsLog.put("type","2");
				jsonsLog.put("reday",nowDate);
				sendLog(jsonsLog);
			}
		}else {
			rs.rollback();
		}
	}catch (Exception e) {
		rs.rollback();
		// TODO: handle exception
	}
	return flag;
}

//释放
private boolean SFBudget(JSONArray jsonArrData) {
	
	boolean flag = false;
	RecordSetTrans rs = new RecordSetTrans();

	try {
		rs.setAutoCommit(false);
		for(int i=0;i<jsonArrData.size();i++) {
			JSONObject jsonData = jsonArrData.getJSONObject(i);
			String xmbh = Util.null2String(jsonData.get("projectCode"));
			String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
			
			rs.execute("select shijhf,hlyzy,xmzys from uf_xmlxglb where xmbh = '"+xmbh+"'");
			if(rs.next()) {
				double hlyzy = BigDecimalArithUtil.getDouble(Util.null2String(rs.getString("hlyzy")));
				double zy_je = BigDecimalArithUtil.getDouble(budgetMoney);
				if(zy_je>hlyzy) {
					rs.rollback();
					mess = xmbh;
					return false;
				}
				double zje = BigDecimalArithUtil.sub(hlyzy, zy_je);
				String sql = "update uf_xmlxglb set hlyzy = '"+zje+"' where xmbh = '"+xmbh+"'";
				flag = rs.execute(sql);
				
				logs.logWriter("--释放----"+sql);

			}
		}
		if(flag) {
			rs.commit();
			JSONObject jsonsLog = null;
			for(int i=0;i<jsonArrData.size();i++) {
				JSONObject jsonData = jsonArrData.getJSONObject(i);
				String xmbh = Util.null2String(jsonData.get("projectCode"));
				String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
				String linNum = Util.null2String(jsonData.get("linNum"));
				String reqNum = Util.null2String(jsonData.get("reqNum"));
				jsonsLog  =  new JSONObject();
				jsonsLog.put("projectCode",xmbh);
				jsonsLog.put("reqNum",reqNum);
				jsonsLog.put("linNum",linNum);
				jsonsLog.put("budgetMoney",budgetMoney);
				jsonsLog.put("type","1");
				jsonsLog.put("reday",nowDate);
				sendLog(jsonsLog);
			}
		}else {
			rs.rollback();
		}
	}catch (Exception e) {
		rs.rollback();
		// TODO: handle exception
	}
	return flag;
}

//占用
private boolean ZYBudget(JSONArray jsonArrData) {
	boolean flag = false;
	RecordSetTrans rs = new RecordSetTrans();

	try {
		rs.setAutoCommit(false);
		for(int i=0;i<jsonArrData.size();i++) {
			JSONObject jsonData = jsonArrData.getJSONObject(i);
			String xmbh = Util.null2String(jsonData.get("projectCode"));
			String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
			logs.logWriter("--xmbh----"+xmbh);
			logs.logWriter("--budgetMoney----"+budgetMoney);

			rs.execute("select shijhf,hlyzy,xmzys from uf_xmlxglb where xmbh = '"+xmbh+"'");
			if(rs.next()) {
				double hlyzy = BigDecimalArithUtil.getDouble(Util.null2String(rs.getString("hlyzy")));
				double zy_je = BigDecimalArithUtil.getDouble(budgetMoney);
				double zje = BigDecimalArithUtil.add(hlyzy, zy_je);
				
				logs.logWriter("--hlyzy----"+hlyzy);
				logs.logWriter("--zy_je----"+zy_je);
				logs.logWriter("--zje----"+zje);

				String sql = "update uf_xmlxglb set hlyzy = '"+zje+"' where xmbh = '"+xmbh+"'";
				flag = rs.execute(sql);
				
				logs.logWriter("--占用----"+sql);

			}
		}
		if(flag) {
			rs.commit();
			JSONObject jsonsLog = null;
			for(int i=0;i<jsonArrData.size();i++) {
				JSONObject jsonData = jsonArrData.getJSONObject(i);
				String xmbh = Util.null2String(jsonData.get("projectCode"));
				String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
				String linNum = Util.null2String(jsonData.get("linNum"));
				String reqNum = Util.null2String(jsonData.get("reqNum"));
				jsonsLog  =  new JSONObject();
				jsonsLog.put("projectCode",xmbh);
				jsonsLog.put("reqNum",reqNum);
				jsonsLog.put("linNum",linNum);
				jsonsLog.put("budgetMoney",budgetMoney);
				jsonsLog.put("type","0");
				jsonsLog.put("reday",nowDate);
				sendLog(jsonsLog);
			}
		}else {
			rs.rollback();
		}
	}catch (Exception e) {
		rs.rollback();
		// TODO: handle exception
	}
	return flag;
}

private JSONArray getBudgetData(JSONArray jsonArrData) {
	
	RecordSet rs = new RecordSet();

	JSONArray jsonArr = new JSONArray();
	JSONObject jsons = null;
	JSONObject jsonsLog = null;

	for(int i=0;i<jsonArrData.size();i++) {
		JSONObject jsonData = jsonArrData.getJSONObject(i);
		String xmbh = Util.null2String(jsonData.get("projectCode"));
		String budgetMoney = Util.null2String(jsonData.get("budgetMoney"));
		String linNum = Util.null2String(jsonData.get("linNum"));
		String reqNum = Util.null2String(jsonData.get("reqNum"));
		
		rs.execute("select * from uf_xmlxglb where xmbh = '"+xmbh+"'");
		if(rs.next()) {
			jsons =  new JSONObject();
			jsons.put("projectCode", xmbh);//项目编号
			jsons.put("consumeBudgetMoney", isNullThen0(Util.null2String(rs.getString("shijhf"))));//消耗金额
			jsons.put("occupyBudgetMoney",isNullThen0( Util.null2String(rs.getString("hlyzy"))));//已占用金额
			jsons.put("totalBudgetMoney", isNullThen0(Util.null2String(rs.getString("xmzys"))));//预算金额
			jsons.put("linNum", linNum);//预算金额
			jsonArr.add(jsons);
		}
		
		jsonsLog  =  new JSONObject();
		jsonsLog.put("projectCode",xmbh);
		jsonsLog.put("reqNum",reqNum);
		jsonsLog.put("linNum",linNum);
		jsonsLog.put("budgetMoney",budgetMoney);
		jsonsLog.put("type","3");
		jsonsLog.put("reday",nowDate);
		sendLog(jsonsLog);
	}
	return jsonArr;
}

private void sendLog(JSONObject jsons) {
	InsertOrUpdateTableUtil insert = new InsertOrUpdateTableUtil();
	insert.insertData(new RecordSet(), jsons, "uf_hlylxlog");
}

private String isNullThen0(String str) {
	return "".equals(str)?"0.00":str;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值