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.

1946 lines
139 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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>
/// NC入库
/// </summary>
public class NCInStockService : BaseService<BaseEntity>, INCInStockService
{
private readonly INCInStockRepository repository;
public NCInStockService(INCInStockRepository _repository) : base(_repository)
{
repository = _repository;
}
//获取所有NC入库单据信息
public SetObjectDetail GetNCInStockOrderList(string orderNo)
{
SetObjectDetail rfInfo = new SetObjectDetail();//返回消息
List<WmsMoveHeader> wmsMoves = repository.GetNCInStockOrderList(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 GetNCInStockOrderListByOrderNo(string orderNo)
{
SetObjectDetail rfInfo = new SetObjectDetail();
List<WmsMoveHeader> wmsMoves = repository.GetNCInStockOrderListByOrderNo(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 GetLocateByName(string locateName)
{
SetObjectDetail rfInfo = new SetObjectDetail();
//查询库位在库信息
List<SysLocate> sysLocates = repository.GetLocateByLocateName(locateName);
//库存总数
SysStock sysStocksLocateCount = repository.GetStocQtySumByLocateName(locateName);
if (sysLocates.Count == 0)
{
//提示 [A1-2-2]:该库位不存在,请检查!
rfInfo.type = "FAIL";
rfInfo.message = "[" + locateName + "]:该库位不存在,请检查!";
return rfInfo;
}
else if (sysLocates[0].Enabled != "Y")
{
//提示 [A1-2-2]:该库位不可用,请检查!
rfInfo.type = "FAIL";
rfInfo.message = "[" + locateName + "]:该库位不可用,请检查!";
return rfInfo;
}
else if (sysLocates[0].LocateType != (int)WmsEnumUtil.LocateType.NC_LOCATE)
{
//提示 [A1-2-2]:此库位码类型不是NC库位类型请检查!
rfInfo.type = "FAIL";
rfInfo.message = "[" + locateName + "]:此库位码类型不是NC库位类型请检查!";
return rfInfo;
}
else if ((decimal)sysStocksLocateCount.Qty >= sysLocates[0].LocateCapacity)
{
//提示 [A1-2-2]:该库位容量已满,请检查!
rfInfo.type = "FAIL";
rfInfo.message = "[" + locateName + "]:该库位容量已满,请检查!";
return rfInfo;
}
rfInfo.type = "PASS";
rfInfo.message = "[" + locateName + "]:扫描成功,请扫描箱条码";
return rfInfo;
}
public SetObjectDetail CheckStockByCartonAlocate(string cartonNo, string locateName, string orderNo, string loginId)
{
SetObjectDetail rfInfo = new SetObjectDetail();
List<string> sqlStrings = new List<string>();
List<DynamicParameters> parameterList = new List<DynamicParameters>();
//料架车是否存在
WmsRack wmsRack = repository.GetWmsRackInfo(cartonNo);
if (wmsRack != null)
{
//获取料架车中的箱条码
List<WmsRackPackage> wmsRackPackages = repository.GetCarrierByName(cartonNo);
if (wmsRackPackages.Count > 0)
{
//NC入库单中未完成的明细
List<WmsMoveDetail> details = repository.CheckMoveDetail(orderNo, (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED);
bool istrue = false;
foreach (WmsRackPackage item in wmsRackPackages)
{
string rackCartonNo = item.CartonNo;
//NC列表
//扫描到的箱条码
SysStock Stock = repository.GetCartonInfo(rackCartonNo);
if (Stock == null)
{
//提示 [M0090105]:箱条码已冻结,无法操作!
rfInfo.type = "FAIL";
rfInfo.message = "[" + rackCartonNo + "]:台车条码不存在,请检查!";
return rfInfo;
}
if (Stock.Enabled.Equals("N"))
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + rackCartonNo + "]:台车条码已被冻结,请检查!";
return rfInfo;
}
else if (Stock.Status != (int)WmsEnumUtil.StockStatus.INSTOCKED && Stock.Status != (int)WmsEnumUtil.StockStatus.ONLINED)
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + rackCartonNo + "]:是" + Stock.StockStatus + "状态,请检查!";
return rfInfo;
}
//料架车中的箱条码 在 NC明细表中 是否存在
List<WmsMoveDetail> ifScan = details.Where(a => a.PartId == Stock.PartId).ToList();
if (ifScan.Count == 0)
{
continue;
}
istrue = true;
if (ifScan[0].PickQty >= ifScan[0].Qty)
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + ifScan[0].PartNo + "]:已完成配料!";
return rfInfo;
}
//修改移库主表 30 处理中
StringBuilder updateString = new StringBuilder(1024);
updateString.Append(" update wms_move_header set order_status=@order_status,update_userid=@update_userid,update_time=@update_time where order_no=@order_no ");
DynamicParameters updateStringparameters = new DynamicParameters();
updateStringparameters.Add("@order_status", (int)WmsEnumUtil.MoveOrderStatus.PROCESSING);
updateStringparameters.Add("@order_no", ifScan[0].OrderNo);
updateStringparameters.Add("@update_userid", loginId);
updateStringparameters.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString.ToString());
parameterList.Add(updateStringparameters);
//根据库位获取对应绑定零件号
List<SysLocate> sysLocates = repository.GetLocatePartByLocateName(locateName);
//根据库位名称获取目标信息
List<SysLocate> locatesZone = repository.GetLocateZoneByLocateName(locateName);
//从明细中得到剩余未NC入库数
decimal shengyu = ifScan[0].Qty - ifScan[0].PickQty;
if (Stock.Qty > shengyu)
{
//箱条码内数量 大于 剩余NC入库数 ,一次处理不完 拆分箱条码
//修改移库明细表 30 处理中
StringBuilder updateString2 = new StringBuilder(1024);
updateString2.Append(@"update wms_move_detail set pick_qty = pick_qty + @pick_qty, item_status=@item_status,update_userid=@update_userid,update_time=@update_time,dest_erp_warehouse=@dest_erp_warehouse where ruid=@ruid ");
DynamicParameters updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@item_status", (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED);
updateStringparameters2.Add("@ruid", ifScan[0].Ruid);
updateStringparameters2.Add("@pick_qty", shengyu);
updateStringparameters2.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString2.ToString());
parameterList.Add(updateStringparameters2);
//修改条码表 数量为 Stock.Qty - shengyu
StringBuilder updateString5 = new StringBuilder(1024);
updateString5.Append("update sys_stock set update_userid=@update_userid,update_time=@update_time,qty=@qty where carton_no= @carton_no ");
DynamicParameters updateStringparameters5 = new DynamicParameters();
updateStringparameters5.Add("@carton_no", Stock.CartonNo);
updateStringparameters5.Add("@qty", Stock.Qty - shengyu);
//updateStringparameters5.Add("@locate_id", sysLocates[0].LocateId);
//updateStringparameters5.Add("@locate_name", sysLocates[0].LocateName);
//updateStringparameters5.Add("@warehouse_id", locatesZone[0].WarehouseId);
//updateStringparameters5.Add("@warehouse_name", locatesZone[0].WarehouseName);
//updateStringparameters5.Add("@zone_id", locatesZone[0].ZoneId);
//updateStringparameters5.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters5.Add("@update_userid", loginId);
updateStringparameters5.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString5.ToString());
parameterList.Add(updateStringparameters5);
#region 新建 拆出的箱条码 / 拆出箱条码事务
//新建 拆出的箱条码
StringBuilder updateString3 = new StringBuilder(1024);
updateString3.Append(@" INSERT INTO [dbo].[sys_stock]
([vendor_id]
,[vendor_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[lot_no]
,[fix_lot_no]
,[status]
,[qty]
,[snp_qty]
,[locate_id]
,[locate_name]
,[group_no]
,[erp_warehouse]
,[date_code]
,[qms_status]
,[ref_order_no]
,[unit]
,[dock]
,[warehouse_id]
,[warehouse_name]
,[zone_id]
,[zone_name]
,[printed]
,[print_time]
,[remark]
,[factory_id]
,[factory_code]
,[enabled]
,[create_userid]
,[create_time]
,[update_userid]
,[update_time]
,[guid])
VALUES(@vendor_id,@vendor_code,@carton_no,@part_id,@part_no,@part_spec,@lot_no,@fix_lot_no,@status,@qty,@snp_qty
,@locate_id,@locate_name,@group_no,@erp_warehouse,@date_code,@qms_status,@ref_order_no,@unit,@dock,@warehouse_id,@warehouse_name,@zone_id,@zone_name
,@printed,@print_time,@remark,@factory_id,@factory_code,@enabled,@create_userid,@create_time,@update_userid,@update_time,@guid )");
string NC_Stock = Stock.CartonNo + "-NC-" + Guid.NewGuid().ToString().Substring(0, 4);
DynamicParameters updateStringparameters3 = new DynamicParameters();
updateStringparameters3.Add("@vendor_id", Stock.VendorId);
updateStringparameters3.Add("@vendor_code", Stock.VendorCode);
updateStringparameters3.Add("@carton_no", NC_Stock);
updateStringparameters3.Add("@part_id", Stock.PartId);
updateStringparameters3.Add("@part_no", Stock.PartNo);
updateStringparameters3.Add("@part_spec", Stock.PartSpec);
updateStringparameters3.Add("@lot_no", Stock.LotNo);
updateStringparameters3.Add("@fix_lot_no", Stock.FixLotNo);
updateStringparameters3.Add("@status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters3.Add("@qty", shengyu);
updateStringparameters3.Add("@snp_qty", Stock.SnpQty);
updateStringparameters3.Add("@locate_id", sysLocates[0].LocateId);
updateStringparameters3.Add("@locate_name", sysLocates[0].LocateName);
updateStringparameters3.Add("@group_no", Stock.GroupNo);
updateStringparameters3.Add("@erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters3.Add("@date_code", Stock.DateCode);
updateStringparameters3.Add("@qms_status", Stock.QmsStatus);
updateStringparameters3.Add("@ref_order_no", Stock.RefOrderNo);
updateStringparameters3.Add("@unit", Stock.Unit);
updateStringparameters3.Add("@dock", Stock.Dock);
updateStringparameters3.Add("@warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters3.Add("@warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters3.Add("@zone_id", locatesZone[0].ZoneId);
updateStringparameters3.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters3.Add("@printed", Stock.Printed);
updateStringparameters3.Add("@print_time", Stock.PrintTime);
updateStringparameters3.Add("@remark", Stock.Remark);
updateStringparameters3.Add("@factory_id", Stock.FactoryId);
updateStringparameters3.Add("@factory_code", Stock.FactoryCode);
updateStringparameters3.Add("@enabled", Stock.Enabled);
updateStringparameters3.Add("@update_userid", loginId);
updateStringparameters3.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@create_userid", loginId);
updateStringparameters3.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@guid", Guid.NewGuid());
sqlStrings.Add(updateString3.ToString());
parameterList.Add(updateStringparameters3);
//拆出箱条码事务
//新增 sys_stock_trans 事务表
StringBuilder updateString4 = new StringBuilder(1024);
updateString4.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters4 = new DynamicParameters();
updateStringparameters4.Add("@trans_code", ifScan[0].OrderType == "40" ? (int)WmsEnumUtil.TransType.NC_INSTOCK : (int)WmsEnumUtil.TransType.REWORK_NC_INSTOCK);
updateStringparameters4.Add("@carton_no", NC_Stock);
updateStringparameters4.Add("@part_id", Stock.PartId);
updateStringparameters4.Add("@part_no", Stock.PartNo);
updateStringparameters4.Add("@part_spec", Stock.PartSpec);
updateStringparameters4.Add("@src_locate_id", Stock.LocateId);
updateStringparameters4.Add("@src_locate_name", Stock.LocateName);
updateStringparameters4.Add("@dest_locate_id", sysLocates[0].LocateId);
updateStringparameters4.Add("@dest_locate_name", sysLocates[0].LocateName);
updateStringparameters4.Add("@old_qty", 0);
updateStringparameters4.Add("@new_qty", shengyu);
updateStringparameters4.Add("@trans_qty", shengyu);
updateStringparameters4.Add("@old_status", Stock.Status);
updateStringparameters4.Add("@new_status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters4.Add("@old_qms_status", Stock.QmsStatus);
updateStringparameters4.Add("@new_qms_status", Stock.QmsStatus);
updateStringparameters4.Add("@unit", Stock.Unit);
updateStringparameters4.Add("@factory_id", Stock.FactoryId);
updateStringparameters4.Add("@factory_code", Stock.FactoryCode);
updateStringparameters4.Add("@src_erp_warehouse", Stock.ErpWarehouse);
updateStringparameters4.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters4.Add("@src_warehouse_id", Stock.WarehouseId);
updateStringparameters4.Add("@src_warehouse_name", Stock.WarehouseName);
updateStringparameters4.Add("@dest_warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters4.Add("@dest_warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters4.Add("@src_zone_id", Stock.ZoneId);
updateStringparameters4.Add("@src_zone_name", Stock.ZoneName);
updateStringparameters4.Add("@dest_zone_id", locatesZone[0].ZoneId);
updateStringparameters4.Add("@dest_zone_name", locatesZone[0].ZoneName);
updateStringparameters4.Add("@enabled", Stock.Enabled);
updateStringparameters4.Add("@update_userid", loginId);
updateStringparameters4.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@create_userid", loginId);
updateStringparameters4.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@guid", Guid.NewGuid());
updateStringparameters4.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString4.ToString());
parameterList.Add(updateStringparameters4);
#endregion
#region 插入SN表 插入事务表
//将拆出的箱条码 插入 wms_move_sn 条码表
StringBuilder updateString33 = new StringBuilder(1024);
updateString33.Append(@"INSERT INTO [dbo].[wms_move_sn]
([order_no]
,[item_no]
,[part_id]
,[part_no]
,[part_spec]
,[carton_no]
,[qty]
,[unit]
,[status]
,[factory_id]
,[factory_code]
,[enabled]
,[create_userid]
,[create_time]
,[update_userid]
,[update_time]
,[guid])
VALUES (@order_no,@item_no,@part_id,@part_no,@part_spec,@carton_no,@qty,@unit,@status,@factory_id,@factory_code,@enabled,@create_userid,@create_time,@update_userid,@update_time,@guid)");
DynamicParameters updateStringparameters33 = new DynamicParameters();
updateStringparameters33.Add("@order_no", ifScan[0].OrderNo);
updateStringparameters33.Add("@item_no", ifScan[0].ItemNo);
updateStringparameters33.Add("@part_id", ifScan[0].PartId);
updateStringparameters33.Add("@part_no", ifScan[0].PartNo);
updateStringparameters33.Add("@part_spec", ifScan[0].PartSpec);
updateStringparameters33.Add("@carton_no", Stock.CartonNo + "-1");
updateStringparameters33.Add("@qty", shengyu);
updateStringparameters33.Add("@unit", Stock.Unit);
updateStringparameters33.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters33.Add("@factory_id", ifScan[0].FactoryId);
updateStringparameters33.Add("@factory_code", ifScan[0].FactoryCode);
updateStringparameters33.Add("@enabled", "Y");
updateStringparameters33.Add("@update_userid", loginId);
updateStringparameters33.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@create_userid", loginId);
updateStringparameters33.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@guid", Guid.NewGuid());
sqlStrings.Add(updateString33.ToString());
parameterList.Add(updateStringparameters33);
//新增 sys_stock_trans 事务表 原条码
StringBuilder updateString44 = new StringBuilder(1024);
updateString44.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters44 = new DynamicParameters();
updateStringparameters44.Add("@trans_code", (int)WmsEnumUtil.TransType.PART_SPLIT);
updateStringparameters44.Add("@carton_no", Stock.CartonNo);
updateStringparameters44.Add("@part_id", Stock.PartId);
updateStringparameters44.Add("@part_no", Stock.PartNo);
updateStringparameters44.Add("@part_spec", Stock.PartSpec);
updateStringparameters44.Add("@src_locate_id", Stock.LocateId);
updateStringparameters44.Add("@src_locate_name", Stock.LocateName);
updateStringparameters44.Add("@dest_locate_id", Stock.LocateId);
updateStringparameters44.Add("@dest_locate_name", Stock.LocateName);
updateStringparameters44.Add("@old_qty", Stock.Qty);
updateStringparameters44.Add("@new_qty", Stock.Qty - shengyu);
updateStringparameters44.Add("@trans_qty", Stock.Qty - shengyu);
updateStringparameters44.Add("@old_status", Stock.Status);
updateStringparameters44.Add("@new_status", Stock.Status);
updateStringparameters44.Add("@old_qms_status", Stock.QmsStatus);
updateStringparameters44.Add("@new_qms_status", Stock.QmsStatus);
updateStringparameters44.Add("@unit", Stock.Unit);
updateStringparameters44.Add("@factory_id", Stock.FactoryId);
updateStringparameters44.Add("@factory_code", Stock.FactoryCode);
updateStringparameters44.Add("@src_erp_warehouse", Stock.ErpWarehouse);
updateStringparameters44.Add("@dest_erp_warehouse", Stock.ErpWarehouse);
updateStringparameters44.Add("@src_warehouse_id", Stock.WarehouseId);
updateStringparameters44.Add("@src_warehouse_name", Stock.WarehouseName);
updateStringparameters44.Add("@dest_warehouse_id", Stock.WarehouseId);
updateStringparameters44.Add("@dest_warehouse_name", Stock.WarehouseName);
updateStringparameters44.Add("@src_zone_id", Stock.ZoneId);
updateStringparameters44.Add("@src_zone_name", Stock.ZoneName);
updateStringparameters44.Add("@dest_zone_id", Stock.ZoneId);
updateStringparameters44.Add("@dest_zone_name", Stock.ZoneName);
updateStringparameters44.Add("@enabled", Stock.Enabled);
updateStringparameters44.Add("@update_userid", loginId);
updateStringparameters44.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@create_userid", loginId);
updateStringparameters44.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@guid", Guid.NewGuid());
updateStringparameters44.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString44.ToString());
parameterList.Add(updateStringparameters44);
#endregion
}
else if (Stock.Qty == shengyu)
{
//箱条码 等于 剩余NC入库数 处理箱条码
//修改移库明细表 30 处理中
StringBuilder updateString2 = new StringBuilder(1024);
updateString2.Append(@"update wms_move_detail set pick_qty = pick_qty + @pick_qty, item_status=@item_status,update_userid=@update_userid,update_time=@update_time,dest_erp_warehouse=@dest_erp_warehouse where ruid=@ruid ");
DynamicParameters updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@item_status", (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED);
updateStringparameters2.Add("@ruid", ifScan[0].Ruid);
updateStringparameters2.Add("@pick_qty", Stock.Qty);
updateStringparameters2.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString2.ToString());
parameterList.Add(updateStringparameters2);
//修改条码表 数量为0 状态为N
StringBuilder updateString5 = new StringBuilder(1024);
updateString5.Append("update sys_stock set status=@status,update_userid=@update_userid,update_time=@update_time,locate_id=@locate_id, locate_name =@locate_name , warehouse_id=@warehouse_id , warehouse_name=@warehouse_name, zone_id=@zone_id , zone_name=@zone_name ,erp_warehouse=@erp_warehouse where carton_no= @carton_no ");
DynamicParameters updateStringparameters5 = new DynamicParameters();
updateStringparameters5.Add("@carton_no", Stock.CartonNo);
updateStringparameters5.Add("@status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters5.Add("@locate_id", sysLocates[0].LocateId);
updateStringparameters5.Add("@locate_name", sysLocates[0].LocateName);
updateStringparameters5.Add("@warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters5.Add("@warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters5.Add("@erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters5.Add("@zone_id", locatesZone[0].ZoneId);
updateStringparameters5.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters5.Add("@update_userid", loginId);
updateStringparameters5.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString5.ToString());
parameterList.Add(updateStringparameters5);
//修改包装表 状态为N
StringBuilder updateString6 = new StringBuilder(1024);
updateString6.Append("update wms_rack_package set enabled=@enabled,update_userid=@update_userid,update_time=@update_time where carton_no= @carton_no ");
DynamicParameters updateStringparameters6 = new DynamicParameters();
updateStringparameters6.Add("@carton_no", cartonNo);
updateStringparameters6.Add("@enabled", "N");
updateStringparameters6.Add("@update_userid", loginId);
updateStringparameters6.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString6.ToString());
parameterList.Add(updateStringparameters6);
#region 插入SN表 插入事务表
//插入 wms_move_sn 条码表
StringBuilder updateString3 = new StringBuilder(1024);
updateString3.Append(@"INSERT INTO [dbo].[wms_move_sn]
([order_no]
,[item_no]
,[part_id]
,[part_no]
,[part_spec]
,[carton_no]
,[qty]
,[unit]
,[status]
,[factory_id]
,[factory_code]
,[enabled]
,[create_userid]
,[create_time]
,[update_userid]
,[update_time]
,[guid])
VALUES (@order_no,@item_no,@part_id,@part_no,@part_spec,@carton_no,@qty,@unit,@status,@factory_id,@factory_code,@enabled,@create_userid,@create_time,@update_userid,@update_time,@guid)");
DynamicParameters updateStringparameters3 = new DynamicParameters();
updateStringparameters3.Add("@order_no", ifScan[0].OrderNo);
updateStringparameters3.Add("@item_no", ifScan[0].ItemNo);
updateStringparameters3.Add("@part_id", ifScan[0].PartId);
updateStringparameters3.Add("@part_no", ifScan[0].PartNo);
updateStringparameters3.Add("@part_spec", ifScan[0].PartSpec);
updateStringparameters3.Add("@carton_no", Stock.CartonNo);
updateStringparameters3.Add("@qty", Stock.Qty);
updateStringparameters3.Add("@unit", Stock.Unit);
updateStringparameters3.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters3.Add("@factory_id", ifScan[0].FactoryId);
updateStringparameters3.Add("@factory_code", ifScan[0].FactoryCode);
updateStringparameters3.Add("@enabled", "Y");
updateStringparameters3.Add("@update_userid", loginId);
updateStringparameters3.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@create_userid", loginId);
updateStringparameters3.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@guid", Guid.NewGuid());
sqlStrings.Add(updateString3.ToString());
parameterList.Add(updateStringparameters3);
//新增 sys_stock_trans 事务表
StringBuilder updateString4 = new StringBuilder(1024);
updateString4.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters4 = new DynamicParameters();
updateStringparameters4.Add("@trans_code", ifScan[0].OrderType == "40" ? (int)WmsEnumUtil.TransType.NC_INSTOCK : (int)WmsEnumUtil.TransType.REWORK_NC_INSTOCK);
updateStringparameters4.Add("@carton_no", Stock.CartonNo);
updateStringparameters4.Add("@part_id", Stock.PartId);
updateStringparameters4.Add("@part_no", Stock.PartNo);
updateStringparameters4.Add("@part_spec", Stock.PartSpec);
updateStringparameters4.Add("@src_locate_id", Stock.LocateId);
updateStringparameters4.Add("@src_locate_name", Stock.LocateName);
updateStringparameters4.Add("@dest_locate_id", sysLocates[0].LocateId);
updateStringparameters4.Add("@dest_locate_name", sysLocates[0].LocateName);
updateStringparameters4.Add("@old_qty", Stock.Qty);
updateStringparameters4.Add("@new_qty", Stock.Qty);
updateStringparameters4.Add("@trans_qty", Stock.Qty);
updateStringparameters4.Add("@old_status", Stock.Status);
updateStringparameters4.Add("@new_status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters4.Add("@old_qms_status", Stock.QmsStatus);
updateStringparameters4.Add("@new_qms_status", Stock.QmsStatus);
updateStringparameters4.Add("@unit", Stock.Unit);
updateStringparameters4.Add("@factory_id", Stock.FactoryId);
updateStringparameters4.Add("@factory_code", Stock.FactoryCode);
updateStringparameters4.Add("@src_erp_warehouse", Stock.ErpWarehouse);
updateStringparameters4.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters4.Add("@src_warehouse_id", Stock.WarehouseId);
updateStringparameters4.Add("@src_warehouse_name", Stock.WarehouseName);
updateStringparameters4.Add("@dest_warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters4.Add("@dest_warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters4.Add("@src_zone_id", Stock.ZoneId);
updateStringparameters4.Add("@src_zone_name", Stock.ZoneName);
updateStringparameters4.Add("@dest_zone_id", locatesZone[0].ZoneId);
updateStringparameters4.Add("@dest_zone_name", locatesZone[0].ZoneName);
updateStringparameters4.Add("@enabled", Stock.Enabled);
updateStringparameters4.Add("@update_userid", loginId);
updateStringparameters4.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@create_userid", loginId);
updateStringparameters4.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@guid", Guid.NewGuid());
updateStringparameters4.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString4.ToString());
parameterList.Add(updateStringparameters4);
#endregion
}
else
{
//箱条码 小于 剩余NC入库数 处理箱条码
//修改移库明细表 30 处理中
StringBuilder updateString2 = new StringBuilder(1024);
updateString2.Append(@"update wms_move_detail set pick_qty = pick_qty + @pick_qty, item_status=@item_status,update_userid=@update_userid,update_time=@update_time,dest_erp_warehouse=@dest_erp_warehouse where ruid=@ruid ");
DynamicParameters updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@item_status", (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING);
updateStringparameters2.Add("@ruid", ifScan[0].Ruid);
updateStringparameters2.Add("@pick_qty", Stock.Qty);
updateStringparameters2.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString2.ToString());
parameterList.Add(updateStringparameters2);
//修改条码表 数量为0 状态为N
StringBuilder updateString5 = new StringBuilder(1024);
updateString5.Append("update sys_stock set status=@status,update_userid=@update_userid,update_time=@update_time,locate_id=@locate_id, locate_name =@locate_name , warehouse_id=@warehouse_id , warehouse_name=@warehouse_name, zone_id=@zone_id , zone_name=@zone_name ,erp_warehouse=@erp_warehouse where carton_no= @carton_no ");
DynamicParameters updateStringparameters5 = new DynamicParameters();
updateStringparameters5.Add("@carton_no", Stock.CartonNo);
updateStringparameters5.Add("@status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters5.Add("@locate_id", sysLocates[0].LocateId);
updateStringparameters5.Add("@locate_name", sysLocates[0].LocateName);
updateStringparameters5.Add("@warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters5.Add("@warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters5.Add("@erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters5.Add("@zone_id", locatesZone[0].ZoneId);
updateStringparameters5.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters5.Add("@update_userid", loginId);
updateStringparameters5.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString5.ToString());
parameterList.Add(updateStringparameters5);
//修改包装表 状态为N
StringBuilder updateString6 = new StringBuilder(1024);
updateString6.Append("update wms_rack_package set enabled=@enabled,update_userid=@update_userid,update_time=@update_time where carton_no= @carton_no ");
DynamicParameters updateStringparameters6 = new DynamicParameters();
updateStringparameters6.Add("@carton_no", cartonNo);
updateStringparameters6.Add("@enabled", "N");
updateStringparameters6.Add("@update_userid", loginId);
updateStringparameters6.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString6.ToString());
parameterList.Add(updateStringparameters6);
#region 插入SN表 插入事务表
//插入 wms_move_sn 条码表
StringBuilder updateString3 = new StringBuilder(1024);
updateString3.Append(@"INSERT INTO [dbo].[wms_move_sn]
([order_no]
,[item_no]
,[part_id]
,[part_no]
,[part_spec]
,[carton_no]
,[qty]
,[unit]
,[status]
,[factory_id]
,[factory_code]
,[enabled]
,[create_userid]
,[create_time]
,[update_userid]
,[update_time]
,[guid])
VALUES (@order_no,@item_no,@part_id,@part_no,@part_spec,@carton_no,@qty,@unit,@status,@factory_id,@factory_code,@enabled,@create_userid,@create_time,@update_userid,@update_time,@guid)");
DynamicParameters updateStringparameters3 = new DynamicParameters();
updateStringparameters3.Add("@order_no", ifScan[0].OrderNo);
updateStringparameters3.Add("@item_no", ifScan[0].ItemNo);
updateStringparameters3.Add("@part_id", ifScan[0].PartId);
updateStringparameters3.Add("@part_no", ifScan[0].PartNo);
updateStringparameters3.Add("@part_spec", ifScan[0].PartSpec);
updateStringparameters3.Add("@carton_no", Stock.CartonNo);
updateStringparameters3.Add("@qty", Stock.Qty);
updateStringparameters3.Add("@unit", Stock.Unit);
updateStringparameters3.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters3.Add("@factory_id", ifScan[0].FactoryId);
updateStringparameters3.Add("@factory_code", ifScan[0].FactoryCode);
updateStringparameters3.Add("@enabled", "Y");
updateStringparameters3.Add("@update_userid", loginId);
updateStringparameters3.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@create_userid", loginId);
updateStringparameters3.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@guid", Guid.NewGuid());
sqlStrings.Add(updateString3.ToString());
parameterList.Add(updateStringparameters3);
//新增 sys_stock_trans 事务表
StringBuilder updateString4 = new StringBuilder(1024);
updateString4.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters4 = new DynamicParameters();
updateStringparameters4.Add("@trans_code", ifScan[0].OrderType == "40" ? (int)WmsEnumUtil.TransType.NC_INSTOCK : (int)WmsEnumUtil.TransType.REWORK_NC_INSTOCK);
updateStringparameters4.Add("@carton_no", Stock.CartonNo);
updateStringparameters4.Add("@part_id", Stock.PartId);
updateStringparameters4.Add("@part_no", Stock.PartNo);
updateStringparameters4.Add("@part_spec", Stock.PartSpec);
updateStringparameters4.Add("@src_locate_id", Stock.LocateId);
updateStringparameters4.Add("@src_locate_name", Stock.LocateName);
updateStringparameters4.Add("@dest_locate_id", sysLocates[0].LocateId);
updateStringparameters4.Add("@dest_locate_name", sysLocates[0].LocateName);
updateStringparameters4.Add("@old_qty", Stock.Qty);
updateStringparameters4.Add("@new_qty", Stock.Qty);
updateStringparameters4.Add("@trans_qty", Stock.Qty);
updateStringparameters4.Add("@old_status", Stock.Status);
updateStringparameters4.Add("@new_status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters4.Add("@old_qms_status", Stock.QmsStatus);
updateStringparameters4.Add("@new_qms_status", Stock.QmsStatus);
updateStringparameters4.Add("@unit", Stock.Unit);
updateStringparameters4.Add("@factory_id", Stock.FactoryId);
updateStringparameters4.Add("@factory_code", Stock.FactoryCode);
updateStringparameters4.Add("@src_erp_warehouse", Stock.ErpWarehouse);
updateStringparameters4.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters4.Add("@src_warehouse_id", Stock.WarehouseId);
updateStringparameters4.Add("@src_warehouse_name", Stock.WarehouseName);
updateStringparameters4.Add("@dest_warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters4.Add("@dest_warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters4.Add("@src_zone_id", Stock.ZoneId);
updateStringparameters4.Add("@src_zone_name", Stock.ZoneName);
updateStringparameters4.Add("@dest_zone_id", locatesZone[0].ZoneId);
updateStringparameters4.Add("@dest_zone_name", locatesZone[0].ZoneName);
updateStringparameters4.Add("@enabled", Stock.Enabled);
updateStringparameters4.Add("@update_userid", loginId);
updateStringparameters4.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@create_userid", loginId);
updateStringparameters4.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@guid", Guid.NewGuid());
updateStringparameters4.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString4.ToString());
parameterList.Add(updateStringparameters4);
#endregion
}
}
if (!istrue)
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:料架中零件不在领料单中,请检查!";
return rfInfo;
}
int retTranNum = repository.SQLTransaction(sqlStrings, parameterList);
if (retTranNum > 0)
{
rfInfo.type = "PASS";
rfInfo.message = "操作成功!请继续扫描箱条码";
return rfInfo;
}
else
{
rfInfo.type = "FALL";
rfInfo.message = "操作失败,请检查!";
return rfInfo;
}
}
else
{
rfInfo.type = "FALL";
rfInfo.message = "[" + cartonNo + "]:该台车未绑定条码,请检查!";
return rfInfo;
}
}
else
{
List<SysStock> sysStocks = repository.GetStocInfoByCartonNo(cartonNo);
if (sysStocks.Count == 0)
{
//提示 [M0090105]:该条码不可用,请检查!
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:该条码不存在,请检查!";
return rfInfo;
}
else if (sysStocks[0].Enabled != "Y")
{
//提示 [M0090105]:箱条码已冻结,无法操作!
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:箱条码已冻结,无法操作!";
return rfInfo;
}
else if (sysStocks[0].Qty == 0)
{
//提示 [M0090105]:该条码是NC隔离状态无法操作!
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:该条码是数量为0禁止操作!";
return rfInfo;
}
else if (sysStocks[0].Status != (int)WmsEnumUtil.StockStatus.INSTOCKED && sysStocks[0].Status != (int)WmsEnumUtil.StockStatus.NC_QUARANTINE && sysStocks[0].Status != (int)WmsEnumUtil.StockStatus.ONLINED)
{
//提示 [M0090105]:该条码是NC隔离状态无法操作!
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:该条码是[" + sysStocks[0].StockStatus + "]状态,请检查!";
return rfInfo;
}
//根据库位获取对应绑定零件号
List<SysLocate> sysLocates = repository.GetLocatePartByLocateName(locateName);
//根据库位名称获取目标信息
List<SysLocate> locatesZone = repository.GetLocateZoneByLocateName(locateName);
//根据单据获取主表信息
List<WmsMoveHeader> wmsMoveHeaders = repository.GetMoveHeaderByOrderNo(orderNo);
if (wmsMoveHeaders.Count == 0)
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + orderNo + "]:该订单是未创建或已关闭状态,请检查!";
return rfInfo;
}
List<WmsMoveDetail> wmsMoveDetails = repository.GetMoveDetailByOrderNoPartNo(orderNo, sysStocks[0].PartNo);
if (wmsMoveDetails.Count == 0)
{
//提示 [M0090105]:该条码是NC入库状态无法操作!
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:该条码零件号不在订单内!";
return rfInfo;
}
List<WmsMoveSn> moveSnCreates = repository.GetMoveSnByOrderNo(orderNo);
if (moveSnCreates.Count > 0)
{
List<WmsMoveSn> wmsMoveSns = repository.GetMoveSnByOrderNoCarton(orderNo, cartonNo);
if (wmsMoveSns.Count == 0)
{
rfInfo.type = "FAIL";
rfInfo.message = "订单中不包含此包装条码,不允许此操作!";
return rfInfo;
}
}
StringBuilder stringBuilder = new StringBuilder(1024);
for (int i = 0; i < wmsMoveDetails.Count; i++)
{
if (wmsMoveDetails[i].Qty >= wmsMoveDetails[i].PickQty)
{
//修改为单据处理中状态
if (wmsMoveHeaders[0].OrderStatus == 10)
{
stringBuilder = new StringBuilder(1024);
stringBuilder.Append("UPDATE wms_move_header SET order_status=@order_status,update_userid=@update_userid,update_time=@update_time WHERE order_no=@order_no ");
DynamicParameters updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@order_status", (int)WmsEnumUtil.MoveOrderStatus.PROCESSING);
updateStringparameters2.Add("@order_no", orderNo);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
}
int remainNum = Convert.ToInt32(wmsMoveDetails[i].Qty - wmsMoveDetails[i].PickQty);//余数
if (sysStocks[0].Qty == remainNum)
{
stringBuilder = new StringBuilder(1024);
stringBuilder.Append("UPDATE wms_move_detail SET pick_qty+=@pick_qty ,item_status=@item_status" +
",update_userid=@update_userid,update_time=@update_time,dest_erp_warehouse=@dest_erp_warehouse WHERE ruid=@ruid;");
DynamicParameters updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@item_status", (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED);
updateStringparameters2.Add("@ruid", wmsMoveDetails[i].Ruid);
updateStringparameters2.Add("@pick_qty", sysStocks[0].Qty);
updateStringparameters2.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
stringBuilder = new StringBuilder(1024);
stringBuilder.Append("UPDATE sys_stock SET status=90,locate_id=@locate_id,locate_name=@locate_name,zone_id=@zone_id,zone_name=@zone_name,warehouse_id=@warehouse_id,warehouse_name=@warehouse_name,update_userid=@update_userid,update_time=@update_time,erp_warehouse=@erp_warehouse WHERE carton_no=@carton_no");
updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@locate_id", sysLocates[0].LocateId);
updateStringparameters2.Add("@locate_name", sysLocates[0].LocateName);
updateStringparameters2.Add("@warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters2.Add("@warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters2.Add("@erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@zone_id", locatesZone[0].ZoneId);
updateStringparameters2.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters2.Add("@carton_no", sysStocks[0].CartonNo);
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
#region 原条码修改后事务
//新增 sys_stock_trans 事务表 原条码
StringBuilder updateString44 = new StringBuilder(1024);
updateString44.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters44 = new DynamicParameters();
updateStringparameters44.Add("@trans_code", wmsMoveHeaders[0].OrderType == (int)WmsEnumUtil.MoveOrderType.NC_IN_STOCK ? (int)WmsEnumUtil.TransType.NC_INSTOCK : (int)WmsEnumUtil.TransType.REWORK_NC_INSTOCK);
updateStringparameters44.Add("@carton_no", sysStocks[0].CartonNo);
updateStringparameters44.Add("@part_id", sysStocks[0].PartId);
updateStringparameters44.Add("@part_no", sysStocks[0].PartNo);
updateStringparameters44.Add("@part_spec", sysStocks[0].PartSpec);
updateStringparameters44.Add("@src_locate_id", sysStocks[0].LocateId);
updateStringparameters44.Add("@src_locate_name", sysStocks[0].LocateName);
updateStringparameters44.Add("@dest_locate_id", sysLocates[0].LocateId);
updateStringparameters44.Add("@dest_locate_name", sysLocates[0].LocateName);
updateStringparameters44.Add("@old_qty", sysStocks[0].Qty);
updateStringparameters44.Add("@new_qty", sysStocks[0].Qty);
updateStringparameters44.Add("@trans_qty", sysStocks[0].Qty);
updateStringparameters44.Add("@old_status", sysStocks[0].Status);
updateStringparameters44.Add("@new_status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters44.Add("@old_qms_status", sysStocks[0].QmsStatus);
updateStringparameters44.Add("@new_qms_status", sysStocks[0].QmsStatus);
updateStringparameters44.Add("@unit", sysStocks[0].Unit);
updateStringparameters44.Add("@factory_id", sysStocks[0].FactoryId);
updateStringparameters44.Add("@factory_code", sysStocks[0].FactoryCode);
updateStringparameters44.Add("@src_erp_warehouse", sysStocks[0].ErpWarehouse);
updateStringparameters44.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters44.Add("@src_warehouse_id", sysStocks[0].WarehouseId);
updateStringparameters44.Add("@src_warehouse_name", sysStocks[0].WarehouseName);
updateStringparameters44.Add("@dest_warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters44.Add("@dest_warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters44.Add("@src_zone_id", sysStocks[0].ZoneId);
updateStringparameters44.Add("@src_zone_name", sysStocks[0].ZoneName);
updateStringparameters44.Add("@dest_zone_id", locatesZone[0].ZoneId);
updateStringparameters44.Add("@dest_zone_name", locatesZone[0].ZoneName);
updateStringparameters44.Add("@enabled", sysStocks[0].Enabled);
updateStringparameters44.Add("@update_userid", loginId);
updateStringparameters44.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@create_userid", loginId);
updateStringparameters44.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@guid", Guid.NewGuid());
updateStringparameters44.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString44.ToString());
parameterList.Add(updateStringparameters44);
#endregion
if (moveSnCreates.Count == 0)
{
stringBuilder = new StringBuilder(1024);
stringBuilder.Append("INSERT INTO dbo.wms_move_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(" update_userid, ");
stringBuilder.Append(" update_time, ");
stringBuilder.Append(" create_userid, ");
stringBuilder.Append(" create_time, ");
stringBuilder.Append(" guid ");
stringBuilder.Append(") ");
stringBuilder.Append("VALUES ");
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(" @update_userid,");
stringBuilder.Append(" @update_time, ");
stringBuilder.Append(" @create_userid,");
stringBuilder.Append(" @create_time,");
stringBuilder.Append(" @guid");
stringBuilder.Append(" );");
DynamicParameters updateStringparameters33 = new DynamicParameters();
updateStringparameters33.Add("@order_no", orderNo);
updateStringparameters33.Add("@item_no", wmsMoveDetails[i].ItemNo);
updateStringparameters33.Add("@part_id", wmsMoveDetails[i].PartId);
updateStringparameters33.Add("@part_no", wmsMoveDetails[i].PartNo);
updateStringparameters33.Add("@part_spec", wmsMoveDetails[i].PartSpec);
updateStringparameters33.Add("@carton_no", sysStocks[0].CartonNo);
updateStringparameters33.Add("@qty", remainNum);
updateStringparameters33.Add("@unit", sysStocks[0].Unit);
updateStringparameters33.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters33.Add("@factory_id", sysStocks[0].FactoryId);
updateStringparameters33.Add("@factory_code", sysStocks[0].FactoryCode);
updateStringparameters33.Add("@enabled", "Y");
updateStringparameters33.Add("@update_userid", loginId);
updateStringparameters33.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@create_userid", loginId);
updateStringparameters33.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@guid", Guid.NewGuid());
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters33);
}
else
{
stringBuilder = new StringBuilder(1024);
//更新单据条码表
stringBuilder.Append("UPDATE dbo.wms_move_sn ");
stringBuilder.Append("SET status = @status, ");
stringBuilder.Append(" update_userid =@update_userid, ");
stringBuilder.Append(" update_time =@update_time ");
stringBuilder.Append("WHERE order_no = @order_no ");
stringBuilder.Append(" AND carton_no = @carton_no ");
updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters2.Add("@order_no", orderNo);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters2.Add("@carton_no", sysStocks[0].CartonNo);
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
}
}
else if (sysStocks[0].Qty > remainNum)
{
//箱条码内数量 大于 剩余NC入库数 ,一次处理不完 拆分箱条码
//修改移库明细表 30 处理中
StringBuilder updateString2 = new StringBuilder(1024);
updateString2.Append(@"update wms_move_detail set pick_qty = pick_qty + @pick_qty, item_status=@item_status,update_userid=@update_userid,update_time=@update_time,dest_erp_warehouse=@dest_erp_warehouse where ruid=@ruid ");
DynamicParameters updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@item_status", (int)WmsEnumUtil.MoveOrderDetailStatus.COMPLETED);
updateStringparameters2.Add("@ruid", wmsMoveDetails[i].Ruid);
updateStringparameters2.Add("@pick_qty", remainNum);
updateStringparameters2.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString2.ToString());
parameterList.Add(updateStringparameters2);
//原条码修改条码表 数量为 Stock.Qty - shengyu
StringBuilder updateString5 = new StringBuilder(1024);
updateString5.Append("update sys_stock set update_userid=@update_userid,update_time=@update_time,qty=@qty where carton_no= @carton_no ");
DynamicParameters updateStringparameters5 = new DynamicParameters();
updateStringparameters5.Add("@carton_no", sysStocks[0].CartonNo);
updateStringparameters5.Add("@qty", sysStocks[0].Qty - remainNum);
//updateStringparameters5.Add("@locate_id", sysLocates[0].LocateId);
//updateStringparameters5.Add("@locate_name", sysLocates[0].LocateName);
//updateStringparameters5.Add("@warehouse_id", locatesZone[0].WarehouseId);
//updateStringparameters5.Add("@warehouse_name", locatesZone[0].WarehouseName);
//updateStringparameters5.Add("@zone_id", locatesZone[0].ZoneId);
//updateStringparameters5.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters5.Add("@update_userid", loginId);
updateStringparameters5.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(updateString5.ToString());
parameterList.Add(updateStringparameters5);
#region 原条码修改后事务
//新增 sys_stock_trans 事务表 原条码
StringBuilder updateString44 = new StringBuilder(1024);
updateString44.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters44 = new DynamicParameters();
updateStringparameters44.Add("@trans_code", (int)WmsEnumUtil.TransType.PART_SPLIT);
updateStringparameters44.Add("@carton_no", sysStocks[0].CartonNo);
updateStringparameters44.Add("@part_id", sysStocks[0].PartId);
updateStringparameters44.Add("@part_no", sysStocks[0].PartNo);
updateStringparameters44.Add("@part_spec", sysStocks[0].PartSpec);
updateStringparameters44.Add("@src_locate_id", sysStocks[0].LocateId);
updateStringparameters44.Add("@src_locate_name", sysStocks[0].LocateName);
updateStringparameters44.Add("@dest_locate_id", sysStocks[0].LocateId);
updateStringparameters44.Add("@dest_locate_name", sysStocks[0].LocateName);
updateStringparameters44.Add("@old_qty", sysStocks[0].Qty);
updateStringparameters44.Add("@new_qty", sysStocks[0].Qty - remainNum);
updateStringparameters44.Add("@trans_qty", sysStocks[0].Qty - remainNum);
updateStringparameters44.Add("@old_status", sysStocks[0].Status);
updateStringparameters44.Add("@new_status", sysStocks[0].Status);
updateStringparameters44.Add("@old_qms_status", sysStocks[0].QmsStatus);
updateStringparameters44.Add("@new_qms_status", sysStocks[0].QmsStatus);
updateStringparameters44.Add("@unit", sysStocks[0].Unit);
updateStringparameters44.Add("@factory_id", sysStocks[0].FactoryId);
updateStringparameters44.Add("@factory_code", sysStocks[0].FactoryCode);
updateStringparameters44.Add("@src_erp_warehouse", sysStocks[0].ErpWarehouse);
updateStringparameters44.Add("@dest_erp_warehouse", sysStocks[0].ErpWarehouse);
updateStringparameters44.Add("@src_warehouse_id", sysStocks[0].WarehouseId);
updateStringparameters44.Add("@src_warehouse_name", sysStocks[0].WarehouseName);
updateStringparameters44.Add("@dest_warehouse_id", sysStocks[0].WarehouseId);
updateStringparameters44.Add("@dest_warehouse_name", sysStocks[0].WarehouseName);
updateStringparameters44.Add("@src_zone_id", sysStocks[0].ZoneId);
updateStringparameters44.Add("@src_zone_name", sysStocks[0].ZoneName);
updateStringparameters44.Add("@dest_zone_id", sysStocks[0].ZoneId);
updateStringparameters44.Add("@dest_zone_name", sysStocks[0].ZoneName);
updateStringparameters44.Add("@enabled", sysStocks[0].Enabled);
updateStringparameters44.Add("@update_userid", loginId);
updateStringparameters44.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@create_userid", loginId);
updateStringparameters44.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@guid", Guid.NewGuid());
updateStringparameters44.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString44.ToString());
parameterList.Add(updateStringparameters44);
#endregion
#region 新建 拆出的箱条码 / 拆出箱条码事务
//新建 拆出的箱条码
StringBuilder updateString3 = new StringBuilder(1024);
updateString3.Append(@" INSERT INTO [dbo].[sys_stock]
([vendor_id]
,[vendor_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[lot_no]
,[fix_lot_no]
,[status]
,[qty]
,[snp_qty]
,[locate_id]
,[locate_name]
,[group_no]
,[erp_warehouse]
,[date_code]
,[qms_status]
,[ref_order_no]
,[unit]
,[dock]
,[warehouse_id]
,[warehouse_name]
,[zone_id]
,[zone_name]
,[printed]
,[print_time]
,[remark]
,[factory_id]
,[factory_code]
,[enabled]
,[create_userid]
,[create_time]
,[update_userid]
,[update_time]
,[guid])
VALUES(@vendor_id,@vendor_code,@carton_no,@part_id,@part_no,@part_spec,@lot_no,@fix_lot_no,@status,@qty,@snp_qty
,@locate_id,@locate_name,@group_no,@erp_warehouse,@date_code,@qms_status,@ref_order_no,@unit,@dock,@warehouse_id,@warehouse_name,@zone_id,@zone_name
,@printed,@print_time,@remark,@factory_id,@factory_code,@enabled,@create_userid,@create_time,@update_userid,@update_time,@guid )");
string NC_Stock = sysStocks[0].CartonNo + "-NC-" + Guid.NewGuid().ToString().Substring(0, 4);
DynamicParameters updateStringparameters3 = new DynamicParameters();
updateStringparameters3.Add("@vendor_id", sysStocks[0].VendorId);
updateStringparameters3.Add("@vendor_code", sysStocks[0].VendorCode);
updateStringparameters3.Add("@carton_no", NC_Stock);
updateStringparameters3.Add("@part_id", sysStocks[0].PartId);
updateStringparameters3.Add("@part_no", sysStocks[0].PartNo);
updateStringparameters3.Add("@part_spec", sysStocks[0].PartSpec);
updateStringparameters3.Add("@lot_no", sysStocks[0].LotNo);
updateStringparameters3.Add("@fix_lot_no", sysStocks[0].FixLotNo);
updateStringparameters3.Add("@status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters3.Add("@qty", remainNum);
updateStringparameters3.Add("@snp_qty", sysStocks[0].SnpQty);
updateStringparameters3.Add("@locate_id", sysLocates[0].LocateId);
updateStringparameters3.Add("@locate_name", sysLocates[0].LocateName);
updateStringparameters3.Add("@group_no", sysStocks[0].GroupNo);
updateStringparameters3.Add("@erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters3.Add("@date_code", sysStocks[0].DateCode);
updateStringparameters3.Add("@qms_status", sysStocks[0].QmsStatus);
updateStringparameters3.Add("@ref_order_no", sysStocks[0].RefOrderNo);
updateStringparameters3.Add("@unit", sysStocks[0].Unit);
updateStringparameters3.Add("@dock", sysStocks[0].Dock);
updateStringparameters3.Add("@warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters3.Add("@warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters3.Add("@zone_id", locatesZone[0].ZoneId);
updateStringparameters3.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters3.Add("@printed", sysStocks[0].Printed);
updateStringparameters3.Add("@print_time", sysStocks[0].PrintTime);
updateStringparameters3.Add("@remark", sysStocks[0].Remark);
updateStringparameters3.Add("@factory_id", sysStocks[0].FactoryId);
updateStringparameters3.Add("@factory_code", sysStocks[0].FactoryCode);
updateStringparameters3.Add("@enabled", sysStocks[0].Enabled);
updateStringparameters3.Add("@update_userid", loginId);
updateStringparameters3.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@create_userid", loginId);
updateStringparameters3.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters3.Add("@guid", Guid.NewGuid());
sqlStrings.Add(updateString3.ToString());
parameterList.Add(updateStringparameters3);
//拆出箱条码事务
//新增 sys_stock_trans 事务表
StringBuilder updateString4 = new StringBuilder(1024);
updateString4.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters4 = new DynamicParameters();
updateStringparameters4.Add("@trans_code", wmsMoveHeaders[0].OrderType == (int)WmsEnumUtil.MoveOrderType.NC_IN_STOCK ? (int)WmsEnumUtil.TransType.NC_INSTOCK : (int)WmsEnumUtil.TransType.REWORK_NC_INSTOCK);
updateStringparameters4.Add("@carton_no", NC_Stock);
updateStringparameters4.Add("@part_id", sysStocks[0].PartId);
updateStringparameters4.Add("@part_no", sysStocks[0].PartNo);
updateStringparameters4.Add("@part_spec", sysStocks[0].PartSpec);
updateStringparameters4.Add("@src_locate_id", sysStocks[0].LocateId);
updateStringparameters4.Add("@src_locate_name", sysStocks[0].LocateName);
updateStringparameters4.Add("@dest_locate_id", sysLocates[0].LocateId);
updateStringparameters4.Add("@dest_locate_name", sysLocates[0].LocateName);
updateStringparameters4.Add("@old_qty", 0);
updateStringparameters4.Add("@new_qty", remainNum);
updateStringparameters4.Add("@trans_qty", remainNum);
updateStringparameters4.Add("@old_status", sysStocks[0].Status);
updateStringparameters4.Add("@new_status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters4.Add("@old_qms_status", sysStocks[0].QmsStatus);
updateStringparameters4.Add("@new_qms_status", sysStocks[0].QmsStatus);
updateStringparameters4.Add("@unit", sysStocks[0].Unit);
updateStringparameters4.Add("@factory_id", sysStocks[0].FactoryId);
updateStringparameters4.Add("@factory_code", sysStocks[0].FactoryCode);
updateStringparameters4.Add("@src_erp_warehouse", sysStocks[0].ErpWarehouse);
updateStringparameters4.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters4.Add("@src_warehouse_id", sysStocks[0].WarehouseId);
updateStringparameters4.Add("@src_warehouse_name", sysStocks[0].WarehouseName);
updateStringparameters4.Add("@dest_warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters4.Add("@dest_warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters4.Add("@src_zone_id", sysStocks[0].ZoneId);
updateStringparameters4.Add("@src_zone_name", sysStocks[0].ZoneName);
updateStringparameters4.Add("@dest_zone_id", locatesZone[0].ZoneId);
updateStringparameters4.Add("@dest_zone_name", locatesZone[0].ZoneName);
updateStringparameters4.Add("@enabled", sysStocks[0].Enabled);
updateStringparameters4.Add("@update_userid", loginId);
updateStringparameters4.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@create_userid", loginId);
updateStringparameters4.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters4.Add("@guid", Guid.NewGuid());
updateStringparameters4.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString4.ToString());
parameterList.Add(updateStringparameters4);
#endregion
if (moveSnCreates.Count == 0)
{
#region 插入SN表
//将拆出的箱条码 插入 wms_move_sn 条码表
StringBuilder updateString33 = new StringBuilder(1024);
updateString33.Append(@"INSERT INTO [dbo].[wms_move_sn]
([order_no]
,[item_no]
,[part_id]
,[part_no]
,[part_spec]
,[carton_no]
,[qty]
,[unit]
,[status]
,[factory_id]
,[factory_code]
,[enabled]
,[create_userid]
,[create_time]
,[update_userid]
,[update_time]
,[guid])
VALUES (@order_no,@item_no,@part_id,@part_no,@part_spec,@carton_no,@qty,@unit,@status,@factory_id,@factory_code,@enabled,@create_userid,@create_time,@update_userid,@update_time,@guid)");
DynamicParameters updateStringparameters33 = new DynamicParameters();
updateStringparameters33.Add("@order_no", wmsMoveDetails[i].OrderNo);
updateStringparameters33.Add("@item_no", wmsMoveDetails[i].ItemNo);
updateStringparameters33.Add("@part_id", wmsMoveDetails[i].PartId);
updateStringparameters33.Add("@part_no", wmsMoveDetails[i].PartNo);
updateStringparameters33.Add("@part_spec", wmsMoveDetails[i].PartSpec);
updateStringparameters33.Add("@carton_no", sysStocks[0].CartonNo + "-1");
updateStringparameters33.Add("@qty", remainNum);
updateStringparameters33.Add("@unit", sysStocks[0].Unit);
updateStringparameters33.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters33.Add("@factory_id", wmsMoveDetails[i].FactoryId);
updateStringparameters33.Add("@factory_code", wmsMoveDetails[i].FactoryCode);
updateStringparameters33.Add("@enabled", "Y");
updateStringparameters33.Add("@update_userid", loginId);
updateStringparameters33.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@create_userid", loginId);
updateStringparameters33.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@guid", Guid.NewGuid());
sqlStrings.Add(updateString33.ToString());
parameterList.Add(updateStringparameters33);
#endregion
}
else
{
stringBuilder = new StringBuilder(1024);
//更新单据条码表
stringBuilder.Append("UPDATE dbo.wms_move_sn ");
stringBuilder.Append("SET status = @status, ");
stringBuilder.Append(" update_userid =@update_userid, ");
stringBuilder.Append(" update_time =@update_time ");
stringBuilder.Append("WHERE order_no = @order_no ");
stringBuilder.Append(" AND carton_no = @carton_no ");
updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters2.Add("@order_no", orderNo);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters2.Add("@carton_no", sysStocks[0].CartonNo);
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
}
}
else if (sysStocks[0].Qty < remainNum)
{
DynamicParameters updateStringparameters2 = new DynamicParameters();
//stringBuilder = new StringBuilder(1024);
//stringBuilder.Append("UPDATE wms_move_detail SET pick_qty+=" + sysStocks[0].Qty + ",item_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + "" +
// ",dest_warehouse_id=" + locatesZone[0].WarehouseId + ",dest_warehouse_name='" + locatesZone[0].WarehouseName + "',dest_zone_id=" + locatesZone[0].ZoneId + ",dest_zone_name='" + locatesZone[0].ZoneName + "',dest_erp_warehouse='" + locatesZone[0].ErpWarehouse + "'" +
// ",update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE ruid='" + wmsMoveDetails[i].Ruid + "';");
//sqlStrings.Add(stringBuilder.ToString());
stringBuilder = new StringBuilder(1024);
stringBuilder.Append("UPDATE wms_move_detail SET pick_qty+=@pick_qty ,item_status=@item_status" +
",update_userid=@update_userid,update_time=@update_time,dest_erp_warehouse=@dest_erp_warehouse WHERE ruid=@ruid;");
updateStringparameters2.Add("@item_status", (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING);
updateStringparameters2.Add("@ruid", wmsMoveDetails[i].Ruid);
updateStringparameters2.Add("@pick_qty", sysStocks[0].Qty);
updateStringparameters2.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
stringBuilder = new StringBuilder(1024);
stringBuilder.Append("UPDATE sys_stock SET status=90,locate_id=@locate_id,locate_name=@locate_name,zone_id=@zone_id,zone_name=@zone_name,warehouse_id=@warehouse_id,warehouse_name=@warehouse_name,update_userid=@update_userid,update_time=@update_time,erp_warehouse=@erp_warehouse WHERE carton_no=@carton_no");
updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@locate_id", sysLocates[0].LocateId);
updateStringparameters2.Add("@locate_name", sysLocates[0].LocateName);
updateStringparameters2.Add("@warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters2.Add("@warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters2.Add("@erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters2.Add("@zone_id", locatesZone[0].ZoneId);
updateStringparameters2.Add("@zone_name", locatesZone[0].ZoneName);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters2.Add("@carton_no", sysStocks[0].CartonNo);
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
#region 原条码修改后事务
//新增 sys_stock_trans 事务表 原条码
StringBuilder updateString44 = new StringBuilder(1024);
updateString44.Append(@" INSERT INTO[dbo].[sys_stock_trans]
([trans_code]
,[carton_no]
,[part_id]
,[part_no]
,[part_spec]
,[src_locate_id]
,[src_locate_name]
,[dest_locate_id]
,[dest_locate_name]
,[old_qty]
,[new_qty]
,[trans_qty]
,[old_status]
,[new_status]
,[old_qms_status]
,[new_qms_status]
,[unit]
,[factory_id]
,[factory_code]
,[src_erp_warehouse]
,[dest_erp_warehouse]
,[src_warehouse_id]
,[src_warehouse_name]
,[dest_warehouse_id]
,[dest_warehouse_name]
,[src_zone_id]
,[src_zone_name]
,[dest_zone_id]
,[dest_zone_name]
,[enabled]
,[update_userid]
,[update_time]
,[create_userid]
,[create_time]
,[guid],ref_order_no)
VALUES (@trans_code,@carton_no,@part_id,@part_no,@part_spec,@src_locate_id ,@src_locate_name ,@dest_locate_id ,@dest_locate_name ,@old_qty
,@new_qty ,@trans_qty ,@old_status ,@new_status ,@old_qms_status ,@new_qms_status ,@unit ,@factory_id ,@factory_code ,@src_erp_warehouse ,@dest_erp_warehouse ,@src_warehouse_id ,@src_warehouse_name ,@dest_warehouse_id ,@dest_warehouse_name ,@src_zone_id ,@src_zone_name ,@dest_zone_id ,@dest_zone_name ,@enabled ,@update_userid ,@update_time ,@create_userid ,@create_time ,@guid,@ref_order_no )");
DynamicParameters updateStringparameters44 = new DynamicParameters();
updateStringparameters44.Add("@trans_code", wmsMoveHeaders[0].OrderType == (int)WmsEnumUtil.MoveOrderType.NC_IN_STOCK ? (int)WmsEnumUtil.TransType.NC_INSTOCK : (int)WmsEnumUtil.TransType.REWORK_NC_INSTOCK);
updateStringparameters44.Add("@carton_no", sysStocks[0].CartonNo);
updateStringparameters44.Add("@part_id", sysStocks[0].PartId);
updateStringparameters44.Add("@part_no", sysStocks[0].PartNo);
updateStringparameters44.Add("@part_spec", sysStocks[0].PartSpec);
updateStringparameters44.Add("@src_locate_id", sysStocks[0].LocateId);
updateStringparameters44.Add("@src_locate_name", sysStocks[0].LocateName);
updateStringparameters44.Add("@dest_locate_id", sysLocates[0].LocateId);
updateStringparameters44.Add("@dest_locate_name", sysLocates[0].LocateName);
updateStringparameters44.Add("@old_qty", sysStocks[0].Qty);
updateStringparameters44.Add("@new_qty", sysStocks[0].Qty);
updateStringparameters44.Add("@trans_qty", sysStocks[0].Qty);
updateStringparameters44.Add("@old_status", sysStocks[0].Status);
updateStringparameters44.Add("@new_status", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
updateStringparameters44.Add("@old_qms_status", sysStocks[0].QmsStatus);
updateStringparameters44.Add("@new_qms_status", sysStocks[0].QmsStatus);
updateStringparameters44.Add("@unit", sysStocks[0].Unit);
updateStringparameters44.Add("@factory_id", sysStocks[0].FactoryId);
updateStringparameters44.Add("@factory_code", sysStocks[0].FactoryCode);
updateStringparameters44.Add("@src_erp_warehouse", sysStocks[0].ErpWarehouse);
updateStringparameters44.Add("@dest_erp_warehouse", locatesZone[0].ErpWarehouse);
updateStringparameters44.Add("@src_warehouse_id", sysStocks[0].WarehouseId);
updateStringparameters44.Add("@src_warehouse_name", sysStocks[0].WarehouseName);
updateStringparameters44.Add("@dest_warehouse_id", locatesZone[0].WarehouseId);
updateStringparameters44.Add("@dest_warehouse_name", locatesZone[0].WarehouseName);
updateStringparameters44.Add("@src_zone_id", sysStocks[0].ZoneId);
updateStringparameters44.Add("@src_zone_name", sysStocks[0].ZoneName);
updateStringparameters44.Add("@dest_zone_id", locatesZone[0].ZoneId);
updateStringparameters44.Add("@dest_zone_name", locatesZone[0].ZoneName);
updateStringparameters44.Add("@enabled", sysStocks[0].Enabled);
updateStringparameters44.Add("@update_userid", loginId);
updateStringparameters44.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@create_userid", loginId);
updateStringparameters44.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters44.Add("@guid", Guid.NewGuid());
updateStringparameters44.Add("@ref_order_no", orderNo);
sqlStrings.Add(updateString44.ToString());
parameterList.Add(updateStringparameters44);
#endregion
if (moveSnCreates.Count == 0)
{
#region 插入SN表
//将拆出的箱条码 插入 wms_move_sn 条码表
StringBuilder updateString33 = new StringBuilder(1024);
updateString33.Append(@"INSERT INTO [dbo].[wms_move_sn]
([order_no]
,[item_no]
,[part_id]
,[part_no]
,[part_spec]
,[carton_no]
,[qty]
,[unit]
,[status]
,[factory_id]
,[factory_code]
,[enabled]
,[create_userid]
,[create_time]
,[update_userid]
,[update_time]
,[guid])
VALUES (@order_no,@item_no,@part_id,@part_no,@part_spec,@carton_no,@qty,@unit,@status,@factory_id,@factory_code,@enabled,@create_userid,@create_time,@update_userid,@update_time,@guid)");
DynamicParameters updateStringparameters33 = new DynamicParameters();
updateStringparameters33.Add("@order_no", orderNo);
updateStringparameters33.Add("@item_no", wmsMoveDetails[i].ItemNo);
updateStringparameters33.Add("@part_id", wmsMoveDetails[i].PartId);
updateStringparameters33.Add("@part_no", wmsMoveDetails[i].PartNo);
updateStringparameters33.Add("@part_spec", wmsMoveDetails[i].PartSpec);
updateStringparameters33.Add("@carton_no", sysStocks[0].CartonNo);
updateStringparameters33.Add("@qty", sysStocks[0].Qty);
updateStringparameters33.Add("@unit", sysStocks[0].Unit);
updateStringparameters33.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters33.Add("@factory_id", wmsMoveDetails[i].FactoryId);
updateStringparameters33.Add("@factory_code", wmsMoveDetails[i].FactoryCode);
updateStringparameters33.Add("@enabled", "Y");
updateStringparameters33.Add("@update_userid", loginId);
updateStringparameters33.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@create_userid", loginId);
updateStringparameters33.Add("@create_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters33.Add("@guid", Guid.NewGuid());
sqlStrings.Add(updateString33.ToString());
parameterList.Add(updateStringparameters33);
#endregion
}
else
{
stringBuilder = new StringBuilder(1024);
//更新单据条码表
stringBuilder.Append("UPDATE dbo.wms_move_sn ");
stringBuilder.Append("SET status = @status, ");
stringBuilder.Append(" update_userid =@update_userid, ");
stringBuilder.Append(" update_time =@update_time ");
stringBuilder.Append("WHERE order_no = @order_no ");
stringBuilder.Append(" AND carton_no = @carton_no ");
updateStringparameters2 = new DynamicParameters();
updateStringparameters2.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.PROCESSED);
updateStringparameters2.Add("@order_no", orderNo);
updateStringparameters2.Add("@update_userid", loginId);
updateStringparameters2.Add("@update_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
updateStringparameters2.Add("@carton_no", sysStocks[0].CartonNo);
sqlStrings.Add(stringBuilder.ToString());
parameterList.Add(updateStringparameters2);
}
}
}
else
{
//提示 [M0090105]:该条码是NC入库状态无法操作!
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:该条码库存大于订单需求数量!";
return rfInfo;
}
}
}
int refNum = repository.SQLTransaction(sqlStrings, parameterList);
if (refNum > 0)
{
List<WmsMoveHeader> wmsMoves = repository.GetMoveHeaderInfoByOrderNo(orderNo);
if (wmsMoves.Count > 0)
{
List<WmsMoveHeader> wmsMoves1 = repository.GetMoveHeaderQtySumByOrderNo(orderNo);
for (int i = 0; i < wmsMoves1.Count; i++)
{
if (wmsMoves1[i].Qty != wmsMoves1[i].PickQty)
{
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<WmsMoveDetail> moveDetails = repository.GetFinishMoveDetailByOrderNo(orderNo);
if (moveDetails.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("-", "");
for (int i = 0; i < moveDetails.Count; i++)
{
SysPart sysPart = repository.GetPartNOInfoByPartNo(moveDetails[i].PartNo);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters = new DynamicParameters();
parameters.Add("@ZINSTNO", moveDetails[i].OrderNo);//盘点凭证号
parameters.Add("@ZEILE", moveDetails[i].ItemNo);//行号
parameters.Add("@WERKS", moveDetails[i].FactoryCode);//工厂
parameters.Add("@LGORT", moveDetails[i].SrcErpWarehouse);//发出库存地点
parameters.Add("@UMLGO", moveDetails[i].DestErpWarehouse);//接收库存地点
parameters.Add("@MATNR", moveDetails[i].PartNo);//物料编码
parameters.Add("@ERFMG", moveDetails[i].PickQty);//转储数量
if (sysPart == null)
{
parameters.Add("@ERFME", "");//计量单位
}
else
{
parameters.Add("@ERFME", sysPart.Unit);//计量单位
}
parameters.Add("@ACTION", "M01"); //M01: NC入库
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_move_header 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_move_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);
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 SetNCInStockOrderNoSubmit(string orderNo, string loginId)
{
StringBuilder stringBuilder = new StringBuilder(1024);
List<string> sqlStrings = new List<string>();
List<DynamicParameters> parameterList = new List<DynamicParameters>();
SetObjectDetail rfInfo = new SetObjectDetail();//返回消息
StringBuilder SqlStringBuilder = new StringBuilder(1024);
List<WmsMoveDetail> wmsMoves = repository.GetFinishMoveDetailByOrderNo(orderNo);
DynamicParameters parameters = new DynamicParameters();
int updateStatus = 1;
if (wmsMoves.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("-", "");
for (int i = 0; i < wmsMoves.Count; i++)
{
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsMoves[i].PartNo);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters = new DynamicParameters();
parameters.Add("@ZINSTNO", wmsMoves[i].OrderNo);//盘点凭证号
parameters.Add("@ZEILE", wmsMoves[i].ItemNo);//行号
parameters.Add("@WERKS", wmsMoves[i].FactoryCode);//工厂
parameters.Add("@LGORT", wmsMoves[i].SrcErpWarehouse);//发出库存地点
parameters.Add("@UMLGO", wmsMoves[i].DestErpWarehouse);//接收库存地点
parameters.Add("@MATNR", wmsMoves[i].PartNo);//物料编码
parameters.Add("@ERFMG", wmsMoves[i].PickQty);//转储数量
if (sysPart == null)
{
parameters.Add("@ERFME", "");//计量单位
}
else
{
parameters.Add("@ERFME", sysPart.Unit);//计量单位
}
parameters.Add("@ACTION", "M01"); //M01: NC入库
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_move_header SET order_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_move_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);
updateStatus = repository.SQLTransaction(sqlStrings, parameterList);
}
if (updateStatus > 0)
{
rfInfo.type = "PASS";
rfInfo.message = "[" + orderNo + "]订单已提交,请重新选择单据";
}
else
{
rfInfo.type = "FAIL";
rfInfo.message = "未查询到数据,请检查!";
}
return rfInfo;
}
}
}