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

242 lines
8.7 KiB
C#
Raw 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 System.Data;
using WMS.Model.Stock;
using WMS.IData;
using WMS.Common;
using WMS.Model.Base;
namespace WMS.Business.Stock
{
public class BussAdjustList : IBussFactory
{
#region
/// <summary>
/// 查询库存调整单
/// </summary>
/// <param name="model"></param>
/// <returns>实体集合</returns>
public List<AdjustListModel> GetAdjustList(AdjustListModel model)
{
DataTable dt = DataProvider.Instance.AdjustList.GetAdjustList(model);
List<AdjustListModel> list = ConvertHelper<AdjustListModel>.ConvertToList(dt);
return list;
}
#endregion
#region
/// <summary>
/// 新增或修改
/// </summary>
/// <param name="mode">mode 实体</param>
/// <param name="flg">工作标志 flg 0 新增1 修改</param>
public string ExecInsertUpdate(AdjustListModel mode, int flg)
{
Transaction = DataProvider.Instance.TranOracle;
if (flg == 0)
{
DataProvider.Instance.AdjustList.ExecListAdd(mode);
}
else
{
DataProvider.Instance.AdjustList.ExecListUpdate(mode);
}
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
#region ()
/// <summary>
/// 新增或修改
/// </summary>
/// <param name="mode">主表</param>
/// <param name="list">明细实体集合</param>
/// <param name="flg">操作标志 0 新增1 修改</param>
/// <returns></returns>
public string InsertUpdate(AdjustListModel mode, List<AdjustListInfoModel> list, int flg,ref string listId)
{
if (flg == 0)//新增
{
#region Status改成已调整
//获取流水号
if (mode.List_reason == "0" && !string.IsNullOrEmpty(mode.Count_id))
{
CountingModel countModel = new CountingModel();
countModel.COUNT_ID = mode.Count_id;
countModel.COUNT_STATUS = "5";
DataProvider.Instance.Counting.Update(countModel);
}
#endregion
Transaction = DataProvider.Instance.TranOracle;
// DataProvider.Instance.Message.Add(messModel);
foreach (AdjustListInfoModel model in list)
{
model.LIST_ID = listId;
DataProvider.Instance.AdjustListInfo.ExecListAdd(model);
}
}
else//修改
{
//先删除之前的表
AdjustListInfoModel mode_info = new AdjustListInfoModel();
mode_info.LIST_ID = mode.List_id;
DataProvider.Instance.AdjustListInfo.DelList(mode_info);
Transaction = DataProvider.Instance.TranOracle;
//修改主表和插入新的明细
DataProvider.Instance.AdjustList.ExecListUpdate(mode);
foreach (AdjustListInfoModel model in list)
{
DataProvider.Instance.AdjustListInfo.ExecListAdd(model);
}
}
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
#region
/// <summary>
/// 库存调整单审核
/// </summary>
/// <param name="adListmodel"></param>
/// <param name="userID"></param>
/// <returns></returns>
public string Check(AdjustListModel adListmodel, string userID)
{
Transaction = DataProvider.Instance.TranOracle;
DateTime dt_now = System.DateTime.Now.Date;
#region
adListmodel.Status = "2";
adListmodel.List_checkdate = dt_now;
adListmodel.List_checkper = userID;
DataProvider.Instance.AdjustList.Check(adListmodel);
#endregion
//查出调整单明细
AdjustListInfoModel adinfo_model = new AdjustListInfoModel();
adinfo_model.LIST_ID = adListmodel.List_id;
List<AdjustListInfoModel> adinfo_list = ConvertHelper<AdjustListInfoModel>.ConvertToList(DataProvider.Instance.AdjustListInfo.GetAdjustList(adinfo_model));
//库存实体、库位实体、商品实体
MIStockModel stoc = new MIStockModel();
StorageAreaLocationModel stoc_loc = new StorageAreaLocationModel();
GoodsInfoModel goods = new GoodsInfoModel();
foreach (AdjustListInfoModel _ad_info in adinfo_list)
{
//调整数量为0 的过滤
if (_ad_info.LIST_INFO_COUNT == 0)
{
continue;
}
#region
stoc = new MIStockModel();
stoc.STORAGE_ID = _ad_info.Storage_id;
stoc.AREA_ID = _ad_info.Area_id;
stoc.LOCATION_ID = _ad_info.LOC_ID;
stoc.GOODS_ID = _ad_info.LIST_INFO_GOODSID;
stoc.PROVIDER_NAME = _ad_info.PUTIN_ID;
//查询库存实体
DataTable dt_Stock = DataProvider.Instance.MIStock.GetMIStockDT(stoc);
stoc = ConvertHelper<MIStockModel>.ConvertToList(dt_Stock)[0];
//修改库存数量
stoc.SHELVES_NUM = _ad_info.NEWCOUNT;
DataProvider.Instance.MIStock.UpdateMIStock(stoc);
#endregion
#region
MIStockBackModel back_model = new MIStockBackModel();
back_model.ID = DataProvider.Instance.MIStockBack.GetSerialNum();
back_model.STOCK_ID = stoc.STOCK_ID;
back_model.STORAGE_ID = _ad_info.Storage_id;
back_model.AREA_ID = _ad_info.Area_id;
back_model.LOCATION_ID = _ad_info.LOC_ID;
back_model.GOODS_TYPEID = _ad_info.Goods_typeid;
back_model.GOODS_ID = _ad_info.LIST_INFO_GOODSID;
back_model.ORI_NUM = _ad_info.Oldcount;
back_model.CHANGE_NUM = _ad_info.NEWCOUNT;//改变后数量
back_model.GOODS_NUM = _ad_info.LIST_INFO_COUNT;
back_model.OPERATOR_DATE = dt_now;
back_model.OPERATOR_MAN = userID;
back_model.PRODUCTION_DATE = _ad_info.Production_date;
back_model.OPERATOR_TYPE = "2";//库存调整
back_model.REMARK = "库存调整";
DataProvider.Instance.MIStockBack.AddBMiStockack(back_model);
#endregion
#region
//查询商品单位体积
Decimal goods_Volume = Convert.ToDecimal(DataProvider.Instance.Goods.GetGoodsDataTable(_ad_info.LIST_INFO_GOODSID, "", "", "").Rows[0]["GVOLUME"].ToString());
stoc_loc = new StorageAreaLocationModel();
stoc_loc.STORAGE_ID = back_model.STORAGE_ID;
stoc_loc.STORAGE_AREA_ID = back_model.AREA_ID;
stoc_loc.LOCATION_ID = back_model.LOCATION_ID;
stoc_loc.HASVOLUME = back_model.CHANGE_NUM * goods_Volume;
DataProvider.Instance.StorageAreaLocation.UpdateLocHasVolume(stoc_loc);
#endregion
}
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
#region
/// <summary>
/// 删除库存调整单(明细一起删除掉)
/// </summary>
/// <param name="model">model 实体</param>
/// <returns>影响行数</returns>
public string DelList(AdjustListModel model)
{
Transaction = DataProvider.Instance.TranOracle;
DataProvider.Instance.AdjustList.DelList(model);
//删除明细
AdjustListInfoModel info_model = new AdjustListInfoModel();
info_model.LIST_ID = model.List_id;
//主表
DataProvider.Instance.AdjustListInfo.DelList(info_model);
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
}
}