BaoKai_202508-Wms-Jingwang..../WMS.Business/CK/BussPickingWaveGoods.cs
2025-08-24 09:35:55 +08:00

993 lines
40 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}