ldj/epickpublic/BLL/lWmsImportSeeds.cs

470 lines
13 KiB
C#

/// <summary>
///LOGIC CLASS FOR TABLE t_wmsImportSeeds
///By wm with codesmith.
///on 07/21/2019
/// </summary>
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();
}
/// <summary>
/// get all data
/// </summary>
public DataSet getAllData()
{
return _obj.Query();
}
/// <summary>
/// get all data
/// </summary>
public DataSet getAllActiveData()
{
return _obj.QueryActived();
}
/// <summary>
/// get a record by id
/// </summary>
public void initialize(int id)
{
_obj = id != 0 ? new WmsImportSeeds(id) : new WmsImportSeeds();
}
/// <summary>
/// get a record by id 0
/// </summary>
public void initialize()
{
initialize(0);
}
/// <summary>
/// get a record by id
/// </summary>
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();
}
/// <summary>
/// update in a transaction scrop
/// </summary>
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<ELabel> startNewSeed(int deskId, string seedsNo, string barcode, int operater, int color,bool isValid )
{
return getWmsImportSeeds.startNewSeed(deskId, seedsNo, barcode, operater, color, isValid);
}
internal List<ELabel> 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);
}
if (cnt == 0)
{
cnt = updateCountSeeds(diff, "seedsNo>0", 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<int> lst = new List<int>();
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);
}
public void clearHistory()
{
return _obj.clearHistroy();
}
}
}