using Masuit.Tools;
|
using MES.Service.Models;
|
using NewPdaSqlServer.DB;
|
using NewPdaSqlServer.Dto.service;
|
using NewPdaSqlServer.entity;
|
using NewPdaSqlServer.entity.Base;
|
using NewPdaSqlServer.util;
|
using OracleInternal.Sharding;
|
using SqlSugar;
|
using SqlSugar.Extensions;
|
using System.Data;
|
using System.Data.SqlClient;
|
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
|
|
namespace NewPdaSqlServer.service.Warehouse;
|
|
public class MesSttlManager : Repository<MesItemBl>
|
{
|
/// <summary>
|
/// 获取受托退料申请列表
|
/// </summary>
|
/// <returns>受托退料申请列表</returns>
|
public List<string> GetSttlBillNo(WarehouseQuery query)
|
{
|
var list = Db.Queryable<MesShouTui>()
|
.Where(s => s.IsCheck == true && s.IsFinish == false)
|
.Select(s => s.BillNo).ToList();
|
|
return list;
|
}
|
|
/// <summary>
|
/// 根据单号获取MES物料表明细
|
/// </summary>
|
/// <param name="query">仓库查询参数</param>
|
/// <returns>物料明细列表</returns>
|
public List<ItemDetailModel> GetMesItemDetailByBillNo(
|
WarehouseQuery query)
|
{
|
// 关联查询物料表、物料明细表和物料基础信息表
|
var mesItemTblDetails = Db
|
.Queryable<MesShouTui, MesShouTuiDetail, MesItems>(
|
(a, b, c) => new JoinQueryInfos(
|
JoinType.Left,
|
a.Guid == b.PGuid,
|
JoinType.Left,
|
b.FMaterialId == c.Id.ToString())
|
).Where((a, b, c) => a.BillNo == query.billNo && a.IsCheck == true)
|
.Select<ItemDetailModel>((a, b, c) => new ItemDetailModel
|
{
|
ItemNo = c.ItemNo,
|
ItemName = c.ItemName,
|
ItemModel = c.ItemModel,
|
FQty = b.FQty, // 申请数量
|
SQty = b.SQty, // 已扫数量
|
Pid = b.PGuid.ToString(),
|
FMaterialId = b.FMaterialId,
|
Id = b.Guid.ToString()
|
}).ToList();
|
|
// 筛选出待退数量大于已退数量的记录
|
//var itemTblDetails = mesItemTblDetails
|
// .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList();
|
|
return mesItemTblDetails;
|
}
|
|
/// <summary>
|
/// 受托退料入库
|
/// </summary>
|
/// <param name="query"></param>
|
/// <returns></returns>
|
/// <exception cref="Exception"></exception>
|
public ProductionPickDto SttlScanBarcode(WarehouseQuery query)
|
{
|
var _strMsg = "";
|
var _intSum = "";
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
|
if (query.daa001.IsNullOrEmpty()) throw new Exception("申请单号不允许为空");
|
if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
|
|
using (var cmd = new SqlCommand("[prc_pda_STTL]", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@outMsg", SqlDbType.NVarChar, 300),
|
new("@outSum", SqlDbType.NVarChar, 300),
|
new("@barcode_num", SqlDbType.NVarChar, 300),
|
new("@split_num", SqlDbType.NVarChar, 300),
|
new("@c_User", query.userName),
|
new("@p_biLL_no", query.daa001),
|
new("@p_item_barcode", query.barcode)
|
};
|
parameters[0].Direction = ParameterDirection.Output;
|
parameters[1].Direction = ParameterDirection.Output;
|
parameters[2].Direction = ParameterDirection.Output;
|
parameters[3].Direction = ParameterDirection.Output;
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
cmd.ExecuteNonQuery();
|
_strMsg = parameters[0].Value.ToString();
|
_intSum = parameters[1].Value.ToString();
|
|
var barcodeNum = parameters[2].Value.ToString();
|
var splitNum = parameters[3].Value.ToString();
|
|
var result = Convert.ToInt32(_intSum);
|
if (result <= 0) throw new Exception(_strMsg);
|
|
var dto = new ProductionPickDto
|
{
|
daa001 = query.daa001,
|
barcodeNum = barcodeNum,
|
splitNum = splitNum,
|
barcode = query.barcode,
|
strMsg = _strMsg,
|
result = _intSum
|
};
|
|
return dto;
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
finally
|
{
|
conn.Close();
|
}
|
}
|
}
|
}
|
}
|