BaoKai_202508-Wms-Jingwang..../WMS.Business/CK/BussPickingWaveGoods.cs

993 lines
40 KiB
C#
Raw Normal View History

2025-08-24 09:35:55 +08:00
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;
}
}
}