using Masuit.Tools;
|
using Masuit.Tools.Models;
|
using NewPdaSqlServer.DB;
|
using NewPdaSqlServer.Dto.service;
|
using NewPdaSqlServer.entity;
|
using NewPdaSqlServer.entity.Base;
|
using NewPdaSqlServer.service.@base;
|
using NewPdaSqlServer.util;
|
using Newtonsoft.Json;
|
using SqlSugar;
|
using System.Data;
|
using System.Data.SqlClient;
|
using System.Security.Cryptography;
|
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
|
|
namespace NewPdaSqlServer.service.Warehouse;
|
|
public class MesInvItemInCDetailsManager : Repository<MesInvItemInCDetails>
|
{
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
|
|
public ItemInBaseModel SaveBarCodes(WarehouseQuery entity)
|
{
|
ItemInBaseModel res = new ItemInBaseModel();
|
string connectionString = DbHelperSQL.strConn;
|
|
// 参数验证
|
if (string.IsNullOrEmpty(entity.userName)) throw new ArgumentNullException(nameof(entity.userName), "用户名不允许为空");
|
if (string.IsNullOrEmpty(entity.sectionCode)) throw new ArgumentNullException(nameof(entity.sectionCode), "库位编号不允许为空");
|
if (string.IsNullOrEmpty(entity.barcode)) throw new ArgumentNullException(nameof(entity.barcode), "条码不允许为空");
|
if (string.IsNullOrEmpty(entity.cgrkType)) throw new ArgumentNullException(nameof(entity.cgrkType), "采购入库类型不允许为空");
|
|
using (var conn = new SqlConnection(connectionString))
|
{
|
using (var cmd = new SqlCommand("[prc_pda_inv_cgrk]", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
// 设置存储过程参数
|
SqlParameter[] parameters =
|
{
|
new SqlParameter("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName },
|
new SqlParameter("@pi_barcode", SqlDbType.NVarChar, 100) { Value = entity.barcode.Trim().ToLower() },
|
new SqlParameter("@pi_sectionCode", SqlDbType.NVarChar, 30) { Value = entity.sectionCode },
|
new SqlParameter("@pi_cgrkType", SqlDbType.NVarChar, 30) { Value = entity.cgrkType },
|
new SqlParameter("@po_outMsg", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output },
|
new SqlParameter("@po_outSum", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output }
|
};
|
|
cmd.Parameters.AddRange(parameters);
|
cmd.ExecuteNonQuery();
|
|
// 获取输出参数
|
string? outMessage = parameters[4].Value?.ToString();
|
string? outSum = parameters[5].Value?.ToString();
|
|
if (string.IsNullOrEmpty(outMessage) || string.IsNullOrEmpty(outSum))
|
throw new InvalidOperationException("存储过程返回参数异常");
|
|
// 验证结果
|
if (!int.TryParse(outSum, out int result) || result <= 0)
|
throw new InvalidOperationException(outMessage);
|
|
// 调试输出
|
Console.WriteLine($"查询的条码值: '{entity.barcode}' (长度: {entity.barcode.Length})");
|
|
// 使用参数化查询并忽略大小写(适用于支持的数据库)
|
var itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>()
|
.Where(it => it.ItemBarcode.Trim().ToLower() == entity.barcode.Trim().ToLower())
|
.First() ?? throw new InvalidOperationException($"未找到条码 '{entity.barcode}' 的匹配信息");
|
|
// 调试输出(检查值和长度)
|
Console.WriteLine($"查询的条码值: '{entity.barcode}' (长度: {entity.barcode.Length})");
|
|
// 优化查询(去除空格并忽略大小写)
|
var MesInvItemInCDetails = Db.Queryable<MesInvItemInCDetails>()
|
.Where(it => it.ItemBarcode.Trim().ToLower() == entity.barcode.Trim().ToLower())
|
.First() ?? throw new InvalidOperationException($"未找到条码 '{entity.barcode}' 的匹配的入库信息");
|
|
// 从入库条码中获取有效的ItemInId
|
var cId = MesInvItemInCDetails.ItemInId; // 假设存在ItemInId属性
|
|
// 查询物料汇总明细
|
var sql = string.Format(@"
|
SELECT
|
b.Item_No AS ItemNo,
|
b.Item_Name AS ItemName,
|
b.Item_Model AS ItemModel,
|
a.Quantity AS FQty,
|
b.Item_Id AS FMaterialId,
|
CONVERT(VARCHAR(36), b.Guid) AS Id
|
FROM MES_INV_ITEM_IN_C_ITEMS a
|
LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id
|
WHERE a.Item_In_Id = '{0}' AND a.Item_Id = '{1}'", cId, itemBarcodeDetails.ItemId);
|
|
res.ItemInDetails = Db.Ado.SqlQuery<dynamic>(sql);
|
|
// 查询入库条码明细
|
var sql2 = string.Format(@"
|
SELECT
|
b.Item_No AS ItemNo,
|
b.Item_Name AS ItemName,
|
b.Item_Model AS ItemModel,
|
a.Quantity AS FQty,
|
b.Item_Id AS FMaterialId,
|
CONVERT(VARCHAR(36), a.Guid) AS Id,
|
a.Depot_Section_Code AS kw,
|
a.Item_Barcode AS barcode
|
FROM Mes_Inv_Item_In_C_Details a
|
LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id
|
WHERE a.Item_In_Id = '{0}' AND a.Item_Id = '{1}'",cId, itemBarcodeDetails.ItemId);
|
|
res.ItemBarCDetails = Db.Ado.SqlQuery<dynamic>(sql2);
|
|
// 设置返回信息
|
res.Message = outMessage;
|
res.SumQuantity = result;
|
|
return res;
|
}
|
catch (Exception ex)
|
{
|
|
|
// 记录异常日志(建议添加日志记录)
|
res.Message = $"操作失败: {ex.Message}";
|
return res;
|
}
|
}
|
}
|
}
|
|
|
|
//public ItemInBaseModel SaveBarCodes(WarehouseQuery entity)
|
//{
|
// string functionName = "采购入库", fieldName = null, inFieldVal = null;
|
// string user = entity.userName,
|
// sectionCode = entity.sectionCode,
|
// itemBarcode = entity.barcode;
|
// var transactionNo = "101";
|
// int? billTypeId = 100, num = 0, num2 = 0;
|
// var freeze = 0;
|
// decimal cSyQty = 0;
|
|
// if (string.IsNullOrEmpty(sectionCode))
|
// throw new Exception("请扫库位条码!");
|
|
// var itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>()
|
// .Where(it => it.ItemBarcode == itemBarcode)
|
// .First();
|
|
// if (itemBarcodeDetails == null)
|
// throw new Exception("条码不存在,请核对!");
|
|
// if (string.IsNullOrEmpty(itemBarcodeDetails.Memo) || itemBarcodeDetails.Memo != "采购入库")
|
// throw new Exception("此条码不属于到货条码,无法用采购入库!");
|
|
// var inventory = Db.Queryable<MesInvItemArn>()
|
// .Where(it => it.BillNo == itemBarcodeDetails.BillNo && it.Fstatus == true)
|
// .First();
|
|
// if (inventory == null)
|
// throw new Exception("此条码找不到对应收货单或未审核!");
|
|
// // var inventoryDetails = Db.Queryable<MesInvItemArnDetail>()
|
// // .Where(it => it.ParentGuid == inventory.Guid
|
// // && it.ItemId == itemBarcodeDetails.ItemId
|
// // && it.EbelnLine == itemBarcodeDetails.WorkLine
|
// // && it.Ebeln == itemBarcodeDetails.WorkNo)
|
// // .First();
|
|
// var inventoryDetails = Db.Queryable<MesInvItemArnDetail>()
|
// .Where(it => it.Guid == itemBarcodeDetails.AboutGuid)
|
// .First();
|
|
// var cgddDetails = Db.Queryable<MesRohInData>()
|
// .Where(it => it.EbelnK3id == inventoryDetails.LineK3id)
|
// .First();
|
|
// if (inventoryDetails == null)
|
// throw new Exception("此条码找不到对应收货单明细!");
|
|
// //获取到货检验明细
|
// var sqlParams = new List<SugarParameter> { new("@dhmxGuid", itemBarcodeDetails.AboutGuid) };
|
// var sql1 = @"SELECT *FROM v_dhmx WHERE dhmxGuid = @dhmxGuid ";
|
// var dhjymx = Db.Ado.SqlQuery<vDhmx>(sql1, sqlParams).First();
|
// //判定检验能否入库
|
// if (dhjymx.CanStore != 1)
|
// {
|
// throw new Exception($"该条码对应的收料单检验结果:【{dhjymx.InspectionResult}】,判定结果:【{dhjymx.JudgmentResult}】,处理意见:【{dhjymx.HandlingSuggestion}】,无法入库");
|
// }
|
|
// var depotCode = Db.Queryable<MesDepotSections>()
|
// .Where(it => it.DepotSectionCode == sectionCode)
|
// .Select(it => it.DepotGuid)
|
// .First();
|
|
// var depotCode2 = Db.Queryable<MesInvItemArn>()
|
// .Where(it => it.BillNo == itemBarcodeDetails.BillNo)
|
// .Select(it => it.DepotsId)
|
// .First();
|
|
// MesDepots mesDepost = null;
|
|
// var checkGuid = UtilityHelper.CheckGuid(depotCode);
|
// if (checkGuid && depotCode != null)
|
// {
|
// mesDepost = Db.Queryable<MesDepots>()
|
// .Where(s => s.DepotId.ToString() == depotCode).First();
|
|
// // if (depotCode != mesDepost.Guid)
|
// // throw new Exception("扫描库位与采购入库库位不一致!");
|
// }
|
// else
|
// {
|
// throw new Exception("库位编码 " + sectionCode + " 不存在,请确认!");
|
// }
|
|
|
// //num = Db.Queryable<MesInvItemInCDetails>()
|
// // .Where(it => it.ItemBarcode == itemBarcode)
|
// // .Count();
|
|
// //if (num > 0)
|
// // throw new Exception("此条码已扫码入库完成,请核对!");
|
|
// //num = Db.Queryable<MesInvItemStocks>()
|
// // .Where(it => it.ItemBarcode == itemBarcode)
|
// // .Count();
|
|
// //if (num > 0)
|
// // throw new Exception("此条码已扫码入库,请核对!");
|
|
// var wmsManager = new WmsBaseMangeer();
|
// // 新增入库校验(调用存储过程)
|
// var checkResult = wmsManager.pdaInvJY(
|
// db: Db,
|
// edtUserNo: entity.userName,
|
// barcode: entity.barcode,
|
// sectionCode: sectionCode,
|
// stockId: mesDepost.DepotId.ToString(),
|
// stockOrgId: mesDepost.FSubsidiary,
|
// billNo: "", // 根据实际单据号传值
|
// transactionNo: "101" // 事务类型与存储过程匹配
|
// );
|
|
// if (Convert.ToInt32(checkResult.result) < 1)
|
// throw new Exception($"入库校验失败:{checkResult.strMsg}");
|
|
|
|
// //num = Db.Queryable<MesInvItemArn>()
|
// // .Where(a => a.BillNo == itemBarcodeDetails.BillNo)
|
// // .InnerJoin<MesInvItemArnDetail>((a, b) =>
|
// // b.ParentGuid == a.Guid &&
|
// // b.ItemId == itemBarcodeDetails.ItemId && b.Ischeck == 1)
|
// // .Count();
|
|
// //num2 = Db.Queryable<MesInvItemArn>()
|
// // .Where(a => a.BillNo == itemBarcodeDetails.BillNo)
|
// // .InnerJoin<MesInvItemArnDetail>((a, b) => b.ParentGuid == a.Guid
|
// // && b.ItemId == itemBarcodeDetails.ItemId
|
// // && (b.CheckRes == "合格" || b.CheckStates == "特采直接使用"))
|
// // .Count();
|
|
// //switch (num)
|
// //{
|
// // case 0 when num2 == 0:
|
// // case > 0 when num2 == 0:
|
// // freeze = 1;
|
// // break;
|
// // case 0 when num2 > 0:
|
// // throw new Exception("入库失败,到货单据有问题!");
|
// //}
|
|
|
// // 判断货主类型
|
// var owner_type = wmsManager.GetOwnerType(cgddDetails.DemandOrg);
|
// // if (Db.Queryable<SysOrganization>().Any(x => x.Fid == cgddDetails.DemandOrg))
|
// // {
|
// // owner_type = "BD_OwnerOrg";
|
// // }
|
// // else
|
// // {
|
// // // 第二层判断:检查 MES_CUSTOMER
|
// // if (Db.Queryable<MesCustomer>().Any(x => x.Id == Convert.ToInt32(cgddDetails.DemandOrg)))
|
// // {
|
// // owner_type = "BD_Customer";
|
// // }
|
// // else
|
// // {
|
// // // 第三层判断:检查 MES_SUPPLIER
|
// // if (Db.Queryable<MesSupplier>().Any(x => x.Id == Convert.ToInt32(cgddDetails.DemandOrg)))
|
// // {
|
// // owner_type = "BD_Supplier";
|
// // }
|
// // else
|
// // {
|
|
// // // 第四层判断:再次检查 SYS_ORGANIZATION
|
// // if (Db.Queryable<SysOrganization>().Any(x => x.Fid == cgddDetails.ReceivingOrg))
|
// // {
|
// // owner_type = "BD_OwnerOrg";
|
// // }
|
// // else
|
// // {
|
// // throw new Exception("入库失败,到货单据对应的需求组织有问题!");
|
// // }
|
// // }
|
// // }
|
// //}
|
|
// var result = new ItemInBaseModel();
|
|
// UseTransaction(db =>
|
// {
|
// var existingRecord = db.Queryable<MesInvItemIns>()
|
// .Where(it => it.InsDate.Value.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")
|
// && it.TaskNo == itemBarcodeDetails.BillNo
|
// && it.Status == 0
|
// && it.TransctionNo == transactionNo
|
// && it.CreateBy == entity.userName
|
// && it.BillTypeId == billTypeId
|
// && it.DepotsId == mesDepost.DepotId)
|
// .Select(it => new
|
// {
|
// it.Guid,
|
// it.BillNo
|
// })
|
// .First();
|
|
// var cId = Guid.Empty;
|
// string cBillNo = null;
|
|
// if (existingRecord != null)
|
// {
|
// // If record exists, assign values
|
// cId = existingRecord.Guid;
|
// cBillNo = existingRecord.BillNo;
|
// }
|
// else
|
// {
|
// cId = Guid.NewGuid();
|
// cBillNo = BillNo.GetBillNo("CGRK(采购入库)");
|
|
// var suppNo = db.Queryable<MesSupplier>()
|
// .Where(s => s.Id.ToString() == inventory.SuppId).First();
|
|
// db.Insertable(new MesInvItemIns
|
// {
|
// Guid = cId,
|
// BillNo = cBillNo,
|
// BillTypeId = billTypeId,
|
// InsDate = DateTime.Now,
|
// DepotsId = mesDepost.DepotId,
|
// DepotsCode = mesDepost.DepotCode,
|
// TransctionNo = transactionNo,
|
// SuppId = suppNo.Id.ToString(),
|
// SuppNo = suppNo.SuppNo,
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// LastupdateBy = user,
|
// LastupdateDate = DateTime.Now,
|
// UrgentFlag = itemBarcodeDetails.UrgentFlag.Value
|
// ? "1"
|
// : "0",
|
// CbillNo = itemBarcodeDetails.BillNo,
|
// Fstatus = 0,
|
// Status = 0,
|
// ReceiveOrgId = inventory.ReceiveOrgId,
|
// InType = "采购入库",
|
// TaskNo = itemBarcodeDetails.BillNo
|
// //WorkNo = itemBarcodeDetails.WorkNo
|
// }).IgnoreColumns(true).ExecuteCommand();
|
// }
|
|
// cSyQty = itemBarcodeDetails.Quantity.Value;
|
|
// entity.id = cId.ToString();
|
// entity.PageIndex = 1;
|
// entity.Limit = 1;
|
|
// itemBarcodeDetails.Hbdy ??= 0;
|
// if (itemBarcodeDetails.Hbdy == 1)
|
// {
|
// var details = db.Queryable<MesInvItemArnDetail>()
|
// .Where(d =>
|
// d.CbillNo == itemBarcodeDetails.BillNo &&
|
// d.Quantity != d.OkRkqty &&
|
// d.ItemId == itemBarcodeDetails.ItemId)
|
// .ToList();
|
|
|
// foreach (var detail in details)
|
// {
|
// if (cSyQty == 0) break;
|
|
// var remainingQty = detail.Quantity - (detail.OkRkqty ?? 0);
|
// if (remainingQty <= cSyQty)
|
// {
|
// // Update detail
|
// db.Updateable<MesInvItemArnDetail>()
|
// .SetColumns(d => new MesInvItemArnDetail
|
// {
|
// OkRkqty = (int)d.Quantity,
|
// IsdepsIn = true
|
// })
|
// .Where(d => d.Guid == detail.Guid)
|
// .IgnoreColumns(true)
|
// .ExecuteCommand();
|
|
// // Check if already inserted
|
// var count = db.Queryable<MesInvItemInCItems>()
|
// .Where(it =>
|
// it.ItemInId == cId &&
|
// it.ItemId == detail.ItemId &&
|
// it.DepotId == depotCode2 &&
|
// it.EbelnK3id == detail.EbelnK3id &&
|
// it.LineK3id == detail.LineK3id)
|
// .Count();
|
|
// cSyQty -= remainingQty.Value;
|
|
// if (count == 0)
|
// // Insert new item into MES_INV_ITEM_IN_C_ITEMS
|
// db.Insertable(new MesInvItemInCItems
|
// {
|
// ItemInId = cId,
|
// Quantity = remainingQty,
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// ItemId = detail.ItemId,
|
// DepotCode = mesDepost.DepotCode,
|
// ItemSname = itemBarcodeDetails.ItemSname,
|
// Unit = itemBarcodeDetails.Unit,
|
// Ebeln = detail.Ebeln,
|
// BillNo = cBillNo,
|
// WorkNo = detail.WorkNo,
|
// CbillNo = detail.CbillNo,
|
// WorkLine = detail.WorkLine,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// Remark = itemBarcodeDetails.Memo,
|
// EbelnK3id = detail.EbelnK3id,
|
// LineK3id = detail.LineK3id,
|
// DepotId = depotCode2,
|
// itemDabid = itemBarcodeDetails.AboutGuid.ToString()
|
// }).IgnoreColumns(true).ExecuteCommand();
|
// else
|
// db.Updateable<MesInvItemInCItems>()
|
// .SetColumns(it =>
|
// it.Quantity == it.Quantity + remainingQty)
|
// .Where(it =>
|
// it.ItemInId == cId &&
|
// it.ItemId == detail.ItemId &&
|
// it.DepotId == depotCode2 &&
|
// it.EbelnK3id == detail.EbelnK3id &&
|
// it.LineK3id == detail.LineK3id)
|
// .IgnoreColumns(true)
|
// .ExecuteCommand();
|
|
// // Insert new detail into MES_INV_ITEM_IN_C_DETAILS
|
// db.Insertable(new MesInvItemInCDetails
|
// {
|
// ItemInId = cId,
|
// BillNo = cBillNo,
|
// ItemBarcode = itemBarcode,
|
// Quantity = remainingQty,
|
// BarcodeFlag = true,
|
// EpFlag = true,
|
// WorkType = 1,
|
// ItemNo = detail.ItemNo,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// DepotCode = mesDepost.DepotCode,
|
// DepotSectionCode = sectionCode,
|
// ItemSname = itemBarcodeDetails.ItemSname,
|
// Unit = itemBarcodeDetails.Unit,
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// LastupdateBy = user,
|
// LastupdateDate = DateTime.Now,
|
// Remark = itemBarcodeDetails.Memo,
|
// Ebeln = detail.WorkNo,
|
// WorkNo = detail.WorkNo,
|
// WorkLine = detail.WorkLine,
|
// CbillNo = itemBarcodeDetails.BillNo,
|
// UrgentFlag = detail.UrgentFlag,
|
// BoardStyle = detail.BoardStyle,
|
// TaskNo = detail.WorkNo,
|
// EbelnK3id = detail.EbelnK3id,
|
// LineK3id = detail.LineK3id,
|
// ItemId = detail.ItemId,
|
// ReceiveOrgId = inventory.ReceiveOrgId,
|
// LotNo = cgddDetails.BatchNumber
|
// }).IgnoreColumns(true).ExecuteCommand();
|
// }
|
// else
|
// {
|
// // Partially fulfill remaining quantity
|
// db.Updateable<MesInvItemArnDetail>()
|
// .SetColumns(d => new MesInvItemArnDetail
|
// {
|
// OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty)
|
// })
|
// .Where(d => d.Guid == detail.Guid)
|
// .IgnoreColumns(true)
|
// .ExecuteCommand();
|
|
// var count = db.Queryable<MesInvItemInCItems>()
|
// .Where(it =>
|
// it.ItemInId == cId &&
|
// it.ItemId == detail.ItemId &&
|
// it.DepotId == depotCode2 &&
|
// it.EbelnK3id == detail.EbelnK3id &&
|
// it.LineK3id == detail.LineK3id)
|
// .Count();
|
|
// if (count == 0)
|
// db.Insertable(new MesInvItemInCItems
|
// {
|
// ItemInId = cId,
|
// Quantity = cSyQty,
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// ItemNo = detail.ItemNo,
|
// DepotCode = mesDepost.DepotCode,
|
// ItemSname = itemBarcodeDetails.ItemSname,
|
// Unit = itemBarcodeDetails.Unit,
|
// Ebeln = detail.WorkNo,
|
// BillNo = cBillNo,
|
// WorkNo = detail.WorkNo,
|
// EbelnLineNo = detail.EbelnLine,
|
// CbillNo = detail.CbillNo,
|
// WorkLine = detail.WorkLine,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// Remark = itemBarcodeDetails.Memo,
|
// EbelnK3id = detail.EbelnK3id,
|
// LineK3id = detail.LineK3id,
|
// ItemId = detail.ItemId,
|
// DepotId = depotCode2
|
// }).IgnoreColumns(true).ExecuteCommand();
|
// else
|
// db.Updateable<MesInvItemInCItems>()
|
// .SetColumns(it =>
|
// it.Quantity == it.Quantity + cSyQty)
|
// .Where(it =>
|
// it.ItemInId == cId &&
|
// it.ItemId == detail.ItemId &&
|
// it.DepotId == depotCode2 &&
|
// it.EbelnK3id == detail.EbelnK3id &&
|
// it.LineK3id == detail.LineK3id)
|
// .IgnoreColumns(true)
|
// .ExecuteCommand();
|
|
// db.Insertable(new MesInvItemInCDetails
|
// {
|
// ItemInId = cId,
|
// BillNo = cBillNo,
|
// ItemBarcode = itemBarcode,
|
// Quantity = cSyQty,
|
// BarcodeFlag = true,
|
// EpFlag = true,
|
// WorkType = 1,
|
// ItemNo = detail.ItemNo,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// DepotCode = mesDepost.DepotCode,
|
// DepotSectionCode = sectionCode,
|
// ItemSname = itemBarcodeDetails.ItemSname,
|
// Unit = itemBarcodeDetails.Unit,
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// LastupdateBy = user,
|
// LastupdateDate = DateTime.Now,
|
// Remark = itemBarcodeDetails.Memo,
|
// Ebeln = detail.WorkNo,
|
// EbelnLineNo = detail.EbelnLine,
|
// WorkNo = detail.WorkNo,
|
// WorkLine = detail.WorkLine,
|
// CbillNo = itemBarcodeDetails.BillNo,
|
// UrgentFlag = detail.UrgentFlag,
|
// BoardStyle = detail.BoardStyle,
|
// TaskNo = detail.WorkNo,
|
// EbelnK3id = detail.EbelnK3id,
|
// LineK3id = detail.LineK3id,
|
// ItemId = detail.ItemId,
|
// ReceiveOrgId = inventory.ReceiveOrgId,
|
// LotNo = cgddDetails.BatchNumber
|
// }).IgnoreColumns(true).ExecuteCommand();
|
|
// cSyQty = 0; // Remaining quantity fulfilled
|
// }
|
// }
|
|
// db.Insertable(new MesInvBusiness2
|
// {
|
// Status = 1,
|
// BillTypeId = billTypeId,
|
// TransactionCode = transactionNo,
|
// BusinessType = 1,
|
// ItemBarcode = itemBarcode,
|
// ItemNo = itemBarcodeDetails.ItemNo,
|
// LotNo = cgddDetails.BatchNumber,
|
// EpFlag = true,
|
// Quantity = itemBarcodeDetails.Quantity,
|
// ToInvDepotsCode = mesDepost.DepotCode,
|
// ToInvDepotSectionsCode = sectionCode,
|
// Description = "采购入库",
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// LastupdateBy = user,
|
// LastupdateDate = DateTime.Now,
|
// TaskNo = itemBarcodeDetails.BillNo,
|
// BillNo = cBillNo,
|
// WorkNo = itemBarcodeDetails.WorkNo,
|
// WorkLine = itemBarcodeDetails.WorkLine,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// EbelnK3id = itemBarcodeDetails.EbelnK3id,
|
// LineK3id = itemBarcodeDetails.LineK3id,
|
// ItemId = itemBarcodeDetails.ItemId
|
// }).IgnoreColumns(true).ExecuteCommand();
|
|
// // Insert into mes_inv_item_stocks
|
// }
|
// else
|
// {
|
// var detailone = db.Queryable<MesInvItemArnDetail>()
|
// .Where(d =>
|
// d.Guid == itemBarcodeDetails.AboutGuid)
|
// .First();
|
|
// // 检查是否存在于 MES_INV_ITEM_IN_C_ITEMS 表
|
// var existingCount = db.Queryable<MesInvItemInCItems>()
|
// .Where(it =>
|
// it.ItemInId == cId &&
|
// it.ItemId == detailone.ItemId &&
|
// it.DepotId == depotCode2 &&
|
// it.itemDabid == itemBarcodeDetails.AboutGuid.ToString())
|
// .Count();
|
|
// if (existingCount == 0)
|
// // 不存在时插入新记录
|
// db.Insertable(new MesInvItemInCItems
|
// {
|
// ItemInId = cId,
|
// Quantity = itemBarcodeDetails.Quantity,
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// ItemNo = itemBarcodeDetails.ItemNo,
|
// DepotCode = mesDepost.DepotCode,
|
// ItemSname = itemBarcodeDetails.ItemSname,
|
// Unit = itemBarcodeDetails.Unit,
|
// Ebeln = itemBarcodeDetails.WorkNo,
|
// BillNo = cBillNo,
|
// WorkNo = itemBarcodeDetails.WorkNo,
|
// EbelnLineNo = itemBarcodeDetails.WorkLine,
|
// CbillNo = itemBarcodeDetails.BillNo,
|
// WorkLine = itemBarcodeDetails.WorkLine,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// Remark = itemBarcodeDetails.Memo,
|
// EbelnK3id = itemBarcodeDetails.EbelnK3id,
|
// LineK3id = itemBarcodeDetails.LineK3id,
|
// ItemId = itemBarcodeDetails.ItemId,
|
// DepotId = depotCode2,
|
// itemDabid = itemBarcodeDetails.AboutGuid.ToString()
|
// }).IgnoreColumns(true).ExecuteCommand();
|
// else
|
// // 存在时更新数量
|
// db.Updateable<MesInvItemInCItems>()
|
// .SetColumns(it => new MesInvItemInCItems
|
// {
|
// Quantity = SqlFunc.IsNull(it.Quantity, 0) + itemBarcodeDetails.Quantity // 确保 Quantity 不为 null
|
// })
|
// .Where(it =>
|
// it.ItemInId == cId &&
|
// it.ItemId == detailone.ItemId &&
|
// it.DepotId == depotCode2 &&
|
// it.itemDabid == itemBarcodeDetails.AboutGuid.ToString())
|
// //.IgnoreColumns(true) // 保留 IgnoreColumns
|
// .ExecuteCommand();
|
|
// // 插入 mes_inv_item_in_c_details 表
|
// db.Insertable(new MesInvItemInCDetails
|
// {
|
// ItemInId = cId,
|
// BillNo = cBillNo,
|
// ItemBarcode = itemBarcode,
|
// Quantity = itemBarcodeDetails.Quantity,
|
// BarcodeFlag = true,
|
// EpFlag = true,
|
// WorkType = 1,
|
// ItemNo = itemBarcodeDetails.ItemNo,
|
// LotNo = cgddDetails.BatchNumber,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// DepotCode = mesDepost.DepotCode,
|
// DepotSectionCode = sectionCode,
|
// ItemSname = itemBarcodeDetails.ItemSname,
|
// Unit = itemBarcodeDetails.Unit,
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// LastupdateBy = user,
|
// LastupdateDate = DateTime.Now,
|
// Remark = itemBarcodeDetails.Memo,
|
// Ebeln = itemBarcodeDetails.Mblnr,
|
// EbelnLineNo = itemBarcodeDetails.Zeile,
|
// WorkNo = itemBarcodeDetails.WorkNo,
|
// WorkLine = itemBarcodeDetails.WorkLine,
|
// CbillNo = itemBarcodeDetails.BillNo,
|
// UrgentFlag = itemBarcodeDetails.UrgentFlag,
|
// BoardStyle = itemBarcodeDetails.BoardStyle,
|
// TaskNo = itemBarcodeDetails.TaskNo,
|
// EbelnK3id = itemBarcodeDetails.EbelnK3id,
|
// LineK3id = itemBarcodeDetails.LineK3id,
|
// ItemId = itemBarcodeDetails.ItemId,
|
// Ischeck = true,
|
// CheckDate = inventoryDetails.CheckDate,
|
// CheckRes = inventoryDetails.CheckRes,
|
// CheckStates = inventoryDetails.CheckStates,
|
// ReceiveOrgId = inventory.ReceiveOrgId,
|
// DepotId = Convert.ToInt64(depotCode2)
|
// }).IgnoreColumns(true).ExecuteCommand();
|
|
// // 插入 mes_inv_business2 表
|
// db.Insertable(new MesInvBusiness2
|
// {
|
// Status = 1,
|
// BillTypeId = billTypeId,
|
// TransactionCode = transactionNo,
|
// BusinessType = 1,
|
// ItemBarcode = itemBarcode,
|
// ItemNo = itemBarcodeDetails.ItemNo,
|
// LotNo = itemBarcodeDetails.LotNo,
|
// EpFlag = true,
|
// Quantity = itemBarcodeDetails.Quantity,
|
// FromInvDepotsCode = null,
|
// FromInvDepotSectionsCode = null,
|
// ToInvDepotsCode = mesDepost.DepotCode,
|
// ToInvDepotSectionsCode = sectionCode,
|
// Description = "采购入库",
|
// CreateBy = user,
|
// CreateDate = DateTime.Now,
|
// LastupdateBy = user,
|
// LastupdateDate = DateTime.Now,
|
// TaskNo = itemBarcodeDetails.TaskNo,
|
// BillNo = cBillNo,
|
// WorkNo = itemBarcodeDetails.WorkNo,
|
// WorkLine = itemBarcodeDetails.WorkLine,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// EbelnK3id = itemBarcodeDetails.EbelnK3id,
|
// LineK3id = itemBarcodeDetails.LineK3id,
|
// ItemId = itemBarcodeDetails.ItemId
|
// }).IgnoreColumns(true).ExecuteCommand();
|
|
// // 插入 mes_inv_item_stocks 表
|
// }
|
|
|
|
// db.Insertable(new MesInvItemStocks
|
// {
|
// TaskNo = itemBarcodeDetails.TaskNo,
|
// ItemBarcode = itemBarcode,
|
// ItemNo = cgddDetails.BatchNumber,
|
// LotNo = itemBarcodeDetails.LotNo,
|
// Quantity = itemBarcodeDetails.Quantity,
|
// DepotsCode = mesDepost.DepotCode,
|
// DepotSectionsCode = sectionCode,
|
// CheckDate = inventoryDetails.CheckDate,
|
// IndepDate = DateTime.Now,
|
// IqcStatus = inventoryDetails.CheckStates,
|
// BoardStyle = itemBarcodeDetails.BoardStyle,
|
// WorkNo = itemBarcodeDetails.WorkNo,
|
// WorkLine = itemBarcodeDetails.WorkLine,
|
// SuppId = itemBarcodeDetails.SuppId,
|
// SuppNo = itemBarcodeDetails.SuppNo,
|
// EbelnK3id = itemBarcodeDetails.EbelnK3id,
|
// LineK3id = itemBarcodeDetails.LineK3id,
|
// ItemId = itemBarcodeDetails.ItemId,
|
// BillNo = itemBarcodeDetails.BillNo,
|
// DepotId = Convert.ToInt32(depotCode2),
|
// OwnerId = cgddDetails.DemandOrg,
|
// OwnerType = owner_type,
|
// StockOrgId = mesDepost.FSubsidiary,
|
// IndepUserCode = user
|
// }).IgnoreColumns(true).ExecuteCommand();
|
|
// itemBarcodeDetails.Hbdy ??= 0;
|
|
// if (itemBarcodeDetails.Hbdy != 1)
|
// {
|
// //更新收料单明细
|
// db.Updateable<MesInvItemArnDetail>()
|
// .SetColumns(d => new MesInvItemArnDetail
|
// {
|
// OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty)
|
// })
|
// .Where(d => d.Guid == itemBarcodeDetails.AboutGuid)
|
// .ExecuteCommand();
|
|
// var first = db
|
// .Queryable<MesInvItemArnDetail>()
|
// .Where(b =>
|
// b.Guid == itemBarcodeDetails.AboutGuid)
|
// .Select(b => new
|
// {
|
// TotalQuantity =
|
// SqlFunc.AggregateSum(b.Quantity),
|
// TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty)
|
// })
|
// .First();
|
|
// var TotalQuantity = first.TotalQuantity ?? 0;
|
// var TotalOkRkQty = first.TotalOkRkQty ?? 0;
|
|
// if (TotalQuantity == TotalOkRkQty)
|
// db.Updateable<MesInvItemArnDetail>()
|
// .SetColumns(s => s.IsdepsIn == true)
|
// .Where(s => s.Guid == itemBarcodeDetails.AboutGuid)
|
// .ExecuteCommand();
|
|
|
// var totalSummary = db.Queryable<MesInvItemArnDetail>()
|
// .InnerJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid)
|
// .Where((b, a) =>
|
// a.BillNo == inventory.BillNo && b.ReturnFlag == 0)
|
// .Select((b, a) => new
|
// {
|
// TotalQuantity = SqlFunc.AggregateSum(b.Quantity),
|
// TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty)
|
// })
|
// .First();
|
|
// if ((totalSummary.TotalQuantity ?? 0) ==
|
// (totalSummary.TotalOkRkQty ?? 0))
|
// db.Updateable<MesInvItemArn>()
|
// .SetColumns(it => it.Status == 1)
|
// .Where(it => it.BillNo == itemBarcodeDetails.BillNo)
|
// .ExecuteCommand();
|
|
// var totalCDetailsQuantity = db.Queryable<MesInvItemInCDetails>()
|
// .Where(it => it.ItemId == itemBarcodeDetails.ItemId &&
|
// it.WorkNo == itemBarcodeDetails.WorkNo &&
|
// it.ItemInId == cId)
|
// .Sum(it => it.Quantity);
|
|
// var detailSummary = db.Queryable<MesInvItemArnDetail>()
|
// .Where(it => it.Guid == inventoryDetails.Guid)
|
// .Select(it => new
|
// {
|
// TotalComeQty = SqlFunc.AggregateSum(it.Quantity),
|
// TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty)
|
// })
|
// .First();
|
|
// var comeQty = detailSummary.TotalComeQty ?? 0;
|
// var invQty = detailSummary.TotalInvQty ?? 0;
|
// var diffQty = comeQty - invQty;
|
|
// if (detailSummary == null)
|
// throw new Exception("此条码找不到对应收货单明细!");
|
|
// var mesItems = db.Queryable<MesItems>()
|
// .Where(s => s.Id == itemBarcodeDetails.ItemId).First();
|
|
// //result.Message =
|
// // $"条码数量 {itemBarcodeDetails.Quantity},采购订单 {itemBarcodeDetails.WorkNo} 项次 {itemBarcodeDetails.WorkLine} 物料 {mesItems.ItemNo} 本次入库总数:{totalCDetailsQuantity} 总到 {comeQty} 已入 {invQty} 欠 {diffQty}";
|
// result.Message = $"物料{mesItems.ItemNo}入库成功数量{itemBarcodeDetails.Quantity.ToString()}";
|
|
// result.itemDetail = mesItems;
|
|
// result.ItemInDetails = db.Queryable<MesInvItemInCItems, MesItems>(
|
// (a, b) => new JoinQueryInfos(
|
// JoinType.Left,
|
// a.ItemId == b.ItemId)
|
// )
|
// .Where(a => a.ItemInId == cId && a.ItemId == itemBarcodeDetails.ItemId)
|
// .Select<dynamic>((a, b) => new
|
// {
|
// ItemNo = b.ItemNo,
|
// ItemName = b.ItemName,
|
// ItemModel = b.ItemModel,
|
// FQty = a.Quantity, // 申请数量
|
// FMaterialId = b.ItemId,
|
// Id = b.Guid.ToString()
|
// })
|
// .ToList();
|
|
// result.ItemBarCDetails = db.Queryable<MesInvItemInCDetails, MesItems>(
|
// (a, b) => new JoinQueryInfos(
|
// JoinType.Left,
|
// a.ItemId == b.ItemId)
|
// )
|
// .Where(a => a.ItemInId == cId && a.ItemId == itemBarcodeDetails.ItemId)
|
// .Select<dynamic>((a, b) => new
|
// {
|
// ItemNo = b.ItemNo,
|
// ItemName = b.ItemName,
|
// ItemModel = b.ItemModel,
|
// FQty = a.Quantity, // 申请数量
|
// FMaterialId = b.ItemId,
|
// Id = a.Guid.ToString(),
|
// kw = a.DepotSectionCode,
|
// barcode = a.ItemBarcode
|
// })
|
// .ToList();
|
|
|
// //result.ItemNo = mesItems.ItemNo;
|
// result.SumQuantity = Convert.ToDecimal(invQty);
|
|
// return 1;
|
// }
|
// else
|
// {
|
// // Step 1: Check if bill needs to be closed (status update)
|
// var totalSummary = db.Queryable<MesInvItemArnDetail>()
|
// .LeftJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid)
|
// .Where((b, a) =>
|
// a.BillNo == inventory.BillNo && b.ReturnFlag == 0)
|
// .Select((b, a) => new
|
// {
|
// TotalQuantity = SqlFunc.AggregateSum(b.Quantity),
|
// TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty)
|
// })
|
// .First();
|
|
// if ((totalSummary.TotalQuantity ?? 0) ==
|
// (totalSummary.TotalOkRkQty ?? 0))
|
// db.Updateable<MesInvItemArn>()
|
// .SetColumns(it => it.Status == 1)
|
// .Where(it => it.BillNo == itemBarcodeDetails.BillNo)
|
// .ExecuteCommand();
|
|
// // Step 2: Calculate total sum from `mes_inv_item_in_c_details`
|
// var totalCDetailsQuantity = db.Queryable<MesInvItemInCDetails>()
|
// .Where(it => it.Guid == itemBarcodeDetails.AboutGuid)
|
// .Sum(it => it.Quantity);
|
|
// // Step 3: Calculate comeQty and invQty from `mes_inv_item_arn_detail`
|
// var detailSummary = db.Queryable<MesInvItemArnDetail>()
|
// .Where(it => it.Guid == itemBarcodeDetails.AboutGuid)
|
// .Select(it => new
|
// {
|
// TotalComeQty = SqlFunc.AggregateSum(it.Quantity),
|
// TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty)
|
// })
|
// .First();
|
|
// if (detailSummary == null)
|
// throw new Exception("此条码找不到对应收货单明细!");
|
|
// var comeQty = detailSummary.TotalComeQty ?? 0;
|
// var invQty = detailSummary.TotalInvQty ?? 0;
|
// var diffQty = comeQty - invQty;
|
|
// var mesItems = db.Queryable<MesItems>()
|
// .Where(s => s.Id == itemBarcodeDetails.ItemId).First();
|
|
// // Step 5: Combine final result
|
// result.Message =
|
// $" 条码数量:{itemBarcodeDetails.Quantity},物料 {mesItems.ItemNo} 本次入库总数:{totalCDetailsQuantity} 总到 {comeQty} 已入 {invQty} 欠 {diffQty}";
|
|
|
// //result.ItemNo = mesItems.ItemNo;
|
// result.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity);
|
// }
|
|
// var mesInvItemInCDetails =
|
// base.GetSingle(it => it.ItemBarcode == entity.barcode);
|
|
// if (mesInvItemInCDetails == null)
|
// throw new Exception("物料入库条码明细不存在"); // 抛出异常以供前台处理
|
|
// // 创建 插入日志
|
// var logService = new LogService();
|
// var LogMsg = "【PDA】采购入库。条码【" + entity.barcode + "】 入库单号【" + cBillNo + "】";
|
// logService.CreateLog(db, entity.userName, inventory.Guid.ToString(), "MES_INV_ITEM_ARN", LogMsg, inventory.BillNo);
|
|
// return 1;
|
// });
|
|
// var purchaseInventory = getPurchaseInventory(entity);
|
|
|
// //result.ItemInDetails = purchaseInventory.ItemInDetails;
|
// //result.InvItemInCDetails = purchaseInventory.InvItemInCDetails;
|
|
// return result;
|
//}
|
|
public ItemInBaseModel getPurchaseInventory(WarehouseQuery query)
|
{
|
return new ItemInBaseModel
|
{
|
//ItemIns = GetInvItemInsList(query).Items[0],
|
//ItemInDetails = GetItemInDetails(query.id),
|
//InvItemInCDetails = GetInvItemInCDetails(query.id)
|
};
|
}
|
|
public (List<MesInvItemIns> Items, int TotalCount) GetInvItemInsList(
|
WarehouseQuery query)
|
{
|
var parsedGuid = Guid.Empty;
|
if (!string.IsNullOrEmpty(query.id))
|
{
|
var isValid = Guid.TryParse(query.id, out parsedGuid);
|
if (!isValid)
|
throw new ApplicationException("GUID转换错误");
|
}
|
|
var totalCount = 0;
|
var result = Db.Queryable<MesInvItemIns, MesDepots, MesSupplier>(
|
(a, b, c) =>
|
new JoinQueryInfos(JoinType.Left,
|
a.DepotsId == b.DepotId,
|
JoinType.Left, a.SuppId == c.Id.ToString()))
|
.WhereIF(UtilityHelper.CheckGuid(parsedGuid),
|
(a, b, c) => a.Guid == parsedGuid)
|
.Select((a, b, c) => new MesInvItemIns
|
{
|
Guid = a.Guid,
|
SuppNo = a.SuppNo,
|
InsDate = a.InsDate,
|
PaperBillNo = a.PaperBillNo,
|
Remark = a.Remark,
|
DepotsCode = a.DepotsCode,
|
CbillNo = a.CbillNo,
|
Status = a.Status,
|
BillNo = a.BillNo,
|
CreateDate = a.CreateDate,
|
CreateBy = a.CreateBy,
|
DepotName = b.DepotName,
|
SuppName = c.SuppName
|
}).ToPageList(query.PageIndex, query.Limit, ref totalCount);
|
return (result, totalCount);
|
}
|
|
public List<MesInvItemInCItems> GetItemInDetails(string? pid)
|
{
|
//string转guid
|
var parsedGuid = Guid.Empty;
|
if (string.IsNullOrEmpty(pid)) return [];
|
|
var isValid = Guid.TryParse(pid, out parsedGuid);
|
if (!isValid)
|
throw new ApplicationException("GUID转换错误");
|
|
var result = Db.Queryable<MesInvItemInCDetails, MesItems, MesUnit>(
|
(g, c, d) => new JoinQueryInfos(
|
JoinType.Left, g.ItemId == c.Id,
|
JoinType.Inner, d.Id == Convert.ToDecimal(g.Unit)
|
)
|
).WhereIF(UtilityHelper.CheckGuid(parsedGuid),
|
(g, c, d) => g.ItemInId == parsedGuid)
|
.Select((g, c, d) => new MesInvItemInCItems
|
{
|
Guid = g.Guid,
|
WorkNo = g.WorkNo,
|
ItemNo = c.ItemNo,
|
ItemSname = g.ItemSname,
|
Quantity = g.Quantity,
|
Unit = d.Fname
|
})
|
.ToList();
|
|
return result;
|
}
|
|
public List<MesInvItemInCDetails> GetInvItemInCDetails(string? pid)
|
{
|
//string转guid
|
var parsedGuid = Guid.Empty;
|
if (string.IsNullOrEmpty(pid)) return [];
|
|
var isValid = Guid.TryParse(pid, out parsedGuid);
|
if (!isValid)
|
throw new ApplicationException("GUID转换错误");
|
|
var result = Db.Queryable<MesInvItemInCDetails, MesItems, MesUnit>(
|
(g, c, d) => new JoinQueryInfos(
|
JoinType.Left,
|
g.ItemId == c.Id, JoinType.Inner,
|
d.Id.ToString() == c.Fpurchaseunitid
|
)
|
).WhereIF(UtilityHelper.CheckGuid(parsedGuid),
|
(g, c, d) => g.ItemInId == parsedGuid)
|
.Select((g, c, d) => new MesInvItemInCDetails
|
{
|
Guid = g.Guid,
|
ItemName = c.ItemName,
|
ItemModel = c.ItemModel,
|
ItemUnit = d.Fname,
|
DepotSectionCode = g.DepotSectionCode,
|
CbillNo = g.CbillNo,
|
ItemBarcode = g.ItemBarcode,
|
UrgentFlag = g.UrgentFlag,
|
ItemNo = c.ItemNo,
|
WorkNo = g.WorkNo,
|
Quantity = g.Quantity
|
})
|
.ToList();
|
|
return result;
|
}
|
|
|
public MessageCenter MesToErpParam(WarehouseQuery query)
|
{
|
var erpParameters = "";
|
var title = "";
|
var tableName = "MES_INV_ITEM_INS_" + query.Type;
|
if ("A".Equals(query.Type))
|
{
|
erpParameters = GetErpParameters(query.billNo);
|
title = "采购入库单" + query.billNo + "审核";
|
}
|
else if ("B".Equals(query.Type))
|
{
|
erpParameters = GetDeApprovePam(query.id);
|
title = "采购入库单" + query.billNo + "反审核";
|
}
|
|
var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl;
|
|
var newGuid = Guid.NewGuid();
|
var message = new MessageCenter
|
{
|
Guid = newGuid,
|
//Pid = newGuid,
|
TableName = tableName,
|
Url = ErpUrl,
|
Status = 1,
|
CreateBy = query.userName,
|
Route = query.billNo,
|
Title = title,
|
PageName = "Warehouse/PurchaseInventory/Add?id=" + query.id +
|
"&billNo=" + query.billNo,
|
CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
Method = "POST",
|
Seq = 1,
|
Data = erpParameters,
|
IsMessage = 0,
|
ContentType = "application/x-www-form-urlencoded"
|
};
|
return message;
|
}
|
|
public MessageCenter SaveMessageCenter(WarehouseQuery query)
|
{
|
var message = MesToErpParam(query);
|
|
var executeReturnIdentity =
|
Db.Insertable(message).ExecuteCommand();
|
if (executeReturnIdentity > 0)
|
{
|
message.Pid = message.Guid;
|
return message;
|
}
|
|
throw new Exception("获取数据失败");
|
}
|
|
//audit
|
public bool audit(WarehouseQuery entity)
|
{
|
entity.date = DateTime.Now;
|
entity.status = 1;
|
return Update(entity);
|
}
|
|
public bool deApprove(WarehouseQuery entity)
|
{
|
entity.date = null;
|
entity.status = 0;
|
return Update(entity);
|
}
|
|
private bool Update(WarehouseQuery entity)
|
{
|
return Db.Updateable<MesInvItemIns>()
|
.SetColumns(x => x.Status == entity.status)
|
.SetColumns(x => x.InsDate == entity.date)
|
.Where(x => x.BillNo == entity.billNo)
|
.IgnoreColumns(true).ExecuteCommand() > 0;
|
}
|
|
private string GetErpParameters(string? billNo)
|
{
|
var invItemIns = Db.Queryable<MesInvItemIns>()
|
.Single(x => x.BillNo == billNo);
|
|
if (invItemIns == null) throw new Exception("入库单号不存在");
|
|
if (invItemIns.Status == 1) throw new Exception("入库单已审核,不能重复推送");
|
|
var materials = Db.Queryable<MesInvItemInCItems, MesItems, MesUnit,
|
MesInvItemArnDetail>(
|
(g, c, d, a) => new JoinQueryInfos(
|
JoinType.Left,
|
g.ItemId == c.Id, JoinType.Inner,
|
d.Id.ToString() == c.Fpurchaseunitid,
|
JoinType.Inner, a.Ebeln == g.WorkNo && g.CbillNo == a.CbillNo
|
)
|
).Where((g, c, d, a) => g.BillNo == billNo).Select<Material>(
|
(g, c, d, a) => new Material
|
{
|
FMaterialId = c.ItemNo,
|
FRealQty = g.Quantity.ToString(),
|
FStockId = g.DepotCode,
|
FLot = a.CbillNo,
|
FUnitID = d.Fnumber,
|
FsrcEntryId = a.Guid.ToString(),
|
FMesEntryid = g.Guid.ToString()
|
}).ToList();
|
|
|
if (materials == null || materials.Count == 0)
|
throw new Exception("没有找到相关数据"); // 抛出异常以供前台处理
|
// 构造 JSON
|
|
var jsonEntries = materials.Select(d => new
|
{
|
d.FMaterialId,
|
d.FRealQty,
|
d.FStockId,
|
d.FLot,
|
FUintId = d.FUnitID,
|
FSRCENTRYID = d.FsrcEntryId,
|
F_MES_ENTRYID = d.FMesEntryid
|
}).ToList();
|
|
var fdate = DateTime.Now.ToString("yyyy-MM-dd");
|
|
var jsonString = JsonConvert.SerializeObject(jsonEntries);
|
var encodedUrl = "taskname=CGRK&mesid=" + invItemIns.Guid +
|
"&optype=create&datajson={\"F_MES_ID\":\"" +
|
invItemIns.Guid + "\",\"FDate\":\"" + fdate +
|
"\",\"cgrkentry\":" + jsonString + "}";
|
|
return encodedUrl;
|
}
|
|
|
private string GetDeApprovePam(string? id)
|
{
|
var encodedUrl = "taskname=CGRK&mesid=" + id +
|
"&optype=delete&datajson={}";
|
|
return encodedUrl;
|
}
|
}
|