0
This commit is contained in:
@@ -56,6 +56,8 @@ namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
foreach (var bill in billList)
|
||||
{
|
||||
var billObj = bill.DataEntity;
|
||||
billObj["FBarRecordNo"] = FBarRecordNo;
|
||||
billObj["FCreateByCode"] = "1";
|
||||
var entryList = billObj["InStockEntry"] as DynamicObjectCollection;
|
||||
BaseDataField StockField =
|
||||
e.TargetBusinessInfo.GetField("FStockId") as BaseDataField;
|
||||
@@ -69,9 +71,10 @@ namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
var orgId = org["Id"].ToString();
|
||||
foreach (var item in entryList)
|
||||
{
|
||||
var param = PushCustomParams.First().Value;
|
||||
DynamicObject Stock = service.LoadSingle(
|
||||
this.Context,
|
||||
CustomParams["InStockId"],
|
||||
param.InStockId,
|
||||
StockField.RefFormDynamicObjectType
|
||||
);
|
||||
DynamicObject StockStatus = service.LoadSingle(
|
||||
@@ -90,7 +93,7 @@ namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
var remainInStockUnitId = Convert.ToInt64(item["RemainInStockUnitId_Id"]); // 采购单位
|
||||
var baseUnitId = Convert.ToInt64(item["BaseUnitID_Id"]); // 基础单位
|
||||
//var snUnitId = Convert.ToInt64(item["SNUnitID_Id"]); // 序列号单位
|
||||
var qty = Convert.ToDecimal(CustomParams["InStockQty"]);
|
||||
var qty = Convert.ToDecimal(param.InStockQty);
|
||||
item["RealQty"] = qty; // 填写实收数
|
||||
// 计价数量
|
||||
if (priceUnitId != 0)
|
||||
@@ -112,8 +115,8 @@ namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
item["BaseUnitQty"] = BaseRealQty;
|
||||
}
|
||||
|
||||
var lotId = CustomParams["FLot_Id"].ToString();
|
||||
var lotText = CustomParams["FLot_Text"]?.ToString().Trim();
|
||||
var lotId = param.FLot_Id.ToString();
|
||||
var lotText = param.FLot_Text.Trim();
|
||||
// 如果批号不为空,则赋值
|
||||
if (!lotText.IsNullOrEmpty())
|
||||
{
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace Gatedge.ScanCode.Services.IServices
|
||||
public K3CloudResponseStatus SaveErrorInfo(int barRecordId, string ErrorInfo);
|
||||
|
||||
/// <summary>
|
||||
/// 保存错误信息
|
||||
/// 保存成功信息
|
||||
/// </summary>
|
||||
/// <param name="barRecordId"></param>
|
||||
/// <param name="resultEntityList"></param>
|
||||
|
||||
@@ -13,6 +13,12 @@ namespace Gatedge.ScanCode.Services.IServices
|
||||
/// </summary>
|
||||
/// <param name="cancelAssign"></param>
|
||||
void CancelAssign(CancelAssign cancelAssign);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 删除入库单
|
||||
/// </summary>
|
||||
/// <param name="stkInStockDeleteParam"></param>
|
||||
void Delete(Delete stkInStockDeleteParam);
|
||||
|
||||
/// <summary>
|
||||
@@ -21,5 +27,12 @@ namespace Gatedge.ScanCode.Services.IServices
|
||||
/// <param name="stkInStockSubmitParam"></param>
|
||||
/// <returns></returns>
|
||||
K3CloudResponseStatus Submit(Submit stkInStockSubmitParam);
|
||||
|
||||
/// <summary>
|
||||
/// 审核
|
||||
/// </summary>
|
||||
/// <param name="auditParam"></param>
|
||||
/// <returns></returns>
|
||||
K3CloudResponseStatus Audit(Audit auditParam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
using Gatedge.K3Cloud.Utils;
|
||||
using Gatedge.K3Cloud.Utils.Exceptions;
|
||||
using Gatedge.K3Cloud.Utils.Model.K3Request;
|
||||
using Gatedge.K3Cloud.Utils.Model.K3Result.Model;
|
||||
using Gatedge.ScanCode.Models.K3Request.SaveModel;
|
||||
using Gatedge.ScanCode.Models.Vo;
|
||||
using Gatedge.ScanCode.Services.IServices;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
@@ -30,6 +32,16 @@ namespace Gatedge.ScanCode.Services
|
||||
{
|
||||
_utils = utils;
|
||||
}
|
||||
|
||||
class PushCustomParam
|
||||
{
|
||||
public decimal InStockQty { get; set; }
|
||||
public string InStockId { get; set; }
|
||||
public DateTime FStockDate { get; set; }
|
||||
public DateTime FExpirationDate { get; set; }
|
||||
public int FLot_Id { get; set; }
|
||||
public string FLot_Text { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 下推采购入库单
|
||||
/// </summary>
|
||||
@@ -65,89 +77,98 @@ namespace Gatedge.ScanCode.Services
|
||||
throw new Exception("该扫描结果已经被提交,不允许重复提交");
|
||||
}
|
||||
// 如果提交成功,开始下推生产入库单
|
||||
|
||||
|
||||
var barEntityList = barRecord.FBarEntity;
|
||||
// 构造下推参数
|
||||
List<Push> billPusheList = new List<Push>();
|
||||
foreach (var item in barEntityList)
|
||||
{
|
||||
Push billPush = new Push();
|
||||
billPush.EntryIds = item.FSrcEntryId;
|
||||
billPush.EntryIds = string.Join(",", barEntityList.Select(n => n.FSrcEntryId));
|
||||
billPush.CustomParams = new Dictionary<string, object>();
|
||||
billPush.CustomParams.Add("IsConvertByScanCode", true); // 是否由条码下推
|
||||
billPush.CustomParams.Add("InStockQty", item.FBarQty.ToString()); // 下推数量
|
||||
billPush.CustomParams.Add("InStockId", item.FBarStockId_Id.ToString()); // 入库仓库
|
||||
billPush.CustomParams.Add("FStockDate", item.FStockDate.ToString()); // 入库日期
|
||||
billPush.CustomParams.Add("FExpirationDate", item.FExpirationDate.ToString()); // 有效期至
|
||||
billPush.CustomParams.Add("FLot_Id", item.FLot_Id.ToString()); // 有效期至
|
||||
billPush.CustomParams.Add("FLot_Text", item.FLot_Text.ToString()); // 有效期至
|
||||
billPush.CustomParams.Add("FBarRecordNo", barRecord.BillNo); // 是否由条码下推
|
||||
|
||||
billPush.RuleId = _ConvertRuleId; // 注塑/装配车间排产计划专用转换规则
|
||||
billPush.TargetFormId = _TargetFormId; // 目标单据类型:采购入库单
|
||||
billPush.IsEnableDefaultRule = false; // 不启用默认规则
|
||||
billPush.IsDraftWhenSaveFail = false; // 保存失败,不自动暂存
|
||||
billPusheList.Add(billPush);
|
||||
}
|
||||
// 成功列表
|
||||
var successList = new List<K3CloudResponseStatus>();
|
||||
// TODO 遍历下推
|
||||
foreach (var item in billPusheList)
|
||||
var Params = new Dictionary<string, PushCustomParam>();
|
||||
foreach (var item in barEntityList)
|
||||
{
|
||||
var pushResp = _utils.Push(_FormId, item);
|
||||
// 如果失败,将所有生成的单据删除,并保存错误信息到扫描记录
|
||||
var pushCustomParams = new PushCustomParam()
|
||||
{
|
||||
InStockQty = item.FBarQty ?? 0, // 下推数量
|
||||
InStockId = item.FBarStockId_Id?.ToString() ?? string.Empty, // 入库仓库
|
||||
FStockDate = item.FStockDate ?? DateTime.MinValue, // 入库日期
|
||||
FExpirationDate = item.FExpirationDate ?? DateTime.MinValue, // 有效期至
|
||||
FLot_Id = item.FLot_Id ?? 0, // 批号Id
|
||||
FLot_Text = item.FLot_Text ?? string.Empty // 批号文本
|
||||
};
|
||||
Params.Add(item.FSrcEntryId ?? "0", pushCustomParams);
|
||||
}
|
||||
billPush.CustomParams.Add("PushCustomParams", Params);
|
||||
|
||||
|
||||
// 执行下推
|
||||
var pushResp = _utils.Push(_FormId, billPush);
|
||||
// 如果失败,保存错误信息到扫描记录
|
||||
if (pushResp?.IsSuccess != true)
|
||||
{
|
||||
// 从下推成功的记录里获取Id,并且删除
|
||||
var deletePrdInStockIdList = new List<string>();
|
||||
successList.ForEach(n => n.SuccessEntitys?.ForEach(m => deletePrdInStockIdList.Add(m.Id.ToString())));
|
||||
var errorInfo = string.Join("\r\n", pushResp.Errors.Select(n => n.Message));
|
||||
// 如果有成功的下推单,则删除生成的入库单,回写错误信息。
|
||||
if (deletePrdInStockIdList.Count > 0)
|
||||
{
|
||||
// 撤销并删除生产入库单
|
||||
CancelAssignDeletePrdInStock(deletePrdInStockIdList);
|
||||
}
|
||||
barRecordService.SaveErrorInfo(barRecordId, errorInfo);
|
||||
// 撤销提交的栈板单据
|
||||
CancelAssignBarRecord(barRecordId);
|
||||
return pushResp;
|
||||
}
|
||||
|
||||
}
|
||||
successList.Add(pushResp);
|
||||
}
|
||||
//如果都成功,将入库单提交
|
||||
var prdInStockIds = new List<string>();
|
||||
successList.ForEach(n => n.SuccessEntitys?.ForEach(m => prdInStockIds.Add(m.Id.ToString())));
|
||||
if (pushResp?.SuccessEntitys.Count == 0)
|
||||
{
|
||||
throw new Exception("下推出现异常");
|
||||
}
|
||||
var inStockBillIds = pushResp?.SuccessEntitys?.Select(n => n.Id.ToString()).ToList();
|
||||
Submit stkInStockSubmitParam = new Submit()
|
||||
{
|
||||
Ids = string.Join(',', prdInStockIds)
|
||||
Ids = string.Join(',', inStockBillIds)
|
||||
};
|
||||
var submitResult = stkInStockService.Submit(stkInStockSubmitParam);
|
||||
var result = barRecordService.SubmitSuccess(barRecordId, successList.Select(n => new BarRecordSave.ResultEntry
|
||||
// 如果提交不成功,删除本次入库的单据,并返回结果
|
||||
if (!submitResult.IsSuccess)
|
||||
{
|
||||
FResultBillNo = n.SuccessEntitys.First().Number,
|
||||
FResultId = n.SuccessEntitys.First().Id.ToString(),
|
||||
var errorInfo = string.Join("\r\n", submitResult.Errors.Select(n => n.Message));
|
||||
barRecordService.SaveErrorInfo(barRecordId, errorInfo);
|
||||
// 撤销提交的栈板单据
|
||||
CancelAssignBarRecord(barRecordId);
|
||||
// 撤销并删除所有下推数据
|
||||
CancelAssignDeletePrdInStock(inStockBillIds);
|
||||
return submitResult;
|
||||
}
|
||||
// 如果提交成功,审核入库单
|
||||
Audit stkInStockAuditParam = new Audit()
|
||||
{
|
||||
Ids = string.Join(',', inStockBillIds)
|
||||
};
|
||||
var auditResult = stkInStockService.Audit(stkInStockAuditParam);
|
||||
// 如果审核不成功,删除本次入库的单据,并返回结果
|
||||
if (!auditResult.IsSuccess)
|
||||
{
|
||||
var errorInfo = string.Join("\r\n", auditResult.Errors.Select(n => n.Message));
|
||||
barRecordService.SaveErrorInfo(barRecordId, errorInfo);
|
||||
// 撤销提交的栈板单据
|
||||
CancelAssignBarRecord(barRecordId);
|
||||
// 撤销并删除所有下推数据
|
||||
CancelAssignDeletePrdInStock(inStockBillIds);
|
||||
return auditResult;
|
||||
}
|
||||
|
||||
// 如果审核成功,更新栈板单据的结果信息
|
||||
var result = barRecordService.SubmitSuccess(barRecordId, auditResult.SuccessEntitys.Select(n => new BarRecordSave.ResultEntry
|
||||
{
|
||||
FResultBillNo = n.Number,
|
||||
FResultId = n.Id.ToString(),
|
||||
FResultBillId = new Models.K3Request.BaseData.FormType()
|
||||
{
|
||||
FID = _TargetFormId
|
||||
}
|
||||
}));
|
||||
return submitResult;
|
||||
// 如果提交不成功
|
||||
if (!submitResult.IsSuccess)
|
||||
{
|
||||
var errorInfo = string.Join("\r\n", submitResult.Errors.Select(n => n.Message));
|
||||
// 撤销并删除入库单
|
||||
CancelAssignDeletePrdInStock(prdInStockIds);
|
||||
// 撤销提交的栈板单据
|
||||
CancelAssignBarRecord(barRecordId);
|
||||
// 回写错误信息
|
||||
barRecordService.SaveErrorInfo(barRecordId, errorInfo);
|
||||
return submitResult;
|
||||
}
|
||||
|
||||
|
||||
//return result;
|
||||
return auditResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -26,6 +26,17 @@ namespace Gatedge.ScanCode.Services
|
||||
_utils = utils;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 审核
|
||||
/// </summary>
|
||||
/// <param name="auditParam"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public K3CloudResponseStatus Audit(Audit auditParam)
|
||||
{
|
||||
return _utils.Audit(_FormId, auditParam);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 撤销
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user