993 lines
40 KiB
C#
993 lines
40 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using WMS.Model.CK;
|
||
using System.Data;
|
||
using WMS.IData;
|
||
using WMS.Common;
|
||
using WMS.Model.Base;
|
||
using WMS.Model.Stock;
|
||
using WMS.Model;
|
||
using System.Security.Cryptography;
|
||
using WMS.Model.RK;
|
||
using WMS.Model.SC;
|
||
using WMS.Business.SC;
|
||
|
||
namespace WMS.Business.CK
|
||
{
|
||
public partial class BussPickingWaveGoods : IBussFactory
|
||
{
|
||
public List<PakWaitOut> GeterpData()
|
||
{
|
||
List<PakWaitOut> errPakWaitOut = new List<PakWaitOut>();
|
||
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetDataErpData();
|
||
if (tb != null)
|
||
{
|
||
errPakWaitOut = ConvertHelper<PakWaitOut>.ConvertToList(tb);
|
||
|
||
}
|
||
return errPakWaitOut;
|
||
}
|
||
public List<PickingWaveGoodsModel> GetPickingWaveGoodsDT(PickingWaveGoodsModel model)
|
||
{
|
||
List<PickingWaveGoodsModel> locList = new List<PickingWaveGoodsModel>();
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetPickingWaveGoodsDT(model);
|
||
if (tb != null)
|
||
{
|
||
locList = ConvertHelper<PickingWaveGoodsModel>.ConvertToList(tb);
|
||
|
||
}
|
||
return locList;
|
||
|
||
}
|
||
public List<PickingWaveGoodsModel> GetTaskdataHand()
|
||
{
|
||
List<PickingWaveGoodsModel> locList = new List<PickingWaveGoodsModel>();
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetTaskdataHand();
|
||
if (tb != null)
|
||
{
|
||
locList = ConvertHelper<PickingWaveGoodsModel>.ConvertToList(tb);
|
||
|
||
}
|
||
return locList;
|
||
}
|
||
|
||
|
||
|
||
//DataTable GetDataT_ck_orderDetall()
|
||
|
||
public List<OrderDetailModel> GetDataT_ck_orderDetall()
|
||
{
|
||
List<OrderDetailModel> list = new List<OrderDetailModel>();
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetDataT_ck_orderDetall();
|
||
if (tb != null)
|
||
{
|
||
list = ConvertHelper<OrderDetailModel>.ConvertToList(tb);
|
||
|
||
}
|
||
return list;
|
||
}
|
||
|
||
public bool deleteMistock(string loc,string goodid)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.DEL_T_CK_ORDERS(loc,goodid);
|
||
}
|
||
|
||
//Insert_T_CK_ORDERS
|
||
public bool Insert_T_CK_ORDERS(string sqlStr)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.Insert_T_CK_ORDERS(sqlStr);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
return true;
|
||
}
|
||
|
||
public bool insert_t_ck_ordersDetall(string sqlStr)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.insert_t_ck_ordersDetall(sqlStr);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return true;
|
||
}
|
||
|
||
public bool delete_t_ckorder(string ORDER_ID)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.delete_t_ckorder(ORDER_ID);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return true;
|
||
}
|
||
|
||
|
||
//
|
||
public bool update_t_ck_ordersDetall(string orderid, string goodsId)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.update_t_ck_ordersDetall(orderid, goodsId);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return true;
|
||
}
|
||
public bool GetDataErpData(string ORDER_ID)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.GetDataErpData(ORDER_ID);
|
||
}
|
||
|
||
|
||
public bool getPickDataProductionDate(string goodid, string production_date)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getPickDataProductionDate(goodid, production_date);
|
||
}
|
||
public List<StorageAreaLocationModel> GetLocHand()
|
||
{
|
||
List<StorageAreaLocationModel> locList = new List<StorageAreaLocationModel>();
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetLocHand();
|
||
if (tb != null)
|
||
{
|
||
locList = ConvertHelper<StorageAreaLocationModel>.ConvertToList(tb);
|
||
|
||
}
|
||
return locList;
|
||
}
|
||
|
||
public string HandDataLoc(string locid,string outStand,string size)
|
||
{
|
||
PickingWaveGoodsModel modelData = new PickingWaveGoodsModel();
|
||
string plcId = DataProvider.Instance.AutoRkData.GetPlcId();
|
||
modelData.LOC_ID = locid;
|
||
modelData.plcId = plcId;
|
||
modelData.PROVIDER_ID = "";
|
||
modelData.REMARK = "";
|
||
modelData.ToWhseloc = "";
|
||
modelData.outStand = outStand;
|
||
modelData.GOOD_ID = "00000";
|
||
modelData.SCALE_UNIT = size;
|
||
DataProvider.Instance.PickingWaveGoods.InsertHandGoods(modelData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.MIStock.UpdateMisLoc(locid, "1");
|
||
TranRollback();
|
||
return ErrText;
|
||
}
|
||
public string DeleHandLoc(string locid)
|
||
{
|
||
DataTable tb= DataProvider.Instance.PickingWaveGoods.HandGoodsSts(locid);
|
||
if(tb!=null)
|
||
{
|
||
if (tb.Rows.Count > 0)
|
||
{
|
||
if (tb.Rows[0]["STATUS"].ToString() == "0")
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.DelHandGoods(locid);
|
||
}
|
||
else
|
||
{
|
||
return "the State is changed,not delete";
|
||
}
|
||
}
|
||
}
|
||
|
||
return ErrText;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 出库任务下发
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public string TimerMoveData()
|
||
{
|
||
lock ("b")
|
||
{
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetTaskOutStatus_0();
|
||
if (tb != null)
|
||
{
|
||
if (tb.Rows.Count > 0)
|
||
{
|
||
List<PickingWaveGoodsModel> locList = ConvertHelper<PickingWaveGoodsModel>.ConvertToList(tb);
|
||
if (locList != null)
|
||
{
|
||
if (locList.Count > 0)
|
||
{
|
||
for (int i= 0;i< locList.Count;i++)
|
||
{
|
||
OutTask(locList[i]);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
}
|
||
return ErrText;
|
||
}
|
||
|
||
}
|
||
|
||
public string TimerOutData()
|
||
{
|
||
lock ("b")
|
||
{
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetTaskOutStatus();
|
||
if (tb != null)
|
||
{
|
||
if (tb.Rows.Count > 0)
|
||
{
|
||
List<PickingWaveGoodsModel> locList = ConvertHelper<PickingWaveGoodsModel>.ConvertToList(tb);
|
||
if (locList != null)
|
||
{
|
||
if (locList.Count > 0)
|
||
{
|
||
for (int i = 0; i < locList.Count; i++)
|
||
{
|
||
OutMisData(locList[i]);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
}
|
||
return ErrText;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
//手动出库判断是否已生成该出库单
|
||
public bool getPickData(string Locid)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getPickData(Locid);
|
||
}
|
||
|
||
public bool GetPickData_BARCODE(string BARCODE)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.GetPickData_BARCODE(BARCODE);
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
public bool getPickDataCount(int TASK_NUM)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getPickDataCount(TASK_NUM);
|
||
}
|
||
|
||
public bool getPickDataCount()
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getPickDataCount();
|
||
}
|
||
public void UpDateSort(string Locid,string sort)
|
||
{
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
|
||
|
||
DataProvider.Instance.PickingWaveGoods.UpDateSort(Locid,sort);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
}
|
||
public bool getLocS(string Locid)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getLocS(Locid);
|
||
}
|
||
|
||
public string getYckLoc(string layer)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getYckLoc(layer);
|
||
}
|
||
|
||
//判断模式
|
||
public DataTable getDecid(string decid)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getDecid(decid);
|
||
}
|
||
public DataTable getRemark(string locid)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getRemark(locid);
|
||
}
|
||
public DataTable getyck(string remark,string layer)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getyck(remark,layer);
|
||
}
|
||
public DataTable getYK(string ctl)
|
||
{
|
||
return DataProvider.Instance.PickingWaveGoods.getYK(ctl);
|
||
}
|
||
public string SerLocWaitInSts(string ctl, string goodsid, string barcode, string GOODS_NUM_SJ, string out_id, string status, string GoodsMeaSure, string PACKING_NUM, string goodsVolume)
|
||
{
|
||
//DataProvider.Instance.PickingWaveGoods.SerLocWaitInSts(ctl, goodsid, barcode,GOODS_NUM_SJ, out_id,status, GoodsMeaSure, PACKING_NUM, goodsVolume);
|
||
return ErrText;
|
||
}
|
||
/// <summary>
|
||
/// 任务下发完成写完成表
|
||
/// </summary>
|
||
/// <param name="erpData"></param>
|
||
/// <returns></returns>
|
||
public string ErpDataExpress(Mod_CUX_WMS_MOVE_ORDER_ISSU_ITF modeData)
|
||
{
|
||
decimal sl = 0;//剩余数量
|
||
string typeSts = "0";
|
||
DataTable tb = new DataTable();
|
||
tb = DataProvider.Instance.PickingWaveGoods.GetLocDataNo(modeData.SEGMENT1, modeData.QUANTITY, modeData.TO_SUBINVENTORY_CODE);
|
||
if (tb == null)
|
||
{
|
||
return "数据错误,没有该物料的库存";
|
||
}
|
||
if (tb.Rows.Count == 0)
|
||
{
|
||
//出库搬运单无库存状态改2
|
||
modeData.STATUS = 2;
|
||
IBussFactory<BussCUX_WMS_MOVE_ORDER_ISSU_ITF>.Instance().UPDATE_CUX_WMS_MOVE_ORDER_ISSU_ITF_STS(modeData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return "数据错误,没有该物料的库存";
|
||
}
|
||
|
||
#region 算拣选站台,原则平均分配
|
||
string outStand = string.Empty;
|
||
string strLocation = tb.Rows[0]["LOCATION_ID"].ToString();
|
||
if (strLocation.Substring(0, 2) == "01" || strLocation.Substring(0, 2) == "02")
|
||
{
|
||
outStand = "114";
|
||
}
|
||
else if (strLocation.Substring(0, 2) == "03" || strLocation.Substring(0, 2) == "04")
|
||
{
|
||
outStand = "214";
|
||
}
|
||
#region
|
||
//if (modeData.STORAGE_ID == "SCC001")
|
||
//{
|
||
// DataTable tbStaion = DataProvider.Instance.PickingWaveGoods.GetOutDataId(modeData.ORDER_ID);
|
||
// if (tbStaion != null)
|
||
// {
|
||
// if (tbStaion.Rows.Count > 0)
|
||
// {
|
||
// outStand = tbStaion.Rows[0]["outStand"].ToString();
|
||
// }
|
||
// else
|
||
// {
|
||
// DataSet tbstand = DataProvider.Instance.PickingWaveGoods.GetStation(modeData.STORAGE_ID);
|
||
// if (tbstand != null)
|
||
// {
|
||
// if (tbstand.Tables[0].Rows.Count > 0)
|
||
// {
|
||
// outStand = tbstand.Tables[0].Rows[0]["ConveyorID"].ToString();
|
||
// }
|
||
// else
|
||
// {
|
||
// outStand = tbstand.Tables[1].Rows[0]["outStand"].ToString();
|
||
// }
|
||
// }
|
||
// }
|
||
// }
|
||
//}
|
||
#endregion
|
||
#endregion
|
||
|
||
string status = "0";
|
||
string plcId = string.Empty;
|
||
string locId = tb.Rows[0]["LOCATION_ID"].ToString();//.LOCATION_ID;
|
||
string PUTIN_ID = tb.Rows[0]["PUTIN_ID"].ToString();
|
||
string ctl = tb.Rows[0]["ctl"].ToString();
|
||
string BARCODE = tb.Rows[0]["BARCODE"].ToString();
|
||
DataTable tbPlc = DataProvider.Instance.PickingWaveGoods.GetPickGoodsData(ctl, modeData.TO_SUBINVENTORY_CODE);
|
||
if (tbPlc != null)
|
||
{
|
||
if (tbPlc.Rows.Count > 0)
|
||
{
|
||
plcId = tbPlc.Rows[0]["plcid"].ToString();
|
||
status= tbPlc.Rows[0]["status"].ToString();
|
||
}
|
||
}
|
||
|
||
if (tb.Rows[0]["STS"].ToString()=="0")
|
||
{
|
||
//typeSts = "LTK";
|
||
typeSts = "";
|
||
if (plcId.Trim().Length == 0)
|
||
{
|
||
plcId = DataProvider.Instance.AutoRkData.GetPlcId();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
typeSts = "RF";
|
||
}
|
||
//int gosct = int.Parse(tb.Rows[0]["HASVOLUME"].ToString());
|
||
decimal goodsNum =decimal.Parse(tb.Rows[0]["SHELVES_NUM"].ToString());//库存数量
|
||
decimal pickNum = 0;///拣货数量
|
||
if (goodsNum == modeData.QUANTITY) ///库存数量与出库数量相同
|
||
{
|
||
pickNum = modeData.QUANTITY;
|
||
sl = 0;
|
||
}
|
||
else if (goodsNum > modeData.QUANTITY)///库存数量大于出库数量相同
|
||
{
|
||
pickNum = modeData.QUANTITY;
|
||
sl = 0;
|
||
}
|
||
else if (goodsNum < modeData.QUANTITY) //库存数量小于出库数量相同
|
||
{
|
||
sl = modeData.QUANTITY - goodsNum;//剩余数量
|
||
pickNum = goodsNum;
|
||
|
||
}
|
||
|
||
|
||
#region 单据增加
|
||
decimal goodsArea = 0;
|
||
DataTable dsGoodId = DataProvider.Instance.PickingWaveGoods.GetGoodsArea(modeData.SEGMENT1);
|
||
if (dsGoodId != null)
|
||
{
|
||
if (dsGoodId.Rows.Count > 0)
|
||
{
|
||
// 初始化变量并设置默认值
|
||
decimal shipping_length = 0;
|
||
decimal shipping_width = 0;
|
||
decimal pcs_number = 1; // 默认值设为 1,避免除以零
|
||
|
||
// 检查并转换 shipping_length,如果为空或无效则赋值为 0
|
||
if (dsGoodId.Rows[0]["shipping_length"] != null &&
|
||
dsGoodId.Rows[0]["shipping_length"] != DBNull.Value &&
|
||
decimal.TryParse(dsGoodId.Rows[0]["shipping_length"].ToString(), out decimal tempLength))
|
||
{
|
||
shipping_length = tempLength;
|
||
}
|
||
|
||
// 检查并转换 shipping_width,如果为空或无效则赋值为 0
|
||
if (dsGoodId.Rows[0]["shipping_width"] != null &&
|
||
dsGoodId.Rows[0]["shipping_width"] != DBNull.Value &&
|
||
decimal.TryParse(dsGoodId.Rows[0]["shipping_width"].ToString(), out decimal tempWidth))
|
||
{
|
||
shipping_width = tempWidth;
|
||
}
|
||
|
||
// 检查并转换 pcs_number,如果为空或无效则赋值为 1
|
||
if (dsGoodId.Rows[0]["pcs_number"] != null &&
|
||
dsGoodId.Rows[0]["pcs_number"] != DBNull.Value &&
|
||
decimal.TryParse(dsGoodId.Rows[0]["pcs_number"].ToString(), out decimal tempPcsNumber) &&
|
||
tempPcsNumber != 0)
|
||
{
|
||
pcs_number = tempPcsNumber;
|
||
}
|
||
|
||
// 计算 goodsArea
|
||
goodsArea = shipping_length * shipping_width / pcs_number / 1000000;
|
||
|
||
//a.shipping_length,a.shipping_width,a.pcs_number
|
||
//Shipping_width*Shipping_length/PCS_number/1000000
|
||
//decimal shipping_length = Convert.ToDecimal(dsGoodId.Rows[0]["shipping_length"].ToString ());
|
||
//decimal shipping_width = Convert.ToDecimal(dsGoodId.Rows[0]["shipping_width"].ToString());
|
||
//decimal pcs_number = Convert.ToDecimal(dsGoodId.Rows[0]["pcs_number"].ToString());
|
||
|
||
//goodsArea = shipping_length * shipping_width / pcs_number / 1000000;
|
||
|
||
}
|
||
}
|
||
|
||
string ckid = "CK" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
|
||
|
||
|
||
PickingWaveGoodsModel pickData = new PickingWaveGoodsModel();
|
||
pickData.PICKINGID = ckid;
|
||
pickData.GOOD_ID = modeData.SEGMENT1;
|
||
pickData.GOODS_NUM = 0;
|
||
pickData.PICKING_NUM = pickNum;
|
||
pickData.PACKING_NUM = 0;
|
||
pickData.plcId = plcId;
|
||
pickData.REMARK = "";
|
||
pickData.LOC_ID = locId;
|
||
pickData.outStand = outStand;
|
||
pickData.STORAGE_ID = modeData.TO_SUBINVENTORY_CODE;
|
||
pickData.CTL = ctl;
|
||
pickData.OUT_ID = ckid;
|
||
pickData.typests = typeSts;
|
||
pickData.status = status;
|
||
pickData.GOODS_NUM_SJ = 0;
|
||
pickData.PUTIN_ID = PUTIN_ID;
|
||
pickData.BARCODE = BARCODE;
|
||
pickData.PROVIDER_ID = "";//MES 工单号
|
||
pickData.PRICE = goodsArea;//面积
|
||
DataProvider.Instance.PickingWaveGoods.InsertPickingWaveGoods(pickData);
|
||
#endregion
|
||
|
||
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
if (locId != "")
|
||
{
|
||
if (sl == 0)
|
||
{
|
||
//DataProvider.Instance.OrderDetail.UpdateOrderDetailData(modeData.ORDER_ID, modeData.GOOD_ID, "");
|
||
//logList.Add(DataProvider.Instance.logData);
|
||
|
||
modeData.STATUS = 3;//CUX_WMS_MOVE_ORDER_ISSU_ITF sts 状态(1:未处理;2:错误;3:成功)
|
||
modeData.QUANTITY_DELIVERED = pickNum;
|
||
IBussFactory<BussCUX_WMS_MOVE_ORDER_ISSU_ITF>.Instance().UPDATE_CUX_WMS_MOVE_ORDER_ISSU_ITF_STS(modeData);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
else
|
||
{
|
||
//modeData.PICK_NUM = pickNum;///已经拣货数量
|
||
//modeData.GOODS_NUM = sl;///剩余数量
|
||
//DataProvider.Instance.OrderDetail.UpdateOrderDetailPickNum(modeData);
|
||
//logList.Add(DataProvider.Instance.logData);
|
||
|
||
//modeData.STATUS = 1;//CUX_WMS_MOVE_ORDER_ISSU_ITF sts 状态(1:未处理;2:错误;3:成功)
|
||
|
||
modeData.QUANTITY_DELIVERED = pickNum;//已经拣货数量
|
||
modeData.QUANTITY = sl;//剩余数量
|
||
IBussFactory<BussCUX_WMS_MOVE_ORDER_ISSU_ITF>.Instance().UPDATE_CUX_WMS_MOVE_ORDER_ISSU_ITF_STS(modeData);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
|
||
}
|
||
|
||
//更改库存
|
||
MIStockModel misMode = new MIStockModel();
|
||
misMode.CTL = ctl;
|
||
misMode.LOCATION_ID = locId;
|
||
misMode.OCCUPY_NUM = pickNum;
|
||
misMode.GOODS_ID = modeData.SEGMENT1;
|
||
misMode.STORAGE_ID = modeData.TO_SUBINVENTORY_CODE;
|
||
misMode.PUTIN_ID = PUTIN_ID;
|
||
misMode.BARCODE= BARCODE;
|
||
//DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(misMode);
|
||
DataProvider.Instance.MIStock.UpdateMisSTS("1", locId, misMode.STORAGE_ID, misMode.GOODS_ID, misMode.BARCODE, misMode.OCCUPY_NUM);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
|
||
TaCmtOrRak();
|
||
}
|
||
else
|
||
{
|
||
TranRollback();
|
||
return modeData.SEGMENT1+"没有库存";
|
||
}
|
||
|
||
return ErrText;
|
||
|
||
}
|
||
|
||
public List<PickingWaveGoodsModel> LtkgetPickData(string outStand)
|
||
{
|
||
DataTable table = DataProvider.Instance.PickingWaveGoods.LtkgetPickData(outStand);
|
||
if (table != null)
|
||
{
|
||
List<PickingWaveGoodsModel> PickingWaveGoodsModel = ConvertHelper<PickingWaveGoodsModel>.ConvertToList(table);
|
||
|
||
|
||
return PickingWaveGoodsModel;
|
||
}
|
||
return null;
|
||
|
||
}
|
||
public List<StorageAreaLocationModel> GetLocaStationAllData(string locID)
|
||
{
|
||
DataTable table = DataProvider.Instance.PickingWaveGoods.GetLocaStationAllData(locID);
|
||
if (table != null)
|
||
{
|
||
List<StorageAreaLocationModel> locData = ConvertHelper<StorageAreaLocationModel>.ConvertToList(table);
|
||
|
||
|
||
return locData;
|
||
|
||
}
|
||
return null;
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取拣货的明细
|
||
/// </summary>
|
||
public PickingWaveGoodsModel GetPickDataBarcode(string barcode)
|
||
{
|
||
DataTable table = DataProvider.Instance.PickingWaveGoods.GetPickDataBarcode(barcode);
|
||
List<PickingWaveGoodsModel> OutModel = ConvertHelper<PickingWaveGoodsModel>.ConvertToList(table);
|
||
if(OutModel.Count>0)
|
||
{
|
||
return OutModel[0];
|
||
}
|
||
return null;
|
||
}
|
||
/// <summary>
|
||
/// 任务下发到PLC写重量
|
||
/// </summary>
|
||
/// <param name="locId"></param>
|
||
public string UpDateWghMisBak(string barcode, string wgh)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.UpDateWghMisBak(barcode, wgh);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
return this.ErrText;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 减去库存
|
||
/// </summary>
|
||
/// <param name="barcode"></param>
|
||
public string OutMisData(PickingWaveGoodsModel pickData)
|
||
{
|
||
decimal strNum = 0;
|
||
string height = "33";
|
||
if (pickData == null)
|
||
{
|
||
return "数据传入异常";
|
||
}
|
||
DataTable tableMis = DataProvider.Instance.MIStock.GetMisDataOut(pickData.LOC_ID, pickData.GOOD_ID, pickData.BARCODE);
|
||
List<MIStockModel> OutMisModel = ConvertHelper<MIStockModel>.ConvertToList(tableMis);
|
||
if (tableMis == null)
|
||
{
|
||
return null;
|
||
}
|
||
int i = 0;
|
||
if (tableMis.Rows.Count == 0)
|
||
{
|
||
return null;
|
||
}
|
||
if (OutMisModel.Count > 0)
|
||
{
|
||
foreach (MIStockModel modleS in OutMisModel)
|
||
{
|
||
if ( pickData.typests == "1" || pickData.typests == "2" || pickData.typests == "")
|
||
{
|
||
|
||
// MIStockModel mis = OutMisModel[0];
|
||
MIStockBackModel MIBackModel = new MIStockBackModel();
|
||
MIBackModel.AREA_ID = modleS.AREA_ID;
|
||
MIBackModel.ORI_NUM = modleS.SHELVES_NUM;
|
||
MIBackModel.GOODS_NUM = pickData.PICKING_NUM;
|
||
MIBackModel.GOODS_NUM_SJ = pickData.PICKING_NUM;
|
||
MIBackModel.CHANGE_NUM = modleS.SHELVES_NUM - pickData.PICKING_NUM;
|
||
strNum = MIBackModel.CHANGE_NUM;
|
||
MIBackModel.GOODS_ID = modleS.GOODS_ID;
|
||
|
||
MIBackModel.LOCATION_ID = modleS.LOCATION_ID;
|
||
MIBackModel.OPERATOR_DATE = System.DateTime.Now;
|
||
// MIBackModel.GOODS_NUM_SJ = 1;
|
||
MIBackModel.OPERATOR_TYPE = "1";
|
||
MIBackModel.REMARK = modleS.REMARK;
|
||
MIBackModel.PRODUCTION_DATE = modleS.PRODUCTION_DATE;
|
||
MIBackModel.PUTIN_ID = modleS.PUTIN_ID;
|
||
MIBackModel.STOCK_ID = modleS.STOCK_ID;
|
||
MIBackModel.STORAGE_ID = modleS.STORAGE_ID;
|
||
MIBackModel.OUT_ID = pickData.OUT_ID;
|
||
MIBackModel.BARCODE = modleS.BARCODE;
|
||
MIBackModel.ProDucLotId = modleS.PROVIDER_ID;
|
||
MIBackModel.PICKINGID = pickData.PICKINGID;
|
||
// MIBackModel.OPERATOR_MAN = userid;
|
||
MIBackModel.GOODS_NAME = modleS.GOODS_NAME;
|
||
// MIBackModel.OPERATOR_MAN = userid;
|
||
MIBackModel.High = modleS.High;
|
||
height = modleS.High;
|
||
MIBackModel.WGH = modleS.WGH;
|
||
MIBackModel.WARE_DATE = modleS.WARE_DATE;
|
||
MIBackModel.CTL = modleS.CTL;
|
||
|
||
DataProvider.Instance.MIStockBack.AddBMiStockack(MIBackModel);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
|
||
|
||
//modleS.SHELVES_NUM = MIBackModel.CHANGE_NUM;
|
||
//modleS.OCCUPY_NUM = modleS.OCCUPY_NUM - pickData.GOODS_NUM_SJ;
|
||
//if (modleS.OCCUPY_NUM < 0)
|
||
//{
|
||
// modleS.OCCUPY_NUM = 0;
|
||
//}
|
||
|
||
MIStockModel modelSk = new MIStockModel();
|
||
modelSk.LOCATION_ID = pickData.LOC_ID;
|
||
modelSk.CTL = pickData.CTL;
|
||
//if (pickData.GOOD_ID == "000000")
|
||
//{
|
||
// modelSk.BARCODE = "";
|
||
//}
|
||
//else
|
||
//{
|
||
// modelSk.BARCODE = pickData.BARCODE;
|
||
//}
|
||
|
||
DataProvider.Instance.MIStock.DeleteMIStock(modelSk);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
|
||
//if (MIBackModel.CHANGE_NUM == 0)
|
||
//{
|
||
|
||
//}
|
||
//else
|
||
//{
|
||
|
||
// //DataProvider.Instance.MIStock.UpdateMIStockNum(modleS);
|
||
// //logList.Add(DataProvider.Instance.logData);
|
||
|
||
//}
|
||
|
||
DataProvider.Instance.AutoRkData.UpdateLocCtlSts(pickData.LOC_ID, "0", pickData.STORAGE_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.InsertProDucLotIdGoodsBack(pickData.LOC_ID, pickData.OUT_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.DeletePickingWaveGoods(pickData.LOC_ID, pickData.OUT_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
//DataProvider.Instance.PickingWaveGoods.UpdateErpData(pickData.OUT_ID, pickData.GOOD_ID);
|
||
//logList.Add(DataProvider.Instance.logData);
|
||
|
||
TaCmtOrRak();
|
||
}
|
||
else
|
||
{
|
||
//移库更新库存位置
|
||
MIStockModel modelSk = new MIStockModel();
|
||
modelSk.GOODS_ID = pickData.GOOD_ID;
|
||
modelSk.LOCATION_ID = pickData.LOC_ID;
|
||
modelSk.STORAGE_ID = pickData.STORAGE_ID;
|
||
DataProvider.Instance.StorageAreaLocation.UpdateLocSts(pickData.LOC_ID, "0");
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.MIStock.UpdateMisLocSts(pickData.LOC_ID, pickData.ToWhseloc, "0");
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.AutoRkData.UpdateLocCtlSts(pickData.ToWhseloc, "1", pickData.STORAGE_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.InsertProDucLotIdGoodsBack(pickData.LOC_ID, pickData.OUT_ID);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.DeletePickingWaveGoods(pickData.LOC_ID, pickData.OUT_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
}
|
||
}
|
||
}
|
||
return ErrText;
|
||
}
|
||
|
||
|
||
public string OutTask(PickingWaveGoodsModel pickData)
|
||
{
|
||
//判断是否有已下发的堆垛机任务
|
||
int[] a = { 1, 2, 3 };
|
||
|
||
//判断是否需要移库
|
||
//
|
||
decimal strNum = 0;
|
||
string height = "33";
|
||
if (pickData == null)
|
||
{
|
||
return "数据传入异常";
|
||
}
|
||
DataTable tableMis = DataProvider.Instance.MIStock.GetMisDataOut(pickData.LOC_ID, pickData.GOOD_ID, pickData.BARCODE);
|
||
List<MIStockModel> OutMisModel = ConvertHelper<MIStockModel>.ConvertToList(tableMis);
|
||
if (tableMis == null)
|
||
{
|
||
return null;
|
||
}
|
||
int i = 0;
|
||
if (tableMis.Rows.Count == 0)
|
||
{
|
||
return null;
|
||
}
|
||
if (OutMisModel.Count > 0)
|
||
{
|
||
foreach (MIStockModel modleS in OutMisModel)
|
||
{
|
||
if (pickData.typests == "1" || pickData.typests == "2" || pickData.typests == "")
|
||
{
|
||
|
||
// MIStockModel mis = OutMisModel[0];
|
||
MIStockBackModel MIBackModel = new MIStockBackModel();
|
||
MIBackModel.AREA_ID = modleS.AREA_ID;
|
||
MIBackModel.ORI_NUM = modleS.SHELVES_NUM;
|
||
MIBackModel.GOODS_NUM = pickData.PICKING_NUM;
|
||
MIBackModel.GOODS_NUM_SJ = pickData.PICKING_NUM;
|
||
MIBackModel.CHANGE_NUM = modleS.SHELVES_NUM - pickData.PICKING_NUM;
|
||
strNum = MIBackModel.CHANGE_NUM;
|
||
MIBackModel.GOODS_ID = modleS.GOODS_ID;
|
||
|
||
MIBackModel.LOCATION_ID = modleS.LOCATION_ID;
|
||
MIBackModel.OPERATOR_DATE = System.DateTime.Now;
|
||
// MIBackModel.GOODS_NUM_SJ = 1;
|
||
MIBackModel.OPERATOR_TYPE = "1";
|
||
MIBackModel.REMARK = modleS.REMARK;
|
||
MIBackModel.PRODUCTION_DATE = modleS.PRODUCTION_DATE;
|
||
MIBackModel.PUTIN_ID = modleS.PUTIN_ID;
|
||
MIBackModel.STOCK_ID = modleS.STOCK_ID;
|
||
MIBackModel.STORAGE_ID = modleS.STORAGE_ID;
|
||
MIBackModel.OUT_ID = pickData.OUT_ID;
|
||
MIBackModel.BARCODE = modleS.BARCODE;
|
||
MIBackModel.ProDucLotId = modleS.PROVIDER_ID;
|
||
MIBackModel.PICKINGID = pickData.PICKINGID;
|
||
// MIBackModel.OPERATOR_MAN = userid;
|
||
MIBackModel.GOODS_NAME = modleS.GOODS_NAME;
|
||
// MIBackModel.OPERATOR_MAN = userid;
|
||
MIBackModel.High = modleS.High;
|
||
height = modleS.High;
|
||
MIBackModel.WGH = modleS.WGH;
|
||
MIBackModel.WARE_DATE = modleS.WARE_DATE;
|
||
MIBackModel.CTL = modleS.CTL;
|
||
|
||
DataProvider.Instance.MIStockBack.AddBMiStockack(MIBackModel);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
|
||
|
||
//modleS.SHELVES_NUM = MIBackModel.CHANGE_NUM;
|
||
//modleS.OCCUPY_NUM = modleS.OCCUPY_NUM - pickData.GOODS_NUM_SJ;
|
||
//if (modleS.OCCUPY_NUM < 0)
|
||
//{
|
||
// modleS.OCCUPY_NUM = 0;
|
||
//}
|
||
|
||
MIStockModel modelSk = new MIStockModel();
|
||
modelSk.LOCATION_ID = pickData.LOC_ID;
|
||
modelSk.CTL = pickData.CTL;
|
||
//if (pickData.GOOD_ID == "000000")
|
||
//{
|
||
// modelSk.BARCODE = "";
|
||
//}
|
||
//else
|
||
//{
|
||
// modelSk.BARCODE = pickData.BARCODE;
|
||
//}
|
||
|
||
DataProvider.Instance.MIStock.DeleteMIStock(modelSk);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
|
||
//if (MIBackModel.CHANGE_NUM == 0)
|
||
//{
|
||
|
||
//}
|
||
//else
|
||
//{
|
||
|
||
// //DataProvider.Instance.MIStock.UpdateMIStockNum(modleS);
|
||
// //logList.Add(DataProvider.Instance.logData);
|
||
|
||
//}
|
||
|
||
DataProvider.Instance.AutoRkData.UpdateLocCtlSts(pickData.LOC_ID, "0", pickData.STORAGE_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.InsertProDucLotIdGoodsBack(pickData.LOC_ID, pickData.OUT_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.DeletePickingWaveGoods(pickData.LOC_ID, pickData.OUT_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
//DataProvider.Instance.PickingWaveGoods.UpdateErpData(pickData.OUT_ID, pickData.GOOD_ID);
|
||
//logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
}
|
||
else
|
||
{
|
||
//移库更新库存位置
|
||
MIStockModel modelSk = new MIStockModel();
|
||
modelSk.GOODS_ID = pickData.GOOD_ID;
|
||
modelSk.LOCATION_ID = pickData.LOC_ID;
|
||
modelSk.STORAGE_ID = pickData.STORAGE_ID;
|
||
DataProvider.Instance.StorageAreaLocation.UpdateLocSts(pickData.LOC_ID, "0");
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.MIStock.UpdateMisLocSts(pickData.LOC_ID, pickData.ToWhseloc, "0");
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.AutoRkData.UpdateLocCtlSts(pickData.ToWhseloc, "1", pickData.STORAGE_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.InsertProDucLotIdGoodsBack(pickData.LOC_ID, pickData.OUT_ID);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.DeletePickingWaveGoods(pickData.LOC_ID, pickData.OUT_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
}
|
||
}
|
||
}
|
||
return ErrText;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 合并托盘确定按钮
|
||
/// </summary>
|
||
/// <param name="STORAGE_ID"></param>
|
||
/// <param name="ctl"></param>
|
||
/// <param name="whseloc"></param>
|
||
/// <param name="outStand"></param>
|
||
public void MergeCtl(string STORAGE_ID,string ctl,string locId,string newLocid,string outStand)
|
||
{
|
||
string plcId= DataProvider.Instance.AutoRkData.GetPlcId();
|
||
IBussFactory<BussAutoRk>.Instance().OrderMesAdd("","",plcId, "", outStand, "", STORAGE_ID, ctl, 1, "1", "", "-1");
|
||
|
||
DataProvider.Instance.AutoRkData.UpdateLocCtlSts(locId, "0", STORAGE_ID);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.MIStock.UpdateMisLocData(newLocid, locId, STORAGE_ID,ctl
|
||
);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
|
||
}
|
||
/// <summary>
|
||
/// 合并后的托盘回库
|
||
/// </summary>
|
||
public void MergeCtlReturn(string STORAGE_ID, string ctl, string locId, string outStand)
|
||
{
|
||
string plcId = DataProvider.Instance.AutoRkData.GetPlcId();
|
||
IBussFactory<BussAutoRk>.Instance().OrderMesAdd("","",plcId, "", outStand, "", STORAGE_ID, ctl, 1, "1", locId, "-1");
|
||
|
||
}
|
||
/// <summary>
|
||
/// 下发任务到PLC置Status
|
||
/// </summary>
|
||
/// <param name="ProDucLotId"></param>
|
||
public string UpdateStsPIckEnd(string ProDucLotId,string sts)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.UpdateStsPIckEnd(ProDucLotId, sts);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
public string UpdaPickNum(string pickId, string goodsId, decimal picnum)
|
||
{
|
||
|
||
DataProvider.Instance.PickingWaveGoods.UpdaPickNum(pickId, goodsId, picnum);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
|
||
public string UpdateLocsts(string locid)
|
||
{
|
||
|
||
DataProvider.Instance.PickingWaveGoods.UpdateLocSts(locid);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
/// <summary>
|
||
/// 新增拣选明细
|
||
/// </summary>
|
||
/// <param name="info"></param>
|
||
/// <returns></returns>
|
||
public string InsertPickingInfo(PickngWaveInfo info)
|
||
{
|
||
DataProvider.Instance.pickingWareInfo.InsertPickingInfo(info);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.PickingWaveGoods.UpdaPickNum(info.PICKINGID, info.GOOD_ID, info.PICKING_NUM);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
|
||
public string DelePickingInfo(string picking, string locId)
|
||
{
|
||
DataProvider.Instance.pickingWareInfo.DelePickingInfo(picking,locId);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
|
||
public List<PickngWaveInfo> GetPickInfo(string picking,string goodsid)
|
||
{
|
||
DataTable tableMis = new DataTable();
|
||
tableMis= DataProvider.Instance.pickingWareInfo.GetPickInfo(picking,goodsid);
|
||
|
||
List<PickngWaveInfo> OutMisModel = ConvertHelper<PickngWaveInfo>.ConvertToList(tableMis);
|
||
if (tableMis == null)
|
||
{
|
||
return null;
|
||
}
|
||
return OutMisModel;
|
||
}
|
||
}
|
||
}
|