/// ///LOGIC CLASS FOR TABLE t_wmsImportSeeds ///By wm with codesmith. ///on 07/21/2019 /// using System; using System.Collections.Generic; using System.Linq; using System.Text; using DeiNiu.wms.Data.Model; using System.Data; using System.Transactions; using DeiNiu.wms.win; using DeiNiu.Utils; namespace DeiNiu.wms.Logical { [Serializable] public class lWmsImportSeeds :lbase { WmsImportSeeds _obj; public lWmsImportSeeds() { initialize(); } public WmsImportSeeds getWmsImportSeeds { get { if (_obj == null) { _obj = new WmsImportSeeds(); } _obj.operater = operId; return _obj; } } public lWmsImportSeeds(int operId) : base(operId) { initialize(); } /// /// get all data /// public DataSet getAllData() { return _obj.Query(); } /// /// get all data /// public DataSet getAllActiveData() { return _obj.QueryActived(); } /// /// get a record by id /// public void initialize(int id) { _obj = id != 0 ? new WmsImportSeeds(id) : new WmsImportSeeds(); } /// /// get a record by id 0 /// public void initialize() { initialize(0); } /// /// get a record by id /// public void initialize(DataRow dr) { _obj = new WmsImportSeeds(dr); } protected override DeiNiu.Data.BaseObject.BaseModel getModel() { return _obj; } //begin cust db operation, query, excute sql etc. internal int add(WmsImportSeeds obj) { return obj.Add(); } /// /// update in a transaction scrop /// public void update() { if (valid()) { using (TransactionScope scope = new TransactionScope()) { //Node tmp = new Node(); //tmp.parentid = 1; //tmp.name = "test trans" + DateTime.Now; //tmp.description = "this is for transTest"; //tmp.Add(); _obj.Update(); scope.Complete(); } } } private bool valid() { return true; } internal int updateCount(int count, int id, int status,String desc) { if (status == (int)enumSeedsState.待处理) { WmsImportSeeds wis = new WmsImportSeeds(id); if (wis.ID == id) { wis.countOut = count; wis.description += desc; return wis.Update(); } } else if (status == (int)enumSeedsState.处理中 || status == (int)enumSeedsState.已亮灯) { WmsImportSeeds_tmp wis = new WmsImportSeeds_tmp(id); if (wis.ID == id) { wis.countOut = count; wis.description += desc; return wis.Update(); } } else if (status == (int)enumSeedsState.已按灭) { WmsImportSeeds_history wis = new WmsImportSeeds_history(id); if (wis.ID == id) { wis.countOut = count; wis.description += desc; return wis.Update(); } } return 0; } internal int loadNewSeeds(int partion, string seedsNo) { /* string isAutoBind = System.Configuration.ConfigurationManager.AppSettings["IsAutoBind"]; if (!String.IsNullOrEmpty(isAutoBind) || Convert.ToInt16(isAutoBind) >0) //自动绑定标签ID { DataTable dt = getWmsImportSeeds.QueryBySeeds(seedsNo).Tables[0]; string lastCust = ""; int elId =0; foreach (DataRow dr in dt.Rows) { WmsImportSeeds wis = new WmsImportSeeds(dr); if (string.IsNullOrEmpty(lastCust) || !lastCust.Equals(wis.custName)) { lastCust = wis.custName; elId++; } wis.elabId = elId; wis.Update(); } } */ return getWmsImportSeeds.loadNewSeeds(partion, seedsNo); } internal DataTable getSumCount(string seedsNo, string barcode) { return getWmsImportSeeds.getSumCount(seedsNo, barcode); } internal List startNewSeed(int deskId, string seedsNo, string barcode, int operater, int color,bool isValid ) { return getWmsImportSeeds.startNewSeed(deskId, seedsNo, barcode, operater, color, isValid); } internal List startNewDeskSeed( string seedsNo, string barcode, int operater, int color, bool isValid) { return getWmsImportSeeds.startNewDeskSeed(seedsNo, barcode, operater, color, isValid); } internal int deleteOrder(string seedsNo) { return getWmsImportSeeds.deleteOrder(seedsNo); } String seedsNo ="seedsNo123"; String barcode ="1099"; internal bool validLimit(string input) { WmsOutSeeds wos = new WmsOutSeeds(); DataTable dt = wos.getValidSeed(1000, seedsNo, barcode); if (dt.Rows.Count > 0) { wos = new WmsOutSeeds(dt.Rows[0]); return input.Equals(wos.description); } return false; } internal int isExceedLimitCnt(bool isFix, int limitCount) { int notExceed = -1; int exceed = 0; WmsOutSeeds wos = new WmsOutSeeds(); DataTable dt = wos.getValidSeed(1000, seedsNo, barcode); if (dt.Rows.Count == 0) { wos.seedsNo = seedsNo; wos.barcode = barcode; wos.deskId = 1000; wos.count = 1; wos.description ="D0-43-D4-A4-A9-EF-C8-72-AD-8E-FD-C3-81-07-BF-84"; wos.custOrder = "001"; wos.Add(); return notExceed; } else { wos = new WmsOutSeeds(dt.Rows[0]); if (isFix) { wos.count = -1; wos.Update(); return notExceed; } int count = (int)wos.count; if (count == -1) { return notExceed; } else if (count < limitCount) { wos.count++; wos.Update(); return limitCount -(int)wos.count; } else { return exceed; } } } public ELight getLight(int deskId,string barcode) { ELight el = new ELight(); DataTable dt = getWmsImportSeeds.getLightInfo(barcode, deskId); foreach (DataRow dr in dt.Rows) { WmsImportSeeds_tmp it = new WmsImportSeeds_tmp(dr); el.lightId = it.elabId; el.which =Convert.ToByte( it.elabAddress); el.port = it.port; return el; } return el; } internal int updateCountSeeds(int seedsPlanCnt, int seedscnt, string seedsNo, string barcode) { /* cust portNo list scope * 1000-2000 重点分货 * 2000-3000 一般分货 * 3000-4000 加盟 * 5000-5000 外区 * 6000-7000 新店及业绩差 */ DataTable dtSeeds = getWmsImportSeeds.getCustomerSeedsList(seedsNo, barcode); DataView dvSeeds = dtSeeds.DefaultView; getWmsImportSeeds.resetOut(seedsNo, barcode); int cnt = 0; int diff = seedscnt - seedsPlanCnt; int absDiff = Math.Abs(diff); if (absDiff == 0) { return 0; } string rowFilter = " portNo <2000"; //先分重点 dvSeeds.RowFilter = rowFilter; dvSeeds.Sort = "portNo"; int firstCount = dvSeeds.Count*2; //45个 if (absDiff > firstCount) { firstCount = diff > 0 ? firstCount : firstCount * -1; cnt = updateCountSeeds(firstCount, rowFilter, seedsNo, barcode); rowFilter = " portNo <3000"; //重点、一般合起来分 // rowFilter = " portNo >2000 and portNo <3000"; //先分重点,后分一般 if (diff > 0) { diff -= cnt; } else { diff += cnt; } cnt += updateCountSeeds(diff, rowFilter, seedsNo, barcode); } else { cnt= updateCountSeeds(diff, rowFilter, seedsNo, barcode); } return cnt; } internal int updateCountSeeds(int diff, string rowFilter, string seedsNo, string barcode) { int cnt = 0; int absDiff = Math.Abs(diff); DataTable dtSeeds ; DataView dvSeeds ; while (absDiff > 0) { dtSeeds = getWmsImportSeeds.getCustomerSeedsList(seedsNo, barcode); dvSeeds = dtSeeds.DefaultView; dvSeeds.RowFilter = rowFilter; dvSeeds.Sort = "portNo"; bool isLimit = true; List lst = new List(); foreach (DataRowView drv in dvSeeds) { if (absDiff <= 0) { break; } WmsImportSeeds_tmp wit = new WmsImportSeeds_tmp(drv.Row); if (lst.Contains(wit.ID)) { continue; } if (!lst.Contains(wit.ID) && wit.countOut>0 && (wit.countOut < wit.count * 2) && (wit.countOut > wit.count / 2) //不允许减量或者加量分货超订货50% && Math.Abs(wit.countOut - wit.count) < 20 //所有品项1家门店不超过20包 ) { wit.countOut += diff > 0 ? 1 : -1; wit.Update(); absDiff--; cnt++; isLimit = false; } lst.Add(wit.ID); } if (isLimit) { break; } } return cnt; } internal DataSet queryDesk(string seedNo, string barcode, bool isValid) { return getWmsImportSeeds.queryDesk(seedNo, barcode, isValid); } internal DataTable getPrintCodes(string seedsNo, string barcode) { return getWmsImportSeeds.getPrintCodes(seedsNo, barcode); } public DataSet queryDesk(string querystr, int rownumStart, int rownumEnd) { _obj = getWmsImportSeeds ; if (rownumEnd > rownumStart && rownumStart > 0) { _obj.rownumStart = rownumStart; _obj.rownumEnd = rownumEnd; } // DataSet ds = string.IsNullOrEmpty(querystr) ? _obj.Query() : _obj.Query(querystr); string condition = ""; // querystr = filtRiskChar(querystr); string[] parameters = querystr.Split(";".ToCharArray()); foreach (string value in parameters) { if (string.IsNullOrEmpty(value)) { continue; } string[] par = value.Split("#".ToCharArray()); condition += par.Length == 0 ? "" : " and "; foreach (string p in par) { condition += p; } } return _obj.queryDesk(condition); } internal DataSet queryDeskSeeds(string query, int start, int end) { return getWmsImportSeeds.queryDeskSeeds(query, start, end); } } }