using System;
using System.Collections.Generic;
using System.Linq;
using HH.WCS.Mobox3.RiDong.dto;
using HH.WCS.Mobox3.RiDong.generalMethod;
using HH.WCS.Mobox3.RiDong.models;
using HH.WCS.Mobox3.RiDong.util;
namespace HH.WCS.Mobox3.RiDong.apiMethod;
///
/// 出库流程方法类
///
public abstract class OutWareHouseService
{
///
/// 创建出库单
///
public static void CreateOutboundOrderFromMaterialOut(List materialOuts)
{
List outboundOrders = new List();
// 创建出库单
foreach (var materialOut in materialOuts)
{
// 查询物料表
var tnMaterial = AdoSqlMethod.QueryFirst(p => p.S_ITEM_CODE == materialOut.S_INT_PRODUCT_CODE);
// 物料表为空
if (tnMaterial is null)
{
if (materialOut.S_ITEM_EMPTY != "物料不存在")
{
materialOut.S_ITEM_EMPTY = "物料不存在";
AdoSqlMethod.UpdateFirst(materialOut, p => new { p.S_ITEM_EMPTY });
}
}
else
{
if (outboundOrders.Count > 0 && outboundOrders.Count(p => p.S_NO == materialOut.S_TRAN_SUB_SEQ) > 0)
{
if (tnMaterial.ISAUTO == "Y")
{
materialOut.S_TRANSACTION += "-001";
}
else
{
materialOut.S_TRANSACTION += "-002";
}
var outboundOrder = outboundOrders.First(p => p.S_NO == materialOut.S_TRANSACTION);
outboundOrder.Details.Add(new OutboundDetail()
{
S_OO_NO = outboundOrder.S_NO,
S_SERIAL_NO = outboundOrder.S_NO,
N_ROW_NO = materialOut.S_ORDER_LINE,
S_BATCH_NO = materialOut.S_LOT,
F_QTY = materialOut.S_LOR_QUANTITYOT,
S_ITEM_CODE = materialOut.S_INT_PRODUCT_CODE,
S_IDENTIFICATION = "MO",
S_ITEM_NAME = tnMaterial.S_ITEM_NAME,
S_BS_NO = materialOut.S_SO
});
materialOut.S_CREATE_OK = 1;
}
else
{
// 创建出库单主表数据
OutboundOrder outboundOrder = new OutboundOrder();
if (tnMaterial.ISAUTO == "Y")
{
outboundOrder.ISAUTO = "Y";
materialOut.S_TRANSACTION += "-001";
}
else
{
outboundOrder.ISAUTO = "N";
materialOut.S_TRANSACTION += "-002";
}
outboundOrder.S_NO = materialOut.S_TRANSACTION;
outboundOrder.Details = new List();
outboundOrder.Details.Add(new OutboundDetail()
{
S_OO_NO = outboundOrder.S_NO,
S_SERIAL_NO = outboundOrder.S_NO,
N_ROW_NO = materialOut.S_ORDER_LINE,
S_BATCH_NO = materialOut.S_LOT,
F_QTY = materialOut.S_LOR_QUANTITYOT,
S_ITEM_CODE = materialOut.S_INT_PRODUCT_CODE,
S_IDENTIFICATION = "MO",
S_ITEM_NAME = tnMaterial.S_ITEM_NAME,
S_BS_NO = materialOut.S_SO
});
materialOut.S_CREATE_OK = 1;
outboundOrders.Add(outboundOrder);
}
}
}
var querySqlSugarClient = AdoSqlMethod