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