using Rhea.Common;
using Tiger.IBusiness;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Tiger.Model;
using System.Collections;
namespace Tiger.Business.WMS.Transaction
{
///
/// 客供料入库清点事务
///
public class CustSupplyCheckingNew : WMSTransactionBase, ICustSupplyCheckingNew
{
///
/// 事务初始化函数
///
///
///
///
///
public ICustSupplyCheckingNew Init(string id, string userCode, string apiHost, string orgCode)
{
TransID = id;
UserCode = userCode;
ApiHost = apiHost;
OrgCode = orgCode;
Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
return this;
}
#region Propertys & Variables
public string UserCode { get; set; }
public static long UserId { get; set; }
public string VenderCode { get; set; }
public string LotNo { get; set; }
public string SecondVenderCode { get; set; }
public string WarehouseCode { get; set; }
public string WarehouseName { get; set; }
public string OrgCode { get; set; }
public string CustomsNo { get; set; }
public List suppliers { get; set; }
public bool T100Success { get; set; } = false;
#endregion Propertys & Variables
#region Functions
///
/// 扫描物料并复核,如果物料已经完成移库则货架上亮灯提醒储位
///
public async Task ScanItem(CustSupplyCheckingInput input)
{
var action = new ApiAction();
try
{
//if (string.IsNullOrEmpty(input.WarehouseCode))
//{
// action.IsSuccessed = false;
// action.Message = $"库位不能为空";
// return action;
//}
string[] _strVenderCodes = input.SecondSuppCode.Split(',');
SecondVenderCode = _strVenderCodes[0];
LotNo = input.LotNo;
if (string.IsNullOrEmpty(VenderCode)) { VenderCode = _strVenderCodes[1]; }
if (string.IsNullOrEmpty(input.SN))
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.SnEmptyFailure", input.SN);
return action;
}
#region 报关单号判断
if (input.AuthOption.CurOrg == "YTXC" && string.IsNullOrWhiteSpace(CustomsNo))
{
if (string.IsNullOrWhiteSpace(input.SN))
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L($"盐田据点请扫描报关单号二维码!");
return action;
}
var customsNo = input.SN.Replace(",", ",").Trim();
if (customsNo.Split(",").Length != 2)
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L($"报关单号格式错误,请确认格式是否为【报关单号,核算清单号】!");
return action;
}
CustomsNo = input.SN;
action.Data = new IncomingMatStorage
{
sn = CustomsNo,
IsCustomsNo = true
};
action.IsSuccessed = true;
action.LocaleMsg = Biz.L($"报关单号二维码扫描成功");
return action;
}
#endregion 报关单号判断
//判断是否扫描的仓库,并查询是否存在
var query = await Biz.Db.Queryable().Where(t => t.WH_CODE == input.SN.Trim()).FirstAsync();
if (query != null)
{
//if (!string.IsNullOrEmpty(WarehouseCode))
//{
// action.IsSuccessed = false;
// action.Data = query;
// action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.WhExist", input.SN);
// return action;
//}
//else
{
WarehouseCode = query.WH_CODE;
WarehouseName = query.WH_NAME;
action.Data = query;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.GetWhSuccess", WarehouseCode);
return action;
}
}
if (string.IsNullOrEmpty(WarehouseCode))
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.NotExist", input.SN);
return action;
}
input.AuthOption.OrgCode = input.AuthOption.OrgCode.IsNullOrEmpty() ? input.AuthOption.CurOrg : input.AuthOption.OrgCode;
Result result = WMS_ITEM_Biz.WmsItem.GetK(input.SN, input.AuthOption, false);
if (result.Flag != Result.Flags.Success)
{
action.IsSuccessed = false;
action.LocaleMsg = result.LocaleMsg;
return action;
}
var curBarcode = result.Data;
if (!curBarcode.IsQRCode)
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.NotQrCode", curBarcode.Barcode.MetaSn);
return action;
}
//判断条码是否为最少包装
if (!new[] { Barcode.Types.Small, Barcode.Types.Other }.Contains(curBarcode.Barcode.Type))
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.TypeError", curBarcode.SN);
return action;
}
if (curBarcode.Items.Any())
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.ExistItem", curBarcode.ItemInfo?.ITEM_CODE);
return action;
}
if (string.IsNullOrEmpty(curBarcode.ItemInfo?.ITEM_CODE))
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.NotFound", curBarcode.ItemInfo?.ITEM_CODE);
return action;
}
// 其它入库清点不能扫入拆包后带-1的标签
if (curBarcode.isNormalStatus && curBarcode.Status == WMS_ITEM.STATUSs.WaitIn)
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.NotAllowIn", curBarcode.ItemInfo?.ITEM_CODE);
return action;
}
//物料验证
if (curBarcode.ItemInfo.IsNullOrEmpty() || curBarcode.ItemInfo.IS_ACTIVE == "N")
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.ProdMReq.ScanItem.ItemCodeNotExistsOrNotActive", curBarcode.ItemInfo.ITEM_CODE.IsNullOrEmpty(curBarcode.Barcode.ItemCode));
return action;
}
OrgCode = input.AuthOption.CurOrg;
//string[] _strVenderCodes = input.SecondSuppCode.Split(',');
//SecondVenderCode = _strVenderCodes[0];
//LotNo = input.LotNo;
//if (string.IsNullOrEmpty(VenderCode)) { VenderCode = _strVenderCodes[1]; }
//暂时不判断
//if (_strVenderCodes[1] != VenderCode)
//{
// action.IsSuccessed = false;
// action.Message = $"二级供应商代码不符!请重新选择二级供应商!";
// return action;
//}
var scanResult = new BIZ_ERP_OTH_IN_SN
{
ID = Guid.NewGuid().ToString(),
BUSINESSCODE = UserCode,
WAREHOUSECODE = WarehouseCode,
SN = curBarcode.SN,
ITEM_CODE = curBarcode.ItemInfo.ITEM_CODE,
QTY = curBarcode.Barcode.Qty ?? 0,
DATECODE = curBarcode.Barcode.ProdDate ?? DateTime.MinValue,
LOTNO = LotNo, //item.Barcode.LotNo,
STATUS = WMS_ITEM.STATUSs.Counted.GetValue(),
META_SN = input.SN,
AUTH_ORG = input.AuthOption.CurOrg
};
var snExt = new BIZ_ERP_OTH_IN_SNExt()
{
BUSINESSCODE = scanResult.BUSINESSCODE,
WAREHOUSECODE = scanResult.WAREHOUSECODE,
SN = scanResult.SN,
ITEM_CODE = scanResult.ITEM_CODE,
QTY = scanResult.QTY,
DATECODE = scanResult.DATECODE,
DATECODESTR = scanResult.DATECODESTR,
LOTNO = scanResult.LOTNO,
STATUS = scanResult.STATUS,
WH_CODE = scanResult.WAREHOUSECODE,
WH_NAME = WarehouseName,
MName = curBarcode.ItemInfo.ITEM_NAME,
MDesc = curBarcode.ItemInfo.SPEC,
MUom = curBarcode.ItemInfo.UNIT
};
//验证条码是否已做过清点
var nLogs = Biz.Db.Queryable().Where(t => t.SN.ToUpper() == curBarcode.SN.ToUpper()).First();
if (nLogs != null)
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.BarcodeCounted", curBarcode.SN);
return action;
}
//保存到数据库
var db = Business.Biz.Db;
var model = new BIZ_ERP_CUSTOMS()
{
AUTH_ORG = input.AuthOption.CurOrg,
CREATE_USER = UserCode,
OrderNo = UserCode,
Barcodes = curBarcode.SN,
CustomsNo = CustomsNo.Replace(",", ",").Trim().Split(',')[0],
AccountingNo = CustomsNo.Replace(",", ",").Trim().Split(',')[1],
CountsType = BIZ_ERP_CUSTOMS.CountsEnum.Incoming
};
var dbTran = db.UseTran(() =>
{
db.Insertable(scanResult, UserCode).ExecuteCommand();
//db.Insertable(wi, UserCode).ExecuteCommand();
//db.Insertable(his, UserCode).ExecuteCommand();
if (model != null)
{
db.Insertable(model).ExecuteCommand();
}
});
if (!dbTran.IsSuccess)
{
Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
this.Close(!dbTran.IsSuccess);
throw dbTran.ErrorException;
}
action.Data = snExt;
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.CountSuccess", input.SN);
}
catch (Exception ex)
{
//取消当前操作
action.CatchExceptionWithLog(ex, $"扫描物料[{input.SN}]复核异常");
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.ScanException", input.SN);
}
return action;
}
///
/// 生成客供物料入库单据
///
///
public async Task SubmitInvBill()
{
var action = new ApiAction();
bool isIQCOk = true;
try
{
//获取当前用户所有已清点、未制单的条码数据
var nScannedBarcodes = await Biz.Db.Queryable((t, m) =>
new JoinQueryInfos(
JoinType.Left, t.ITEM_CODE == m.ITEM_CODE
))
.Where((t, m) => t.WAREHOUSECODE.ToUpper() == WarehouseCode.ToUpper()
&& t.STATUS == WMS_ITEM.STATUSs.Counted.GetValue()
&& t.BUSINESSCODE == UserCode
&& t.AUTH_ORG == OrgCode)
.Select((t, m) => new BIZ_ERP_OTH_IN_SNExt
{
ID = t.ID,
SN = t.SN,
ITEM_CODE = t.ITEM_CODE,
QTY = t.QTY,
META_SN = t.META_SN,
BUSINESSCODE = t.BUSINESSCODE,
BUSINESSLINE = t.BUSINESSLINE,
UPDATE_TIME = t.UPDATE_TIME,
UPDATE_USER = t.UPDATE_USER,
CREATE_TIME = t.CREATE_TIME,
CREATE_USER = t.CREATE_USER,
DATECODE = t.DATECODE,
DATECODESTR = t.DATECODESTR,
LOTNO = t.LOTNO,
STATUS = t.STATUS,
WAREHOUSECODE = t.WAREHOUSECODE,
MUom = m.UNIT,
MName = m.ITEM_NAME,
MDesc = m.SPEC,
})
.ToListAsync();
if (!nScannedBarcodes.Any())
{
action.IsSuccessed = false;
action.Message = $"没有可以提交的清点数据";
action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.NotDataToSubmit");
return action;
}
// 查询条码清点表所有仓库代码
//var nWarehouseCodes = nScannedBarcodes.Select(x => x.WarehouseCode).Distinct().ToList();
//新建其他入库单据头 OtherInstockHeader
Result ruleResult = Cache.CodeRule["CI001"].Generate("CI"); //iWMS.GetBillNoByType("CI");
if (!ruleResult.IsSuccessed)
{
throw new Exception(ruleResult.ExceptionMsg.Message);
}
var billcode = ruleResult.Data.ToString();
var nBillHeader = new BIZ_ERP_OTH_IN
{
BILLCODE = billcode,
BILLDATE = DateTime.Now.Date,
WAREHOUSECODE = WarehouseCode,
STATUS = BIZ_ERP_OTH_IN.STATUSs.WORKING.GetValue(),
REMARK = LotNo,
AUTH_ORG = OrgCode
};
List Items = new List();
List ItemPkgs = new List();
List ItemHistorys = new List();
foreach (var wi in nScannedBarcodes)
{
Barcode barcode = new Barcode(wi.META_SN);
WMS_ITEM wmsItem = new WMS_ITEM
{
SN = wi.SN,
ITEM_CODE = wi.ITEM_CODE,
QTY = wi.QTY,
PROD_DATE = barcode.ProdDate ?? DateTime.MinValue,
SUPP_CODE = VenderCode,
LOTNO = LotNo,
ERP_WH = WarehouseCode,
STATUS = WMS_ITEM.STATUSs.WaitTest.GetValue(),
TRANS_CODE = nameof(BIZ_ERP_OTH_IN),
TRANS_NO = billcode,
//TRANS_LINE = item.SOURCELINE,
//SOURCE_CODE = nameof(BIZ_ERP_IQC),
//SOURCE_ORDER = item.BILLCODE,
AUTH_ORG = OrgCode,
};
Items.Add(wmsItem);
WMS_ITEM_PKG pKG = new WMS_ITEM_PKG
{
SN = wi.SN,
ITEM_CODE = wi.ITEM_CODE,
PARENT_SN = "",
PKG_TYPE = WMS_ITEM_PKG.PKG_TYPEs.OnePiece.GetValue(),
QTY = wi.QTY,
SUPP_CODE = VenderCode,
LOTNO = LotNo,
ERP_WH = WarehouseCode,
TRANS_CODE = nameof(BIZ_ERP_OTH_IN),
TRANS_NO = billcode,
//TRANS_LINE = item.SOURCELINE,
//SOURCE_CODE = nameof(BIZ_ERP_IQC),
//SOURCE_ORDER = item.BILLCODE,
AUTH_ORG = OrgCode,
};
ItemPkgs.Add(pKG);
}
// 查找待处理记录料号列表
var nMaterials = nScannedBarcodes.Select(x => x.ITEM_CODE).Distinct().ToList();
// 单据行号变量,初始值1
var nLineSeq = 1;
List scanList = new List();
List detailList = new List();
List iqcHeaders = new List();
List details = new List();
// 按照料号列表处理单据明细
foreach (var matCode in nMaterials)
{
// 按照料号、计量单位汇总scanBarcode
var lineMaterials = (from codes in nScannedBarcodes.Where(x => x.ITEM_CODE.ToUpper() == matCode.ToUpper())
group codes by new { codes.ITEM_CODE, codes.MUom } into g
select new
{
g.Key.ITEM_CODE,
g.Key.MUom,
sumQty = g.Sum(x => x.QTY)
}
).ToList();
// 循环处理每一行
foreach (var matLine in lineMaterials)
{
//插入单据明细行
var billDetail = new BIZ_ERP_OTH_IN_DTL
{
WAREHOUSECODE = WarehouseCode,
BILLCODE = billcode,
BILLLINE = nLineSeq.ToString(),
LINESTATUS = BIZ_ERP_OTH_IN.STATUSs.WORKING.GetValue(),
ITEM_CODE = matLine.ITEM_CODE,
UNITCODE = matLine.MUom,
PRQTY = matLine.sumQty,
ERP_BILL_CODE = "",
AUTH_ORG = OrgCode,
QTY = 0
};
detailList.Add(billDetail);
details.Add(new Detail
{
pmdtseq = nLineSeq.ToString(),
pmdt001 = "",
pmdt002 = "",
pmdt003 = "",
pmdt004 = "",
pmdt006 = matLine.ITEM_CODE, //"K7015AA016141",
pmdt018 = "创米科技",
pmdt020 = matLine.sumQty.ToString(), //"100.00000",
pmdtud011 = "0"
});
Result iqcResult = Cache.CodeRule["IQC001"].Generate("IQC");
if (!iqcResult.IsSuccessed)
{
throw new Exception(iqcResult.ExceptionMsg.Message);
}
//nBillHeader.SOURCECODE = iqcResult.Data.ToString();
var nIqcHeader = new BIZ_ERP_IQC
{
BILLCODE = iqcResult.Data.ToString(),
SOURCETYPE = (int)BIZ_ERP_IQC.BillType.CustSupplyInStock,
SOURCECODE = billcode,
SOURCELINE = nLineSeq.ToString(),
PONO = billcode,
POLINE = nLineSeq.ToString(),
MEASURE = "Y",
AUTH_ORG = OrgCode,
QCTIMES = 0,
QCSTATUS = (int)BIZ_ERP_IQC.QCSTATUSs.Finished, /*(int)IqcManagementSides.QCStatus.UnFinish,*/
QCRESULT = (int)BIZ_ERP_IQC.QCRESULTs.Wait,
QCREVIEW = (int)BIZ_ERP_IQC.QCReview.UnReview,
QCLEVEL = 11,
ITEM_CODE = matLine.ITEM_CODE
//ReceiveQty = detail.Qty, //生成送检单加上接收数量 2022/07/27 Ben Lin 2022/09/03 Ben Lin 注释
};
iqcHeaders.Add(nIqcHeader);
// 更新清点表,单据号
foreach (BIZ_ERP_OTH_IN_SN barcode in nScannedBarcodes.Where(x => x.ITEM_CODE == matLine.ITEM_CODE))
{
barcode.BUSINESSCODE = billcode;
barcode.BUSINESSLINE = nLineSeq.ToString();
barcode.STATUS = WMS_ITEM.STATUSs.WaitTest.GetValue();
barcode.AUTH_ORG = OrgCode;
barcode.UPDATE_TIME = DateTime.Now;
barcode.UPDATE_USER = UserCode;
scanList.Add(barcode);
}
// 单据明细行号 ++
nLineSeq++;
}
}
var sns = nScannedBarcodes.Select(i => i.SN).Distinct().ToList();
var customsData = Biz.Db.Queryable().Where(i => sns.Contains(i.Barcodes)).First();
//调用T100接口生成到货单
var ret = ErpT100.GenerateCustReceipt(new CustReceiptInputParameter
{
parameter = new Parameter
{
pmds000 = "2",
pmdsdocno = "3453",
pmdsdocdt = DateTime.Now.ToString("yyyy-MM-dd"), //"2023-04-26", //当天时间
pmds002 = UserCode == "admin" ? "00000" : UserCode, //"L36783", //用户ID
pmds003 = "",
pmds007 = VenderCode, //"C0006", //供应商代码
pmdsud003 = customsData.CustomsNo, // 报关单号
pmdsud004 = customsData.AccountingNo,// 核放清单号
pmds010 = "", //"测试客供料无采购收货", //送货单号
pmdsud001 = SecondVenderCode, //"CM017", //二级供应编号
detail = details
},
datakey = new Datakey
{
EntId = "88",
CompanyId = OrgCode
}
});
if (ret.payload.std_data.execution.code == "0") //成功
{
nBillHeader.ERP_BILL_CODE = ret.payload.std_data.parameter.docno;
action.Message += $"{action.Message.IsNullOrEmpty("", ";")}{ret.payload.std_data.execution.description},返回的收货单号:[{ret.payload.std_data.parameter.docno}]";
T100Success = true;
#region 生成送检单
foreach (var item in iqcHeaders)
{
var retIns = ErpT100.GenerateInspection(new InsInputParameter
{
parameter = new InsParameter
{
pmdsdocno = ret.payload.std_data.parameter.docno,
pmdsdocdt = DateTime.Now.ToString("yyyy-MM-dd"),
pmdtseq = item.SOURCELINE.ToString(),
pmdt020 = item.QCQTY.ToString(),
qcbadocno = "3701",
},
datakey = new Datakey
{
EntId = "88",
CompanyId = OrgCode
}
});
isIQCOk &= retIns.payload.std_data.execution.code == "0";
if (retIns.payload.std_data.execution.code != "0")
{
//isIQCOk = false;
action.IsSuccessed = false;
action.Message = $"到货单[{ret.payload.std_data.parameter.docno}],当前用户[{UserCode}],供应商编号[{VenderCode}],二级供应商编号[{SecondVenderCode}],返回的信息:{retIns.payload.std_data.execution.description}"; ;
//return action;
}
else
{
item.ERP_BILL_CODE = retIns.payload.std_data.parameter.docno;
//更新库存表
foreach (var wi in Items.Where(x => x.TRANS_NO == billcode && x.ITEM_CODE == item.ITEM_CODE))
{
wi.STATUS = WMS_ITEM.STATUSs.WaitTest.GetValue();
wi.TRANS_CODE = nameof(BIZ_ERP_OTH_IN);
wi.TRANS_NO = billcode;
wi.TRANS_LINE = item.SOURCELINE;
wi.SOURCE_CODE = nameof(item);
wi.ERP_WH = WarehouseCode;
wi.SOURCE_ORDER = item.BILLCODE;
wi.UPDATE_USER = UserCode;
wi.UPDATE_TIME = DateTime.Now;
wi.AUTH_ORG = OrgCode;
WMS_ITEM_HIS his = new WMS_ITEM_HIS(wi, $"客供来料清点,到货单[{billcode}][{string.Join(",", detailList.Where(s => s.ITEM_CODE == item.ITEM_CODE).Select(q => q.BILLLINE))}],送检单[{item.BILLCODE}]");
ItemHistorys.Add(his);
}
foreach (var pkg in ItemPkgs.Where(x => x.TRANS_NO == billcode && x.ITEM_CODE == item.ITEM_CODE))
{
pkg.PARENT_SN = "";
pkg.PKG_TYPE = WMS_ITEM_PKG.PKG_TYPEs.OnePiece.GetValue();
pkg.SUPP_CODE = VenderCode;
pkg.LOTNO = LotNo;
pkg.ERP_WH = WarehouseCode;
pkg.TRANS_LINE = item.SOURCELINE;
pkg.SOURCE_CODE = nameof(item);
pkg.SOURCE_ORDER = item.BILLCODE;
pkg.UPDATE_USER = UserCode;
pkg.UPDATE_TIME = DateTime.Now;
pkg.AUTH_ORG = OrgCode;
}
}
}
#endregion 生成送检单
}
else //失败
{
action.IsSuccessed = false;
action.Message = $"当前用户[{UserCode}],供应商编号[{VenderCode}],二级供应商编号[{SecondVenderCode}],返回的信息:{ret.payload.std_data.execution.description}";
return action;
}
//保存到数据库
var db = Business.Biz.Db;
var dbTran = db.UseTran(() =>
{
// 插入单据表头
var headerId = Biz.Db.Insertable(nBillHeader, UserCode).ExecuteReturnBigIdentity();
var x = db.Storageable(detailList, UserCode).ToStorage();
x.AsInsertable.ExecuteCommand();//不存在插入
x.AsUpdateable.IgnoreColumns(z => new { z.CREATE_TIME, z.CREATE_USER }).ExecuteCommand();//存在更新,更新时忽略字段CreationTime、CreatorUserId
//db.Updateable(scanList, UserCode).ExecuteCommand();
db.Fastest().BulkUpdate(scanList);
if (action.IsSuccessed && isIQCOk)
{
db.Insertable(iqcHeaders, UserCode).ExecuteCommand();
action.Message += $"{action.Message.IsNullOrEmpty("", ";")}生成客供物料入库单据和送检单成功";
}
//var ret = Biz.GenerateCustReceipt("", "");
if (Items.Count > 100)
{
db.Fastest().BulkCopy(Items);
}
else
{
db.Insertable(Items, UserCode).ExecuteCommand();
}
if (ItemPkgs.Count > 100)
{
db.Fastest().BulkCopy(ItemPkgs);
}
else
{
db.Insertable(ItemPkgs, UserCode).ExecuteCommand();
}
if (ItemHistorys.Count > 100)
{
db.Fastest().BulkCopy(ItemHistorys);
}
else
{
db.Insertable(ItemHistorys, UserCode).ExecuteCommand();
}
});
if (!dbTran.IsSuccess)
{
Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
this.Close(!dbTran.IsSuccess);
throw dbTran.ErrorException;
}
}
catch (System.Exception ex)
{
return action.CatchExceptionWithLog(ex, Biz.L(""));
}
return action;
}
///
/// 删除当前用户的已扫记录(缓存表)
///
///
public async Task DeleteAllScannedBarcode()
{
var action = new ApiAction();
try
{
if (WarehouseCode.IsNullOrEmpty())
{
action.IsSuccessed = false;
action.Message = $"空,无法删除已清点条码";
return action;
}
else
{
await Biz.Db.Deleteable(x => x.CREATE_USER == UserCode
&& x.WAREHOUSECODE == WarehouseCode
&& x.STATUS == WMS_ITEM.STATUSs.Counted.GetValue()
&& x.BUSINESSCODE == UserCode).ExecuteCommandAsync();
}
}
catch (System.Exception ex)
{
}
return action;
}
///
/// 删除当前用户的已扫单个记录
///
///
public async Task DeleteScannedBarcode(CustSupplyInInput input)
{
var action = new ApiAction();
try
{
if (WarehouseCode.IsNullOrEmpty())
{
action.IsSuccessed = false;
action.Message = $"空,无法删除已清点条码";
return action;
}
else
{
await Biz.Db.Deleteable(x => x.SN == input.SN).ExecuteCommandAsync();
}
}
catch (System.Exception ex)
{
}
return action;
}
///
/// 删除当前用户的已扫记录(缓存表)
///
///
public async Task CheckingT100Staut()
{
var action = new ApiAction();
try
{
if (T100Success)
{
action.IsSuccessed = true;
T100Success = false;
}
else
{
action.IsSuccessed = false;
}
}
catch (System.Exception ex)
{
}
return action;
}
///
/// 获取已清点的物料汇总
///
///
public async Task> GetScannedMaterialSummarys()
{
var query = Biz.Db.Queryable((t, m) =>
new JoinQueryInfos(
JoinType.Left, t.ITEM_CODE == m.ITEM_CODE
))
.Where((t, m) => t.CREATE_USER == UserCode
&& t.WAREHOUSECODE.ToUpper() == WarehouseCode.ToUpper()
&& t.STATUS == WMS_ITEM.STATUSs.Counted.GetValue()
&& t.AUTH_ORG == OrgCode.ToUpper()
&& t.BUSINESSCODE == UserCode)
.GroupBy((t, m) => new { t.WAREHOUSECODE, t.ITEM_CODE })
.Select((t, m) => new Model.Minsun.CustSupplyCheckList
{
WarehouseCode = t.WAREHOUSECODE,
MaterialCode = t.ITEM_CODE,
MaterialName = SqlFunc.AggregateMax(m.ITEM_NAME),
MaterialStandard = SqlFunc.AggregateMax(m.SPEC),
InventoryQty = SqlFunc.AggregateSum(t.QTY),
Unit = SqlFunc.AggregateMax(m.UNIT)
})
.ToList();
return await Task.FromResult(new PageAble()
{
data = query,
totals = query.Count(),
});
}
///
/// 查询物料对应的条码
///
///
///
public async Task> GetScannedMaterialDetailBarcodes(string MaterialCode)
{
var query = await Biz.Db.Queryable((t, m) =>
new JoinQueryInfos(
JoinType.Left, t.ITEM_CODE == m.ITEM_CODE
))
.Where((t, m) => t.CREATE_USER == UserCode
&& t.WAREHOUSECODE.ToUpper() == WarehouseCode.ToUpper()
&& t.STATUS == WMS_ITEM.STATUSs.Counted.GetValue()
&& t.ITEM_CODE.ToUpper() == MaterialCode.ToUpper()
&& t.BUSINESSCODE == UserCode)
.Select((t, m) => new Model.Minsun.CustSupplyCheckDetail
{
Barcode = t.SN,
BarcodeQty = t.QTY,
Unit = m.UNIT
})
.ToListAsync();
return new PageAble()
{
data = query,
totals = query.Count(),
};
}
#endregion Functions
public override bool Close(bool needSaveHistoryLog = false)
{
//保存操作日志
this.IsFinished = true;
return IsFinished ? base.Close(needSaveHistoryLog) : IsFinished;
}
}//endClass
}