From 016e980978f787ea73c059d8071ba97c029b0b43 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 16 Nov 2023 14:44:13 +0800
Subject: [PATCH 1/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=AA=E5=AE=8C?=
=?UTF-8?q?=E6=88=90=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs | 10 ++++++++--
src/WMS.Web.Domain/Services/OutStockService.cs | 1 +
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
index 08b58e1e..dc898bf0 100644
--- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -48,6 +48,8 @@ namespace WMS.Web.Domain.Services
///
public async Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction = false)
{
+ //1.有原箱时 需要判断 物料对应的序列号是否存在
+
List boxList = new List();
//原箱有可能没有
var srcBox = await _boxRepositories.Get(dto.SrcBoxId);
@@ -70,6 +72,8 @@ namespace WMS.Web.Domain.Services
if (destBox != null)
boxList.Add(destBox);
+ //2.修改库存时需要区别 有原箱和没有原箱的情况
+
//var entity = _mapper.Map(dto);\
List list = new List();
foreach (var d in dto.Details)
@@ -111,6 +115,8 @@ namespace WMS.Web.Domain.Services
///
public async Task MoveBoxSave(List dto, bool IsUp, LoginInDto loginInfo)
{
+ //1.下架时 需要验证箱是否在库存里
+
List entityList = new List();
foreach (var d in dto)
{
@@ -118,8 +124,8 @@ namespace WMS.Web.Domain.Services
entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.SubStockId, loginInfo.UserInfo.StaffId);
entityList.Add(entity);
}
- //需要填写规格型号
- //需要修改库存
+
+ //2.需要修改库存
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false;
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index 25b68801..6a5eee49 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -62,6 +62,7 @@ namespace WMS.Web.Domain.Services
var ex = dto.Details.Select(s => s.MaterialId).Except(outStockTask.Details.Select(s => s.MaterialId)).ToList();
if (ex.Count() > 0)
return Result.ReFailure(ResultCodes.OutStockMaterialError);
+ //1.需要验证物料对应箱和序列号是否存在库存
var mIds = dto.Details.GroupBy(g => g.MaterialId).Select(s => s.Key).ToList();
OutStock entity = new OutStock();
From 2617c152524c2581c9e57759972d127649805373 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 16 Nov 2023 15:14:22 +0800
Subject: [PATCH 2/6] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=90=8C=E6=AD=A5?=
=?UTF-8?q?=E9=87=91=E8=9D=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 23 +++++++---
src/WMS.Web.Domain/Entitys/OutStock.cs | 30 +++++++++----
.../Services/OutStockService.cs | 45 ++++++++++++++++---
3 files changed, 78 insertions(+), 20 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index f5967f1d..1b9e261b 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -961,12 +961,12 @@
- 同步成功或者失败 null 就是未同步
+ 同步成功或者失败 默认是失败状态
- 同步失败的源订单号
+ 同步失败的源订单号(默认就包含所有来源单号)
@@ -986,13 +986,19 @@
- 创建
+ 创建(需要在明细都生成后最后调用)
-
+
- 同步金蝶
+ 同步金蝶(成功)
+
+
+
+
+
+ 同步金蝶(失败)
@@ -3334,6 +3340,13 @@
+
+
+ 下推
+
+
+
+
出库任务
diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs
index 0a760543..445afe7b 100644
--- a/src/WMS.Web.Domain/Entitys/OutStock.cs
+++ b/src/WMS.Web.Domain/Entitys/OutStock.cs
@@ -62,12 +62,12 @@ namespace WMS.Web.Domain.Entitys
[Column("CreateTime")]
public DateTime CreateTime { get; set; } = DateTime.Now;
///
- /// 同步成功或者失败 null 就是未同步
+ /// 同步成功或者失败 默认是失败状态
///
[Column("SuccessSync")]
- public bool? SuccessSync { get; set; }
+ public bool SuccessSync { get; set; } = false;
///
- /// 同步失败的源订单号
+ /// 同步失败的源订单号(默认就包含所有来源单号)
///
[Column("SuccessSyncFail")]
public List SuccessSyncFail { get; set; }=new List();
@@ -86,7 +86,7 @@ namespace WMS.Web.Domain.Entitys
///
public List Details = new List();
///
- /// 创建
+ /// 创建(需要在明细都生成后最后调用)
///
///
public void Create(int creatorId, OutStockTask task)
@@ -97,16 +97,28 @@ namespace WMS.Web.Domain.Entitys
this.ReceiptCustomerId = task.ReceiptCustomerId;
this.CreatorId = creatorId;
this.CreateTime = DateTime.Now;
+ this.SuccessSync = false;
+ this.SuccessSyncFail = this.Details.SelectMany(s => s.ErpDetails).GroupBy(g => g.SourceBillNo).Select(s=>s.Key).ToList();
}
///
- /// 同步金蝶
+ /// 同步金蝶(成功)
///
///
- public void Sync(List sourcBilNos, bool isSuccess, int operateId, string remark)
+ public void SyncSuccess(string sourcNos, int operateId)
{
- SuccessSyncFail.AddRange(sourcBilNos);
- SuccessSyncFail.Distinct();
- this.SuccessSync = isSuccess;
+ this.SuccessSyncFail.Remove(sourcNos);
+ this.SuccessSync = true;
+ this.Remark = "";
+ this.OperateId = operateId;
+ this.SyncTime = DateTime.Now;
+ }
+ ///
+ /// 同步金蝶(失败)
+ ///
+ ///
+ public void SyncFail(string remark,int operateId)
+ {
+ this.SuccessSync = false;
this.Remark = remark;
this.OperateId = operateId;
this.SyncTime = DateTime.Now;
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index 6a5eee49..2b11645c 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -6,15 +6,18 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
+using WMS.Web.Core.Dto.Erp;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Dto.OutStock;
using WMS.Web.Core.Dto.TakeStock;
+using WMS.Web.Core.Help;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Values;
+using WMS.Web.Domain.Values.Erp;
namespace WMS.Web.Domain.Services
{
@@ -66,7 +69,6 @@ namespace WMS.Web.Domain.Services
var mIds = dto.Details.GroupBy(g => g.MaterialId).Select(s => s.Key).ToList();
OutStock entity = new OutStock();
- entity.Create(loginInfo.UserInfo.StaffId, outStockTask);
foreach (var mid in mIds)
{
//任务单明细
@@ -91,6 +93,8 @@ namespace WMS.Web.Domain.Services
outd.SerialNumbers.AddRange(dtoDetails.SelectMany(s => s.SerialNumbers));
entity.Details.Add(outd);
}
+ entity.Create(loginInfo.UserInfo.StaffId, outStockTask);
+
//需要填写序列号
//需要修改库存
@@ -123,13 +127,42 @@ namespace WMS.Web.Domain.Services
var list = await _outStockRepositories.GetEntityList(dto.Ids);
foreach (var entity in list)
{
- //下推金蝶
- var res = await _erpService.Push(new Core.Dto.Erp.ErpPushDto() { });
- entity.Sync(new List(), res.IsSuccess, loginInfo.UserInfo.StaffId, res.Message);
+ if (entity.SuccessSync) continue;
+ List failList = entity.SuccessSyncFail.Clone();//同步失败的来源单号
+ //找到单据里需要同步的单据
+ var sourcNos = entity.Details.SelectMany(s => s.ErpDetails).GroupBy(s => s.SourceBillNo).Select(s => s.Key);
+ foreach (var s in failList)
+ {
+ var erp_details = entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.Erp_DetailId).ToList();
+ var erpDto = new ErpPushDto() {
+ FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(),
+ Numbers = new List() { s },
+ DetailsId = string.Join(",", erp_details)
+ };
+ //下推金蝶
+ var res = await this.Push(erpDto);
+ if (res.IsSuccess)
+ entity.SyncSuccess(s, loginInfo.UserInfo.StaffId);
+ else
+ entity.SyncFail(res.Message, loginInfo.UserInfo.StaffId);
+ }
+ entity.SuccessSync = entity.SuccessSyncFail.Count() > 0 ? false : true;
+ //最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
+ var isSuccess = await _outStockRepositories.Edit(entity, true);
+ if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError);
}
- var isSuccess = await _outStockRepositories.EditEntityList(list, true);
- if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
+
+ return Result.ReSuccess();
+ }
+ ///
+ /// 下推
+ ///
+ ///
+ ///
+ private async Task Push(ErpPushDto dto)
+ {
+ var res = await _erpService.Push(dto);
return Result.ReSuccess();
}
}
From 48c79e69f0764c68fb476125c5bb3df45e3dd11c Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 16 Nov 2023 15:15:10 +0800
Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Domain/Services/OutStockService.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index 2b11645c..b7ddaf78 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -137,6 +137,7 @@ namespace WMS.Web.Domain.Services
var erpDto = new ErpPushDto() {
FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(),
Numbers = new List() { s },
+ Type="",
DetailsId = string.Join(",", erp_details)
};
//下推金蝶
From 5583cf1d82b8c6cfb37cec41ae1a31c75f2e97fb Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 16 Nov 2023 15:27:16 +0800
Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Domain/Mappers/AppMapper.cs | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/WMS.Web.Domain/Mappers/AppMapper.cs b/src/WMS.Web.Domain/Mappers/AppMapper.cs
index 5c0cb91e..eb327270 100644
--- a/src/WMS.Web.Domain/Mappers/AppMapper.cs
+++ b/src/WMS.Web.Domain/Mappers/AppMapper.cs
@@ -2,9 +2,12 @@
using System;
using System.Collections.Generic;
using System.Text;
+using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Dto.Login.Temp;
using WMS.Web.Core.Dto.Login.Temp.v3;
+using WMS.Web.Core.Help;
+using WMS.Web.Domain.Entitys;
namespace WMS.Web.Domain.Mappers
{
@@ -61,7 +64,11 @@ namespace WMS.Web.Domain.Mappers
.ForMember(x => x.Roles, opt => opt.Ignore()).ReverseMap();
-
+ CreateMap()
+ .ForMember(x => x.Date, ops => ops.MapFrom(x => x.Date.DateToStringSeconds()))
+ //.ForMember(x => x.StatusKey, ops => ops.MapFrom(x => (int)x.Status))
+ // .ForMember(x => x.Status, ops => ops.MapFrom(x => x.Status.GetRemark()))
+ .ForMember(x => x.Type, ops => ops.MapFrom(x => (int)x.Type));
}
}
}
From 0ab01cbdc3fa214e081f149635eca1c6551e535e Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 16 Nov 2023 15:49:23 +0800
Subject: [PATCH 5/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/Controllers/TestController.cs | 11 ++++++-----
src/WMS.Web.Domain/Services/BoxService.cs | 10 ++++++----
2 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs
index 940c1993..9afae123 100644
--- a/src/WMS.Web.Api/Controllers/TestController.cs
+++ b/src/WMS.Web.Api/Controllers/TestController.cs
@@ -48,14 +48,15 @@ namespace WMS.Web.Api.Controllers
// t.Details[0].Remark = "sdf";
// t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb";
// var s = await _outStockTaskRepositories.Edit(t);
- // await _boxService.Sync();
+ await _boxService.Sync();
//var res = await this._erpService.BillQueryForDeliveryNoticeOutStock(null,DateTime.Now.AddDays(-300));
//var result= await this._erpService.BillQueryForPurchaseInStock();
//var result = await this._erpService.BillQueryForOrg();
- var result = await this._erpService.BillQueryForMaterial();
- if (!result.IsSuccess)
- return "";
- return JsonConvert.SerializeObject(result.Data);
+ //var result = await this._erpService.BillQueryForMaterial();
+ //if (!result.IsSuccess)
+ // return "";
+ //return JsonConvert.SerializeObject(result.Data);
+ return "";
}
[HttpGet]
diff --git a/src/WMS.Web.Domain/Services/BoxService.cs b/src/WMS.Web.Domain/Services/BoxService.cs
index 69febf42..000fe806 100644
--- a/src/WMS.Web.Domain/Services/BoxService.cs
+++ b/src/WMS.Web.Domain/Services/BoxService.cs
@@ -56,7 +56,8 @@ namespace WMS.Web.Domain.Services
{
//数据库里已经存在箱信息 移除
var box = list.FirstOrDefault(f => f.BoxBillNo.Equals(s));
- list.Remove(box);
+ if (box != null)
+ list.Remove(box);
}
var boxs = _mapper.Map>(list);
@@ -75,13 +76,14 @@ namespace WMS.Web.Domain.Services
var ops_box = list.FirstOrDefault(f => f.OpsBoxId == b.OpsBoxId);
foreach (var sn in ops_box.Details.SelectMany(s => s.SerialNumbers))
{
- var detail = ops_box.Details.FirstOrDefault(f => f.SerialNumbers.Select(s=>s.SerialNumber).Equals(sn.SerialNumber));
- if (detail == null) continue;
+ var detail = ops_box.Details.FirstOrDefault(f => f.SerialNumbers.Select(s => s.SerialNumber).Contains(sn.SerialNumber));
+ if (detail == null)
+ continue;
var opsSerial = list.FirstOrDefault(f => f.OpsBoxId == b.OpsBoxId).Details
.SelectMany(s => s.SerialNumbers)
.FirstOrDefault(s => s.SerialNumber.Equals(sn.SerialNumber));
//序列号
- SerialNumbers s = new SerialNumbers(sn.SerialNumber, detail.MaterialId,b.Id,b.OpsBoxId, opsSerial.BarCereateUser,opsSerial.BarCreateTime);
+ SerialNumbers s = new SerialNumbers(sn.SerialNumber, detail.MaterialId, b.Id, b.OpsBoxId, opsSerial.BarCereateUser, opsSerial.BarCreateTime);
sList.Add(s);
//序列号记录(序列号生成)
SerialNumberOperate so = new SerialNumberOperate(sn.SerialNumber, SerialNumberOperateType.Generate, detail.MaterialId, opsSerial.BarCereateUser, "", b.SupplierId, b.OrgId, null, opsSerial.BarCreateTime);
From 56cd5dfea89301796388cafc838ef33028e8fef7 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 16 Nov 2023 16:06:15 +0800
Subject: [PATCH 6/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/Controllers/TestController.cs | 12 ++++++------
.../QuartzJob/OutStockOrderQuartzJob.cs | 6 +++---
src/WMS.Web.Domain/Services/Public/ErpService.cs | 4 ++--
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs
index 9afae123..094b39dc 100644
--- a/src/WMS.Web.Api/Controllers/TestController.cs
+++ b/src/WMS.Web.Api/Controllers/TestController.cs
@@ -44,12 +44,12 @@ namespace WMS.Web.Api.Controllers
[Route("hj")]
public async Task TestHJ()
{
- //var t=await _outStockTaskRepositories.Get(1);
- // t.Details[0].Remark = "sdf";
- // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb";
- // var s = await _outStockTaskRepositories.Edit(t);
- await _boxService.Sync();
- //var res = await this._erpService.BillQueryForDeliveryNoticeOutStock(null,DateTime.Now.AddDays(-300));
+ //var t=await _outStockTaskRepositories.Get(1);
+ // t.Details[0].Remark = "sdf";
+ // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb";
+ // var s = await _outStockTaskRepositories.Edit(t);
+ // await _boxService.Sync();
+ var res = await this._erpService.BillQueryForAssembledAppOutStock_Dassembly(null,DateTime.Now.AddDays(-300));
//var result= await this._erpService.BillQueryForPurchaseInStock();
//var result = await this._erpService.BillQueryForOrg();
//var result = await this._erpService.BillQueryForMaterial();
diff --git a/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs
index bd5b0317..93ad5c1f 100644
--- a/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs
+++ b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs
@@ -46,17 +46,17 @@ namespace WMS.Web.Domain.QuartzJob
{
//2.记录:开始时间
var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
- _logger.LogInformation($"出库单-同步金蝶入库单数据:执行开始时间->{begindatetime}");
+ _logger.LogInformation($"出库单-同步金蝶出库单数据:执行开始时间->{begindatetime}");
//3.同步数据
var result = await _outStockTaskService.Sync(null);
//5.记录:结束时间
var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
- _logger.LogInformation($"出库单-同步金蝶入库单数据:执行结束时间->{begindatetime}");
+ _logger.LogInformation($"出库单-同步金蝶出库单数据:执行结束时间->{begindatetime}");
}
catch (Exception ex)
{
- _logger.LogInformation($"同步金蝶入库单数据:定时任务执行失败->{ex.Message}");
+ _logger.LogInformation($"同步金蝶出库单数据:定时任务执行失败->{ex.Message}");
}
}
diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs
index 45621b60..246f371b 100644
--- a/src/WMS.Web.Domain/Services/Public/ErpService.cs
+++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs
@@ -1623,7 +1623,7 @@ namespace WMS.Web.Domain.Services.Public
//4.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID
param.FilterString = "FDocumentStatus='C' and FAffairType='Dassembly' and FBillTypeID='3441ac133848446f824d0ab760c8b3c7'";
//string srt = JsonConvert.SerializeObject(stocks_codes);
- param.FilterString += " and FSrcStockID in (" + stocks_codes + ")";
+ param.FilterString += " and FStockID in (" + stocks_codes + ")";
//根据原订单号查询
if (sourceBillNos != null && sourceBillNos.Count() > 0)
@@ -1779,7 +1779,7 @@ namespace WMS.Web.Domain.Services.Public
//4.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID
param.FilterString = "FDocumentStatus='C' and FAffairType='Assembly' and FBillTypeID='3441ac133848446f824d0ab760c8b3c7'";
//string srt = JsonConvert.SerializeObject(stocks_codes);
- param.FilterString += " and FSrcStockID in (" + stocks_codes + ")";
+ param.FilterString += " and FStockIDSETY in (" + stocks_codes + ")";
//根据原订单号查询
if (sourceBillNos != null && sourceBillNos.Count() > 0)