84 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| 
 | |
| namespace DeiNiu.wms.Data.Model
 | |
| {
 | |
|   public class ObjectsFactory
 | |
|     {
 | |
| 
 | |
|       private static Dictionary<string, DeiNiu.Data.BaseObject.BaseModel_Imp> modelCache = new Dictionary<string, DeiNiu.Data.BaseObject.BaseModel_Imp>();
 | |
|       private static Dictionary<string, WmsOutPickDetail> OutDetailCache = new Dictionary<string, WmsOutPickDetail>();
 | |
|       private static Dictionary<string, WmsGoods> goodsCache = new Dictionary<string, WmsGoods>();
 | |
| 
 | |
| 
 | |
|       public static  DeiNiu.Data.BaseObject.BaseModel_Imp getModel(string className)
 | |
|       {
 | |
|           if (modelCache.ContainsKey(className)){
 | |
|             
 | |
|             return modelCache[className];
 | |
|           
 | |
|           }else{
 | |
| 
 | |
|               return null;
 | |
|           }
 | |
|       }
 | |
|       public static void putModel(string className,DeiNiu.Data.BaseObject.BaseModel_Imp modelImp )
 | |
|       {
 | |
|           modelCache[className] = modelImp;
 | |
|       }
 | |
| 
 | |
|       /// <summary>
 | |
|       ///  取的缓存商品可能没有批号信息
 | |
|       /// </summary>
 | |
|       /// <param name="goodsId"></param>
 | |
|       /// <param name="isForceRefresh"></param>
 | |
|       /// <returns></returns>
 | |
|       public static WmsGoods getGoods(string goodsId,bool isForceRefresh = false)
 | |
|       {
 | |
|            WmsGoods goods ;
 | |
|           if(isForceRefresh || !goodsCache.Keys.Contains(goodsId)){
 | |
|               goods = new WmsGoods(goodsId);
 | |
|               goodsCache[goodsId] = goods;
 | |
|           }else{
 | |
|             goods = goodsCache[goodsId];
 | |
|           }
 | |
| 
 | |
|           return goods;
 | |
|       }
 | |
| 
 | |
|       public static void putGoods(WmsGoods goods){
 | |
|           goodsCache[goods.goodsId] = goods;
 | |
| 
 | |
|       }
 | |
| 
 | |
|       public static void putOutDetail(WmsOutPickDetail outDetail)
 | |
|       {
 | |
|           OutDetailCache[outDetail.goodsId + outDetail.batch] = outDetail;
 | |
|           putGoods(outDetail.goods);
 | |
|       }
 | |
|       /// <summary>
 | |
|       /// 取有生产日期批号信息的缓存商品出库明细
 | |
|       /// 不存在则返回一个新初始化的商品出库明细
 | |
|       /// </summary>
 | |
|       /// <param name="goodsId"></param>
 | |
|       /// <param name="batch"></param>
 | |
|       /// <returns></returns>
 | |
|       public static WmsOutPickDetail getOutDetail(string goodsId, string batch)
 | |
|       {
 | |
|           string key = goodsId + batch;
 | |
| 
 | |
|           if (OutDetailCache.Keys.Contains(key))
 | |
|           {
 | |
|               WmsOutPickDetail outd = OutDetailCache[key];
 | |
|               OutDetailCache.Remove(key);  // remove the cache
 | |
|               return outd;
 | |
|           }
 | |
| 
 | |
|           return new WmsOutPickDetail();
 | |
|       }
 | |
| 
 | |
|     }
 | |
| }
 |