You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
936 lines
54 KiB
C#
936 lines
54 KiB
C#
using Dapper;
|
|
using Estsh.Core.Base;
|
|
using Estsh.Core.Model.EnumUtil;
|
|
using Estsh.Core.Models;
|
|
using Estsh.Core.Services;
|
|
using Estsh.Core.Wms.IRepositories;
|
|
using Estsh.Core.Wms.IServices;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Estsh.Core.Wms.Services
|
|
{
|
|
/// <summary>
|
|
/// 零星出库
|
|
/// </summary>
|
|
public class ScatteredOutStockService : BaseService<BaseEntity>, IScatteredOutStockService
|
|
{
|
|
private readonly IScatteredOutStockRepository repository;
|
|
public ScatteredOutStockService(IScatteredOutStockRepository _repository) : base(_repository)
|
|
{
|
|
repository = _repository;
|
|
}
|
|
public SetObjectDetail GetScatteredOutStockOrderList(string orderNo)
|
|
{
|
|
SetObjectDetail rfInfo = new SetObjectDetail();//返回消息
|
|
List<WmsOutstock> wmsMoves = repository.GetScatteredOutStockOrderList(orderNo);
|
|
if (wmsMoves.Count > 0)
|
|
{
|
|
rfInfo.type = "PASS";
|
|
rfInfo.message = "成功";
|
|
rfInfo.wmsObjectDetail = wmsMoves.ConvertAll(s => (object)s);
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到数据,请检查!";
|
|
}
|
|
return rfInfo;
|
|
}
|
|
public SetObjectDetail GetScatteredOutStockOrderListByOrderNo(string orderNo)
|
|
{
|
|
SetObjectDetail rfInfo = new SetObjectDetail();
|
|
List<WmsOutstock> wmsMoves = repository.GetScatteredOutStockOrderListByOrderNo(orderNo);
|
|
if (wmsMoves.Count > 0)
|
|
{
|
|
rfInfo.type = "PASS";
|
|
rfInfo.message = "成功";
|
|
rfInfo.wmsObjectDetail = wmsMoves.ConvertAll(s => (object)s);
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到数据,请检查!";
|
|
}
|
|
return rfInfo;
|
|
}
|
|
|
|
public SetObjectDetail CheckStockByCartonAlocate(string cartonNo, string orderNo, string loginId)
|
|
{
|
|
|
|
SetObjectDetail rfInfo = new SetObjectDetail();
|
|
SysStock sysStocksIf = repository.GetStockByCartonNoIf(cartonNo);
|
|
if (sysStocksIf == null)
|
|
{
|
|
//提示 [M0090105]:该条码不可用,请检查!
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + cartonNo + "]:该条码不存在,请检查!";
|
|
return rfInfo;
|
|
}
|
|
List<WmsOutstock> WmsOutstocks = repository.GetOutStockByOrderNo(orderNo);
|
|
if (WmsOutstocks.Count == 0)
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + orderNo + "]:该订单是未创建或已关闭状态,请检查!";
|
|
return rfInfo;
|
|
}
|
|
if (sysStocksIf.Enabled != "Y")
|
|
{
|
|
//提示 [M0090105]:箱条码已冻结,无法操作!
|
|
rfInfo.type = "FAIL";
|
|
if (sysStocksIf.CartonType == 0)
|
|
{ rfInfo.message = "[" + cartonNo + "]:该箱条码已冻结,无法操作!"; }
|
|
else
|
|
{ rfInfo.message = "[" + cartonNo + "]:该台车已冻结,无法操作!"; }
|
|
|
|
return rfInfo;
|
|
}
|
|
if (sysStocksIf.Status != (int)WmsEnumUtil.StockStatus.INSTOCKED && sysStocksIf.Status != (int)WmsEnumUtil.StockStatus.ONLINED)
|
|
{
|
|
//提示 [M0090105]:该条码是**状态,无法操作!
|
|
rfInfo.type = "FAIL";
|
|
if (sysStocksIf.CartonType == 0)
|
|
{ rfInfo.message = "[" + cartonNo + "]:该条码不是已上架/已上线状态,请检查!"; }
|
|
else
|
|
{ rfInfo.message = "[" + cartonNo + "]:该台车不是已上架/已上线状态,请检查!"; }
|
|
|
|
return rfInfo;
|
|
}
|
|
List<string> sqlStrings = new List<string>();
|
|
List<DynamicParameters> parameterList = new List<DynamicParameters>();
|
|
StringBuilder stringBuilder = new StringBuilder(1024);
|
|
if (sysStocksIf.CartonType == 0)
|
|
{
|
|
SysStock sysStocks = repository.GetStockByCartonNo(cartonNo);
|
|
//箱条码零星出库
|
|
List<WmsOutstockDetail> outstockDetailsErp = repository.GetOutstockByOrderNoSrcErp(orderNo, sysStocks.ErpWarehouse);
|
|
if (outstockDetailsErp.Count == 0)
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + cartonNo + "]:该条码对应库存地不在订单内!";
|
|
return rfInfo;
|
|
}
|
|
|
|
List<WmsOutstockDetail> WmsOutstockDetails = repository.GetOutstockByOrderNoPartNo(orderNo, sysStocks.PartNo);
|
|
if (WmsOutstockDetails.Count == 0)
|
|
{
|
|
//提示 [M0090105]:该条码零件号不在单据内!
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + cartonNo + "]:该条码零件号不在订单内!";
|
|
return rfInfo;
|
|
}
|
|
|
|
for (int i = 0; i < WmsOutstockDetails.Count; i++)
|
|
{
|
|
|
|
int remainNum = Convert.ToInt32(WmsOutstockDetails[i].Qty - WmsOutstockDetails[i].OutQty);//余数
|
|
if (sysStocks.Qty == remainNum || sysStocks.Qty < remainNum)
|
|
{
|
|
if (WmsOutstocks[0].OrderStatus != (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING)//
|
|
{ //已完成
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("UPDATE wms_outstock SET order_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no='" + orderNo + "';");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
}
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("UPDATE wms_outstock_detail SET out_qty+=" + sysStocks.Qty + ",item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED + " ,update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE ruid='" + WmsOutstockDetails[i].Ruid + "';");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("UPDATE sys_stock SET status=" + (int)WmsEnumUtil.StockStatus.OUTSTOCKED + ",locate_id=0,locate_name='',zone_id=0,zone_name='',warehouse_id=0,warehouse_name='',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE carton_no='" + cartonNo + "';");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("INSERT INTO dbo.wms_outstock_sn ");
|
|
stringBuilder.Append("( ");
|
|
stringBuilder.Append(" order_no, ");
|
|
stringBuilder.Append(" item_no, ");
|
|
stringBuilder.Append(" part_id, ");
|
|
stringBuilder.Append(" part_no, ");
|
|
stringBuilder.Append(" part_spec, ");
|
|
stringBuilder.Append(" carton_no, ");
|
|
stringBuilder.Append(" qty, ");
|
|
stringBuilder.Append(" unit, ");
|
|
stringBuilder.Append(" status, ");
|
|
stringBuilder.Append(" factory_id, ");
|
|
stringBuilder.Append(" factory_code, ");
|
|
stringBuilder.Append(" enabled, ");
|
|
stringBuilder.Append(" create_userid, ");
|
|
stringBuilder.Append(" create_time, ");
|
|
stringBuilder.Append(" guid ");
|
|
stringBuilder.Append(") ");
|
|
stringBuilder.Append("VALUES ");
|
|
stringBuilder.Append("( N'" + orderNo + "', ");
|
|
stringBuilder.Append(" '" + WmsOutstockDetails[i].ItemNo + "',");
|
|
stringBuilder.Append(" " + WmsOutstockDetails[i].PartId + ", ");
|
|
stringBuilder.Append(" N'" + WmsOutstockDetails[i].PartNo + "',");
|
|
stringBuilder.Append(" N'" + WmsOutstockDetails[i].PartSpec + "',");
|
|
stringBuilder.Append(" '" + cartonNo + "',");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.Unit + "',");
|
|
stringBuilder.Append(" " + (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED + ",");//已生成
|
|
stringBuilder.Append(" " + sysStocks.FactoryId + ", ");
|
|
stringBuilder.Append(" N'" + sysStocks.FactoryCode + "', ");
|
|
stringBuilder.Append(" 'Y', ");
|
|
stringBuilder.Append(" " + loginId + " , ");
|
|
stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
|
|
stringBuilder.Append(" newid()");
|
|
stringBuilder.Append(" );");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
break;
|
|
}
|
|
else if (sysStocks.Qty > remainNum)
|
|
{
|
|
if (WmsOutstockDetails.Count - 1 == i)
|
|
{
|
|
rfInfo.type = "UpdateNum" + Convert.ToInt32(sysStocks.Qty);
|
|
rfInfo.message = "[" + cartonNo + "]:该条码库存大于订单需求数量!";
|
|
return rfInfo;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#region 事务
|
|
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("INSERT INTO dbo.sys_stock_trans ");
|
|
stringBuilder.Append("( ");
|
|
stringBuilder.Append(" trans_code, ");
|
|
stringBuilder.Append(" carton_no, ");
|
|
stringBuilder.Append(" part_id, ");
|
|
stringBuilder.Append(" part_no, ");
|
|
stringBuilder.Append(" part_spec, ");
|
|
stringBuilder.Append(" src_locate_id, ");
|
|
stringBuilder.Append(" src_locate_name, ");
|
|
stringBuilder.Append(" dest_locate_id, ");
|
|
stringBuilder.Append(" dest_locate_name, ");
|
|
stringBuilder.Append(" old_qty, ");
|
|
stringBuilder.Append(" new_qty, ");
|
|
stringBuilder.Append(" trans_qty, ");
|
|
stringBuilder.Append(" old_status, ");
|
|
stringBuilder.Append(" new_status, ");
|
|
stringBuilder.Append(" unit, ");
|
|
stringBuilder.Append(" factory_id, ");
|
|
stringBuilder.Append(" factory_code, ");
|
|
stringBuilder.Append(" src_erp_warehouse, ");
|
|
stringBuilder.Append(" dest_erp_warehouse, ");
|
|
stringBuilder.Append(" src_warehouse_id, ");
|
|
stringBuilder.Append(" src_warehouse_name, ");
|
|
stringBuilder.Append(" dest_warehouse_id, ");
|
|
stringBuilder.Append(" dest_warehouse_name, ");
|
|
stringBuilder.Append(" src_zone_id, ");
|
|
stringBuilder.Append(" src_zone_name, ");
|
|
stringBuilder.Append(" dest_zone_id, ");
|
|
stringBuilder.Append(" dest_zone_name, ");
|
|
stringBuilder.Append(" enabled, ");
|
|
stringBuilder.Append(" create_userid, ");
|
|
stringBuilder.Append(" create_time, ");
|
|
stringBuilder.Append(" update_userid, ");
|
|
stringBuilder.Append(" update_time, ");
|
|
stringBuilder.Append(" guid ,ref_order_no");
|
|
stringBuilder.Append(") ");
|
|
stringBuilder.Append("VALUES ");
|
|
stringBuilder.Append(" ('" + (int)WmsEnumUtil.TransType.SCATTERED_OUTSTOCK + "', ");//零星出库
|
|
stringBuilder.Append(" '" + sysStocks.CartonNo + "', ");
|
|
stringBuilder.Append(" " + sysStocks.PartId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.PartNo + "', ");
|
|
stringBuilder.Append(" N'" + sysStocks.PartSpec + "', ");
|
|
stringBuilder.Append(" " + sysStocks.LocateId + ", ");//源库位
|
|
stringBuilder.Append(" '" + sysStocks.LocateName + "', ");
|
|
stringBuilder.Append(" 0, ");//目标库位
|
|
stringBuilder.Append(" '', ");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ",");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ",");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ",");
|
|
stringBuilder.Append(" '" + sysStocks.Status + "', ");
|
|
stringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.OUTSTOCKED + "', ");
|
|
stringBuilder.Append(" '" + sysStocks.Unit + "', ");
|
|
stringBuilder.Append(" " + sysStocks.FactoryId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.FactoryCode + "',");
|
|
stringBuilder.Append(" '" + sysStocks.ErpWarehouse + "',");
|
|
stringBuilder.Append(" '', ");//目标ERP库存地
|
|
stringBuilder.Append(" " + sysStocks.WarehouseId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.WarehouseName + "', ");
|
|
stringBuilder.Append(" 0, ");
|
|
stringBuilder.Append(" '', ");//目标仓库
|
|
stringBuilder.Append(" " + sysStocks.ZoneId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.ZoneName + "', ");
|
|
stringBuilder.Append(" 0, ");//目标库区
|
|
stringBuilder.Append(" '', ");
|
|
stringBuilder.Append(" 'Y', ");
|
|
stringBuilder.Append(" " + loginId + ", ");
|
|
stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
|
|
stringBuilder.Append(" " + loginId + ", ");
|
|
stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
|
|
stringBuilder.Append(" NEWID() , ");
|
|
stringBuilder.Append(" '" + orderNo + "' ");
|
|
stringBuilder.Append(" ) ; ");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
|
|
#endregion
|
|
|
|
}
|
|
else
|
|
{
|
|
//料架车 零星出库
|
|
List<SysStock> sysStock = repository.GetRKStockByCartonNo(cartonNo);
|
|
|
|
if (sysStock.Count == 0)
|
|
{
|
|
//提示 [M0090105]:该条码零件号不在单据内!
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + cartonNo + "]:该台车内无零件号!";
|
|
return rfInfo;
|
|
}
|
|
|
|
for (int z = 0; z < sysStock.Count; z++)
|
|
{
|
|
SysStock sysStocks = repository.GetStockByCartonNo(sysStock[z].CartonNo);
|
|
|
|
List<WmsOutstockDetail> WmsOutstockDetails = repository.GetOutstockByOrderNoPartNo(orderNo, sysStocks.PartNo);
|
|
if (WmsOutstockDetails.Count == 0)
|
|
{
|
|
//提示 [M0090105]:该条码零件号不在单据内!
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + cartonNo + "]:该台车[" + sysStocks.PartNo + "]零件号不在订单内!";
|
|
return rfInfo;
|
|
}
|
|
|
|
for (int i = 0; i < WmsOutstockDetails.Count; i++)
|
|
{
|
|
|
|
int remainNum = Convert.ToInt32(WmsOutstockDetails[i].Qty - WmsOutstockDetails[i].OutQty);//余数
|
|
if (sysStocks.Qty == remainNum || sysStocks.Qty < remainNum)
|
|
{
|
|
if (WmsOutstocks[0].OrderStatus != (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING)//
|
|
{ //已完成
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("UPDATE wms_outstock SET order_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no='" + orderNo + "';");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
}
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("UPDATE wms_outstock_detail SET out_qty+=" + sysStocks.Qty + ",item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED + " ,update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE ruid='" + WmsOutstockDetails[i].Ruid + "';");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("UPDATE sys_stock SET status=" + (int)WmsEnumUtil.StockStatus.OUTSTOCKED + ",locate_id=0,locate_name='',zone_id=0,zone_name='',warehouse_id=0,warehouse_name='',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE carton_no='" + sysStocks.CartonNo + "';");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("UPDATE wms_rack_package SET enabled='N',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE carton_no='" + sysStocks.CartonNo + "';");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("INSERT INTO dbo.wms_outstock_sn ");
|
|
stringBuilder.Append("( ");
|
|
stringBuilder.Append(" order_no, ");
|
|
stringBuilder.Append(" item_no, ");
|
|
stringBuilder.Append(" part_id, ");
|
|
stringBuilder.Append(" part_no, ");
|
|
stringBuilder.Append(" part_spec, ");
|
|
stringBuilder.Append(" carton_no, ");
|
|
stringBuilder.Append(" qty, ");
|
|
stringBuilder.Append(" unit, ");
|
|
stringBuilder.Append(" status, ");
|
|
stringBuilder.Append(" factory_id, ");
|
|
stringBuilder.Append(" factory_code, ");
|
|
stringBuilder.Append(" enabled, ");
|
|
stringBuilder.Append(" create_userid, ");
|
|
stringBuilder.Append(" create_time, ");
|
|
stringBuilder.Append(" guid ");
|
|
stringBuilder.Append(") ");
|
|
stringBuilder.Append("VALUES ");
|
|
stringBuilder.Append("( N'" + orderNo + "', ");
|
|
stringBuilder.Append(" '" + WmsOutstockDetails[i].ItemNo + "',");
|
|
stringBuilder.Append(" " + WmsOutstockDetails[i].PartId + ", ");
|
|
stringBuilder.Append(" N'" + WmsOutstockDetails[i].PartNo + "',");
|
|
stringBuilder.Append(" N'" + WmsOutstockDetails[i].PartSpec + "',");
|
|
stringBuilder.Append(" '" + cartonNo + "',");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.Unit + "',");
|
|
stringBuilder.Append(" " + (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED + ",");//已创建
|
|
stringBuilder.Append(" " + sysStocks.FactoryId + ", ");
|
|
stringBuilder.Append(" N'" + sysStocks.FactoryCode + "', ");
|
|
stringBuilder.Append(" 'Y', ");
|
|
stringBuilder.Append(" " + loginId + " , ");
|
|
stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
|
|
stringBuilder.Append(" newid()");
|
|
stringBuilder.Append(" );");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
break;
|
|
}
|
|
else if (sysStocks.Qty > remainNum)
|
|
{
|
|
if (WmsOutstockDetails.Count - 1 == i)
|
|
{
|
|
rfInfo.type = "UpdateRackNum";
|
|
rfInfo.message = "[" + cartonNo + "]:该条码库存大于订单需求数量!";
|
|
return rfInfo;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#region 事务
|
|
|
|
stringBuilder = new StringBuilder(1024);
|
|
stringBuilder.Append("INSERT INTO dbo.sys_stock_trans ");
|
|
stringBuilder.Append("( ");
|
|
stringBuilder.Append(" trans_code, ");
|
|
stringBuilder.Append(" carton_no, ");
|
|
stringBuilder.Append(" part_id, ");
|
|
stringBuilder.Append(" part_no, ");
|
|
stringBuilder.Append(" part_spec, ");
|
|
stringBuilder.Append(" src_locate_id, ");
|
|
stringBuilder.Append(" src_locate_name, ");
|
|
stringBuilder.Append(" dest_locate_id, ");
|
|
stringBuilder.Append(" dest_locate_name, ");
|
|
stringBuilder.Append(" old_qty, ");
|
|
stringBuilder.Append(" new_qty, ");
|
|
stringBuilder.Append(" trans_qty, ");
|
|
stringBuilder.Append(" old_status, ");
|
|
stringBuilder.Append(" new_status, ");
|
|
stringBuilder.Append(" unit, ");
|
|
stringBuilder.Append(" factory_id, ");
|
|
stringBuilder.Append(" factory_code, ");
|
|
stringBuilder.Append(" src_erp_warehouse, ");
|
|
stringBuilder.Append(" dest_erp_warehouse, ");
|
|
stringBuilder.Append(" src_warehouse_id, ");
|
|
stringBuilder.Append(" src_warehouse_name, ");
|
|
stringBuilder.Append(" dest_warehouse_id, ");
|
|
stringBuilder.Append(" dest_warehouse_name, ");
|
|
stringBuilder.Append(" src_zone_id, ");
|
|
stringBuilder.Append(" src_zone_name, ");
|
|
stringBuilder.Append(" dest_zone_id, ");
|
|
stringBuilder.Append(" dest_zone_name, ");
|
|
stringBuilder.Append(" enabled, ");
|
|
stringBuilder.Append(" create_userid, ");
|
|
stringBuilder.Append(" create_time, ");
|
|
stringBuilder.Append(" update_userid, ");
|
|
stringBuilder.Append(" update_time, ");
|
|
stringBuilder.Append(" guid ,ref_order_no");
|
|
stringBuilder.Append(") ");
|
|
stringBuilder.Append("VALUES ");
|
|
stringBuilder.Append(" ('" + (int)WmsEnumUtil.TransType.SCATTERED_OUTSTOCK + "', ");//零星出库
|
|
stringBuilder.Append(" '" + sysStocks.CartonNo + "', ");
|
|
stringBuilder.Append(" " + sysStocks.PartId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.PartNo + "', ");
|
|
stringBuilder.Append(" N'" + sysStocks.PartSpec + "', ");
|
|
stringBuilder.Append(" " + sysStocks.LocateId + ", ");//源库位
|
|
stringBuilder.Append(" '" + sysStocks.LocateName + "', ");
|
|
stringBuilder.Append(" 0, ");//目标库位
|
|
stringBuilder.Append(" '', ");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ",");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ",");
|
|
stringBuilder.Append(" " + sysStocks.Qty + ",");
|
|
stringBuilder.Append(" '" + sysStocks.Status + "', ");
|
|
stringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.OUTSTOCKED + "', ");
|
|
stringBuilder.Append(" '" + sysStocks.Unit + "', ");
|
|
stringBuilder.Append(" " + sysStocks.FactoryId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.FactoryCode + "',");
|
|
stringBuilder.Append(" '" + sysStocks.ErpWarehouse + "',");
|
|
stringBuilder.Append(" '', ");//目标ERP库存地
|
|
stringBuilder.Append(" " + sysStocks.WarehouseId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.WarehouseName + "', ");
|
|
stringBuilder.Append(" 0, ");
|
|
stringBuilder.Append(" '', ");//目标仓库
|
|
stringBuilder.Append(" " + sysStocks.ZoneId + ", ");
|
|
stringBuilder.Append(" '" + sysStocks.ZoneName + "', ");
|
|
stringBuilder.Append(" 0, ");//目标库区
|
|
stringBuilder.Append(" '', ");
|
|
stringBuilder.Append(" 'Y', ");
|
|
stringBuilder.Append(" " + loginId + ", ");
|
|
stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
|
|
stringBuilder.Append(" " + loginId + ", ");
|
|
stringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
|
|
stringBuilder.Append(" NEWID() , ");
|
|
stringBuilder.Append(" '" + orderNo + "' ");
|
|
stringBuilder.Append(" ) ; ");
|
|
sqlStrings.Add(stringBuilder.ToString());
|
|
|
|
#endregion
|
|
}
|
|
|
|
}
|
|
int refNum = repository.SQLTransaction(sqlStrings, parameterList);
|
|
if (refNum > 0)
|
|
{
|
|
List<WmsOutstock> wmsMoves = repository.GetOutstockByOrderNo(orderNo);
|
|
if (wmsMoves.Count > 0)
|
|
{
|
|
List<WmsOutstockDetail> wmsMoves1 = repository.GetOutstockDetailByOrderNo(orderNo);
|
|
for (int i = 0; i < wmsMoves1.Count; i++)
|
|
{
|
|
if (wmsMoves1[i].Qty != wmsMoves1[i].OutQty)
|
|
{
|
|
rfInfo.type = "PASS";
|
|
rfInfo.message = "操作成功!请继续扫描箱条码";
|
|
rfInfo.wmsObjectDetail = wmsMoves1.ConvertAll(s => (object)s);
|
|
return rfInfo;
|
|
}
|
|
}
|
|
|
|
int updateStatus = 1;
|
|
sqlStrings = new List<string>();
|
|
parameterList = new List<DynamicParameters>();
|
|
StringBuilder SqlStringBuilder = new StringBuilder(1024);
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
List<WmsOutstockDetail> wmsOutstockDetails = repository.GetFinishOutStockDetailByOrderNo(orderNo);
|
|
wmsOutstockDetails = wmsOutstockDetails.Where(a => a.OutQty > 0).ToList();
|
|
if (wmsOutstockDetails.Count > 0)
|
|
{
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("INSERT INTO dbo.WMS_MOVR(ZINSTNO,ZEILE,WERKS,LGORT,UMLGO,MATNR,ERFMG ");
|
|
SqlStringBuilder.Append(" ,ERFME,ACTION,ZPOST,ZTIME,SID,RECTIM,SYNFLG ");
|
|
SqlStringBuilder.Append(" ,GUID) ");
|
|
SqlStringBuilder.Append(" VALUES(@ZINSTNO,@ZEILE,@WERKS,@LGORT,@UMLGO,@MATNR,@ERFMG,@ERFME ");
|
|
SqlStringBuilder.Append(" ,@ACTION,@ZPOST,@ZTIME,@SID,@RECTIM,@SYNFLG ");
|
|
SqlStringBuilder.Append(" ,@GUID) ");
|
|
|
|
string sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
|
string sapOrderType = WmsEnumUtil.WmsMovrActionType.M06.ToString();
|
|
if ((int)WmsEnumUtil.OutStockType.EXCEPTION_OUT_STOCK == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M06.ToString();
|
|
}
|
|
if ((int)WmsEnumUtil.OutStockType.RESERVE_OUT == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M08.ToString();
|
|
}
|
|
if ((int)WmsEnumUtil.OutStockType.REWORK_OUT == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M12.ToString();
|
|
}
|
|
|
|
for (int i = 0; i < wmsOutstockDetails.Count; i++)
|
|
{
|
|
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsOutstockDetails[i].PartNo);
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ZINSTNO", wmsOutstockDetails[i].OrderNo);//盘点凭证号
|
|
parameters.Add("@ZEILE", wmsOutstockDetails[i].ItemNo);//行号
|
|
parameters.Add("@WERKS", wmsOutstockDetails[i].FactoryCode);//工厂
|
|
parameters.Add("@LGORT", wmsOutstockDetails[i].SrcErpWarehouse);//发出库存地点
|
|
parameters.Add("@UMLGO", "");//接收库存地点
|
|
parameters.Add("@MATNR", wmsOutstockDetails[i].PartNo);//物料编码
|
|
parameters.Add("@ERFMG", wmsOutstockDetails[i].OutQty);//转储数量
|
|
if (sysPart == null)
|
|
{
|
|
parameters.Add("@ERFME", "");//计量单位
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@ERFME", sysPart.Unit);//计量单位
|
|
}
|
|
parameters.Add("@ACTION", sapOrderType); //M06:零星出库
|
|
parameters.Add("@ZPOST", DateTime.Now.ToString("yyyyMMdd"));//交易日期
|
|
parameters.Add("@ZTIME", DateTime.Now.ToString("HHmmss"));//交易时间
|
|
parameters.Add("@SID", sid);
|
|
parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
parameters.Add("@SYNFLG", "N");
|
|
parameters.Add("@GUID", Guid.NewGuid().ToString());
|
|
parameterList.Add(parameters);
|
|
}
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("UPDATE wms_outstock SET order_status=" + (int)WmsEnumUtil.MoveOrderStatus.COMPLETED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);
|
|
parameterList.Add(parameters);
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("UPDATE wms_outstock_detail SET item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);
|
|
parameterList.Add(parameters);
|
|
|
|
//SqlStringBuilder = new StringBuilder(1024);
|
|
//SqlStringBuilder.Append("UPDATE wms_outstock_sn SET status=" + (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
//sqlStrings.Add(SqlStringBuilder.ToString());
|
|
//parameters = new DynamicParameters();
|
|
//parameters.Add("@orderNo", orderNo);
|
|
//parameterList.Add(parameters);
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("UPDATE wms_outstock_sn SET status = @status,update_userid=@updateUserid,update_time=CONVERT(VARCHAR(30),GETDATE(),21) ");
|
|
SqlStringBuilder.Append("WHERE order_no=@orderNo and status = @snStatus");
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);
|
|
parameters.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.SUBMITED);
|
|
parameters.Add("@snStatus", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
|
|
parameters.Add("@updateUserid", loginId);
|
|
parameterList.Add(parameters);
|
|
|
|
updateStatus = repository.SQLTransaction(sqlStrings, parameterList);
|
|
}
|
|
if (updateStatus > 0)
|
|
{
|
|
rfInfo.type = "PASS";
|
|
rfInfo.message = "订单操作完成!";
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "订单操作操作失败!请检查";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到数据,请检查!";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//提示 操作失败!
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到数据,请检查!";
|
|
}
|
|
return rfInfo;
|
|
}
|
|
public SetObjectDetail SetScatteredOutStockOrderNoSubmit(string orderNo, string loginId)
|
|
{
|
|
SetObjectDetail rfInfo = new SetObjectDetail();//返回消息
|
|
List<string> sqlStrings = new List<string>();
|
|
List<DynamicParameters> parameterList = new List<DynamicParameters>();
|
|
StringBuilder SqlStringBuilder = new StringBuilder(1024);
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
int updateStatus = 1;
|
|
List<WmsOutstockDetail> wmsOutstockDetails = repository.GetFinishOutStockDetailByOrderNo(orderNo);
|
|
wmsOutstockDetails = wmsOutstockDetails.Where(a => a.OutQty > 0).ToList();
|
|
if (wmsOutstockDetails.Count > 0)
|
|
{
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("INSERT INTO dbo.WMS_MOVR(ZINSTNO,ZEILE,WERKS,LGORT,UMLGO,MATNR,ERFMG ");
|
|
SqlStringBuilder.Append(" ,ERFME,ACTION,ZPOST,ZTIME,SID,RECTIM,SYNFLG ");
|
|
SqlStringBuilder.Append(" ,GUID) ");
|
|
SqlStringBuilder.Append(" VALUES(@ZINSTNO,@ZEILE,@WERKS,@LGORT,@UMLGO,@MATNR,@ERFMG,@ERFME ");
|
|
SqlStringBuilder.Append(" ,@ACTION,@ZPOST,@ZTIME,@SID,@RECTIM,@SYNFLG ");
|
|
SqlStringBuilder.Append(" ,@GUID) ");
|
|
|
|
string sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
|
string sapOrderType = WmsEnumUtil.WmsMovrActionType.M06.ToString();
|
|
if ((int)WmsEnumUtil.OutStockType.EXCEPTION_OUT_STOCK == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M06.ToString();
|
|
}
|
|
if ((int)WmsEnumUtil.OutStockType.RESERVE_OUT == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M08.ToString();
|
|
}
|
|
if ((int)WmsEnumUtil.OutStockType.REWORK_OUT == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M12.ToString();
|
|
}
|
|
|
|
for (int i = 0; i < wmsOutstockDetails.Count; i++)
|
|
{
|
|
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsOutstockDetails[i].PartNo);
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ZINSTNO", wmsOutstockDetails[i].OrderNo);
|
|
parameters.Add("@ZEILE", wmsOutstockDetails[i].ItemNo);//行号
|
|
parameters.Add("@WERKS", wmsOutstockDetails[i].FactoryCode);//工厂
|
|
parameters.Add("@LGORT", wmsOutstockDetails[i].SrcErpWarehouse);//发出库存地点
|
|
parameters.Add("@UMLGO", "");//接收库存地点
|
|
parameters.Add("@MATNR", wmsOutstockDetails[i].PartNo);//物料编码
|
|
parameters.Add("@ERFMG", wmsOutstockDetails[i].OutQty);//转储数量
|
|
if (sysPart == null)
|
|
{
|
|
parameters.Add("@ERFME", "");//计量单位
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@ERFME", sysPart.Unit);//计量单位
|
|
}
|
|
parameters.Add("@ACTION", sapOrderType); //M06:零星出库
|
|
parameters.Add("@ZPOST", DateTime.Now.ToString("yyyyMMdd"));//交易日期
|
|
parameters.Add("@ZTIME", DateTime.Now.ToString("HHmmss"));//交易时间
|
|
parameters.Add("@SID", sid);
|
|
parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
parameters.Add("@SYNFLG", "N");
|
|
parameters.Add("@GUID", Guid.NewGuid().ToString());
|
|
parameterList.Add(parameters);
|
|
}
|
|
|
|
//SqlStringBuilder = new StringBuilder(1024);
|
|
//SqlStringBuilder.Append("UPDATE wms_outstock SET order_status='40',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
//sqlStrings.Add(SqlStringBuilder.ToString());
|
|
//parameters = new DynamicParameters();
|
|
//parameters.Add("@orderNo", orderNo);
|
|
//parameterList.Add(parameters);
|
|
|
|
//SqlStringBuilder = new StringBuilder(1024);
|
|
//SqlStringBuilder.Append("UPDATE wms_outstock_detail SET item_status='40',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
//sqlStrings.Add(SqlStringBuilder.ToString());
|
|
//parameters = new DynamicParameters();
|
|
//parameters.Add("@orderNo", orderNo);
|
|
//parameterList.Add(parameters);
|
|
|
|
//List<WmsOutstockSn> outStockSns = repository.GetFinishOutStockSnByOrderNo(orderNo);
|
|
|
|
//for (int i = 0; i < outStockSns.Count; i++)
|
|
//{
|
|
// SqlStringBuilder = new StringBuilder(1024);
|
|
// SqlStringBuilder.Append("UPDATE wms_outstock_sn SET status=" + (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE ruid=@ruid;");
|
|
// sqlStrings.Add(SqlStringBuilder.ToString());
|
|
// parameters = new DynamicParameters();
|
|
// parameters.Add("@ruid", outStockSns[i].Ruid);
|
|
// parameterList.Add(parameters);
|
|
|
|
//}
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("UPDATE wms_outstock_sn SET status = @status,update_userid=@updateUserid,update_time=CONVERT(VARCHAR(30),GETDATE(),21) ");
|
|
SqlStringBuilder.Append("WHERE order_no=@orderNo and status = @snStatus");
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);
|
|
parameters.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.SUBMITED);
|
|
parameters.Add("@snStatus", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
|
|
parameters.Add("@updateUserid", loginId);
|
|
parameterList.Add(parameters);
|
|
|
|
updateStatus = repository.SQLTransaction(sqlStrings, parameterList);
|
|
}
|
|
else
|
|
{
|
|
updateStatus = 0;
|
|
}
|
|
if (updateStatus > 0)
|
|
{
|
|
rfInfo.type = "PASS";
|
|
rfInfo.message = "[" + orderNo + "]订单数据已提交";
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到需要提交的数据,请检查!";
|
|
}
|
|
return rfInfo;
|
|
}
|
|
|
|
public SetObjectDetail getProdcuteCode(string prodcuteCode, string orderNo, string loginId, string rackCode)
|
|
{
|
|
SetObjectDetail rfInfo = new SetObjectDetail();
|
|
SysStock wmsMoves = repository.getProdcuteCode(prodcuteCode, orderNo, loginId, rackCode);
|
|
if (wmsMoves != null)
|
|
{
|
|
if (wmsMoves.Enabled != "Y")
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + prodcuteCode + "]:该条码被冻结,请检查!";
|
|
return rfInfo;
|
|
}
|
|
if (wmsMoves.Status != (int)WmsEnumUtil.StockStatus.INSTOCKED && wmsMoves.Status != (int)WmsEnumUtil.StockStatus.ONLINED)
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "[" + prodcuteCode + "]:该条码不是已上架/已上线状态,请检查!";
|
|
return rfInfo;
|
|
}
|
|
rfInfo.type = "PASS" + Convert.ToInt32(wmsMoves.Qty);
|
|
rfInfo.message = "成功";
|
|
return rfInfo;
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到数据,请检查!";
|
|
return rfInfo;
|
|
}
|
|
}
|
|
|
|
public SetObjectDetail getoutStock(string orderNo, string cartonNo, string rackCode, string prodcuteCode, string codeNum, string loginId)
|
|
{
|
|
SetObjectDetail rfInfo = new SetObjectDetail();
|
|
SysStock wmsMoves = new SysStock();
|
|
List<SysStock> returnStock = new List<SysStock>();
|
|
|
|
if (cartonNo != "")
|
|
{
|
|
wmsMoves = repository.getoutStock(orderNo, cartonNo, codeNum, loginId);
|
|
List<WmsOutstockDetail> WmsOutstockDetails = repository.GetOutstockByOrderNoPartNo(orderNo, wmsMoves.PartNo);
|
|
if (WmsOutstockDetails.Count > 0)
|
|
{
|
|
if (Convert.ToInt32(codeNum) > (WmsOutstockDetails[0].Qty - WmsOutstockDetails[0].OutQty))
|
|
{
|
|
rfInfo.type = "FALL";
|
|
rfInfo.message = "数量超出订单需求,请检查!";
|
|
return rfInfo;
|
|
}
|
|
}
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(wmsMoves);
|
|
returnStock = repository.CheckMaterialSplit(sysStocks, Convert.ToInt32(codeNum), loginId, 1, orderNo, WmsOutstockDetails);
|
|
}
|
|
if (prodcuteCode != "")
|
|
{
|
|
wmsMoves = repository.getProdcuteCode(prodcuteCode, orderNo, loginId, rackCode);
|
|
List<WmsOutstockDetail> WmsOutstockDetails = repository.GetOutstockByOrderNoPartNo(orderNo, wmsMoves.PartNo);
|
|
if (WmsOutstockDetails.Count > 0)
|
|
{
|
|
if (Convert.ToInt32(codeNum) > (WmsOutstockDetails[0].Qty - WmsOutstockDetails[0].OutQty))
|
|
{
|
|
rfInfo.type = "FALL";
|
|
rfInfo.message = "数量超出订单需求,请检查!";
|
|
return rfInfo;
|
|
}
|
|
}
|
|
List<SysStock> sysStocks = new List<SysStock>();
|
|
sysStocks.Add(wmsMoves);
|
|
returnStock = repository.CheckMaterialSplit(sysStocks, Convert.ToInt32(codeNum), loginId, 1, orderNo, WmsOutstockDetails);
|
|
}
|
|
|
|
if (returnStock.Count > 0)
|
|
{
|
|
List<WmsOutstock> wmsMoves2 = repository.GetOutstockByOrderNo(orderNo);
|
|
if (wmsMoves2.Count > 0)
|
|
{
|
|
List<WmsOutstockDetail> wmsMoves1 = repository.GetOutstockDetailByOrderNo(orderNo);
|
|
for (int i = 0; i < wmsMoves1.Count; i++)
|
|
{
|
|
if (wmsMoves1[i].Qty != wmsMoves1[i].OutQty)
|
|
{
|
|
rfInfo.type = "PASS";
|
|
rfInfo.message = "操作成功!请继续扫描箱条码";
|
|
rfInfo.wmsObjectDetail = wmsMoves1.ConvertAll(s => (object)s);
|
|
return rfInfo;
|
|
}
|
|
}
|
|
|
|
int updateStatus = 1;
|
|
List<string> sqlStrings = new List<string>();
|
|
List<DynamicParameters> parameterList = new List<DynamicParameters>();
|
|
StringBuilder SqlStringBuilder = new StringBuilder(1024);
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
List<WmsOutstockDetail> wmsOutstockDetails = repository.GetFinishOutStockDetailByOrderNo(orderNo);
|
|
wmsOutstockDetails = wmsOutstockDetails.Where(a => a.OutQty > 0).ToList();
|
|
if (wmsOutstockDetails.Count > 0)
|
|
{
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("INSERT INTO dbo.WMS_MOVR(ZINSTNO,ZEILE,WERKS,LGORT,UMLGO,MATNR,ERFMG ");
|
|
SqlStringBuilder.Append(" ,ERFME,ACTION,ZPOST,ZTIME,SID,RECTIM,SYNFLG ");
|
|
SqlStringBuilder.Append(" ,GUID) ");
|
|
SqlStringBuilder.Append(" VALUES(@ZINSTNO,@ZEILE,@WERKS,@LGORT,@UMLGO,@MATNR,@ERFMG,@ERFME ");
|
|
SqlStringBuilder.Append(" ,@ACTION,@ZPOST,@ZTIME,@SID,@RECTIM,@SYNFLG ");
|
|
SqlStringBuilder.Append(" ,@GUID) ");
|
|
|
|
string sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
|
string sapOrderType = WmsEnumUtil.WmsMovrActionType.M06.ToString();
|
|
if ((int)WmsEnumUtil.OutStockType.EXCEPTION_OUT_STOCK == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M06.ToString();
|
|
}
|
|
if ((int)WmsEnumUtil.OutStockType.RESERVE_OUT == wmsOutstockDetails[0].OrderType)
|
|
{
|
|
sapOrderType = WmsEnumUtil.WmsMovrActionType.M08.ToString();
|
|
}
|
|
//if ((int)WmsEnumUtil.OutStockType.REWORK_OUT == wmsOutstockDetails[0].OrderType)
|
|
//{
|
|
// sapOrderType = WmsEnumUtil.WmsMovrActionType.M12.ToString();
|
|
//}
|
|
|
|
for (int i = 0; i < wmsOutstockDetails.Count; i++)
|
|
{
|
|
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsOutstockDetails[i].PartNo);
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@ZINSTNO", wmsOutstockDetails[i].OrderNo);//零星出库订单号
|
|
parameters.Add("@ZEILE", wmsOutstockDetails[i].ItemNo);//行号
|
|
parameters.Add("@WERKS", wmsOutstockDetails[i].FactoryCode);//工厂
|
|
parameters.Add("@LGORT", wmsOutstockDetails[i].SrcErpWarehouse);//发出库存地点
|
|
parameters.Add("@UMLGO", "");//接收库存地点
|
|
parameters.Add("@MATNR", wmsOutstockDetails[i].PartNo);//物料编码
|
|
parameters.Add("@ERFMG", wmsOutstockDetails[i].OutQty);//转储数量
|
|
if (sysPart == null)
|
|
{
|
|
parameters.Add("@ERFME", "");//计量单位
|
|
}
|
|
else
|
|
{
|
|
parameters.Add("@ERFME", sysPart.Unit);//计量单位
|
|
}
|
|
parameters.Add("@ACTION", sapOrderType); //M06:零星出库
|
|
parameters.Add("@ZPOST", DateTime.Now.ToString("yyyyMMdd"));//交易日期
|
|
parameters.Add("@ZTIME", DateTime.Now.ToString("HHmmss"));//交易时间
|
|
parameters.Add("@SID", sid);
|
|
parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
parameters.Add("@SYNFLG", "N");
|
|
parameters.Add("@GUID", Guid.NewGuid().ToString());
|
|
parameterList.Add(parameters);
|
|
}
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("UPDATE wms_outstock SET order_status=" + (int)WmsEnumUtil.MoveOrderStatus.COMPLETED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);
|
|
parameterList.Add(parameters);
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("UPDATE wms_outstock_detail SET item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);
|
|
parameterList.Add(parameters);
|
|
|
|
//SqlStringBuilder = new StringBuilder(1024);
|
|
//SqlStringBuilder.Append("UPDATE wms_outstock_sn SET status=" + (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED + ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no=@orderNo;");
|
|
//sqlStrings.Add(SqlStringBuilder.ToString());
|
|
//parameters = new DynamicParameters();
|
|
//parameters.Add("@orderNo", orderNo);
|
|
//parameterList.Add(parameters);
|
|
|
|
SqlStringBuilder = new StringBuilder(1024);
|
|
SqlStringBuilder.Append("UPDATE wms_outstock_sn SET status = @status,update_userid=@updateUserid,update_time=CONVERT(VARCHAR(30),GETDATE(),21) ");
|
|
SqlStringBuilder.Append("WHERE order_no=@orderNo and status = @snStatus");
|
|
sqlStrings.Add(SqlStringBuilder.ToString());
|
|
parameters = new DynamicParameters();
|
|
parameters.Add("@orderNo", orderNo);
|
|
parameters.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.SUBMITED);
|
|
parameters.Add("@snStatus", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
|
|
parameters.Add("@updateUserid", loginId);
|
|
parameterList.Add(parameters);
|
|
|
|
updateStatus = repository.SQLTransaction(sqlStrings, parameterList);
|
|
}
|
|
if (updateStatus > 0)
|
|
{
|
|
rfInfo.type = "PASS";
|
|
rfInfo.message = "订单操作完成!";
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "订单操作操作失败!请检查";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到数据,请检查!";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//提示 操作失败!
|
|
rfInfo.type = "FAIL";
|
|
rfInfo.message = "未查询到数据,请检查!";
|
|
}
|
|
return rfInfo;
|
|
}
|
|
|
|
|
|
}
|
|
}
|