diff --git a/src/WMS.Web.Api/Controllers/OutStockController.cs b/src/WMS.Web.Api/Controllers/OutStockController.cs
index b9a86961..ae68fd50 100644
--- a/src/WMS.Web.Api/Controllers/OutStockController.cs
+++ b/src/WMS.Web.Api/Controllers/OutStockController.cs
@@ -52,6 +52,24 @@ namespace WMS.Web.Api.Controllers
return result;
}
+ ///
+ /// 获取详情
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("GetInfo/{id}")]
+ public async Task> GetInfo([FromRoute] int id)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var response = await _repositories.GetInfo(id);
+ return Result.ReSuccess(response);
+ }
+
+
///
/// 出库保存(出库)-PDA
///
@@ -80,7 +98,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
- return await _outStockService.Sync(dto);
+ return await _outStockService.Sync(dto, loginInfo);
}
}
}
diff --git a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
index 63798774..e12f0c28 100644
--- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
+++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
@@ -67,7 +67,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
- return await _outStockTaskService.Repeal(dto,loginInfo);
+ return await _outStockTaskService.Repeal(dto, loginInfo);
}
///
@@ -99,10 +99,25 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return ResultList.ReFailure(ResultCodes.Token_Invalid_Error);
- var res= await _repositories.GetOutStockTaskByNo(billNo);
+ var res = await _repositories.GetOutStockTaskByNo(billNo);
if (res == null) return ResultList.ReFailure(ResultCodes.OutStockTaskNoData);
return ResultList.ReSuccess(res);
}
+ ///
+ /// 刷新金蝶数据
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("Refresh")]
+ public async Task Refresh(OperateStrRequest dto)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ return await _outStockTaskService.Ssyn(dto.Ids);
+ }
}
}
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
index 5940d92e..3cb696f0 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
@@ -218,6 +218,13 @@
+
+
+ 获取详情
+
+
+
+
出库保存(出库)-PDA
@@ -265,6 +272,13 @@
+
+
+ 刷新金蝶数据
+
+
+
+
系统配置
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 1b8a2f33..300f309f 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -2395,6 +2395,11 @@
操作 Id集合
+
+
+ 操作 string集合
+
+
老ops箱信息请求
@@ -2695,6 +2700,31 @@
仓库编码
+
+
+ 出库单详情
+
+
+
+
+ 创建人
+
+
+
+
+ 操作人
+
+
+
+
+ 创建时间(出库时间)
+
+
+
+
+ 同步时间
+
+
出库列表详情
@@ -2775,6 +2805,11 @@
出库数量
+
+
+ 备注
+
+
出库单列表请求
@@ -3045,16 +3080,21 @@
物料ID
-
+
仓库ID
-
+
仓位ID
+
+
+ 子仓库(跟金蝶交互字段)
+
+
盘点前数量(wms系统数量)
@@ -3120,6 +3160,11 @@
仓位
+
+
+ 子仓库
+
+
盘点前数量(wms系统数量)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 6c5d079d..cf9938ee 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -742,6 +742,11 @@
创建人
+
+
+ 操作人
+
+
创建时间(出库时间)
@@ -752,6 +757,16 @@
同步成功或者失败 null 就是未同步
+
+
+ 同步时间
+
+
+
+
+ 备注
+
+
明细
@@ -763,6 +778,12 @@
+
+
+ 同步金蝶
+
+
+
生成单据号
@@ -2442,7 +2463,7 @@
-
+
同步金蝶
diff --git a/src/WMS.Web.Core/Dto/OperateRequest.cs b/src/WMS.Web.Core/Dto/OperateRequest.cs
index 1d8ba550..b3afdd03 100644
--- a/src/WMS.Web.Core/Dto/OperateRequest.cs
+++ b/src/WMS.Web.Core/Dto/OperateRequest.cs
@@ -19,4 +19,11 @@ namespace WMS.Web.Core.Dto
{
public List Ids { get; set; } = new List();
}
+ ///
+ /// 操作 string集合
+ ///
+ public class OperateStrRequest
+ {
+ public List Ids { get; set; } = new List();
+ }
}
diff --git a/src/WMS.Web.Core/Dto/OutStock/OutStockInfoResponse.cs b/src/WMS.Web.Core/Dto/OutStock/OutStockInfoResponse.cs
new file mode 100644
index 00000000..99c491c1
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/OutStock/OutStockInfoResponse.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.OutStock
+{
+ ///
+ /// 出库单详情
+ ///
+ public class OutStockInfoResponse
+ {
+ ///
+ /// 创建人
+ ///
+ public string Creator { get; set; }
+ ///
+ /// 操作人
+ ///
+ public string Operate { get; set; }
+ ///
+ /// 创建时间(出库时间)
+ ///
+ public string CreateTime { get; set; }
+ ///
+ /// 同步时间
+ ///
+ public string SyncTime { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/OutStock/OutStockQueryInfoResponse.cs b/src/WMS.Web.Core/Dto/OutStock/OutStockQueryInfoResponse.cs
index 31bb7f9f..db89a365 100644
--- a/src/WMS.Web.Core/Dto/OutStock/OutStockQueryInfoResponse.cs
+++ b/src/WMS.Web.Core/Dto/OutStock/OutStockQueryInfoResponse.cs
@@ -70,5 +70,9 @@ namespace WMS.Web.Core.Dto.OutStock
/// 出库数量
///
public decimal Qty { get; set; }
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; }
}
}
diff --git a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs
index 4e863ae8..53f71c33 100644
--- a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs
+++ b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs
@@ -24,12 +24,16 @@ namespace WMS.Web.Core.Dto.TakeStock
/// 仓库ID
///
[Required(ErrorMessage = "仓库不能为空")]
- public int StockId { get; set; }
+ public string StockCode { get; set; }
///
/// 仓位ID
///
[Required(ErrorMessage = "仓位不能为空")]
- public int SubStockId { get; set; }
+ public string SubStockCode { get; set; }
+ ///
+ /// 子仓库(跟金蝶交互字段)
+ ///
+ public string Erp_SubStockCode { get; set; }
///
/// 盘点前数量(wms系统数量)
///
diff --git a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs
index 8d092964..dee0857a 100644
--- a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs
+++ b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs
@@ -42,6 +42,10 @@ namespace WMS.Web.Core.Dto.TakeStock
///
public string SubStock { get; set; }
///
+ /// 子仓库
+ ///
+ public string Erp_SubStockCode { get; set; }
+ ///
/// 盘点前数量(wms系统数量)
///
public decimal BeforeQty { get; set; }
diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs
index e9a7d6ef..a13afe31 100644
--- a/src/WMS.Web.Domain/Entitys/OutStock.cs
+++ b/src/WMS.Web.Domain/Entitys/OutStock.cs
@@ -56,6 +56,11 @@ namespace WMS.Web.Domain.Entitys
[Column("CreatorId")]
public int CreatorId { get; set; }
///
+ /// 操作人
+ ///
+ [Column("OperateId")]
+ public int OperateId { get; set; }
+ ///
/// 创建时间(出库时间)
///
[Column("CreateTime")]
@@ -66,6 +71,16 @@ namespace WMS.Web.Domain.Entitys
[Column("SuccessSync")]
public bool? SuccessSync { get; set; }
///
+ /// 同步时间
+ ///
+ [Column("SyncTime")]
+ public DateTime? SyncTime { get; set; }
+ ///
+ /// 备注
+ ///
+ [Column("Remark")]
+ public string Remark { get; set; }
+ ///
/// 明细
///
public List Details = new List();
@@ -82,7 +97,17 @@ namespace WMS.Web.Domain.Entitys
this.CreatorId = creatorId;
this.CreateTime = DateTime.Now;
}
-
+ ///
+ /// 同步金蝶
+ ///
+ ///
+ public void Sync(bool isSuccess, int operateId,string remark)
+ {
+ this.SuccessSync = isSuccess;
+ this.Remark = remark;
+ this.OperateId = operateId;
+ this.SyncTime = DateTime.Now;
+ }
///
/// 生成单据号
diff --git a/src/WMS.Web.Domain/IService/IOutStockService.cs b/src/WMS.Web.Domain/IService/IOutStockService.cs
index f051c911..872409c8 100644
--- a/src/WMS.Web.Domain/IService/IOutStockService.cs
+++ b/src/WMS.Web.Domain/IService/IOutStockService.cs
@@ -18,7 +18,7 @@ namespace WMS.Web.Domain.IService
//出库单保存
Task Save(SaveOutStockRequest dto, LoginInDto loginInfo);
// 同步金蝶
- Task Sync(OperateRequest dto);
+ Task Sync(OperateRequest dto, LoginInDto loginInfo);
}
}
diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
index 50fcfac9..3d42c2f2 100644
--- a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
@@ -21,5 +21,7 @@ namespace WMS.Web.Domain.Infrastructure
Task> GetEntityList(List ids);
/// 修改实体集合
Task EditEntityList(List entitys, bool isTransaction = true);
+ //获取详情
+ Task GetInfo(int id);
}
}
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index 18ac6157..db05fb70 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -29,9 +29,11 @@ namespace WMS.Web.Domain.Services
private readonly IOutStockRepositories _outStockRepositories;
private readonly IOutStockTaskRepositories _outStockTaskRepositories;
private readonly IOutStockTaskService _outStockTaskService;
+ private readonly IErpService _erpService;
public OutStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories,
- IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService)
+ IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories,
+ IOutStockTaskService outStockTaskService, IErpService erpService)
{
_mapper = mapper;
_loginService = loginService;
@@ -39,6 +41,7 @@ namespace WMS.Web.Domain.Services
_outStockRepositories = outStockRepositories;
_outStockTaskRepositories = outStockTaskRepositories;
_outStockTaskService = outStockTaskService;
+ _erpService = erpService;
}
///
/// 出库单
@@ -95,9 +98,19 @@ namespace WMS.Web.Domain.Services
///
///
///
- public Task Sync(OperateRequest dto)
+ public async Task Sync(OperateRequest dto, LoginInDto loginInfo)
{
- return Task.FromResult(Result.ReSuccess());
+ var list = await _outStockRepositories.GetEntityList(dto.Ids);
+ foreach (var entity in list)
+ {
+ //下推金蝶
+ var res = await _erpService.Push(new Core.Dto.Erp.ErpPushDto() { });
+ entity.Sync(res.IsSuccess, loginInfo.UserInfo.StaffId, res.Message);
+ }
+ var isSuccess = await _outStockRepositories.EditEntityList(list, true);
+ if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
+
+ return Result.ReSuccess();
}
}
}
diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs
index 15813662..922a55e5 100644
--- a/src/WMS.Web.Domain/Services/Public/ErpService.cs
+++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs
@@ -89,9 +89,10 @@ namespace WMS.Web.Domain.Services.Public
///
/// erp:单据查询-采购入库单
///
+ /// 模糊搜索
/// 单据编号集合精确查找
///
- public async Task> BillQueryForPurchaseInStock(List sourceBillNos = null)
+ public async Task> BillQueryForPurchaseInStock(string billNo = "", List sourceBillNos = null)
{
try
{
@@ -121,7 +122,7 @@ namespace WMS.Web.Domain.Services.Public
//3.单据类型:标准采购订单和标准委外订单
//4.明细关闭状态:正常
//5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
- param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and (FBillTypeID='83d822ca3e374b4ab01e5dd46a0062bd' or FBillTypeID='6d01d059713d42a28bb976c90a121142') and FMRPCloseStatus='A'";
+ param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and (FBillTypeID='83d822ca3e374b4ab01e5dd46a0062bd' or FBillTypeID='6d01d059713d42a28bb976c90a121142') and FMRPCloseStatus='A'";
param.FilterString = param.FilterString + " and FSOSTOCKID.FNumber in (";
var str = "";
@@ -136,6 +137,12 @@ namespace WMS.Web.Domain.Services.Public
}
param.FilterString = param.FilterString + str + ")";
+ //单据编号模糊查询
+ if (!string.IsNullOrEmpty(billNo))
+ {
+ param.FilterString = param.FilterString + " and FBillNo like '%" + billNo + "%'";
+ }
+
//根据原订单号查询
if (sourceBillNos != null && sourceBillNos.Count() > 0)
{
@@ -265,7 +272,7 @@ namespace WMS.Web.Domain.Services.Public
return ResultList.ReFailure(ResultCodes.ErpMaterialError);
}
-
+
}
@@ -544,34 +551,46 @@ namespace WMS.Web.Domain.Services.Public
{
try
{
- var token_result = await this.Init();
- if (!token_result.IsSuccess)
- return ResultList.ReFailure(token_result);
- var query = new ErpBillQueryDto(token_result.Data);
- var param = new ErpBillQueryParamDto(FormIdParam.BD_STOCK.ToString());
- param.FieldKeys = "FStockFlexDetail_FDetailID,FFlexEntryName,FFlexEntryId,'0'";
- param.Limit = 100000;
- if (!string.IsNullOrEmpty(code))
- param.FilterString = "FNumber='" + code + "'";//FNumber='C'
- query.Data = JsonConvert.SerializeObject(param);
- var json = JsonConvert.SerializeObject(query);
-
- var result_json = await _client.ExecuteBillQueryAsync(json);
- var result = JsonConvert.DeserializeObject>>(result_json);
-
- var list = new List();
- foreach (var item in result)
+ //1.获取缓存中的仓库数据;
+ var cache_key = "erp_substock_list";
+ var stocks = _memoryCache.Get>(cache_key);
+ if (stocks == null || stocks.Count == 0)
{
- var lis = new ErpStockDto();
- lis.Id = int.Parse(item[0]);
- lis.Name = item[1];
- lis.Code = item[2];
- lis.OrgId = Convert.ToInt32(item[3]);
- list.Add(lis);
+ var token_result = await this.Init();
+ if (!token_result.IsSuccess)
+ return ResultList.ReFailure(token_result);
+ var query = new ErpBillQueryDto(token_result.Data);
+ var param = new ErpBillQueryParamDto(FormIdParam.BD_STOCK.ToString());
+ param.FieldKeys = "FStockFlexDetail_FDetailID,FFlexEntryName,FFlexEntryId,'0'";
+ param.Limit = 100000;
+ if (!string.IsNullOrEmpty(code))
+ param.FilterString = "FNumber='" + code + "'";//FNumber='C'
+ query.Data = JsonConvert.SerializeObject(param);
+ var json = JsonConvert.SerializeObject(query);
+ var result_json = await _client.ExecuteBillQueryAsync(json);
+ var result = JsonConvert.DeserializeObject>>(result_json);
+
+ var list = new List();
+ foreach (var item in result)
+ {
+ var lis = new ErpStockDto();
+ lis.Id = int.Parse(item[0]);
+ lis.Name = item[1];
+ lis.Code = item[2];
+ lis.OrgId = Convert.ToInt32(item[3]);
+ list.Add(lis);
+
+ }
+ //5.供应商集合进行缓存
+ _memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12)));
+ _logger.LogInformation($"子仓库拉取-总条数:{list.Count}");
+ return ResultList.ReSuccess(list);
+ }
+ else
+ {
+ return ResultList.ReSuccess(stocks);
}
- return ResultList.ReSuccess(list);
-
}
catch (Exception)
{
@@ -1082,7 +1101,7 @@ namespace WMS.Web.Domain.Services.Public
}
}
-
+
#endregion
}
diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs
index 132463ab..311988da 100644
--- a/src/WMS.Web.Repositories/OutStockRepositories.cs
+++ b/src/WMS.Web.Repositories/OutStockRepositories.cs
@@ -169,7 +169,8 @@ namespace WMS.Web.Repositories
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.detail.MaterialId),
MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, s.detail.MaterialId),
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialId),
- Qty = s.detail.Qty
+ Qty = s.detail.Qty,
+ Remark = s.order.Remark
#endregion
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
@@ -272,5 +273,24 @@ namespace WMS.Web.Repositories
return res.Clone();
}
+ ///
+ /// 获取详情
+ ///
+ ///
+ ///
+ public async Task GetInfo(int id)
+ {
+ var res = await _context.OutStock
+ .FirstOrDefaultAsync(f => id == f.Id);
+ if (res == null) return null;
+ OutStockInfoResponse response = new OutStockInfoResponse()
+ {
+ CreateTime = res.CreateTime.DateToStringSeconds(),
+ SyncTime = res.SyncTime.DateToStringSeconds(),
+ Creator = _singleDataService.GetSingleData(SingleAction.Staffs, _loginRepositories.CompanyId, res.CreatorId),
+ Operate = _singleDataService.GetSingleData(SingleAction.Staffs, _loginRepositories.CompanyId, res.OperateId)
+ };
+ return response;
+ }
}
}
diff --git a/src/WMS.Web.Repositories/SerialNumberOperateRepositories.cs b/src/WMS.Web.Repositories/SerialNumberOperateRepositories.cs
index a458bc4b..bd311b89 100644
--- a/src/WMS.Web.Repositories/SerialNumberOperateRepositories.cs
+++ b/src/WMS.Web.Repositories/SerialNumberOperateRepositories.cs
@@ -39,7 +39,7 @@ namespace WMS.Web.Repositories
_transaction.Commit();
return true;
}
- catch
+ catch (Exception ex)
{
if (_transaction != null)
_transaction.Rollback();
diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs
index 5e6c6526..114b7707 100644
--- a/src/WMS.Web.Repositories/TakeStockRepositories.cs
+++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs
@@ -166,6 +166,11 @@ namespace WMS.Web.Repositories
if (!materials_result.IsSuccess)
return (new List(), 0);
var materials = materials_result.Data.ToList();
+ //金蝶子仓库
+ var subStock_result = await _erpService.BillQueryForSubStock();
+ if (!subStock_result.IsSuccess)
+ return (new List(), 0);
+ var subStocks = subStock_result.Data.ToList();
var query = _context.TakeStock
//.GroupJoin(_context.TakeStock, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
@@ -193,6 +198,7 @@ namespace WMS.Web.Repositories
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.MaterialId),
Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.StockCode),
SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.SubStockCode),
+ Erp_SubStockCode= _erpBasicDataExtendService.GetStockName(subStocks, s.Erp_SubStockCode),
BeforeQty = s.BeforeQty,
AfterQty = s.AfterQty,
FinalQty = s.FinalQty,