Files
Gatedge.NewOrientLandMark.BOS/Gatedge.ScanCode/Services/ScanRecordsService.cs
liqionghai d758497f93 1
2025-11-18 17:43:12 +08:00

241 lines
7.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Gatedge.K3Cloud.Utils;
using Gatedge.K3Cloud.Utils.Common;
using Gatedge.K3Cloud.Utils.Model.K3Request;
using Gatedge.K3Cloud.Utils.Model.K3Result;
using Gatedge.K3Cloud.Utils.Model.K3Result.Model;
using Gatedge.ScanCode.Models.Dto;
using Gatedge.ScanCode.Models.Dto.BarRecord;
using Gatedge.ScanCode.Models.Dto.ScanRecords;
using Gatedge.ScanCode.Models.K3Request.BaseData;
using Gatedge.ScanCode.Models.K3Request.Enum;
using Gatedge.ScanCode.Models.K3Request.SaveModel;
using Gatedge.ScanCode.Services.IServices;
using System.Reflection;
using System.Text.Json;
namespace Gatedge.ScanCode.Services
{
/// <summary>
/// 暂存扫描记录
/// </summary>
public class ScanRecordsService : IScanRecordsService
{
private readonly string _FormName = "扫描记录#";
private readonly string _FormId = "k4b27f8773ecb443da113e1a5e64ccaf9";
/// <summary>
/// 金蝶云星空工具类
/// </summary>
private readonly K3CloudApiUtils _utils;
/// <summary>
/// 初始化工具类
/// </summary>
/// <param name="utils"></param>
public ScanRecordsService(K3CloudApiUtils utils)
{
_utils = utils;
}
/// <summary>
/// 删除接口
/// </summary>
/// <param name="deleteParam"></param>
public K3CloudResponseStatus Delete(Delete deleteParam)
{
var result = _utils.Delete(_FormId, deleteParam);
return result;
}
/// <summary>
/// 列表
/// </summary>
/// <returns></returns>
public ListResult List(Query queryParam)
{
var result = _utils.QueryList(queryParam);
return result;
}
/// <summary>
/// 保存暂存记录
/// </summary>
public K3CloudResponseStatus Save(ScanRecordsSaveDto param)
{
ScanRecordsSave saveModel = new ScanRecordsSave()
{
FBillNo = param.FBillNo,
FBarCode = param.FBarCode,
FQty = param.FQty,
Flot = param.Flot,
FEntryId = param.FEntryId,
FSubmitLot = param.FSubmitLot,
FJSON = param.FJSON,
};
if (param.FBillId != null)
{
saveModel.FBillId = new FormType()
{
FID = param.FBillId
};
}
if (param.FMaterialId != null)
{
saveModel.FMaterialId = new Material()
{
FMaterialId = Convert.ToInt32(param.FMaterialId)
};
}
if (param.FStockId != null)
{
saveModel.FStockId = new Stock()
{
FStockId = Convert.ToInt32(param.FStockId)
};
}
var billSave = new Save<ScanRecordsSave>();
billSave.Model = saveModel;
var result = _utils.Save(_FormId, billSave);
return result;
}
/// <summary>
/// 批量保存
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public K3CloudResponseStatus PatchSave(ArrayDto<ScanRecordsSaveDto> param)
{
var saveList = param.Data.Select(n => new ScanRecordsSave()
{
FBillNo = n.FBillNo,
FBarCode = n.FBarCode,
FQty = n.FQty,
Flot = n.Flot,
FEntryId = n.FEntryId,
FJSON = n.FJSON,
FSubmitLot = n.FSubmitLot,
FBillId = new FormType()
{
FID = n.FBillId
},
FMaterialId = new Material()
{
FMaterialId = Convert.ToInt32(n.FMaterialId)
},
FStockId = new Stock()
{
FStockId = Convert.ToInt32(n.FStockId)
}
}).ToList();
var billSave = new PatchSave<ScanRecordsSave>();
billSave.Model = saveList;
var result = _utils.BatchSave(_FormId, billSave);
return result;
}
/// <summary>
/// 查看
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public object View(View param)
{
return _utils.Query(_FormId, param);
}
/// <summary>
/// 提交成功信息
/// </summary>
/// <param name="ids">扫描记录Id通过','连接</param>
/// <param name="resultBillId"></param>
/// <param name="response"></param>
/// <returns></returns>
public K3CloudResponseStatus SubmitSuccess(string ids, string resultBillId, K3CloudResponseStatus response)
{
var saveList = ids.Split(',').Select(n => new ScanRecordsSave()
{
FID = n,
FStatus = BarRecordStatus.Success,
FErrorInfo = string.Empty,
FResultInfo = JsonSerializer.Serialize(response),
FResultBillNo = response.SuccessEntitys.First().Number,
FResultId = response.SuccessEntitys.First().Id.ToString(),
FResultBillId = new FormType
{
FID = resultBillId,
}
});
var billSave = new PatchSave<ScanRecordsSave>()
{
Model = saveList
};
var result = _utils.BatchSave(_FormId, billSave);
return result;
}
/// <summary>
/// 提交失败,更新状态和错误信息
/// </summary>
/// <param name="id"></param>
/// <param name="errorInfo"></param>
/// <returns></returns>
public K3CloudResponseStatus SubmitError(string id, string errorInfo)
{
var saveParam = new Save<ScanRecordsSave>()
{
Model = new ScanRecordsSave()
{
FID = id,
FStatus = BarRecordStatus.Error,
FErrorInfo = errorInfo,
}
};
return _utils.Save(_FormId, saveParam);
}
/// <summary>
/// 根据条码查找扫描记录
/// </summary>
/// <param name="barCode"></param>
/// <returns></returns>
public ListResult FindIdByCode(string barCode)
{
Query queryParam = new Query()
{
FormId = this._FormId,
FieldKeys = "FID,FStatus,FBillId.FID,FBillId.FName,FBillNo,FCreatorId,FCreatorId.FName,FCreateDate,FBarCode,FEntryId,FMaterialId,FMaterialId.FNumber,FMaterialId.FName,FQty,FStockId,FStockId.FNumber,FStockId.FName,Flot,FJSON,FErrorInfo",
Limit = 2000,
StartRow = 0,
};
FilterList filterString = new FilterList();
FilterItem filterItem = new FilterItem("FBarCode", "67", barCode, "0");
filterString.AddFilterItem(filterItem);
queryParam.FilterString = filterString.GetFilterString();
return List(queryParam);
}
/// <summary>
/// 打印成果码
/// </summary>
/// <param name="ids"></param>
public K3CloudResponseStatus PrintResultBillNo(List<string> ids)
{
var patchSave = new PatchSave<ScanRecordsSave>();
var scanRecordsSaves = ids.Distinct().Select(n => new ScanRecordsSave()
{
FID = n,
FIsPrinted = true,
}).ToList();
patchSave.Model = scanRecordsSaves;
return _utils.BatchSave(_FormId, patchSave);
}
}
}