diff --git a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
index ecc5af53..001176af 100644
--- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
+++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
@@ -196,8 +196,12 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ DateTime begin = DateTime.Now.AddDays(-3);//默认拉去三天以内的数据
var res = await _repositories.GetEntityList(dto.Ids);
- return await _outStockTaskService.Sync(res.Select(s => s.BillNo).ToList());
+ //先刷新选中的数据
+ await _outStockTaskService.Sync(res.Select(s => s.BillNo).ToList());
+ //再刷新3天内所有的
+ return await _outStockTaskService.Sync(null, begin);
}
}
}
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 84b8a44c..80086bd1 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -176,6 +176,14 @@
+
+
+ 出库
+
+
+
+
+
老ops箱信息明细
@@ -3614,11 +3622,12 @@
-
+
同步金蝶数据 不传源订单号则更新所有
+
@@ -4318,6 +4327,14 @@
+
+
+ 出库
+
+
+
+
+
列表页导出
@@ -4714,7 +4731,7 @@
-
+
同步金蝶数据 不传源订单号则更新所有
diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs
index a381663f..2c8f391e 100644
--- a/src/WMS.Web.Domain/Entitys/Box.cs
+++ b/src/WMS.Web.Domain/Entitys/Box.cs
@@ -146,5 +146,19 @@ namespace WMS.Web.Domain.Entitys
return Result.ReSuccess();
}
+ ///
+ /// 出库
+ ///
+ ///
+ ///
+ ///
+ public Result OutStock(int materialId, decimal qty)
+ {
+ var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
+ if (d != null)
+ d.Qty = (d.Qty - qty) > 0 ? (d.Qty - qty) : 0;
+
+ return Result.ReSuccess();
+ }
}
}
diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
index efe25e22..52daf3c2 100644
--- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
@@ -25,6 +25,8 @@ namespace WMS.Web.Domain.IService
Task ChangeBox_BackRecord(BackRecord BackRecord, LoginInDto loginInfo, bool isTransaction = true);
//非采购入库
Task ChangeBox_InStock(InStock InStocks, LoginInDto loginInfo, bool isTransaction = true);
+ //出库
+ Task ChangeBox_OutStock(OutStock outStock, bool isTransaction = true);
}
}
diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
index e6a8cf98..6e492436 100644
--- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
+++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
@@ -53,7 +53,8 @@ namespace WMS.Web.Domain.IService.Public
/// 同步金蝶数据 不传源订单号则更新所有
///
///
+ ///
///
- Task Sync(List billNos = null);
+ Task Sync(List billNos = null,DateTime? begin=null);
}
}
diff --git a/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs
index 93ad5c1f..3cc9c1c3 100644
--- a/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs
+++ b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs
@@ -47,8 +47,10 @@ namespace WMS.Web.Domain.QuartzJob
//2.记录:开始时间
var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
_logger.LogInformation($"出库单-同步金蝶出库单数据:执行开始时间->{begindatetime}");
+
+ DateTime begin = DateTime.Now.AddDays(-3);//默认拉去一天以内的数据
//3.同步数据
- var result = await _outStockTaskService.Sync(null);
+ var result = await _outStockTaskService.Sync(null, begin);
//5.记录:结束时间
var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
_logger.LogInformation($"出库单-同步金蝶出库单数据:执行结束时间->{begindatetime}");
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
index 43d0f269..44fdf1a1 100644
--- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -427,5 +427,47 @@ namespace WMS.Web.Domain.Services
return await ChangeBoxSave(dtoList, loginInfo, isTransaction, false);
}
+ ///
+ /// 出库
+ ///
+ ///
+ ///
+ ///
+ public async Task ChangeBox_OutStock(OutStock outStock, bool isTransaction = true)
+ {
+ if (outStock.Method == InventoryInOutMethod.Box) return Result.ReSuccess();
+ List dtoList = new List();
+ var boxDetails = outStock.Details.SelectMany(s => s.BoxsDetails);
+ var boxIds = boxDetails.Select(s => s.BoxId).Distinct().ToList();
+ var boxs = await _boxRepositories.GetEntityList(boxIds);
+ foreach (var d in outStock.Details)
+ {
+ foreach (var db in d.BoxsDetails)
+ {
+ var box = boxs.FirstOrDefault(f => f.Id == db.BoxId);
+ if (box == null) continue;
+ box.OutStock(d.MaterialId, db.Qty);
+ }
+ }
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _basbicsRepositories.GetTransaction();
+ Result res_Rollback = Result.ReSuccess();
+ bool isSuccess = true;
+ if (res_Rollback.IsSuccess)
+ {
+ isSuccess = await _boxRepositories.EditEntityList(boxs, false);
+ if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
+ }
+ //提交事务
+ if (isTransaction)
+ {
+ isSuccess = _basbicsRepositories.CommitTransaction(res_Rollback.IsSuccess ? false : true, _transaction);
+ if (!res_Rollback.IsSuccess) return res_Rollback;
+ if (!isSuccess)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+ }
+ return Result.ReSuccess();
+ }
}
}
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index e25d90e9..fc4b3d81 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -48,13 +48,15 @@ namespace WMS.Web.Domain.Services
private readonly ISingleDataService _singleDataService;
private readonly IServiceScopeFactory _serviceScopeFactory;
private readonly IInStockTaskBoxService _inStockTaskService;
+ private readonly IChangeMoveBoxService _changeMoveBoxService;
public OutStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories,
IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories,
IOutStockTaskService outStockTaskService, IErpService erpService, ISerialNumberService serialNumberService,
IBoxInventoryService boxInventoryService, IInventoryInOutDetailsService inventoryInOutDetailsService,
IBoxInventoryRepositories boxInventoryRepositories, ILogger logger, IBoxRepositories boxRepositories,
- ISingleDataService singleDataService, IServiceScopeFactory serviceScopeFactory, IInStockTaskBoxService inStockTaskService)
+ ISingleDataService singleDataService, IServiceScopeFactory serviceScopeFactory, IInStockTaskBoxService inStockTaskService,
+ IChangeMoveBoxService changeMoveBoxService)
{
_mapper = mapper;
_loginService = loginService;
@@ -72,6 +74,7 @@ namespace WMS.Web.Domain.Services
_singleDataService = singleDataService;
_serviceScopeFactory = serviceScopeFactory;
_inStockTaskService = inStockTaskService;
+ _changeMoveBoxService = changeMoveBoxService;
}
///
/// 出库单
@@ -195,6 +198,11 @@ namespace WMS.Web.Domain.Services
if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory;
}
if (res_Rollback.IsSuccess)
+ {
+ var res_changeMoveBox = await _changeMoveBoxService.ChangeBox_OutStock(entity, false);
+ if (!res_changeMoveBox.IsSuccess) res_Rollback = res_changeMoveBox;
+ }
+ if (res_Rollback.IsSuccess)
{
boxIds = entity.Details.SelectMany(s => s.BoxsDetails).Select(s => s.BoxId).ToList();
var res_InStockTask = await _inStockTaskService.UnBind(boxIds, false);
diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
index c579662d..692d3058 100644
--- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
@@ -285,7 +285,7 @@ namespace WMS.Web.Domain.Services
///
///
///
- public async Task Sync(List billNos = null)
+ public async Task Sync(List billNos = null, DateTime? begin = null)
{
//1.事务
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
@@ -296,8 +296,7 @@ namespace WMS.Web.Domain.Services
if (billNos == null)
{
//DateTime begin = await _erpOpsSyncDateRepositories.Get(ErpOpsSyncType.OutStock);
- DateTime begin = Convert.ToDateTime("2024-03-01 00:00:00");//正式环境 从3月1好开始
- if (DateTime.Now > Convert.ToDateTime("2024-03-04 00:00:00"))
+ if (begin == null)
begin = DateTime.Now.AddDays(-3);//默认拉去三天以内的数据
//更新时间范围内所有
result = await BillQueryForSalOutStock(false, null, begin);
diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs
index daa41e58..3f5a2085 100644
--- a/src/WMS.Web.Domain/Services/Public/ErpService.cs
+++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs
@@ -1609,8 +1609,8 @@ namespace WMS.Web.Domain.Services.Public
//3.未出库数量>0
//4.日期>=系统上线之日
//5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
- //6.物料 物料属性=费用或资产的排除 不拉取
- param.FilterString = "FDocumentStatus='C' and FRemainOutQty>=0 and FMaterialID.FERPCLSID not in (10,11)";
+ //6.物料 物料属性=费用或资产或服务的排除 不拉取
+ param.FilterString = "FDocumentStatus='C' and FRemainOutQty>=0 and FMaterialID.FERPCLSID not in (10,11,6)";
//param.FilterString += " and FStockID.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FDeliveryOrgID.FNumber in (" + stocks_orgs + ")";
for (int i = 0; i < stocks.Count(); i++)
@@ -1703,8 +1703,8 @@ namespace WMS.Web.Domain.Services.Public
//2.审核状态:已审核
//3.单据类型:标准
//5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
- //6.物料 物料属性=费用或资产的排除 不拉取
- param.FilterString = "FDocumentStatus='C' and FBillTypeID='ce8f49055c5c4782b65463a3f863bb4a' and FMaterialID.FERPCLSID not in (10,11)";
+ //6.物料 物料属性=费用或资产或服务的排除 不拉取
+ param.FilterString = "FDocumentStatus='C' and FBillTypeID='ce8f49055c5c4782b65463a3f863bb4a' and FMaterialID.FERPCLSID not in (10,11,6)";
//string srt = JsonConvert.SerializeObject(stocks_codes);
//param.FilterString += " and FSrcStockId.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FStockOutOrgId.FNumber in (" + stocks_orgs + ")";
@@ -1796,8 +1796,8 @@ namespace WMS.Web.Domain.Services.Public
//2.审核状态:已审核
//3.单据类型:标准
//4.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
- //6.物料 物料属性=费用或资产的排除 不拉取
- param.FilterString = "FDocumentStatus='C' and FBillTypeID='de3bcacc98434ec68a358aa5abcd9183' and FMaterialID.FERPCLSID not in (10,11)";
+ //6.物料 物料属性=费用或资产或服务的排除 不拉取
+ param.FilterString = "FDocumentStatus='C' and FBillTypeID='de3bcacc98434ec68a358aa5abcd9183' and FMaterialID.FERPCLSID not in (10,11,6)";
//string srt = JsonConvert.SerializeObject(stocks_codes);
//param.FilterString += " and FSrcStockID.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FStockOrgID.FNumber in (" + stocks_orgs + ")";
@@ -1889,8 +1889,8 @@ namespace WMS.Web.Domain.Services.Public
//2.审核状态:已审核
//3.单据类型:标准
//4.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID
- //6.物料 物料属性=费用或资产的排除 不拉取
- param.FilterString = "FDocumentStatus='C' and FAffairType='Dassembly' and FBillTypeID='3441ac133848446f824d0ab760c8b3c7' and FMaterialID.FERPCLSID not in (10,11)";
+ //6.物料 物料属性=费用或资产或服务的排除 不拉取
+ param.FilterString = "FDocumentStatus='C' and FAffairType='Dassembly' and FBillTypeID='3441ac133848446f824d0ab760c8b3c7' and FMaterialID.FERPCLSID not in (10,11,6)";
//string srt = JsonConvert.SerializeObject(stocks_codes);
//param.FilterString += " and FStockID.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FStockOrgId.FNumber in (" + stocks_orgs + ")";
@@ -1982,8 +1982,8 @@ namespace WMS.Web.Domain.Services.Public
//2.审核状态:已审核
//3.单据类型:标准
//4.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
- //6.物料 物料属性=费用或资产的排除 不拉取
- param.FilterString = "FDocumentStatus='C' and FBillTypeID='54533291F9A44D38809F70000499BEE9' and FMaterialID.FERPCLSID not in (10,11)";
+ //6.物料 物料属性=费用或资产或服务的排除 不拉取
+ param.FilterString = "FDocumentStatus='C' and FBillTypeID='54533291F9A44D38809F70000499BEE9' and FMaterialID.FERPCLSID not in (10,11,6)";
//string srt = JsonConvert.SerializeObject(stocks_codes);
//param.FilterString += " and FStockId.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FStockOrgId.FNumber in (" + stocks_orgs + ")";
@@ -2075,8 +2075,8 @@ namespace WMS.Web.Domain.Services.Public
//2.审核状态:已审核
//3.单据类型:标准
//4.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID
- //6.物料 物料属性=费用或资产的排除 不拉取
- param.FilterString = "FDocumentStatus='C' and FAffairType='Assembly' and FBillTypeID='3441ac133848446f824d0ab760c8b3c7' and FMaterialID.FERPCLSID not in (10,11)";
+ //6.物料 物料属性=费用或资产或服务的排除 不拉取
+ param.FilterString = "FDocumentStatus='C' and FAffairType='Assembly' and FBillTypeID='3441ac133848446f824d0ab760c8b3c7' and FMaterialID.FERPCLSID not in (10,11,6)";
//string srt = JsonConvert.SerializeObject(stocks_codes);
//param.FilterString += " and FStockIDSETY.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FStockOrgId.FNumber in (" + stocks_orgs + ")";
@@ -2174,8 +2174,8 @@ namespace WMS.Web.Domain.Services.Public
//2.审核状态:已审核
//4.日期>=系统上线之日
//5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
- //6.物料 物料属性=费用或资产的排除 不拉取
- param.FilterString = "FDocumentStatus='C' and FMaterialID.FERPCLSID not in (10,11)";
+ //6.物料 物料属性=费用或资产或服务的排除 不拉取
+ param.FilterString = "FDocumentStatus='C' and FMaterialID.FERPCLSID not in (10,11,6)";
//param.FilterString += " and FStockID.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FDeliveryOrgID.FNumber in (" + stocks_orgs + ")";
for (int i = 0; i < stocks.Count(); i++)