工作流代码

news2024/11/26 14:31:37

工作流代码

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.at parata:
      • 2.cash2019
      • 3.cashEntity
      • 4.cashFrmTemplate
      • 5.chartType:
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

需求:

设计思路

实现思路分析

1.at parata:

package BP.DA;

import java.io.File;
import java.util.ArrayList;
import java.util.Hashtable;

import BP.Difference.ContextHolderUtils;
import BP.En.Attr;
import BP.En.Attrs;
import BP.En.ClassFactory;
import BP.En.Entities;
import BP.En.Entity;
import BP.En.Map;
import BP.En.SQLCash;
import BP.En.SqlBuilder;
import BP.Pub.RepBill;
import BP.Sys.SysEnum;
import BP.Sys.SysEnumAttr;
import BP.Sys.SysEnums;
import BP.Sys.SystemConfig;
import BP.Tools.ConvertTools;
import BP.Tools.StringHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Cash 的摘要说明。
 */
public class Cash {

	private static final Logger LOGGER = LoggerFactory.getLogger(Cash.class);
	
	public static Hashtable<String, String> EnumKeySQL_Cash;

	public static String getCaseWhenSQL(String mTable, String key, String field, String enumKey, int def, String tag)
			throws Exception {
		String mykey = mTable + "" + key + "" + field + "" + enumKey + def;

		if (EnumKeySQL_Cash == null)
			EnumKeySQL_Cash = new Hashtable();

		String sql = EnumKeySQL_Cash.get(mykey);
		if (sql != null)
			return sql;

		SysEnums ses = null;
		if (DataType.IsNullOrEmpty(tag) == true) {

			ses = new SysEnums(enumKey);
			if (ses.size() == 0) {
				BP.Sys.XML.EnumInfoXml xml = new BP.Sys.XML.EnumInfoXml(enumKey);
				ses.RegIt(enumKey, xml.getVals());
			}
		} else {
			ses = new SysEnums();
			ses.RegIt(enumKey, tag, true);
			// ses.LoadIt(enumKey);
		}

		sql = " CASE " + mTable + field;
		for (SysEnum se1 : ses.ToJavaList()) {
			sql += " WHEN " + se1.getIntKey() + " THEN '" + se1.getLab() + "'";
		}

		SysEnum se = (SysEnum) ses.GetEntityByKey(SysEnumAttr.IntKey, def);
		if (se == null) {
			sql += " END \"" + key + "Text\"";
		} else {
			sql += " WHEN NULL THEN '" + se.getLab() + "' END \"" + key + "Text\"";
		}
		EnumKeySQL_Cash.put(mykey, sql);

		return sql;

	}
	
	static {
		if (!SystemConfig.getIsBSsystem()) {
			CS_Cash = new Hashtable<String, Object>();
		}
	}
	public static Hashtable<String, Object> CS_Cash;

	// Bill_Cash 单据模板cash.
	private static Hashtable _Bill_Cash;

	public static Hashtable getBill_Cash() {
		if (_Bill_Cash == null) {
			_Bill_Cash = new Hashtable();
		}
		return _Bill_Cash;
	}

	// BS_Cash
	private static Hashtable<String, Object> _BS_Cash;

	public static Hashtable<String, Object> getBS_Cash() {
		if (_BS_Cash == null) {
			_BS_Cash = new Hashtable<String, Object>();
		}
		return _BS_Cash;
	}

	public static void ClearCash() {
		if (_BS_Cash != null)
			_BS_Cash.clear();

		if (_SQL_Cash != null)
			_SQL_Cash.clear();

		if (_EnsData_Cash != null)
			_EnsData_Cash.clear();

		if (_Map_Cash != null)
			_Map_Cash.clear();

		if (_EnsData_Cash_Ext != null)
			_EnsData_Cash_Ext.clear();

		if (_Bill_Cash != null)
			_Bill_Cash.clear();

	}

	// SQL cash
	private static Hashtable<String, Object> _SQL_Cash;

	public static Hashtable<String, Object> getSQL_Cash() {
		if (_SQL_Cash == null) {
			_SQL_Cash = new Hashtable<String, Object>();
		}
		return _SQL_Cash;
	}

	public static SQLCash GetSQL(String clName) {
		SQLCash tempVar = (SQLCash) getSQL_Cash().get(clName);
		return (SQLCash) ((tempVar instanceof SQLCash) ? tempVar : null);
	}

	public static void SetSQL(String clName, SQLCash csh) {
		if (clName == null || csh == null) {
			throw new RuntimeException("clName.  csh 参数有一个为空。");
		}
		getSQL_Cash().put(clName, csh);
	}

	public static void InitSQL() throws Exception {
		ArrayList<Entity> al = ClassFactory.GetObjects("Entity");
		for (Entity en : al) {
			String sql = SqlBuilder.Retrieve(en);
		}
	}

	// EnsData cash
	private static Hashtable<String, Object> _EnsData_Cash;

	public static Hashtable<String, Object> getEnsData_Cash() {
		if (_EnsData_Cash == null) {
			_EnsData_Cash = new Hashtable<String, Object>();
		}
		return _EnsData_Cash;
	}

	public static Entities GetEnsData(String clName) {
		Entities tempVar = (Entities) getEnsData_Cash().get(clName);
		Entities ens = (Entities) ((tempVar instanceof Entities) ? tempVar : null);
		if (ens == null) {
			return null;
		}

		if (ens.size() == 0) {
			return null;
		}
		// throw new Exception(clName + "个数为0");
		return ens;
	}

	public static void EnsDataSet(String clName, Entities obj) {
		if (obj.size() == 0) {
			/**
			 * obj.RetrieveAll();
			 */

			// throw new Exception(clName +
			// "设置个数为0 , 请确定这个缓存实体,是否有数据?sq=select * from " +
			// obj.GetNewEntity.getEnMap().getPhysicsTable());
		}

		getEnsData_Cash().put(clName, obj);
	}

	public static void remove(String clName) {
		getEnsData_Cash().remove(clName);
	}

	// EnsData cash 扩展 临时的cash 文件。
	private static Hashtable<String, Object> _EnsData_Cash_Ext;

	public static Hashtable<String, Object> getEnsData_Cash_Ext() {
		if (_EnsData_Cash_Ext == null) {
			_EnsData_Cash_Ext = new Hashtable<String, Object>();
		}
		return _EnsData_Cash_Ext;
	}

	/**
	 * 为部分数据做的缓冲处理
	 * 
	 * @param clName
	 * @return
	 */
	public static Entities GetEnsDataExt(String clName) {
		// 判断是否失效了。
		if (SystemConfig.getIsTempCashFail()) {
			getEnsData_Cash_Ext().clear();
			return null;
		}

		try {
			Entities ens;
			Entities tempVar = (Entities) getEnsData_Cash_Ext().get(clName);
			ens = (Entities) ((tempVar instanceof Entities) ? tempVar : null);
			return ens;
		} catch (java.lang.Exception e) {
			return null;
		}
	}

	/**
	 * 为部分数据做的缓冲处理
	 * 
	 * @param clName
	 * @param obj
	 */
	public static void SetEnsDataExt(String clName, Entities obj) {
		if (clName == null || obj == null) {
			throw new RuntimeException("clName.  obj 参数有一个为空。");
		}
		getEnsData_Cash_Ext().put(clName, obj);
	}

	// map cash
	private static Hashtable<String, Object> _Map_Cash;

	public static Hashtable<String, Object> getMap_Cash() {
		if (_Map_Cash == null) {
			_Map_Cash = new Hashtable<String, Object>();
		}
		return _Map_Cash;
	}

	public static Map GetMap(String clName) {
		try {
			Map tempVar = (Map) getMap_Cash().get(clName);
			return (Map) ((tempVar instanceof Map) ? tempVar : null);
		} catch (java.lang.Exception e) {
			return null;
		}
	}

	public static void SetMap(String clName, Map map) {
		if (clName == null)
			return;

		// throw new Exception("clName.不能为空。");
		if (map == null) {
			getMap_Cash().remove(clName);
			return;
		}

		getMap_Cash().put(clName, map);
	}

	// 取出对象
	/**
	 * 从 Cash 里面取出对象.
	 */
	public static Object GetObj(String key, Depositary where) {
		if (where == Depositary.None) {
			throw new RuntimeException("您没有把(" + key + ")放到session or application 里面不能找出他们.");
		}
		if (SystemConfig.getIsBSsystem()) {
			if (where == Depositary.Application)
			// return BP.Glo.HttpContextCurrent.Cache(key);
			{
				return getBS_Cash().get(key); // BP.Glo.HttpContextCurrent.Cache(key);
			} else {
				/*
				 * warning return BP.Glo.getHttpContextCurrent().Session(key);
				 */
				return ContextHolderUtils.getSession().getAttribute(key);
			}
		} else {
			return CS_Cash.get(key);
		}
	}

	public static Object GetObj(String key) {
		if (SystemConfig.getIsBSsystem()) {
			Object obj = getBS_Cash().get(key); // Cash.GetObjFormApplication(key,
												// null);
			if (obj == null) {
				obj = Cash.GetObjFormSession(key);
			}
			return obj;
		} else {
			return CS_Cash.get(key);
		}
	}

	/**
	 * 删除 like 名称的缓存对象。
	 * 
	 * @param likeKey
	 * @return
	 */
	public static int DelObjFormApplication(String likeKey) {
		int i = 0;
		if (SystemConfig.getIsBSsystem()) {
			String willDelKeys = "";
			for (String key : getBS_Cash().keySet()) {
				if (!key.contains(likeKey)) {
					continue;
				}
				willDelKeys += "@" + key;
			}

			String[] strs = willDelKeys.split("(@)", -1);
			for (String s : strs) {
				if (s == null || s.equals("")) {
					continue;
				}
				getBS_Cash().remove(s);
				i++;
			}
		} else {
			String willDelKeys = "";
			for (String key : CS_Cash.keySet()) {
				if (!key.contains(likeKey)) {
					continue;
				}
				willDelKeys += "@" + key;
			}

			String[] strs = willDelKeys.split("(@)", -1);
			for (String s : strs) {
				if (s == null || s.equals("")) {
					continue;
				}
				CS_Cash.remove(s);
				i++;
			}
		}

		return i;
	}

	public static Object GetObjFormApplication(String key, Object isNullAsVal) {
		if (SystemConfig.getIsBSsystem()) {
			Object obj = getBS_Cash().get(key); // BP.Glo.HttpContextCurrent.Cache(key);
			if (obj == null) {
				return isNullAsVal;
			} else {
				return obj;
			}
		} else {
			Object obj = CS_Cash.get(key);
			if (obj == null) {
				return isNullAsVal;
			} else {
				return obj;
			}
		}
	}

	public static Object GetObjFormSession(String key) {
		if (SystemConfig.getIsBSsystem()) {
			try {
				/*
				 * warning return BP.Glo.getHttpContextCurrent().Session(key);
				 */
				return ContextHolderUtils.getSession().getAttribute(key);
			} catch (java.lang.Exception e) {
				return null;
			}
		} else {
			return CS_Cash.get(key);
		}
	}

	// remove Obj
	/**
	 * RemoveObj
	 * 
	 * @param key
	 * @param where
	 */
	public static void RemoveObj(String key, Depositary where) {
		if (!Cash.IsExits(key, where)) {
			return;
		}

		if (SystemConfig.getIsBSsystem()) {
			if (where == Depositary.Application) {
				/*
				 * warning BP.Glo.getHttpContextCurrent().Cache.remove(key);
				 */
			} else {
				/*
				 * warning BP.Glo.getHttpContextCurrent().Session.remove(key);
				 */
				ContextHolderUtils.getSession().removeAttribute(key);
			}
		} else {
			CS_Cash.remove(key);
		}
	}

	// 放入对象
	public static void RemoveObj(String key) {
		getBS_Cash().remove(key);
	}

	public static void AddObj(String key, Depositary where, Object obj) {
		if (key == null) {
			throw new RuntimeException("您需要为obj=" + obj.toString() + ",设置为主键值。key");
		}

		if (obj == null) {
			throw new RuntimeException("您需要为obj=null  设置为主键值。key=" + key);
		}

		if (where == Depositary.None) {
			throw new RuntimeException("您没有把(" + key + ")放到 session or application 里面设置他们.");
		}
		// if (Cash.IsExits(key, where))
		// return;

		if (SystemConfig.getIsBSsystem()) {
			if (where == Depositary.Application) {
				getBS_Cash().put(key, obj);
			} else {
				/*
				 * warning BP.Glo.getHttpContextCurrent().Session(key) = obj;
				 */
				ContextHolderUtils.getSession().setAttribute(key, obj);
			}
		} else {
			if (CS_Cash.containsKey(key)) {
				CS_Cash.put(key, obj);
			} else {
				CS_Cash.put(key, obj);
			}
		}
	}

	// 判断对象是不是存在
	/**
	 * 判断对象是不是存在
	 */
	public static boolean IsExits(String key, Depositary where) {
		if (SystemConfig.getIsBSsystem()) {
			if (where == Depositary.Application) {
				/*
				 * warning if (BP.Glo.getHttpContextCurrent().Cache(key) ==
				 * null) { return false; } else { return true; }
				 */
				return true;
			} else {
				/*
				 * warning if (BP.Glo.getHttpContextCurrent().Session(key) ==
				 * null) { return false; } else { return true; }
				 */
				return true;
			}
		} else {
			return CS_Cash.containsKey(key);
		}
	}

	public static String GetBillStr(String cfile, boolean isCheckCash) {
		String val = (String) ((getBill_Cash().get(cfile) instanceof String) ? getBill_Cash().get(cfile) : null);
		if (isCheckCash == true) {
			val = null;
		}

		if (StringHelper.isNullOrEmpty(val)) {
			String file = null;
			if (cfile.contains(":")) {
				file = cfile;
			} else {
				file = SystemConfig.getPathOfDataUser() + "CyclostyleFile/" + cfile;
			}

			if (SystemConfig.getIsDebug()) {
				RepBill.RepairBill(file);
			}
			try {
				val = ConvertTools.StreamReaderToStringConvert(file, "us-ascii");
			} catch (Exception ex) {
				throw new RuntimeException("@读取单据模板时出现错误。cfile=" + cfile + " @Ex=" + ex.getMessage());
			}
			_Bill_Cash.put(cfile, val);
		}
		return val.substring(0);
	}

	public static String[] GetBillParas(String cfile, String ensStrs, Entities ens) {
		String[] paras = (String[]) ((getBill_Cash().get(cfile + "Para") instanceof String[])
				? getBill_Cash().get(cfile + "Para") : null);
		if (paras != null) {
			return paras;
		}

		Attrs attrs = new Attrs();
		for (Entity en : Entities.convertEntities(ens)) {
			String perKey = en.toString();

			Attrs enAttrs = en.getEnMap().getAttrs();
			for (Attr attr : Attrs.convertAttrs(enAttrs)) {
				Attr attrN = new Attr();
				attrN.setKey(perKey + "." + attr.getKey());

				// attrN.Key = attrN.Key.replace("\\f2","");
				// attrN.Key = attrN.Key.replace("\\f3", "");

				if (attr.getIsRefAttr()) {
					attrN.setField(perKey + "." + attr.getKey() + "Text");
				}
				attrN.setMyDataType(attr.getMyDataType());
				attrN.setMyFieldType(attr.getMyFieldType());
				attrN.setUIBindKey(attr.getUIBindKey());
				attrN.setField(attr.getField());
				attrs.Add(attrN);
			}
		}

		paras = Cash.GetBillParas_Gener(cfile, attrs);
		_Bill_Cash.put(cfile + "Para", paras);
		return paras;
	}

	public static String[] GetBillParas(String cfile, String ensStrs, Entity en) {
		String[] paras = (String[]) ((getBill_Cash().get(cfile + "Para") instanceof String[])
				? getBill_Cash().get(cfile + "Para") : null);
		if (paras != null) {
			return paras;
		}

		paras = Cash.GetBillParas_Gener(cfile, en.getEnMap().getAttrs());
		_Bill_Cash.put(cfile + "Para", paras);
		return paras;
	}

	public static String[] GetBillParas_Gener(String cfile, Attrs attrs) {
		// Attrs attrs = en.getEnMap().getAttrs();
		String[] paras = new String[300];
		String Billstr = Cash.GetBillStr(cfile, true);
		char[] chars = Billstr.toCharArray();
		String para = "";
		int i = 0;
		boolean haveError = false;
		String msg = "";
		for (char c : chars) {
			if (c == '>') {
				// 首先解决空格的问题.
				String real = para.toString();
				if (attrs != null && real.contains(" ")) {
					real = real.replace(" ", "");
					Billstr = Billstr.replace(para, real);
					para = real;
					haveError = true;
				}

				// 解决特殊符号
				if (attrs != null && real.contains("\\") && real.contains("ND") == false) {
					haveError = true;
					String findKey = null;
					int keyLen = 0;
					for (Attr attr : attrs) {
						if (real.contains(attr.getKey())) {
							if (keyLen <= attr.getKey().length()) {
								keyLen = attr.getKey().length();
								findKey = attr.getKey();
							}
						}
					}

					if (findKey == null) {
						msg += "@参数:<font color=red><b>(" + real + ")</b></font>可能拼写错误。";
						continue;
					}

					if (real.contains(findKey + ".NYR") == true) {
						real = findKey + ".NYR";
					} else if (real.contains(findKey + ".RMB") == true) {
						real = findKey + ".RMB";
					} else if (real.contains(findKey + ".RMBDX") == true) {
						real = findKey + ".RMBDX";
					} else {
						real = findKey;
					}

					Billstr = Billstr.replace(para, real);
					// msg += "@参数:<font color=red><b>(" + para +
					// ")</b></font>不符合规范。";
					// continue;
				}

				// paras.SetValue(para, i);
				paras[i] = para;
				i++;
			}

			if (c == '<') {
				para = ""; // 如果遇到了 '<' 开始记录
			} else {
				if ((new Character(c)).toString().equals("")) {
					continue;
				}
				para += (new Character(c)).toString();
			}
		}

		if (haveError) {
			String myfile = SystemConfig.getPathOfDataUser() + "/CyclostyleFile/" + cfile;
			if (!new File(myfile).exists()) {
				myfile = cfile;
			}

			// throw new Exception("@没有文件:"+myfile);
			try {
				ConvertTools.StreamWriteConvert(Billstr, myfile);
			} catch (Exception e) {
				LOGGER.error("GetBillParas_Gener", e);
			}
			// StreamWriter wr = new StreamWriter(myfile, false,
			// Encoding.ASCII);
			// wr.Write(Billstr);
			// wr.Close();
		}

		if (!msg.equals("")) {
			// String s =
			// "@帮助信息:用记事本打开它模板,找到红色的字体.
			// 把尖括号内部的非法字符去了,例如:《|f0|fs20RDT.NYR|lang1033|kerning2》,修改后事例:《RDT.NYR》。@注意把双引号代替单引号,竖线代替反斜线。";
			// throw new
			// Exception("@单据模板("+cfile+")如下标记出现错误,系统无法修复它,需要您手工的删除标记或者用记事本打开查找到这写标记修复他们.@"
			// + msg + s);
		}
		return paras;
	}
}

2.cash2019

package BP.DA;

import java.util.Hashtable;

import BP.En.Entities;
import BP.En.Row;

public class Cash2019
{
	private static Hashtable _hts;
	public static Hashtable gethts()
	{
		if (_hts == null)
		{
			_hts = new Hashtable();
		}
		return _hts;
	}

	/** 
	 把实体放入缓存里面
	 
	 @param enName
	 @param ens
	 @param enPK
	*/
	public static void PutRow(String enName, String pkVal, Row row)
	{
		synchronized (lockObj)
		{
			Hashtable tempVar = (Hashtable)gethts().get(enName);
			Hashtable ht = (Hashtable)((tempVar instanceof Hashtable) ? tempVar : null);
			if (ht == null)
			{
				ht = new Hashtable();
				gethts().put(enName, ht);
			}
			ht.put(pkVal.toString(), row);
		}
	}
	public static void UpdateRow(String enName, String pkVal, Row row)
	{
		synchronized (lockObj)
		{
			Hashtable tempVar = (Hashtable) gethts().get(enName);
			Hashtable ht = (Hashtable)((tempVar instanceof Hashtable) ? tempVar : null);
			if (ht == null)
			{
				ht = new Hashtable();
				gethts().put(enName, ht);
			}
			ht.put(pkVal, row);
		}
	}
	public static void DeleteRow(String enName, String pkVal)
	{
		synchronized (lockObj)
		{
			Hashtable tempVar = (Hashtable)gethts().get(enName);
			Hashtable ht = (Hashtable)((tempVar instanceof Hashtable) ? tempVar : null);
			if (ht == null)
			{
				ht = new Hashtable();
				gethts().put(enName, ht);
			}
			ht.remove(pkVal.toString());
		}
	}
	private static Object lockObj = new Object();
	/** 
	 获得实体类
	 
	 @param enName 实体名字
	 @param pkVal 键
	 @return row
	*/
	public static Row GetRow(String enName, String pkVal)
	{
		synchronized (lockObj)
		{
			Hashtable tempVar = (Hashtable)gethts().get(enName);
			Hashtable ht = (Hashtable)((tempVar instanceof Hashtable) ? tempVar : null);
			if (ht == null)
			{
				return null;
			}
			if (ht.containsKey(pkVal) == true)
			{
				return (Row)((ht.get(pkVal) instanceof Row) ? ht.get(pkVal) : null);
			}
			return null;
		}
	}

	/** 
	 把集合放入缓存.
	 
	 @param ensName 集合实体类名
	 @param ens 实体集合
	*/
	public static void PutEns(String ensName, Entities ens)
	{
		//StackExchange.Redis
	}
	/** 
	 获取实体集合类
	 
	 @param ensName 集合类名
	 @param pkVal 主键
	 @return 实体集合
	*/
	public static Entities GetEns(String ensName, Object pkVal)
	{
		return null;
	}
}

3.cashEntity

package BP.DA;

import BP.En.Entities;
import BP.En.Entity;

public class CashEntity
{
	// Hashtable 属性
	private static java.util.Hashtable _Cash;
	
	public static java.util.Hashtable getDCash()
	{
		if (_Cash == null)
		{
			_Cash = new java.util.Hashtable();
		}
		return _Cash;
	}
	
	/**
	 * 把实体放入缓存里面
	 * 
	 * @param enName
	 * @param ens
	 * @param enPK
	 */
	public static void PubEns(String enName, Entities ens, String enPK)
	{
		Object tempVar = CashEntity.getDCash().get(enName);
		java.util.Hashtable ht = (java.util.Hashtable) ((tempVar instanceof java.util.Hashtable) ? tempVar
				: null);
		if (ht == null)
		{
			ht = new java.util.Hashtable();
		}
		
		ht.clear();
		for (Object en : ens)
		{
			ht.put(((Entity) en).GetValStrByKey(enPK), (Entity) en);
		}
		// 把实体集合放入.
		CashEntity.getDCash().put(enName + "Ens", ens);
	}
	
	public static Entities GetEns(String enName)
	{
		Object tempVar = CashEntity.getDCash().get(enName + "Ens");
		Entities ens = (Entities) ((tempVar instanceof Entities) ? tempVar
				: null);
		return ens;
	}
	
	/**
	 * 更新对象
	 * 
	 * @param enName
	 * @param key
	 * @param en
	 */
	public static void Update(String enName, String key, Entity en)
	{
		Object tempVar = CashEntity.getDCash().get(enName);
		java.util.Hashtable ht = (java.util.Hashtable) ((tempVar instanceof java.util.Hashtable) ? tempVar
				: null);
		if (ht == null)
		{
			ht = new java.util.Hashtable();
			CashEntity.getDCash().put(enName, ht);
		}
		ht.put(key, en);
		
		//此处增加一个清缓存,解决java缓存问题
		CashEntity.getDCash().remove(enName);
		
		// 清除集合.
		CashEntity.getDCash().remove(enName + "Ens");
	}
	
	/**
	 * 获取一个实体
	 * 
	 * @param enName
	 *            实体Name
	 * @param pkVal
	 *            主键值
	 * @return 返回这个实体
	 */
	public static Entity Select(String enName, String pkVal)
	{
		Object tempVar = CashEntity.getDCash().get(enName);
		java.util.Hashtable ht = (java.util.Hashtable) ((tempVar instanceof java.util.Hashtable) ? tempVar
				: null);
		if (ht == null)
		{
			return null;
		}
		
		return (Entity) ((ht.get(pkVal) instanceof Entity) ? ht.get(pkVal)
				: null);
	}
	
	/**
	 * 删除
	 * 
	 * @param enName
	 * @param pkVal
	 */
	public static void Delete(String enName, String pkVal)
	{
		Object tempVar = CashEntity.getDCash().get(enName);
		java.util.Hashtable ht = (java.util.Hashtable) ((tempVar instanceof java.util.Hashtable) ? tempVar
				: null);
		if (ht == null)
		{
			return;
		}
		
		ht.remove(pkVal);
		// 清除集合.
		CashEntity.getDCash().remove(enName + "Ens");
	}
	
	/**
	 * 插入
	 * 
	 * @param enName
	 * @param en
	 * @param pkVal
	 */
	public static void Insert(String enName, String pkVal, Entity en)
	{
		Object tempVar = CashEntity.getDCash().get(enName);
		java.util.Hashtable ht = (java.util.Hashtable) ((tempVar instanceof java.util.Hashtable) ? tempVar
				: null);
		if (ht == null)
		{
			//CashEntity.getDCash().remove("BP.WF.Rpt.MapRptEns");
			return;
		}
		
		// edited by liuxc,2014-8-21 17:21
		if (ht.containsKey(pkVal))
		{
			ht.put(pkVal, en);
		} else
		{
			ht.put(pkVal, en);
		}
		
		// 清除集合.
		CashEntity.getDCash().remove(enName + "Ens");
	}
}

4.cashFrmTemplate

package BP.DA;
import java.io.IOException;

public class CashFrmTemplate
{
	//缓存
	private static java.util.Hashtable _hts;

	/**
	 * 放入表单
	 * @param frmID
	 * @param ds
	 */
	public static void Put(String frmID, DataSet ds)
	{
		String json = BP.Tools.Json.ToJson(ds);

		synchronized (lockObj)
		{
			if (_hts == null)
			{
				_hts = new java.util.Hashtable();
			}

			if (_hts.containsKey(frmID) == false)
			{
				_hts.put(frmID, json);
			}
			else
			{
				_hts.put(frmID, json);
			}
		}
	}

	/**
	 *  移除
	 * @param frmID
	 */
	public static void Remove(String frmID)
	{
		synchronized (lockObj)
		{
			if (_hts == null)
			{
				_hts = new java.util.Hashtable();
			}

			_hts.remove(frmID);
		}
	}
	private static Object lockObj = new Object();

	/**
	 * 获得表单DataSet模式的模版数据
	 * @param frmID
	 * @return
	 * @throws ClassNotFoundException
	 * @throws IOException
	 */
	public static DataSet GetFrmDataSetModel(String frmID) throws ClassNotFoundException, IOException
	{
		synchronized (lockObj)
		{
			if (_hts == null)
			{
				_hts = new java.util.Hashtable();
			}

			if (_hts.containsKey(frmID) == true)
			{
				String json = (String)((_hts.get(frmID) instanceof String) ? _hts.get(frmID) : null);
				
				DataSet ds = BP.Tools.Json.ToDataSet(json);
				return ds;
			}
			return null;
		}
	}

	/**
	 * 获得表单json模式的模版数据
	 * @param frmID
	 * @return
	 */
	public static String GetFrmJsonModel(String frmID)
	{
		synchronized (lockObj)
		{
			if (_hts == null)
			{
				_hts = new java.util.Hashtable();
			}

			if (_hts.containsKey(frmID) == true)
			{
				String json = (String)((_hts.get(frmID) instanceof String) ? _hts.get(frmID) : null);
				return json;
			}
			return null;
		}
	}
}

5.chartType:

package BP.DA;

/**
 * 图表类型
 */
public enum ChartType
{
	/**
	 * 柱状图
	 */
	Histogram,
	/**
	 * 丙状图
	 */
	Pie,
	/**
	 * 折线图
	 */
	Line;
	
	public int getValue()
	{
		return this.ordinal();
	}
	
	public static ChartType forValue(int value)
	{
		return values()[value];
	}
}
在这里插入代码片

在这里插入图片描述

参考资料和推荐阅读

  1. 暂无

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/167707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享85个PHP源码,总有一款适合您

PHP源码 分享85个PHP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后可以看到。 源码下载链接&#xff1a;https://pan.baidu.com/s/1606ndyliGtwnjU8vsCLGRg?pwdq0k2 提…

MyBatis -- 参数占位符 #{} 和 ${}

MyBatis -- 参数占位符 #{} 和 ${}一、准备工作二、参数占位符 #{} 和 ${}三、特殊场景3.1 特殊场景 1 -- String3.1.1 使用 #{}3.1.2 使用 ${}3.1.3 分析与解决3.2 特殊场景 2 -- MySQL 关键字3.3 特殊场景 3 -- SQL 注入问题 (重要)3.4 特殊场景 4 -- 模糊查询 like一、准备工…

测试开发 | 想测试入门就必须要懂的软件开发流程

本文节选自霍格沃兹测试学院内部教材 从事软件测试行业&#xff0c;每天面对的被测对象都是软件。如果想要更好的去完成测试工作&#xff0c;首先需要对被测对象&#xff0c;也就是对软件要有基本的了解。 软件 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。…

多轮对话(二):多轮对话理解的研究进展和主流方法

本文是基于 Advances in Multi-turn Dialogue Comprehension: A Survey。这是一篇综述论文&#xff0c;我也顺便总结一下像我一样的小白&#xff0c;怎么读综述好一些。我读综述是为了快速切入某领域&#xff0c;比如我以前做的是跨模态检索&#xff0c;现在要进入对话系统&…

C++STL-stackqueue的实现

文章目录1. deque的简单介绍1.1 deque的原理介绍1.2 deque的优缺点1.3 为什么选择deque作为底层默认容器2. stack的实现3. queue的实现1. deque的简单介绍 在前面已经介绍过&#xff0c;stack和queue这两个容器适配器&#xff0c;是由deque这个容器封装的。现在我们就需要先学…

易观千帆 | 11月用户体验GX评测:银行APP用户体验稳定提升,从流量竞争逐渐转向用户体验竞争

易观&#xff1a;随着银行行业对用户体验的重视&#xff0c;手机银行APP用户体验稳定提升&#xff0c;竞争也从注重MAU的流量竞争逐渐转移为用户体验竞争。11月易观千帆用户体验GX评测显示&#xff0c;平安口袋银行、中国工商银行、招商银行仍是AAAAA级&#xff0c;在用户体验维…

对于搞钱我们是认真的

前言 大家好&#xff0c;我是xiezhr。一提到搞钱&#xff0c;想必大家都非常非常感兴趣&#xff0c;立马就精神抖擞了。说实话&#xff0c;在这疫情爆发这几年里&#xff0c;赚点钱真不容易。 不知道你是不是也跟我一样&#xff0c;一个人在夜深人静的时候就在想怎么才能通过自…

十三.动态内存管理

目录 一.为什么存在动态内存分配 二.动态内存函数的介绍 1.malloc函数 2.free函数 3.calloc函数 4.reallco函数 三.常见的动态内存错误 1.对NULL空指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟的内存使用free释放 4.使用free释放一块动态开辟内存的一…

HTML实现除夕最美烟花,2023春节倒计时,新年不可没有烟花,最炫烟花代码分享

&#x1f4cb; 前言 &#x1f5b1; 博客主页&#xff1a;在下马农的碎碎念✍ 本文由在下马农原创&#xff0c;首发于CSDN&#x1f4c6; 首发时间&#xff1a;2023/01/17&#x1f4c5; 最近更新时间&#xff1a;2023/01/17&#x1f935; 此马非凡马&#xff0c;房星本是星。向前…

Android入门第58天-真机调试

开篇 随着我们的Android开始慢慢往后面涉及到设备、网络、通讯内容的开发。我们开始要把真机调试提上日程来了。 比如说&#xff1a;我们用Android扫描barcode、二维码都需要使用到Android的摄像头。而在Android Studio的AVP&#xff08;模拟器&#xff09;里&#xff0c;它的摄…

【树莓派4B】搭建HomeAssistant服务端(二)(systemd配置开机自启动,cpolar内网穿透)

设置开机自启动 创建home-assistanthomeassistant.service服务&#xff1a; sudo nano /etc/systemd/system/home-assistanthomeassistant.service复制以下内容&#xff0c;定义服务&#xff0c;其中After定义先行服务&#xff0c;ExecStart执行启动脚本&#xff1a; [Unit]…

程序跑起来数据总是关闭及丢失?保存进文件里面美滋滋

文章目录前言文件是什么&#xff1f;程序文件数据文件文件名C语言中的文件打开和关闭文件指针文件的打开和关闭fopenfclose文件的顺序读写文件的随机读写fseekftellrewind文件读取结束的判定feof&#xff1a;我们之间可能有误会文件缓冲总结前言 我们或许都有这样的苦恼&#…

【手写 Vue2.x 源码】第二十八篇 - diff算法-问题分析与patch优化

一&#xff0c;前言 首先对 6 月更文内容做一下简单的回顾&#xff1a; Vue2.x 源码环境的搭建Vue2.x 初始化流程介绍对象的单层、深层劫持数组的单层、深层劫持数据代理的实现对象、数组数据变化的观测Vue 数据渲染流程介绍模板生成 AST 语法树AST 语法树生成 render 函数re…

【Java寒假打卡】Java基础-XML文件

【Java寒假打卡】Java基础-XML文件概述标签的规则xml的语法规则解析XMLXML解析的准备工作XML解析文件的代码实现概述 标签的规则 xml的语法规则 <?xml version"1.0" encoding"UTF-8" ?> <!--本xml文件用于描述多个学生信息--> <students&…

教程: nodejs 做微信公众号开发,回复 xml 消息

教程&#xff1a; nodejs 做微信公众号开发&#xff0c;回复 xml 消息 首先需要你的后台跟服务器已经可以建立连接&#xff0c;这个不再冗述看官方教程就好 接入指南 。此篇介绍的是如何获取用户发来的信息&#xff0c;并回复它。 一、接收 xml 信息内容 我用的是 nodejs 的…

Android应用模块化开发指南

Android应用模块化开发指南 包含多个Gradle模块的项目称为多模块项目。本文包含多模块应用项目的最佳实践和推荐模式。 代码规模变大带来的问题 可扩缩性、可读性和整体代码质量会随着时间的推移而降低&#xff0c;代码维护者未采取积极的措施来保持易于维护的结构。模块化是…

【营销】uplift建模方案-专利总结

之前准备写专利的时候浏览了一下其他公司的专利&#xff0c;对于one model&#xff0c;还是two model&#xff0c;基模型是什么做了简单总结。 浦发银行&#xff08;CN 112446541 A&#xff09;——one model&#xff08;标签转换&#xff09; 基模型&#xff1a;NN分类融合m…

经济学学习(宏观)

--------------------------------------- 第8篇&#xff1a;宏观经济学的数据 --------------------------------------- 23. 一国收入的衡量(GDP&#xff0c;通胀) gdp衡量总收入和总支出&#xff0c;总收入总支出 某一既定时期&#xff0c;一个国家内生产的所有最终商品…

【科研试剂】16-Heptadecynoic acid,93813-16-2,16-庚二酸

【中文名称】16-庚二酸【英文名称】 16-Heptadecynoic acid&#xff0c;16-Heptadecynoic COOH【结 构 式】【CAS】93813-16-2【分子式】C17H30O2【分子量】266.43【纯度标准】95%【包装规格】1g&#xff0c;5g&#xff0c;10g【是否接受定制】可进行定制&#xff0c;定制时间周…

Java日志系统介绍和slf4j的使用

目录1. 日志系统介绍2. slf4j的使用2.1 slf4j的入门2.2 slf4j绑定日志框架1. 日志系统介绍 日志门面位于应用程序和日志框架之间&#xff0c;日志门面提供一个抽象的能力&#xff0c;日志框架进行具体的日志实现。可以很方便的更换日志框架。类似JDBC驱动 日志门面有&#xf…