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.

578 lines
34 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>
/// 销售发运
/// </summary>
public class SaleDeliveryService : BaseService<BaseEntity>, ISaleDeliveryService
{
private readonly ISaleDeliveryRepository repository;
public SaleDeliveryService(ISaleDeliveryRepository _repository) : base(_repository)
{
repository = _repository;
}
public SetObjectDetail GetSaleDeliveryOrderList(string orderNo)
{
SetObjectDetail rfInfo = new SetObjectDetail();//返回消息
List<WmsOutstock> wmsMoves = repository.GetSaleDeliveryOrderList(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 GetSaleDeliveryOrderListByOrderNo(string orderNo)
{
SetObjectDetail rfInfo = new SetObjectDetail();
List<WmsOutstock> wmsMoves = repository.GetSaleDeliveryOrderListByOrderNo(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 isGroup, string plateNumber, string loginId)
{
SetObjectDetail rfInfo = new SetObjectDetail();
List<SysStock> sysStocks = repository.GetStockInfoByCartonNo(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].Status == (int)WmsEnumUtil.StockStatus.SHIPPED)
{
//提示 [M0090105]:该条码未配料,请检查!";
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:该条码已发运,请检查!";
return rfInfo;
}
else if (sysStocks[0].Status != (int)WmsEnumUtil.StockStatus.BATCHED)
{
//提示 [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 (isGroup == "1")
{
if (string.IsNullOrEmpty(sysStocks[0].GroupNo) || sysStocks[0].GroupNo == "NULL")
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + cartonNo + "]:分组号不能为空,请检查!";
return rfInfo;
}
sysStocks = repository.GetStockByGroupNo(sysStocks[0].GroupNo);
}
List<string> sqlStrings = new List<string>();
List<DynamicParameters> parameterList = new List<DynamicParameters>();
StringBuilder stringBuilder = new StringBuilder();
for (int k = 0; k < sysStocks.Count; k++)
{
List<WmsOutstockDetail> WmsOutstockDetails = repository.GetOutStockDetailByOrderPartNo(orderNo, sysStocks[k].PartNo);
if (WmsOutstockDetails.Count == 0)
{
//提示 [M0090105]:该条码是NC入库状态无法操作!
rfInfo.type = "FAIL";
rfInfo.message = "[" + sysStocks[k].CartonNo + "]:该条码零件号不在订单内!";
return rfInfo;
}
List<WmsOutstockSn> moveSnCreates = repository.GetOutStockSnByOrder(orderNo);
if (moveSnCreates.Count > 0)
{
List<WmsOutstockSn> wmsOutStockSns = repository.GetOutStockSnByOrderCartonNo(orderNo, sysStocks[k].CartonNo);
if (wmsOutStockSns.Count == 0)
{
rfInfo.type = "FAIL";
rfInfo.message = "订单中不包含此包装条码,不允许此操作!";
return rfInfo;
}
}
for (int i = 0; i < WmsOutstockDetails.Count; i++)
{
int remainNum = Convert.ToInt32(WmsOutstockDetails[i].Qty - WmsOutstockDetails[i].OutQty);//余数
if (sysStocks[k].Qty == remainNum)
{
if (WmsOutstocks[0].OrderStatus != (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING)//
{
stringBuilder = new StringBuilder();
stringBuilder.Append("UPDATE wms_outstock SET order_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + ",plate_number='" + plateNumber + "',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no='" + orderNo + "';");
sqlStrings.Add(stringBuilder.ToString());
}
stringBuilder = new StringBuilder();
stringBuilder.Append("UPDATE wms_outstock_detail SET out_qty+=" + sysStocks[k].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();
stringBuilder.Append("UPDATE sys_stock SET status=" + (int)WmsEnumUtil.StockStatus.SHIPPED + ",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[k].CartonNo + "';");
sqlStrings.Add(stringBuilder.ToString());
stringBuilder = new StringBuilder();
//更新单据条码表
stringBuilder.Append("UPDATE dbo.wms_outstock_sn ");
stringBuilder.Append("SET status = " + (int)WmsEnumUtil.MoveOrderSnStatus.SHIPPED + ", ");
stringBuilder.Append(" update_userid = " + loginId + ", ");
stringBuilder.Append(" update_time = CONVERT(VARCHAR(20),GETDATE(),21) ");
stringBuilder.Append("WHERE order_no = '" + orderNo + "' ");
stringBuilder.Append(" AND carton_no = '" + sysStocks[k].CartonNo + "'; ");
sqlStrings.Add(stringBuilder.ToString());
break;
}
else if (sysStocks[k].Qty > remainNum)
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + sysStocks[k].CartonNo + "]:该条码库存大于订单需求数量!";
return rfInfo;
}
else if (sysStocks[k].Qty < remainNum)
{
//处理中
if (WmsOutstocks[0].OrderStatus != (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING)//修改为盘点中状态
{
stringBuilder = new StringBuilder();
stringBuilder.Append("UPDATE wms_outstock SET order_status=" + (int)WmsEnumUtil.MoveOrderDetailStatus.BATCHING + ",plate_number='" + plateNumber + "',update_userid=" + loginId + ",update_time=CONVERT(VARCHAR(20),GETDATE(),21) WHERE order_no='" + orderNo + "';");
sqlStrings.Add(stringBuilder.ToString());
}
stringBuilder = new StringBuilder();
stringBuilder.Append("UPDATE wms_outstock_detail SET out_qty+=" + sysStocks[k].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();
stringBuilder.Append("UPDATE sys_stock SET status=" + (int)WmsEnumUtil.StockStatus.SHIPPED + ",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[k].CartonNo + "';");
sqlStrings.Add(stringBuilder.ToString());
stringBuilder = new StringBuilder();
//更新单据条码表
stringBuilder.Append("UPDATE dbo.wms_outstock_sn ");
stringBuilder.Append("SET status = " + (int)WmsEnumUtil.MoveOrderSnStatus.SHIPPED + ", ");
stringBuilder.Append(" update_userid = " + loginId + ", ");
stringBuilder.Append(" update_time = CONVERT(VARCHAR(20),GETDATE(),21) ");
stringBuilder.Append("WHERE order_no = '" + orderNo + "' ");
stringBuilder.Append(" AND carton_no = '" + sysStocks[k].CartonNo + "'; ");
sqlStrings.Add(stringBuilder.ToString());
break;
}
}
stringBuilder = new StringBuilder();
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.SALE_SHIPMENT + "', ");//销售发运
stringBuilder.Append(" '" + sysStocks[k].CartonNo + "', ");
stringBuilder.Append(" " + sysStocks[k].PartId + ", ");
stringBuilder.Append(" '" + sysStocks[k].PartNo + "', ");
stringBuilder.Append(" N'" + sysStocks[k].PartSpec + "', ");
stringBuilder.Append(" " + sysStocks[k].LocateId + ", ");//源库位
stringBuilder.Append(" '" + sysStocks[k].LocateName + "', ");
stringBuilder.Append(" 0, ");//目标库位
stringBuilder.Append(" '', ");
stringBuilder.Append(" " + sysStocks[k].Qty + ",");
stringBuilder.Append(" " + sysStocks[k].Qty + ",");
stringBuilder.Append(" " + sysStocks[k].Qty + ",");
stringBuilder.Append(" '" + sysStocks[k].Status + "', ");
stringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.SHIPPED + "', ");//已发运
stringBuilder.Append(" '" + sysStocks[k].Unit + "', ");
stringBuilder.Append(" " + sysStocks[k].FactoryId + ", ");
stringBuilder.Append(" '" + sysStocks[k].FactoryCode + "',");
stringBuilder.Append(" '" + sysStocks[k].ErpWarehouse + "',");
stringBuilder.Append(" '" + sysStocks[k].ErpWarehouse + "', ");
stringBuilder.Append(" " + sysStocks[k].WarehouseId + ", ");
stringBuilder.Append(" '" + sysStocks[k].WarehouseName + "', ");
stringBuilder.Append(" 0, ");
stringBuilder.Append(" '', ");
stringBuilder.Append(" " + sysStocks[k].ZoneId + ", ");
stringBuilder.Append(" '" + sysStocks[k].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());
}
int updateNum = repository.SQLTransaction(sqlStrings, parameterList);
if (updateNum > 0)
{
List<WmsOutstockDetail> wmsMoves1 = repository.GetOutStockDetailByOrder(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);
if (wmsOutstockDetails.Count > 0)
{
string Sid = Guid.NewGuid().ToString().Replace("-", "");//同一个订单使用一个SID接口发运时通过筛选SID进行发运
if (wmsOutstockDetails[0].OrderType == (int)WmsEnumUtil.OutStockType.SALE_SHIPPING)//JIS WMS创建的销售发运单据类型
{
//WMS将每次发运的信息传递给SAP,SAP用于创建交货单。 JIS
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.WMS_JIS(ZZ_WMSNUM,WERKS,LGORT,LFDAT,KUNNR,MATNR ");
SqlStringBuilder.Append(" ,LFIMG,MEINS,ZPOST,ZTIME,SID,RECTIM,SYNFLG,GUID) ");
SqlStringBuilder.Append(" VALUES(@ZZ_WMSNUM,@WERKS,@LGORT,@LFDAT,@KUNNR,@MATNR,@LFIMG ");
SqlStringBuilder.Append(" ,@MEINS,@ZPOST,@ZTIME,@SID,@RECTIM,@SYNFLG,@GUID) ");
for (int i = 0; i < wmsOutstockDetails.Count; i++)
{
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsOutstockDetails[i].PartNo);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters = new DynamicParameters();
parameters.Add("@ZZ_WMSNUM", wmsOutstockDetails[i].OrderNo);//WMS发运单据号
parameters.Add("@WERKS", wmsOutstockDetails[i].FactoryCode);//发货工厂
parameters.Add("@LGORT", wmsOutstockDetails[i].SrcErpWarehouse);//发货库存地
parameters.Add("@LFDAT", string.IsNullOrEmpty(wmsOutstockDetails[i].PlanDate) ? "" : wmsOutstockDetails[i].PlanDate);//交货日期
parameters.Add("@KUNNR", wmsOutstockDetails[i].CustomerCode);//客户编码(送达方)
parameters.Add("@MATNR", wmsOutstockDetails[i].PartNo);//物料号
parameters.Add("@LFIMG", wmsOutstockDetails[i].OutQty);//交货数量
if (sysPart == null)
{
parameters.Add("@MEINS", "");//计量单位
}
else
{
parameters.Add("@MEINS", sysPart.Unit);//计量单位
}
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);
}
}
else if (wmsOutstockDetails[0].OrderType == (int)WmsEnumUtil.OutStockType.SALE_SHIPPING_NJIS)//非JIS SAP传递的销售发运单据类型
{
//WMS将每次发运的信息传递给SAP,SAP用于对交货单发货。
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.WMS_NJSI(VBELN,POSNR,WERKS,LGORT,BLDAT,KUNNR,MATNR,LFIMG ");
SqlStringBuilder.Append(" ,MEINS,ZDATE,ZTIME,SID,RECTIM,SYNFLG,GUID,ZVBELN) ");
SqlStringBuilder.Append(" VALUES(@VBELN,@POSNR,@WERKS,@LGORT,@BLDAT,@KUNNR,@MATNR,@LFIMG ");
SqlStringBuilder.Append(" ,@MEINS,@ZDATE,@ZTIME,@SID,@RECTIM,@SYNFLG,@GUID,@ZVBELN) ");
for (int i = 0; i < wmsOutstockDetails.Count; i++)
{
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsOutstockDetails[i].PartNo);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters = new DynamicParameters();
parameters.Add("@VBELN", wmsOutstockDetails[i].OrderNo);//销售交货单
parameters.Add("@ZVBELN", wmsOutstockDetails[i].Zvbeln);//新增 SAP过帐需求编号
parameters.Add("@POSNR", wmsOutstockDetails[i].ItemNo);//行项目号
parameters.Add("@WERKS", wmsOutstockDetails[i].FactoryCode);//发货工厂
parameters.Add("@LGORT", wmsOutstockDetails[i].SrcErpWarehouse);//发货库存地
parameters.Add("@BLDAT", string.IsNullOrEmpty(wmsOutstockDetails[i].PlanDate) ? "" : wmsOutstockDetails[i].PlanDate);//交货日期
parameters.Add("@KUNNR", wmsOutstockDetails[i].CustomerCode);//客户编码(送达方)
parameters.Add("@MATNR", wmsOutstockDetails[i].PartNo);//物料编码
parameters.Add("@LFIMG", wmsOutstockDetails[i].OutQty);//转储数量
if (sysPart == null)
{
parameters.Add("@MEINS", "");//计量单位
}
else
{
parameters.Add("@MEINS", sysPart.Unit);//计量单位
}
parameters.Add("@ZDATE", 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.MoveOrderDetailStatus.COMPLETED + ",plate_number='" + plateNumber + "',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);
updateStatus = repository.SQLTransaction(sqlStrings, parameterList);
}
if (updateStatus > 0)
{
rfInfo.type = "PASS";
rfInfo.message = "订单操作完成!";
return rfInfo;
}
else
{
rfInfo.type = "FAIL";
rfInfo.message = "订单操作操作失败!请检查";
return rfInfo;
}
}
else
{
//提示 操作失败!
rfInfo.type = "FAIL";
rfInfo.message = "操作失败,请检查!";
}
return rfInfo;
}
public SetObjectDetail SetSaleDeliveryOrderNoSubmit(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;
WmsOutstockDetail wmsOutstocks = repository.GetOutStockDetailQtySumByOrder(orderNo);
if (wmsOutstocks.PickQty == wmsOutstocks.OutQty)
{
List<WmsOutstockDetail> wmsOutstockDetails = repository.GetFinishOutStockDetailByOrderNo(orderNo);
if (wmsOutstockDetails.Count > 0)
{
if (wmsOutstockDetails[0].OrderType == (int)WmsEnumUtil.OutStockType.SALE_SHIPPING)//JIS WMS创建的销售发运单据类型
{
//WMS将每次发运的信息传递给SAP,SAP用于创建交货单。 JIS
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.WMS_JIS(ZZ_WMSNUM,WERKS,LGORT,LFDAT,KUNNR,MATNR ");
SqlStringBuilder.Append(" ,LFIMG,MEINS,ZPOST,ZTIME,SID,RECTIM,SYNFLG,GUID) ");
SqlStringBuilder.Append(" VALUES(@ZZ_WMSNUM,@WERKS,@LGORT,@LFDAT,@KUNNR,@MATNR,@LFIMG ");
SqlStringBuilder.Append(" ,@MEINS,@ZPOST,@ZTIME,@SID,@RECTIM,@SYNFLG,@GUID) ");
string sid = Guid.NewGuid().ToString().Replace("-", "");
for (int i = 0; i < wmsOutstockDetails.Count; i++)
{
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsOutstockDetails[i].PartNo);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters = new DynamicParameters();
parameters.Add("@ZZ_WMSNUM", wmsOutstockDetails[i].OrderNo);//WMS发运单据号
parameters.Add("@WERKS", wmsOutstockDetails[i].FactoryCode);//发货工厂
parameters.Add("@LGORT", wmsOutstockDetails[i].SrcErpWarehouse);//发货库存地
parameters.Add("@LFDAT", string.IsNullOrEmpty(wmsOutstockDetails[i].PlanDate) ? "" : wmsOutstockDetails[i].PlanDate);//交货日期
parameters.Add("@KUNNR", wmsOutstockDetails[i].CustomerCode);//客户编码(送达方)
parameters.Add("@MATNR", wmsOutstockDetails[i].PartNo);//物料号
parameters.Add("@LFIMG", wmsOutstockDetails[i].OutQty);//交货数量
if (sysPart == null)
{
parameters.Add("@MEINS", "");//计量单位
}
else
{
parameters.Add("@MEINS", sysPart.Unit);//计量单位
}
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);
}
}
else if (wmsOutstockDetails[0].OrderType == (int)WmsEnumUtil.OutStockType.SALE_SHIPPING_NJIS)//非JIS SAP传递的销售发运单据类型
{
//WMS将每次发运的信息传递给SAP,SAP用于对交货单发货。
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.WMS_NJSI(VBELN,POSNR,WERKS,LGORT,BLDAT,KUNNR,MATNR,LFIMG ");
SqlStringBuilder.Append(" ,MEINS,ZDATE,ZTIME,SID,RECTIM,SYNFLG,GUID,ZVBELN) ");
SqlStringBuilder.Append(" VALUES(@VBELN,@POSNR,@WERKS,@LGORT,@BLDAT,@KUNNR,@MATNR,@LFIMG ");
SqlStringBuilder.Append(" ,@MEINS,@ZDATE,@ZTIME,@SID,@RECTIM,@SYNFLG,@GUID,@ZVBELN) ");
for (int i = 0; i < wmsOutstockDetails.Count; i++)
{
SysPart sysPart = repository.GetPartNOInfoByPartNo(wmsOutstockDetails[i].PartNo);
sqlStrings.Add(SqlStringBuilder.ToString());
parameters = new DynamicParameters();
parameters.Add("@VBELN", wmsOutstockDetails[i].OrderNo);//销售交货单
parameters.Add("@ZVBELN", wmsOutstockDetails[i].Zvbeln);//新增 SAP过帐需求编号
parameters.Add("@POSNR", wmsOutstockDetails[i].ItemNo);//行项目号
parameters.Add("@WERKS", wmsOutstockDetails[i].FactoryCode);//发货工厂
parameters.Add("@LGORT", wmsOutstockDetails[i].SrcErpWarehouse);//发货库存地
parameters.Add("@BLDAT", string.IsNullOrEmpty(wmsOutstockDetails[i].PlanDate) ? "" : wmsOutstockDetails[i].PlanDate);//交货日期
parameters.Add("@KUNNR", wmsOutstockDetails[i].CustomerCode);//客户编码(送达方)
parameters.Add("@MATNR", wmsOutstockDetails[i].PartNo);//物料编码
parameters.Add("@LFIMG", wmsOutstockDetails[i].OutQty);//转储数量
if (sysPart == null)
{
parameters.Add("@MEINS", "");//计量单位
}
else
{
parameters.Add("@MEINS", sysPart.Unit);//计量单位
}
parameters.Add("@ZPOST", DateTime.Now.ToString("yyyyMMdd"));//交易日期
parameters.Add("@ZTIME", DateTime.Now.ToString("HHmmss"));//交易时间
parameters.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
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.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_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);
updateStatus = repository.SQLTransaction(sqlStrings, parameterList);
}
if (updateStatus > 0)
{
rfInfo.type = "PASS";
rfInfo.message = "[" + orderNo + "]订单已提交,请重新选择订单";
}
else
{
rfInfo.type = "FAIL";
rfInfo.message = "未查询到数据,请检查!";
}
}
else
{
rfInfo.type = "FAIL";
rfInfo.message = "[" + orderNo + "]该订单配料数未完全发运,请检查!";
}
return rfInfo;
}
}
}