|
|
@@ -83,9 +83,9 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
protected IRepository<Mold> MoldRepository { get; }
|
|
|
protected IRepository<MoldProductionRecord,long> MoldProductionRecordRepository { get; }
|
|
|
protected IRepository<DeviceMgPlan> DeviceMgPlanRepository { get; }
|
|
|
-
|
|
|
+ protected IRepository<OutSourcingMissStore> OutSourcingMissStoreRepository { get; }
|
|
|
public IRepository<SysAttachFile> AttachRepository { get; }
|
|
|
- public ProductionOrdersAppService(IRepository<ProductionOrder, int> repository, IRepository<BusinessLog> logRepository, IRepository<SemiEnterStore> semiEnterStoreRepository, IRepository<SemiOutStore> semiOutStoreRepository, IRepository<ViewSemiEnterStore> viewSemiEnterStoreRepository, IRepository<CurrentSemiStoreHouse> currentSemiStoreHouseRepository, IRepository<ViewSemiOutStore> viewSemiOutStoreRepository, IRepository<SemiProducts, string> semiProductRepository, IRepository<OutFactory, string> outFactoryRepository, IRepository<ProductionLog> productLogRepository, IRepository<EmployeeWorkPerformance> performanceRepository, IRepository<RmOutStore, string> orsRepository, IRepository<RmEnterStore, string> ersRepository, IRepository<CurrentRmStoreHouse, string> crsRepository, ICommonAppService commonAppService, IRepository<ViewProductOutStore> viewProductOutStoreRepository, IRepository<ProductOutStore> productOutStoreRepository, IRepository<CurrentProductStoreHouse> currentProductStoreHouseRepository, IRepository<Product, string> productRepository, IStatesAppService statesAppService, IIwbSettingManager settingManager, IRepository<OrderProduction> orderProductionRepository, IRepository<ViewOrderItems> viewOrderItemsRepository, IRepository<Mold> moldRepository, IRepository<MoldProductionRecord, long> moldProductionRecordRepository, IRepository<DeviceMgPlan> deviceMgPlanRepository, IRepository<SysAttachFile> attachRepository) : base(repository, "ProductionOrderNo")
|
|
|
+ public ProductionOrdersAppService(IRepository<ProductionOrder, int> repository, IRepository<BusinessLog> logRepository, IRepository<SemiEnterStore> semiEnterStoreRepository, IRepository<SemiOutStore> semiOutStoreRepository, IRepository<ViewSemiEnterStore> viewSemiEnterStoreRepository, IRepository<CurrentSemiStoreHouse> currentSemiStoreHouseRepository, IRepository<ViewSemiOutStore> viewSemiOutStoreRepository, IRepository<SemiProducts, string> semiProductRepository, IRepository<OutFactory, string> outFactoryRepository, IRepository<ProductionLog> productLogRepository, IRepository<EmployeeWorkPerformance> performanceRepository, IRepository<RmOutStore, string> orsRepository, IRepository<RmEnterStore, string> ersRepository, IRepository<CurrentRmStoreHouse, string> crsRepository, ICommonAppService commonAppService, IRepository<ViewProductOutStore> viewProductOutStoreRepository, IRepository<ProductOutStore> productOutStoreRepository, IRepository<CurrentProductStoreHouse> currentProductStoreHouseRepository, IRepository<Product, string> productRepository, IStatesAppService statesAppService, IIwbSettingManager settingManager, IRepository<OrderProduction> orderProductionRepository, IRepository<ViewOrderItems> viewOrderItemsRepository, IRepository<Mold> moldRepository, IRepository<MoldProductionRecord, long> moldProductionRecordRepository, IRepository<DeviceMgPlan> deviceMgPlanRepository, IRepository<SysAttachFile> attachRepository, IRepository<OutSourcingMissStore> outSourcingMissStoreRepository) : base(repository, "ProductionOrderNo")
|
|
|
{
|
|
|
LogRepository = logRepository;
|
|
|
SemiEnterStoreRepository = semiEnterStoreRepository;
|
|
|
@@ -115,6 +115,7 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
DeviceMgPlanRepository = deviceMgPlanRepository;
|
|
|
|
|
|
AttachRepository = attachRepository;
|
|
|
+ OutSourcingMissStoreRepository = outSourcingMissStoreRepository;
|
|
|
}
|
|
|
protected override bool KeyIsAuto { get; set; } = false;
|
|
|
protected override string GetPermissionName { get; set; } = PermissionNames.PagesProductionInfoProductionOrderMg;
|
|
|
@@ -497,11 +498,26 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
public async Task<ProductionOrderDto> ConfirmEnterStore(ConfirmEnterStoreDto input)
|
|
|
{
|
|
|
var entity = await Repository.FirstOrDefaultAsync(a => a.Id == input.Id);
|
|
|
+ var planQuantity = entity.Quantity;
|
|
|
if (entity.ProductionOrderStatus != ProductionOrderStatusEnum.Storeing.ToInt())
|
|
|
{
|
|
|
CheckErrors(IwbIdentityResult.Failed("排查单未进行入库操作!"));
|
|
|
}
|
|
|
entity.ProductionOrderStatus = ProductionOrderStatusEnum.EnterStore.ToInt();
|
|
|
+ var sumEnterStoreQuantity = SumEnterStoreQuantity(entity);
|
|
|
+
|
|
|
+ //检测排产单入库的数量是否小于排产单的数量的3%,且是外协的排产单
|
|
|
+ //&& (entity.ProcessingLevel == ProductionOrderProcessLevelEnum.Outsourcing.ToString())
|
|
|
+ if ((sumEnterStoreQuantity <= Convert.ToDecimal((double)planQuantity * 0.97)))
|
|
|
+ {
|
|
|
+ //创建外协缺料的记录
|
|
|
+ var outSourcingMissStore = new OutSourcingMissStore();
|
|
|
+ outSourcingMissStore.ProductionOrderNo = entity.ProductionOrderNo;
|
|
|
+ outSourcingMissStore.PlannedQuantity = planQuantity;
|
|
|
+ outSourcingMissStore.ActualQuantity = sumEnterStoreQuantity;
|
|
|
+ outSourcingMissStore.MissQuantity = Convert.ToDecimal(planQuantity - sumEnterStoreQuantity);
|
|
|
+ await OutSourcingMissStoreRepository.InsertAsync(outSourcingMissStore);
|
|
|
+ }
|
|
|
//ProductionOrderLogs loLogs = new ProductionOrderLogs()
|
|
|
//{
|
|
|
// ProductionOrderNo = loProductionOrder.ProductionOrderNo,
|
|
|
@@ -529,7 +545,8 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
}
|
|
|
|
|
|
|
|
|
- /// <summary>
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
/// 生成原材料出入库记录
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
@@ -912,14 +929,17 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
if (enterLogs.Any())
|
|
|
{
|
|
|
foreach (var log in enterLogs)
|
|
|
- {
|
|
|
- result += (log.ApplyStatus == enterStoredStatus ? log.ActualQuantity : log.Quantity) / (input.KgWeight <= 0 ? 1 : input.KgWeight);
|
|
|
- }
|
|
|
+ {
|
|
|
+ //result += (log.ApplyStatus == enterStoredStatus ? log.ActualQuantity : log.Quantity) / (input.KgWeight <= 0 ? 1 : input.KgWeight);
|
|
|
+ result += (log.ApplyStatus == enterStoredStatus ? log.ActualQuantity : log.Quantity);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
private bool CheckEnterStoreQuantity(ProductionOrder input,decimal enterQuantity,decimal kw)
|
|
|
{
|
|
|
////已经申请入库数量
|
|
|
@@ -952,38 +972,84 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 半成品入库申请
|
|
|
- /// </summary>
|
|
|
- /// <param name="input"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [AbpAuthorize(PermissionNames.PagesProductionInfoProductionOrderMgUpdate), AuditLog("创建入库申请")]
|
|
|
- public async Task<SemiEnterStoreDto> CreateEnterStoreApply(CreateEnterStoreApplyDto input)
|
|
|
+
|
|
|
+ private bool CheckHasExcessiveIn(string productionOrderNo)
|
|
|
{
|
|
|
- string errMsg = "";
|
|
|
- var loProductionOrder = await Repository.FirstOrDefaultAsync(a => a.Id == input.Id);
|
|
|
- if (!CheckEnterStoreQuantity(loProductionOrder, input.EnterStoreQuantity, input.KgWeight))
|
|
|
- {
|
|
|
- //CheckErrors(IwbIdentityResult.Failed("申请中数量+成功入库数量, 不能大于等于排产单计划总数量的上限数量!"));
|
|
|
- errMsg = "申请中数量+成功入库数量, 已经大于等于排产单计划总数量的上限数量!";
|
|
|
- }
|
|
|
- loProductionOrder.ProductionOrderStatus = ProductionOrderStatusEnum.Storeing.ToInt();
|
|
|
- loProductionOrder.KgWeight = input.KgWeight;
|
|
|
- //loProductionOrder.ProductionOrderStatus = ProductionOrderStatusEnum.Producting.ToInt();
|
|
|
- var applySource = loProductionOrder.ProcessingLevel == "1"
|
|
|
- ? (loProductionOrder.ProductionType == "0"
|
|
|
+ string applyStatus = EnterStoreApplyStatusEnum.Applying.ToInt() + "",
|
|
|
+ auditedStatus = EnterStoreApplyStatusEnum.Audited.ToInt() + "",
|
|
|
+ enterStoredStatus = EnterStoreApplyStatusEnum.EnterStored.ToInt() + "",
|
|
|
+ checkedStatus = EnterStoreApplyStatusEnum.Checked.ToInt() + "";
|
|
|
+ var excessiveIn = CreateSourceType.ExcessiveIn.ToInt();
|
|
|
+ var enterLogs = SemiEnterStoreRepository.GetAll().Where(i =>
|
|
|
+ i.ProductionOrderNo == productionOrderNo &&
|
|
|
+ (i.ApplyStatus == applyStatus ||
|
|
|
+ i.ApplyStatus == auditedStatus ||
|
|
|
+ i.ApplyStatus == enterStoredStatus ||
|
|
|
+ i.ApplyStatus == checkedStatus) && i.CreateSourceType== excessiveIn );
|
|
|
+ return enterLogs.Any();
|
|
|
+
|
|
|
+ }
|
|
|
+ //半成品入库申请
|
|
|
+ private async Task<SemiEnterStoreDto> SemiEnterApplyCreate(ProductionOrder entity, CreateEnterStoreApplyDto input)
|
|
|
+ {
|
|
|
+ //已经申请入库数量
|
|
|
+ var hasQuantity = SumEnterStoreQuantity(entity);
|
|
|
+ //入库数量超过排产单15%之后,需要拆分一条入库记录,超额入库,废除之前最大排产数量字段
|
|
|
+ var productSplitValue = (double)(entity.Quantity) * 1.15;
|
|
|
+ //本次入库申请数量
|
|
|
+ double applyEnterQuantity = (double)input.EnterStoreQuantity;
|
|
|
+ //这次入库申请+之前已经入库的数量=实际申请的数量
|
|
|
+ var current = (double)(hasQuantity) + applyEnterQuantity;
|
|
|
+ var applySource = entity.ProcessingLevel == "1"
|
|
|
+ ? (entity.ProductionType == "0"
|
|
|
? EnterStoreApplySourceEnum.InnerCar
|
|
|
: EnterStoreApplySourceEnum.Out)
|
|
|
: EnterStoreApplySourceEnum.OutProduct;
|
|
|
- SemiEnterStore entity = new SemiEnterStore
|
|
|
+ //检查这个批次是否有超额的入库记录
|
|
|
+ bool hasExcessiveIn = ((double)hasQuantity >= (double)(entity.Quantity)) || CheckHasExcessiveIn(entity.ProductionOrderNo);
|
|
|
+ //入库实际申请数量大于分隔阈值,需要拆分一条超额入库记录,如果没有超过阈值默认这次入库数量就是申请数量
|
|
|
+ //入库已经有超额入库记录,本次入库的记录也是超额入库
|
|
|
+ if (!hasExcessiveIn && current > productSplitValue)
|
|
|
+ {
|
|
|
+ //超额部分
|
|
|
+ double exceed = current - (double)(entity.Quantity);
|
|
|
+ //实际入库数量-超额部分 = 正常入库数量 如果有超额的部分,则正常入库数量为实际申请数量-超额部分
|
|
|
+ applyEnterQuantity = (double)input.EnterStoreQuantity - exceed;
|
|
|
+ SemiEnterStore exceedEnter = new SemiEnterStore
|
|
|
+ {
|
|
|
+ ApplyEnterDate = Clock.Now,
|
|
|
+ ApplySource = applySource.ToInt().ToString(),
|
|
|
+ ApplyStatus = EnterStoreApplyStatusEnum.Applying.ToInt().ToString(),
|
|
|
+ ProductionOrderNo = entity.ProductionOrderNo,
|
|
|
+ SemiProductNo = entity.SemiProductNo,
|
|
|
+ Quantity = Convert.ToDecimal(exceed),//input.EnterStoreQuantity,
|
|
|
+ ActualQuantity = 0,
|
|
|
+ AuditDate = Clock.Now,
|
|
|
+ AuditUser = AbpSession.UserName,
|
|
|
+ TimeCreated = Clock.Now,
|
|
|
+ CreatorUserId = AbpSession.UserName,
|
|
|
+ TimeLastMod = Clock.Now,
|
|
|
+ UserIDLastMod = AbpSession.UserName,
|
|
|
+ Remark = input.Remark,
|
|
|
+ StoreHouseId = input.StoreHouseId,
|
|
|
+ KgWeight = input.KgWeight,
|
|
|
+ CreateSourceType = CreateSourceType.ExcessiveIn.ToInt(),//超额申请的部分
|
|
|
+ };
|
|
|
+ await SemiEnterStoreRepository.InsertAsync(exceedEnter);
|
|
|
+
|
|
|
+ BusinessLogTypeEnum.SStore.WriteLog(LogRepository, "半成品入库",
|
|
|
+ $"创建半成品超额入库申请[{exceedEnter.Id}],信息为:[{input.Obj2String()}]",
|
|
|
+ $"批次号:{exceedEnter.ProductionOrderNo},创建超额入库申请");
|
|
|
+ }
|
|
|
+
|
|
|
+ SemiEnterStore enter = new SemiEnterStore
|
|
|
{
|
|
|
ApplyEnterDate = Clock.Now,
|
|
|
- ApplySource =applySource.ToInt().ToString(),
|
|
|
+ ApplySource = applySource.ToInt().ToString(),
|
|
|
ApplyStatus = EnterStoreApplyStatusEnum.Applying.ToInt().ToString(),
|
|
|
- ProductionOrderNo = loProductionOrder.ProductionOrderNo,
|
|
|
- SemiProductNo = loProductionOrder.SemiProductNo,
|
|
|
- Quantity = input.EnterStoreQuantity,
|
|
|
+ ProductionOrderNo = entity.ProductionOrderNo,
|
|
|
+ SemiProductNo = entity.SemiProductNo,
|
|
|
+ Quantity = Convert.ToDecimal(applyEnterQuantity),//input.EnterStoreQuantity,
|
|
|
ActualQuantity = 0,
|
|
|
AuditDate = Clock.Now,
|
|
|
AuditUser = AbpSession.UserName,
|
|
|
@@ -994,10 +1060,64 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
Remark = input.Remark,
|
|
|
StoreHouseId = input.StoreHouseId,
|
|
|
KgWeight = input.KgWeight,
|
|
|
+ CreateSourceType = hasExcessiveIn ? CreateSourceType.ExcessiveIn.ToInt(): CreateSourceType.Normal.ToInt(),//超额申请的部分
|
|
|
};
|
|
|
- await SemiEnterStoreRepository.InsertAsync(entity);
|
|
|
+ await SemiEnterStoreRepository.InsertAsync(enter);
|
|
|
+ BusinessLogTypeEnum.SStore.WriteLog(LogRepository, "半成品入库",
|
|
|
+ $"创建半成品入库申请[{entity.Id}],信息为:[{input.Obj2String()}]",
|
|
|
+ $"批次号:{entity.ProductionOrderNo},创建入库申请");
|
|
|
+ var result = ObjectMapper.Map<SemiEnterStoreDto>(enter);
|
|
|
+ //result.ErrorMsg = errMsg;
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 半成品入库申请
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="input"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [AbpAuthorize(PermissionNames.PagesProductionInfoProductionOrderMgUpdate), AuditLog("创建入库申请")]
|
|
|
+ public async Task<SemiEnterStoreDto> CreateEnterStoreApply(CreateEnterStoreApplyDto input)
|
|
|
+ {
|
|
|
+ string errMsg = "";
|
|
|
+ var loProductionOrder = await Repository.FirstOrDefaultAsync(a => a.Id == input.Id);
|
|
|
+ //取消超额入库的申请限制
|
|
|
+ // if (!CheckEnterStoreQuantity(loProductionOrder, input.EnterStoreQuantity, input.KgWeight))
|
|
|
+ // {
|
|
|
+ // //CheckErrors(IwbIdentityResult.Failed("申请中数量+成功入库数量, 不能大于等于排产单计划总数量的上限数量!"));
|
|
|
+ // errMsg = "申请中数量+成功入库数量, 已经大于等于排产单计划总数量的上限数量!";
|
|
|
+ // }
|
|
|
+ loProductionOrder.ProductionOrderStatus = ProductionOrderStatusEnum.Storeing.ToInt();
|
|
|
+ loProductionOrder.KgWeight = input.KgWeight;
|
|
|
+ //loProductionOrder.ProductionOrderStatus = ProductionOrderStatusEnum.Producting.ToInt();
|
|
|
+ // var applySource = loProductionOrder.ProcessingLevel == "1"
|
|
|
+ // ? (loProductionOrder.ProductionType == "0"
|
|
|
+ // ? EnterStoreApplySourceEnum.InnerCar
|
|
|
+ // : EnterStoreApplySourceEnum.Out)
|
|
|
+ // : EnterStoreApplySourceEnum.OutProduct;
|
|
|
+ // SemiEnterStore entity = new SemiEnterStore
|
|
|
+ // {
|
|
|
+ // ApplyEnterDate = Clock.Now,
|
|
|
+ // ApplySource =applySource.ToInt().ToString(),
|
|
|
+ // ApplyStatus = EnterStoreApplyStatusEnum.Applying.ToInt().ToString(),
|
|
|
+ // ProductionOrderNo = loProductionOrder.ProductionOrderNo,
|
|
|
+ // SemiProductNo = loProductionOrder.SemiProductNo,
|
|
|
+ // Quantity = input.EnterStoreQuantity,
|
|
|
+ // ActualQuantity = 0,
|
|
|
+ // AuditDate = Clock.Now,
|
|
|
+ // AuditUser = AbpSession.UserName,
|
|
|
+ // TimeCreated = Clock.Now,
|
|
|
+ // CreatorUserId = AbpSession.UserName,
|
|
|
+ // TimeLastMod = Clock.Now,
|
|
|
+ // UserIDLastMod = AbpSession.UserName,
|
|
|
+ // Remark = input.Remark,
|
|
|
+ // StoreHouseId = input.StoreHouseId,
|
|
|
+ // KgWeight = input.KgWeight,
|
|
|
+ // };
|
|
|
+ //await SemiEnterStoreRepository.InsertAsync(entity);
|
|
|
+ var result = await SemiEnterApplyCreate(loProductionOrder, input);
|
|
|
if (loProductionOrder.ProductionType == "0" &&
|
|
|
- input.ProductUser != null && input.ProductUser.Any())
|
|
|
+ input.ProductUser != null && input.ProductUser.Any())
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(input.CarNo))
|
|
|
{
|
|
|
@@ -1007,21 +1127,15 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
{
|
|
|
loProductionOrder.CarNo = input.CarNo;
|
|
|
}
|
|
|
- else if (input.CarNo!=loProductionOrder.CarNo)
|
|
|
+ else if (input.CarNo != loProductionOrder.CarNo)
|
|
|
{
|
|
|
CheckErrors(IwbIdentityResult.Failed("车号与上一次入库不一致,请检查后再试。"));
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
await CreateProductionLog(input, loProductionOrder.ProductionOrderNo);
|
|
|
|
|
|
}
|
|
|
|
|
|
await Repository.UpdateAsync(loProductionOrder);
|
|
|
- BusinessLogTypeEnum.SStore.WriteLog(LogRepository, "半成品入库",
|
|
|
- $"创建半成品入库申请[{entity.Id}],信息为:[{input.Obj2String()}]",
|
|
|
- entity.ProductionOrderNo);
|
|
|
- var result = ObjectMapper.Map<SemiEnterStoreDto>(entity);
|
|
|
result.ErrorMsg = errMsg;
|
|
|
return result;
|
|
|
}
|
|
|
@@ -1223,7 +1337,7 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
{
|
|
|
|
|
|
var entity = await SemiEnterStoreRepository.FirstOrDefaultAsync(a => a.Id == input.Id);
|
|
|
- #region 增加入口数量限制检验
|
|
|
+ //#region 增加入口数量限制检验
|
|
|
//var productOrder = Repository.FirstOrDefault(i => i.ProductionOrderNo == entity.ProductionOrderNo);
|
|
|
//if (productOrder != null)
|
|
|
//{
|
|
|
@@ -1235,7 +1349,7 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
// CheckErrors(IwbIdentityResult.Failed("申请中数量+成功入库数量, 不能大于等于排产单计划总数量的上限数量!"));
|
|
|
// }
|
|
|
//}
|
|
|
- #endregion
|
|
|
+ //#endregion
|
|
|
entity.Quantity = input.Quantity;
|
|
|
entity.KgWeight = input.KgWeight;
|
|
|
await SemiEnterStoreRepository.UpdateAsync(entity);
|
|
|
@@ -2377,6 +2491,36 @@ namespace ShwasherSys.ProductionOrderInfo
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+
|
|
|
+ #region 2025修改千件重限制以及半成品入库逻辑变更
|
|
|
+
|
|
|
+ public async Task<ProductionOrderDto> UpdateKgWeight(ProductionOrderKgWeightDto input)
|
|
|
+ {
|
|
|
+ var entity = await Repository.GetAsync(input.Id);
|
|
|
+ if (entity == null)
|
|
|
+ {
|
|
|
+ CheckErrors(IdentityResult.Failed("为查询到相应的排产单!"));
|
|
|
+ }
|
|
|
+ var status = entity?.ProductionOrderStatus ;
|
|
|
+ if (status > ProductionOrderStatusEnum.Producting.ToInt() && status != ProductionOrderStatusEnum.HangUp.ToInt() && status != ProductionOrderStatusEnum.Audited.ToInt() && entity.IsChecked == 0)
|
|
|
+ {
|
|
|
+ CheckErrors(IwbIdentityResult.Failed("排产单已进行入库,不可进行更改!"));
|
|
|
+ }
|
|
|
+ if (input.KgWeight <= 0)
|
|
|
+ {
|
|
|
+ CheckErrors(IwbIdentityResult.Failed("千件重必须大于0!"));
|
|
|
+ }
|
|
|
+
|
|
|
+ var preKgWeight = entity.KgWeight;
|
|
|
+ entity.KgWeight = input.KgWeight;
|
|
|
+ entity = await Repository.UpdateAsync(entity);
|
|
|
+ BusinessLogTypeEnum.SStore.WriteLog(LogRepository, "半产品排产单千件重变更",
|
|
|
+ $"修改外协排产单[{entity.Id}],信息为:[{entity.Obj2String()}]",
|
|
|
+ $"编号{entity.ProductionOrderNo},原千件重{preKgWeight},变更为{input.KgWeight}", "");
|
|
|
+
|
|
|
+ return MapToEntityDto(entity);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|
|
|
|