Compare commits

..

4 Commits

Author SHA1 Message Date
69c381cf4e 修改被删除的意外 2025-09-03 17:26:56 +08:00
326a616289 不再有暂存 2025-09-03 15:25:12 +08:00
7be6f47c02 删除掉暂存单 2025-09-03 15:15:07 +08:00
af4de76221 改了是否需要暂存 2025-09-02 15:14:50 +08:00
4 changed files with 142 additions and 95 deletions

View File

@@ -17,8 +17,8 @@
"AllowedHosts": "*", //允许所有主机
"AllowedCores": "localhost,http://localhost:8080,http://192.168.1.188:8080", //跨域
"AppOptions": {
// "DBConnectionString": "Server=rm-wz9215skklas0287pwo.mysql.rds.aliyuncs.com; Database=test_wmsdb;User Id=orico_erp;password=Orico2023;port=3306;CharSet=gb2312;Connect Timeout=150;", //测试数据库连接地址
"DBConnectionString": "Server=rm-wz9215skklas0287pwo.mysql.rds.aliyuncs.com; Database=wms_db;User Id=orico_erp;password=Orico2023;port=3306;CharSet=gb2312;Connect Timeout=150;", //正式数据库连接地址
"DBConnectionString": "Server=rm-wz9215skklas0287pwo.mysql.rds.aliyuncs.com; Database=test_wmsdb;User Id=orico_erp;password=Orico2023;port=3306;CharSet=gb2312;Connect Timeout=150;", //测试数据库连接地址
// "DBConnectionString": "Server=rm-wz9215skklas0287pwo.mysql.rds.aliyuncs.com; Database=wms_db;User Id=orico_erp;password=Orico2023;port=3306;CharSet=gb2312;Connect Timeout=150;", //正式数据库连接地址
"RedisConnectionString": "47.106.232.90:6379,password=orico.2020,DefaultDatabase=3", //测试redis连接地址test_wmsdb
//"RedisConnectionString": "47.106.232.90:6379,password=orico.2020,DefaultDatabase=2", //正式redis连接地址
"RedisIpRateLimitingConnectionString": "47.110.156.96:16379,password=123456,DefaultDatabase=2", //redis连接地址
@@ -37,17 +37,26 @@
"PublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx4RaUAcPIEzHkMA0dvp51SbvC+ASiitHw9h6sCq8blqh8Cmx+ZfldxmX+sGqUDL40Eo07tQGWpY8WTlUROCOB9PIfZC6Wb+ntM6x8FzvcW5xfiKDfd6tbp5+ztFHVvutde0ceYk4VjOw5Q1wGJENZoQxQGd6/tt/cHbyNKF3HeAPCLJkMriKBXn3k4r4kix5oetVpaacFABBMRS019n/k0S8fg2H+72WaPVJElRk/iCkQwBA6JIKt/iSVXR8qMe+K6NTRnND4j5i7Ai0TgEV8MRlRMRVK7q4MyO0TPky//0HtVULdhb+G/XbF08ZgIgXlFBroQCEEj0RqdLio0Bg9wIDAQAB", //公钥
"PrivateKey": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHhFpQBw8gTMeQwDR2+nnVJu8L4BKKK0fD2HqwKrxuWqHwKbH5l+V3GZf6wapQMvjQSjTu1AZaljxZOVRE4I4H08h9kLpZv6e0zrHwXO9xbnF+IoN93q1unn7O0UdW+6117Rx5iThWM7DlDXAYkQ1mhDFAZ3r+239wdvI0oXcd4A8IsmQyuIoFefeTiviSLHmh61WlppwUAEExFLTX2f+TRLx+DYf7vZZo9UkSVGT+IKRDAEDokgq3+JJVdHyox74ro1NGc0PiPmLsCLROARXwxGVExFUrurgzI7RM+TL//Qe1VQt2Fv4b9dsXTxmAiBeUUGuhAIQSPRGp0uKjQGD3AgMBAAECggEBAI/1MJDjtwdQPwJznKdobTXeJMdFwzrMpbhq34NzIojhfkziWNdFwTzhS6aTzEaXsK3hjTXx6C++jQa39dTIzdJZ/iSTo9IUFnbAWOWcuOv4i40+a/ALFsplNAwYNshNSkh3cH9FAlA4dd+fhY1ERA3/PeZBhB6V0+sa+AH/qwnzFY+lwOeuaUe4PNEjjnBVhzqV8XApca7HZNlrGmiTuO3J/e4k/FAP11iYYIf8e8JtgocinW1LIxJGBcp7Zyof37k4e+s25B0k5MkXiYlvveMsmlEcU+sYm+uLNtu8eG1R3b1qvi0H8ULdwoSParnKSyYMh0WlZTS8Ka3X33WeCOkCgYEA2Cc/nnJkwPaOXLiAbKg7/4hIne1X3rneVVbwCaebKXfSsCSGoVt5b8vBCgbVZNw79d8Z8ZLEf4e26ayLLXRz9QriMPiWyHUEr0XLZ4lq6E1EdZMBZWmjT9VY8NeAkB+eMPfCZLZe3OoVstuNQA0pGVFJgYXmXgcjJcidxzgIqU0CgYEA7EwAA6OP9DoQq4GcBCuIVGBjEWzbVekMt7f+WeLxGl3NYTWiXiaK6WjF/pvFv7AGQIqwOpnbKahWntpPj5DModhjQN8u/yonhzagubQbDTX0jR3w4gVsv/yyGgksPIwAQT/FW9cOqriqw8IGJG92VQw8dy6M1ZP9yK3yc41Q8VMCgYATH3XLaMdtIuL5ZQFHm6KjOsVh42uQstTuq+BUmlVp18X1+2VFxTf7IgWUA4LBh5JucCx1aMylk7Yk+jTd8p2HokzclEGSvneJoh0ardedcaiK1lSbSjs+htt1gztGhOWT43d5PYEq/jKpPi9C6WcnbD+ai+QTkYIUh6kdxOFPSQKBgQDltLfq0azWMUAVSYi+MQd1ZsHHpbfO2x+m1TFodgoFpJxL3JS7y+IMJvMaoJlqz5Y0Vd4dCYYZB/E0uWrQWGXlC3LpFE0edf85HWy/Ogt2GzZhnHKXdciTFfaZAsPDFCIHTBPyRKyYX655YHsSHly9Loj1HwZ/dT8nP5nKpNzDywKBgB3itp7eQ71y+6npr0MUcYF6cgjhPTLL03zVzJdR3ELzPFW+J69MFwqafoGu+xgGu43pDgIR6gVKqYhqfSk28oRl7YtO4fvk6KRcG5zrc1FyDw3S5XpVc5MhsxmBBXZj5ivBkoqxyDAOqu3MDCbHqg1J5inDu2gA8tbsgJ41pTER" //私钥
},
//"ErpOptions": {
// "EndpointAddress": "http://erp.orico.com.cn/k3cloud/ERPGW.asmx", //金蝶连接地址
// "UserName": "mes", //测试账号密码 mes/A1B2C3Dh/ce20210909/6723b1acf19987 正式账号密码 orico/A123321./Orico/663a26829afbdd //金蝶账户名
// // "UserName": "orico", //正式账号
// "Password": "A1B2C3Dh.", //测试金蝶密码
// // "Password": "A123321.", //正试金蝶密码
// // "ErpId": "ce20210909", //金蝶Id
// "ErpId": "Orico", //正式金蝶Id
// "ZhangTaoId": "6723b1acf19987" //测试金蝶账套Id
// // "ZhangTaoId": "663a26829afbdd" //正式金蝶账套Id
//},
"ErpOptions": {
"EndpointAddress": "http://erp.orico.com.cn/k3cloud/ERPGW.asmx", //金蝶连接地址
"UserName": "mes", //测试账号密码 mes/A1B2C3Dh/ce20210909/6723b1acf19987 正式账号密码 orico/A123321./Orico/663a26829afbdd //金蝶账户名
// "UserName": "orico", //正式账号
"Password": "A1B2C3Dh.", //测试金蝶密码
// "Password": "A123321.", //正试金蝶密码
// "ErpId": "ce20210909", //金蝶Id
"ErpId": "Orico", //正式金蝶Id
"ZhangTaoId": "6723b1acf19987" //测试金蝶账套Id
// "ZhangTaoId": "663a26829afbdd" //正式金蝶账套Id
"Password": "A1B2C3Dh.", //金蝶密码
"ErpId": "ce20210909", //金蝶Id
"ZhangTaoId": "6723b1acf19987" //金蝶账套Id
},
"OpsOptions": {
"Url": "https://api.opsscm.test.f2b211.com/", //https://api.opsscm.test.f2b211.com/ //OPS供应链系统 测试http://127.0.0.1:8035
"UserName": "admin", //账户名 这是之前链接老ops 需要的用户名密码 现在链接 OPS供应链系统是不需要了
@@ -59,9 +68,9 @@
"AppSecret": "n/HUKD2wVdTbvhnFZbVBPw==" //领星授权
},
"JuShuiTanOptions": {
"Url": "https://openapi.jushuitan.com",//聚水潭连接地址
"AppKey": "17231841286c45f99eb9acf445404349",//聚水潭Key
"AppSecret": "5ce9641ae6db4abb8b96eea7df6a81e9",//聚水潭授权
"Url": "https://openapi.jushuitan.com", //聚水潭连接地址
"AppKey": "17231841286c45f99eb9acf445404349", //聚水潭Key
"AppSecret": "5ce9641ae6db4abb8b96eea7df6a81e9", //聚水潭授权
"AccessToken": "4605358c37374780a8a4395e6cdb1c3f" //一年后过期(2025/10/18)
},
"Qiniu": {
@@ -126,7 +135,7 @@
"QuartzTriggerDescription": "OpsJobTrigger"
},
"EmailOptions": {
"SmtpServer": "smtp.qiye.aliyun.com",//邮箱配置
"SmtpServer": "smtp.qiye.aliyun.com", //邮箱配置
"SmtpPort": 587,
"SenderName": "深圳市元创时代",
"SendTitle": "【深圳市元创时代】-产品入库通知",
@@ -134,7 +143,7 @@
"SenderEmailPwd": "K4h6GgxZYGMYV1Bb"
},
"SmsOptions": {
"AccessKeyId": "LTAI5tBJg6KeDV2V1NiS7Ngi",//短信配置
"AccessKeyId": "LTAI5tBJg6KeDV2V1NiS7Ngi", //短信配置
"AccessKeySecret": "MAC8bMovSFyCgRQGkfhVcL1jvLJ8cP",
"SignName": "深圳市元创时代",
"TemplateCode": "SMS_465408787"

View File

@@ -15,6 +15,12 @@ namespace WMS.Web.Core.Dto.Erp
this.FormId = formId;
this.Numbers =new List<string>() { number };
}
public ErpOperateDto(string formId, string number,string ids)
{
this.FormId = formId;
this.Numbers = new List<string>() { };
this.Ids = ids;
}
/// <summary>
/// 业务对象表单Id必录
/// </summary>
@@ -24,5 +30,7 @@ namespace WMS.Web.Core.Dto.Erp
/// 单据编码
/// </summary>
public List<string> Numbers { get; set; }
public string Ids { get; set; }
}
}

View File

@@ -1,10 +1,12 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Npoi.Mapper;
using NPOI.SS.Formula.Functions;
using StackExchange.Redis;
using System;
using System.Collections.Concurrent;
@@ -955,7 +957,15 @@ namespace WMS.Web.Domain.Services
var sourceBillNos = entity.ErpDetails.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList();
var erp_InStockErpDetails = await sc_inStockRepositories.GetErpDetails(sourceBillNos);
if (erpDetails.Count == 0)
{
for (int i = 0; i < entity.ErpDetails.Count; i++)
{
entity.SyncFail("失败,找不到数据,请检查采购订单是否反审核或是否有被删除", entity.ErpDetails[0].ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, SyncStatus.Fail);
}
}
else
{
foreach (var det in erpDetails)
{
var erpDto = new ErpPushDto()
@@ -964,7 +974,8 @@ namespace WMS.Web.Domain.Services
FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
TargetFormId = FormIdParam.STK_InStock.ToString(),
DetailsId = det.ErpDetailId.ToString(),
IsDraftWhenSaveFail = true//是否需要暂存
IsDraftWhenSaveFail = true//是否需要暂存fa
//IsDraftWhenSaveFail = false//是否需要暂存
};
var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList();
@@ -990,7 +1001,7 @@ namespace WMS.Web.Domain.Services
else
{
//下推金蝶
var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories,"pur");
var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories, "pur");
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
@@ -1001,6 +1012,7 @@ namespace WMS.Web.Domain.Services
}
}
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
var isSuccess = await sc_InStockRepositories.Update(entity, true);
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
@@ -1044,7 +1056,15 @@ namespace WMS.Web.Domain.Services
var sourceBillNos = entity.ErpDetails.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList();
var erp_InStockErpDetails = await sc_inStockRepositories.GetErpDetails(sourceBillNos);
if (erpDetails.Count == 0)
{
for (int i = 0; i < entity.ErpDetails.Count; i++)
{
entity.SyncFail("失败,找不到数据,请检查生产汇报单是否反审核或是否有被删除", entity.ErpDetails[0].ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, SyncStatus.Fail);
}
}
else
{
foreach (var det in erpDetails)
{
var erpDto = new ErpPushDto()
@@ -1054,8 +1074,8 @@ namespace WMS.Web.Domain.Services
FormId = FormIdParam.PRD_MORPT.ToString(),
TargetFormId = FormIdParam.PRD_INSTOCK.ToString(),
DetailsId = det.ErpDetailId.ToString(),
// IsDraftWhenSaveFail = true//是否需要暂存
IsDraftWhenSaveFail = false//是否需要暂存
IsDraftWhenSaveFail = true//是否需要暂存
//IsDraftWhenSaveFail = false//是否需要暂存
};
var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList();
@@ -1089,6 +1109,7 @@ namespace WMS.Web.Domain.Services
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
}
}
}
@@ -1165,6 +1186,9 @@ namespace WMS.Web.Domain.Services
var res_s = await sc_erpService.Save<ErpProduceInStockSaveDto>(purchaseInStock, formId);
if (!res_s.IsSuccess)
{
ErpOperateDto o_dto1 = new ErpOperateDto(dto.TargetFormId, null, id);//res_s.Data
//如果有错,就删除相关单据
var del_res = await sc_erpService.Delete(o_dto1, dto.TargetFormId);
_logger.LogInformation($"入库单->保存失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res_s.Message}");
return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, "", purchaseInStock.Details[0].DetailId);
}

View File

@@ -1901,6 +1901,8 @@ namespace WMS.Web.Domain.Services.Public
}
var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString();
return Result<string>.ReFailure(msg, 10002);
}
catch (Exception ex)
@@ -2017,7 +2019,7 @@ namespace WMS.Web.Domain.Services.Public
var token_result = await this.Init();
if (!token_result.IsSuccess)
return token_result;
var query = new ErpBillQueryDto(token_result.Data);
var query = new ErpBillQueryDto(token_result.Data,formId);
//提交
query.Data = JsonConvert.SerializeObject(dto);
@@ -2043,6 +2045,7 @@ namespace WMS.Web.Domain.Services.Public
/// <returns></returns>
public async Task<Result<string>> Push(ErpPushDto dto)
{
string id = "";
try
{
var token_result = await this.Init();
@@ -2057,10 +2060,11 @@ namespace WMS.Web.Domain.Services.Public
JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json);
var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower();
if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true")
{
//保存成功后返回Id 后续操作根据Id操作
string id = jobject["Result"]["ResponseStatus"]["SuccessEntitys"][0]["Id"].ToString();
id = jobject["Result"]["ResponseStatus"]["SuccessEntitys"][0]["Id"].ToString();
return Result<string>.ReSuccess(id);
}
@@ -2069,6 +2073,8 @@ namespace WMS.Web.Domain.Services.Public
}
catch (Exception ex)
{
return Result<string>.ReFailure(ex.ToString(), 10002);
}
}