Compare commits
8 Commits
997440fb84
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbe7000a86 | ||
| 86b19c4662 | |||
| 8e3b06f929 | |||
|
|
a97b7737e0 | ||
|
|
0faeab0321 | ||
| cd1c87bf8e | |||
| 00f11185ba | |||
| 0210aeacb9 |
@@ -37,7 +37,8 @@
|
||||
<Reference Include="Kingdee.BOS.App">
|
||||
<HintPath>..\Library\Kingdee.BOS.App.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.Contracts">
|
||||
<Reference Include="Kingdee.BOS.Contracts, Version=7.2.877.3, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\Kingdee.BOS.Contracts.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Kingdee.BOS.Core">
|
||||
@@ -70,6 +71,10 @@
|
||||
<Reference Include="Kingdee.K3.Core">
|
||||
<HintPath>..\Library\Kingdee.K3.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Library\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
using Gatedge.NewOrientLandMark.BOS.Services;
|
||||
using Kingdee.BOS.App;
|
||||
using Kingdee.BOS.Contracts;
|
||||
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
|
||||
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
|
||||
using Kingdee.BOS.Core.Metadata.FieldElement;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Kingdee.BOS.ServiceHelper;
|
||||
using Kingdee.BOS.Util;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Gatedge.NewOrientLandMark.BOS.Services;
|
||||
using Kingdee.BOS.App;
|
||||
using Kingdee.BOS.Contracts;
|
||||
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
|
||||
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
|
||||
using Kingdee.BOS.Core.Metadata.FieldElement;
|
||||
using Kingdee.BOS.Log;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Kingdee.BOS.ServiceHelper;
|
||||
using Kingdee.BOS.Util;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
{
|
||||
@@ -20,31 +22,28 @@ namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
public class ToStkInStock : AbstractConvertPlugIn
|
||||
{
|
||||
private bool IsConvertByScanCode = false;
|
||||
private readonly Dictionary<string, object> CustomParams = new Dictionary<string, object>();
|
||||
private string FBarRecordNo = string.Empty;
|
||||
private Dictionary<string, PushCustomParam> PushCustomParams;
|
||||
|
||||
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; }
|
||||
}
|
||||
public override void OnInitVariable(InitVariableEventArgs e)
|
||||
{
|
||||
base.OnInitVariable(e);
|
||||
this.Option.TryGetVariableValue<bool>("IsConvertByScanCode", out IsConvertByScanCode);
|
||||
if (IsConvertByScanCode)
|
||||
{
|
||||
string InStockId;
|
||||
this.Option.TryGetVariableValue<string>("InStockId", out InStockId);
|
||||
CustomParams.Add("InStockId", InStockId);
|
||||
object InStockQty;
|
||||
this.Option.TryGetVariableValue("InStockQty", out InStockQty);
|
||||
CustomParams.Add("InStockQty", InStockQty);
|
||||
string FStockDate;
|
||||
this.Option.TryGetVariableValue("FStockDate", out FStockDate);
|
||||
CustomParams.Add("FStockDate", FStockDate);
|
||||
string FExpirationDate;
|
||||
this.Option.TryGetVariableValue("FExpirationDate", out FExpirationDate);
|
||||
CustomParams.Add("FExpirationDate", FExpirationDate);
|
||||
string FLot_Id;
|
||||
this.Option.TryGetVariableValue("FLot_Id", out FLot_Id);
|
||||
CustomParams.Add("FLot_Id", FLot_Id);
|
||||
string FLot_Text;
|
||||
this.Option.TryGetVariableValue("FLot_Text", out FLot_Text);
|
||||
CustomParams.Add("FLot_Text", FLot_Text);
|
||||
var pushCustomParamsString = string.Empty;
|
||||
this.Option.TryGetVariableValue<string>("PushCustomParams", out pushCustomParamsString);
|
||||
PushCustomParams = JsonConvert.DeserializeObject<Dictionary<string, PushCustomParam>>(pushCustomParamsString);
|
||||
this.Option.TryGetVariableValue<string>("FBarRecordNo", out FBarRecordNo);
|
||||
}
|
||||
}
|
||||
public override void AfterConvert(AfterConvertEventArgs e)
|
||||
@@ -60,21 +59,28 @@ namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
foreach (var bill in billList)
|
||||
{
|
||||
var billObj = bill.DataEntity;
|
||||
billObj["FBarRecordNo"] = FBarRecordNo;
|
||||
billObj["FCreateByCode"] = IsConvertByScanCode;
|
||||
var entryList = billObj["InStockEntry"] as DynamicObjectCollection;
|
||||
BaseDataField StockField =
|
||||
e.TargetBusinessInfo.GetField("FStockId") as BaseDataField;
|
||||
BaseDataField StockStatusField =
|
||||
e.TargetBusinessInfo.GetField("FStockStatusId") as BaseDataField;
|
||||
|
||||
BaseDataField LotField =
|
||||
e.TargetBusinessInfo.GetField("FLot") as BaseDataField;
|
||||
IViewService service = ServiceHelper.GetService<IViewService>();
|
||||
//根据内码获取物料基础资料对象
|
||||
var org = bill.DataEntity["StockOrgId"] as DynamicObject; // 调出组织
|
||||
var orgId = org["Id"].ToString();
|
||||
foreach (var item in entryList)
|
||||
{
|
||||
var linkList = item["FInStockEntry_Link"] as DynamicObjectCollection;
|
||||
var link = linkList.First();
|
||||
var sid = link["SId"].ToString();
|
||||
var param = PushCustomParams[sid];
|
||||
DynamicObject Stock = service.LoadSingle(
|
||||
this.Context,
|
||||
CustomParams["InStockId"],
|
||||
param.InStockId,
|
||||
StockField.RefFormDynamicObjectType
|
||||
);
|
||||
DynamicObject StockStatus = service.LoadSingle(
|
||||
@@ -91,25 +97,47 @@ namespace Gatedge.NewOrientLandMark.BOS.PlugIn.PUR_PurchaseOrder.ConvertPlugIn
|
||||
var unitId = Convert.ToInt64(item["UnitId_Id"]); // 主单位
|
||||
var priceUnitId = Convert.ToInt64(item["PriceUnitID_Id"]); // 计价单位
|
||||
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) // 计价数量
|
||||
// 计价数量
|
||||
if (priceUnitId != 0)
|
||||
{
|
||||
var BaseRealQty = unitService.GetQtyByUtilConverRate(materialId, unitId, priceUnitId, qty);
|
||||
item["PriceUnitQty"] = BaseRealQty;
|
||||
item["PriceUnitQty"] = BaseRealQty;
|
||||
}
|
||||
if (remainInStockUnitId != 0) // 采购数量
|
||||
// 采购数量
|
||||
if (remainInStockUnitId != 0)
|
||||
{
|
||||
var SecRealQty = unitService.GetQtyByUtilConverRate(materialId, unitId, remainInStockUnitId, qty);
|
||||
item["RemainInStockQty"] = SecRealQty;
|
||||
}
|
||||
//if (snUnitId != 0)
|
||||
//{
|
||||
// var snQty = unitService.GetQtyByUtilConverRate(materialId, unitId, snUnitId, qty);
|
||||
// item["SNQty"] = snQty;
|
||||
//}
|
||||
// 采购基本数量
|
||||
if (baseUnitId != 0)
|
||||
{
|
||||
var BaseRealQty = unitService.GetQtyByUtilConverRate(materialId, unitId, baseUnitId, qty);
|
||||
item["RemainInStockBaseQty"] = BaseRealQty;
|
||||
item["BaseUnitQty"] = BaseRealQty;
|
||||
}
|
||||
|
||||
var lotId = param.FLot_Id.ToString();
|
||||
var lotText = param.FLot_Text.Trim();
|
||||
// 如果批号不为空,则赋值
|
||||
if (!lotText.IsNullOrEmpty())
|
||||
{
|
||||
// 如果批号Id不为空,赋值批号
|
||||
if (!lotId.IsNullOrEmpty() && lotId != "0")
|
||||
{
|
||||
var lot = service.LoadSingle(this.Context, lotId, LotField.RefFormDynamicObjectType);
|
||||
item["Lot_Id"] = lot["Id"];
|
||||
item["Lot"] = lot;
|
||||
}
|
||||
else
|
||||
{
|
||||
item["Lot_Text"] = lotText;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,5 +151,25 @@ namespace Gatedge.ScanCode.Controllers
|
||||
service.PrintResultBillNo(barRecord);
|
||||
return AjaxResult.Success("扫描记录更新成功.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量下推采购入库单
|
||||
/// </summary>
|
||||
/// <param name="barRecord"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Delete")]
|
||||
public AjaxResult Delete([FromBody] BarRecord barRecord)
|
||||
{
|
||||
var loginInfo = User.GetLoginInfoByClaimsPrincipal();
|
||||
_utils.InitCloudApi(loginInfo);
|
||||
IBarRecordService service = new BarRecordService(_utils);
|
||||
var result = service.Delete(barRecord);
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
return AjaxResult.Success("删除成功.", result);
|
||||
}
|
||||
return AjaxResult.Error("删除失败.", result);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
8
Gatedge.ScanCode/Models/K3Request/BaseData/Lot.cs
Normal file
8
Gatedge.ScanCode/Models/K3Request/BaseData/Lot.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Gatedge.ScanCode.Models.K3Request.BaseData
|
||||
{
|
||||
public class Lot
|
||||
{
|
||||
public int? FLotId { get; set; }
|
||||
public string? FNumber { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -110,6 +110,10 @@ namespace Gatedge.ScanCode.Models.K3Request.SaveModel
|
||||
/// 源单分录Id
|
||||
/// </summary>
|
||||
public string FSrcEntryId { get; set; }
|
||||
/// <summary>
|
||||
/// 批号
|
||||
/// </summary>
|
||||
public Lot? FLot { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -60,6 +60,19 @@ namespace Gatedge.ScanCode.Services
|
||||
return _utils.CancelAssign(this._FormId, cancelAssignBarRecord);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除条码扫描记录
|
||||
/// </summary>
|
||||
/// <param name="barRecord"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public K3CloudResponseStatus Delete(BarRecord barRecord)
|
||||
{
|
||||
return _utils.Delete(this._FormId, new Delete()
|
||||
{
|
||||
Ids = barRecord.BarRecordId.ToString()
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据条码查找条码扫描记录
|
||||
/// </summary>
|
||||
@@ -143,7 +156,12 @@ namespace Gatedge.ScanCode.Services
|
||||
FBarQty = n.FBarQty,
|
||||
FSrcBillId = n.FSrcBillId,
|
||||
FSrcEntryId = n.FSrcEntryId,
|
||||
FBarAuxPropId = n.FBarAuxpropId == 0 ? null : n.FBarAuxpropId
|
||||
FBarAuxPropId = n.FBarAuxpropId == 0 ? null : n.FBarAuxpropId,
|
||||
FLot = new Lot()
|
||||
{
|
||||
FLotId = n.FLot_Id == 0 ? null : n.FLot_Id,
|
||||
FNumber = n.FLot_Text,
|
||||
}
|
||||
|
||||
}),
|
||||
};
|
||||
|
||||
@@ -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>
|
||||
@@ -89,5 +89,11 @@ namespace Gatedge.ScanCode.Services.IServices
|
||||
/// <param name="auditParam"></param>
|
||||
/// <returns></returns>
|
||||
public K3CloudResponseStatus Audit(Audit auditParam);
|
||||
|
||||
/// <summary>
|
||||
/// 删除接口
|
||||
/// </summary>
|
||||
/// <param name="barRecord"></param>
|
||||
public K3CloudResponseStatus Delete(BarRecord barRecord);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,9 +1,12 @@
|
||||
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;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Gatedge.ScanCode.Services
|
||||
{
|
||||
@@ -30,6 +33,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 +78,98 @@ namespace Gatedge.ScanCode.Services
|
||||
throw new Exception("该扫描结果已经被提交,不允许重复提交");
|
||||
}
|
||||
// 如果提交成功,开始下推生产入库单
|
||||
|
||||
|
||||
var barEntityList = barRecord.FBarEntity;
|
||||
// 构造下推参数
|
||||
List<Push> billPusheList = new List<Push>();
|
||||
Push billPush = new Push();
|
||||
billPush.EntryIds = string.Join(",", barEntityList.Select(n => n.FSrcEntryId));
|
||||
billPush.CustomParams = new Dictionary<string, object>();
|
||||
billPush.CustomParams.Add("IsConvertByScanCode", true); // 是否由条码下推
|
||||
billPush.CustomParams.Add("FBarRecordNo", barRecord.BillNo); // 是否由条码下推
|
||||
|
||||
billPush.RuleId = _ConvertRuleId; // 注塑/装配车间排产计划专用转换规则
|
||||
billPush.TargetFormId = _TargetFormId; // 目标单据类型:采购入库单
|
||||
billPush.IsEnableDefaultRule = false; // 不启用默认规则
|
||||
billPush.IsDraftWhenSaveFail = false; // 保存失败,不自动暂存
|
||||
var paramList = new Dictionary<string, PushCustomParam>();
|
||||
foreach (var item in barEntityList)
|
||||
{
|
||||
Push billPush = new Push();
|
||||
billPush.EntryIds = item.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.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 pushResp = _utils.Push(_FormId, item);
|
||||
// 如果失败,将所有生成的单据删除,并保存错误信息到扫描记录
|
||||
if (pushResp?.IsSuccess != true)
|
||||
var pushCustomParams = new PushCustomParam()
|
||||
{
|
||||
// 从下推成功的记录里获取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);
|
||||
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 // 批号文本
|
||||
};
|
||||
paramList.Add(item.FSrcEntryId ?? "0", pushCustomParams);
|
||||
}
|
||||
billPush.CustomParams.Add("PushCustomParams", JsonConvert.SerializeObject(paramList));
|
||||
|
||||
|
||||
// 执行下推
|
||||
var pushResp = _utils.Push(_FormId, billPush);
|
||||
// 如果失败,保存错误信息到扫描记录
|
||||
if (pushResp?.IsSuccess != true)
|
||||
{
|
||||
var errorInfo = string.Join("\r\n", pushResp.Errors.Select(n => n.Message));
|
||||
barRecordService.SaveErrorInfo(barRecordId, errorInfo);
|
||||
// 撤销提交的栈板单据
|
||||
CancelAssignBarRecord(barRecordId);
|
||||
return 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