466 lines
13 KiB
C#
466 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);
|
|
}
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
internal DataSet queryDeskSeeds(string query, int start, int end)
|
|
{
|
|
return getWmsImportSeeds.queryDeskSeeds(query, start, end);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|