diff --git a/UFIDA.U8.Framework.Api.Common/Entity/SysSubSystem.cs b/UFIDA.U8.Framework.Api.Common/Entity/SysSubSystem.cs
new file mode 100644
index 0000000..3b40f07
--- /dev/null
+++ b/UFIDA.U8.Framework.Api.Common/Entity/SysSubSystem.cs
@@ -0,0 +1,25 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace UFIDA.U8.Framework.Api.Common.Entity
+{
+ ///
+ /// 系统U8账套对接参数配置表
+ ///
+ [SugarTable("SysU8AccountConfig", "系统U8账套对接参数配置表")]
+ public class SysSubSystem
+ {
+ [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "主键", ColumnName = "Id", IsNullable = false)]
+ public virtual long Id { get; set; }
+
+ [SugarColumn(ColumnDescription = "应用秘钥",ColumnName = "AppSecrtet")]
+ public virtual string AppSecrtet { get; set; }
+
+ [SugarColumn(ColumnDescription = "应用key",ColumnName = "AppKey")]
+ public virtual string AppKey { get; set; }
+ }
+}
diff --git a/UFIDA.U8.Framework.Api.Common/Entity/SysU8AccountConfig.cs b/UFIDA.U8.Framework.Api.Common/Entity/SysU8AccountConfig.cs
index 932adeb..22f0ec3 100644
--- a/UFIDA.U8.Framework.Api.Common/Entity/SysU8AccountConfig.cs
+++ b/UFIDA.U8.Framework.Api.Common/Entity/SysU8AccountConfig.cs
@@ -12,7 +12,7 @@ namespace UFIDA.U8.Framework.Api.Common.Entity
{
[SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "主键", ColumnName = "Id", IsNullable = false)]
- public int Id { get; set; }
+ public long Id { get; set; }
///
/// 系统号
diff --git a/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj b/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj
index faf46b9..d1520a7 100644
--- a/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj
+++ b/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj
@@ -52,6 +52,7 @@
+
diff --git a/UFIDA.U8.Framework.Api.ControlObject/SA/ClsVoucherCO_SA.cs b/UFIDA.U8.Framework.Api.ControlObject/SA/ClsVoucherCO_SA.cs
index d609760..01c7853 100644
--- a/UFIDA.U8.Framework.Api.ControlObject/SA/ClsVoucherCO_SA.cs
+++ b/UFIDA.U8.Framework.Api.ControlObject/SA/ClsVoucherCO_SA.cs
@@ -48,7 +48,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.SA
return co;
}
- public async Task> Save(BaseLogin baseLogin, Dictionary dictionary, string cardNumber, VoucherTypeSA enmVoucherType, int VoucherState = 0, bool bGetCode = false, string codeKey = null, bool bAudit = false, bool iswfcontrolled = false, string cFlowFieldName = "IsWfControlled")
+ public async Task> Save(BaseLogin baseLogin, Dictionary dictionary, string cardNumber, VoucherTypeSA enmVoucherType, int VoucherState = 0, bool bGetCode = false, string codeKey = null, bool? bVerify = false, bool iswfcontrolled = false, string cFlowFieldName = "IsWfControlled")
{
try
{
@@ -114,90 +114,67 @@ namespace UFIDA.U8.Framework.Api.ControlObject.SA
var res = new BaseResult();
- _logInfo.Debug("开始保存...");
+ _logInfo.Debug("开始保存...");
- errorMsg = co.Save(ref domHead, ref domBody, VoucherState, ref vouchId, ref domCur);
-
- _logInfo.Debug("保存结束...");
- _logInfo.Debug(errorMsg);
- _logInfo.Debug($"{vouchId}");
-
- res.bSuccess = string.IsNullOrWhiteSpace(errorMsg) && !string.IsNullOrWhiteSpace($"{vouchId}");
-
- if (!res.bSuccess)
- {
- if (!string.IsNullOrWhiteSpace(errorMsg))
- {
- throw new Exception(errorMsg);
- }
-
- if (!string.IsNullOrWhiteSpace(domMsg.xml))
- {
- throw new Exception(domMsg.xml);
- }
-
- if (!string.IsNullOrWhiteSpace(curDom.xml))
- {
- throw new Exception(curDom.xml);
- }
-
- throw new Exception("未知错误");
-
- }
-
- if (iswfcontrolled == false && VoucherState == 2)
- {
- var strSql = $"UPDATE {vouchers.cBTTblName} SET {cFlowFieldName} = 0 WHERE {vouchers.voucherIdFieldName}={vouchId}";
-
- object rsts = new Recordset();
-
- baseLogin.Connection.Execute(strSql, out rsts);
- }
-
-
- res.voucherCode = CommonHelper.GetVoucherCode(baseLogin.Connection, vouchId, vouchers);
- res.voucherId = $"{vouchId}";
- res.result = errorMsg;
+ errorMsg = co.Save(ref domHead, ref domBody, VoucherState, ref vouchId, ref domCur);
+ _logInfo.Debug("保存结束...");
+ _logInfo.Debug(errorMsg);
+ _logInfo.Debug($"{vouchId}");
+ res.bSuccess = (string.IsNullOrWhiteSpace(errorMsg) && !string.IsNullOrWhiteSpace($"{vouchId}")) ||
+ (errorMsg == "True" && !string.IsNullOrWhiteSpace($"{vouchId}"));
if (!res.bSuccess)
{
- res.message = "保存失败";
+ if (!string.IsNullOrWhiteSpace(errorMsg))
+ {
+ throw new Exception(errorMsg);
+ }
+
+ if (!string.IsNullOrWhiteSpace(domMsg.xml))
+ {
+ throw new Exception(domMsg.xml);
+ }
+
+ if (!string.IsNullOrWhiteSpace(curDom.xml))
+ {
+ throw new Exception(curDom.xml);
+ }
+
+ throw new Exception("未知错误");
- return res;
}
+ //if (iswfcontrolled == false && VoucherState == 0)
+ //{
+ // var strSql = $"UPDATE {vouchers.cBTTblName} SET {cFlowFieldName} = 0 WHERE {vouchers.voucherIdFieldName}={vouchId}";
+
+ // object rsts = new Recordset();
+
+ // baseLogin.Connection.Execute(strSql, out rsts);
+ //}
+
+ res.voucherCode = CommonHelper.GetVoucherCode(baseLogin.Connection, vouchId, vouchers);
+ res.voucherId = $"{vouchId}";
+ res.result = errorMsg;
res.message = "保存成功";
_logInfo.Debug($"{baseLogin.Connection.State},{baseLogin.Connection.ConnectionString}");
var strWhere = CommonHelper.GetVoucherWhereSqlById(vouchers, vouchId);
- if (res.bSuccess && bAudit)
+ if (res.bSuccess && bVerify == true)
{
- try
- {
- errorMsg = VerifyVouch(co, baseLogin.Connection, enmVoucherType, res.voucherCode, res.voucherId, strWhere, true);
+ var verifyRes =await VerifyVouch(co, baseLogin.Connection, enmVoucherType, res.voucherCode, res.voucherId, strWhere, true);
- if (!string.IsNullOrWhiteSpace(errorMsg))
- {
-
- throw new Exception(errorMsg);
- }
- }
- catch (Exception)
- {
- res.bSuccess = false;
- throw;
- }
+ if (verifyRes.bSuccess == false)
+ {
+ return verifyRes;
+ }
}
- _logInfo.Debug("提交事务...");
-
return res;
-
-
}
catch (Exception ex)
{
@@ -209,38 +186,60 @@ namespace UFIDA.U8.Framework.Api.ControlObject.SA
}
}
- public async Task> VerifyVouch(dynamic voucherCO, Connection conn, VoucherTypeSA sVouchType, string cCode, object vouchId, string strWhere, bool bVerify)
+ ///
+ /// 审核单据
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> VerifyVouch(dynamic voucherCo, Connection conn, VoucherTypeSA sVouchType, string cCode, object vouchId, string strWhere, bool bVerify)
{
- IXMLDOMDocument2 domHead = new DOMDocument();
- IXMLDOMDocument2 domBody = new DOMDocument();
- IXMLDOMDocument2 domMsg = new DOMDocument();
-
- _logInfo.Debug("开始获取单据数据...");
- voucherCO.GetVoucherData(ref domHead, ref domBody, vouchId, true, strWhere);
-
- var res = new BaseResult
+ try
{
- voucherCode = cCode,
- voucherId = $"{vouchId}"
- };
+ IXMLDOMDocument2 domHead = new DOMDocument();
+ IXMLDOMDocument2 domBody = new DOMDocument();
+ IXMLDOMDocument2 domMsg = new DOMDocument();
- var errorMsg = voucherCO.VerifyVouch(ref domHead, bVerify);
+ _logInfo.Debug("开始获取单据数据...");
+ voucherCo.GetVoucherData(ref domHead, ref domBody, vouchId, true, strWhere);
- res.bSuccess = string.IsNullOrWhiteSpace(errorMsg);
+ var res = new BaseResult
+ {
+ voucherCode = cCode,
+ voucherId = $"{vouchId}"
+ };
- if (res.bSuccess)
- {
- res.message = "审核成功";
- res.result = res.voucherId;
+ var errorMsg = voucherCo.VerifyVouch(ref domHead, bVerify);
+ res.bSuccess = string.IsNullOrWhiteSpace(errorMsg);
+
+ if (res.bSuccess)
+ {
+ res.message = "审核成功";
+ res.result = res.voucherId;
+
+ }
+ else
+ {
+ res.message = "审核失败";
+ res.result = string.IsNullOrWhiteSpace(errorMsg) ? domMsg.xml : errorMsg;
+ }
+
+ return res;
}
- else
+ catch (Exception ex)
{
- res.message = "审核失败";
- res.result = string.IsNullOrWhiteSpace(errorMsg) ? domMsg.xml : errorMsg;
- }
+ _logInfo.Error(ex.Message, ex);
- return res;
+ await Task.Delay(1);
+
+ return new BaseResult { bSuccess = false, message = "审核失败", result = ex.Message };
+ }
}
}
}
diff --git a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db
index 6472a2e..e3d12e7 100644
Binary files a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db and b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db differ
diff --git a/UFIDA.U8.Framework.Api/App_Data/U8API.xml b/UFIDA.U8.Framework.Api/App_Data/U8API.xml
index 78eb79b..dd0c2e5 100644
--- a/UFIDA.U8.Framework.Api/App_Data/U8API.xml
+++ b/UFIDA.U8.Framework.Api/App_Data/U8API.xml
@@ -1002,12 +1002,17 @@
+
+
+ 销售管理
+
+
日志组件
-
+
保存单据
@@ -1015,6 +1020,7 @@
单据类型编码
报文
单据状态:0新增,1修改
+ 是否审核
diff --git a/UFIDA.U8.Framework.Api/App_Data/销售订单模板.json b/UFIDA.U8.Framework.Api/App_Data/销售订单模板.json
index e7309db..82cec72 100644
--- a/UFIDA.U8.Framework.Api/App_Data/销售订单模板.json
+++ b/UFIDA.U8.Framework.Api/App_Data/销售订单模板.json
@@ -6,9 +6,9 @@
"cexch_name": "人民币", //币种
"cmaker": "demo", //制单人
"breturnflag": 0, //退货标志
- "cstcode": "", //销售类型编码
- "cdepcode": "", //部门编码
- "ccuscode": "", //客户编码
+ "cstcode": "01", //销售类型编码
+ "cdepcode": "0301", //部门编码
+ "ccuscode": "00000001", //客户编码
"dpredatebt": "2025-01-01", //预发货日期
"dpremodatebt": "2025-01-01", //预完工日期
"iexchrate": 1, //汇率
@@ -16,12 +16,15 @@
"cpersoncode": "", //业务员编码
"body": [
{
- "cinvcode": "", //存货编码
+ "cinvcode": "W1000A002", //存货编码
"iquantity": 10, //数量
"dpredate": "2025-01-01", //预发货日期
"dpremodate": "2025-01-01", //预完工日期
"editprop": "A", //编辑属性
"irowno": 1, //行号
+ "cinvm_unit": "台",
+ "igrouptype": 0,
+ "cgroupcode": "01",
"itaxunitprice": 1, //含税单价
"iquotedprice": 1, //报价
"iunitprice": 1, //无税单价
diff --git a/UFIDA.U8.Framework.Api/App_Start/SwaggerConfig.cs b/UFIDA.U8.Framework.Api/App_Start/SwaggerConfig.cs
index bd52bff..955a0d4 100644
--- a/UFIDA.U8.Framework.Api/App_Start/SwaggerConfig.cs
+++ b/UFIDA.U8.Framework.Api/App_Start/SwaggerConfig.cs
@@ -205,7 +205,7 @@ namespace UFIDA.U8.Framework.Api
//
//c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
c.InjectJavaScript(Assembly.GetExecutingAssembly(), "UFIDA.U8.Framework.Api.Scripts.Swagger_zh-cn.js");
-
+ c.DisableValidator();
// The swagger-ui renders boolean data types as a dropdown. By default, it provides "true" and "false"
// strings as the possible choices. You can use this option to change these to something else,
// for example 0 and 1.
diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs
index 8aad8c8..7b72107 100644
--- a/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs
+++ b/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs
@@ -9,6 +9,8 @@ using System.Web.Http.Description;
using System.Web.UI.WebControls;
using log4net;
using Microsoft.Extensions.Hosting;
+using SqlSugar;
+using UFIDA.U8.Framework.Api.Common.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Common;
using UFIDA.U8.Framework.Api.ControlObject.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Json;
@@ -16,6 +18,7 @@ using UFIDA.U8.Framework.Api.ControlObject.U8M;
using UFIDA.U8.Framework.Api.Entity;
using UFIDA.U8.Framework.Api.Models;
using UFIDA.U8.Framework.Api.Unit;
+using SysU8AccountConfig = UFIDA.U8.Framework.Api.ControlObject.Entity.SysU8AccountConfig;
namespace UFIDA.U8.Framework.Api.Controllers.U8
{
@@ -454,5 +457,41 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
return ex.Message;
}
}
+
+ [HttpPost]
+ [Route("api/U8/DP/InitSubSystem")]
+ public async Task> InitSubSystem(Dictionary input)
+ {
+ try
+ {
+ if (!input.TryGetValue("cAppInfo", out var cValue) || string.IsNullOrWhiteSpace(cValue))
+ {
+ throw new Exception("参数错误");
+ }
+ var info = CommUnit.GetDecrypt(cValue).ToObject();
+
+ var db = CommUnit.GetDbClient();
+ if (await db.Queryable().AnyAsync(a => a.AppKey == info.AppKey))
+ {
+ throw new Exception("当前子系统已注册");
+ }
+
+ info.Id=SnowFlakeSingle.instance.NextId();
+
+ await db.Insertable(info).ExecuteCommandAsync();
+
+ return new BaseResult() { bSuccess = true, message = "注册成功", result = info.Id };
+
+ }
+ catch (Exception ex)
+ {
+ _logInfo.Error(ex.Message, ex);
+
+ await Task.Delay(1);
+
+ return new BaseResult() { bSuccess = false, message = "子系统初始化失败", result = 0 };
+ }
+
+ }
}
}
diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs
index 0ad2a17..10876d0 100644
--- a/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs
+++ b/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs
@@ -208,11 +208,21 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
});
}
+ if (colListBody.Any(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)))
+ {
+ var col = colListBody.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase));
+ conModels.Add(new ConditionalModel
+ {
+ FieldName = $"{col.Value}",
+ ConditionalType = ConditionalType.GreaterThanOrEqual,
+ FieldValue = $"{o.Value}"
+ });
+ }
}
else if (o.Key == "dModifyDate__2")
{
- if (colListHead.Any(a => string.Equals(a.Key, "dnveriRelsTimefytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)))
+ if (colListHead.Any(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)))
{
var col = colListHead.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase));
@@ -223,6 +233,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
FieldValue = $"{o.Value}"
});
}
+
+ if (colListBody.Any(a => string.Equals(a.Key, "dnveriRelsTimefytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)))
+ {
+ var col = colListBody.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase));
+
+ conModels.Add(new ConditionalModel
+ {
+ FieldName = $"{col.Value}",
+ ConditionalType = ConditionalType.LessThanOrEqual,
+ FieldValue = $"{o.Value}"
+ });
+ }
}
else if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%"))
{
diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs
index 13811bc..a292736 100644
--- a/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs
+++ b/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs
@@ -20,6 +20,9 @@ using UFIDA.U8.Framework.Api.Unit;
namespace UFIDA.U8.Framework.Api.Controllers.U8
{
+ ///
+ /// 销售管理
+ ///
public class SAController : ApiController
{
@@ -37,11 +40,12 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// 单据类型编码
/// 报文
/// 单据状态:0新增,1修改
+ /// 是否审核
///
///
[HttpPost]
[Route("api/U8/SA/{cCardNum}/Save")]
- public async Task> Save(string cAccId, string cCardNum, [FromBody] Dictionary input, int VoucherState = 0)
+ public async Task> Save(string cAccId, string cCardNum, [FromBody] Dictionary input, int VoucherState = 0, bool? bVerify = null)
{
try
{
@@ -135,7 +139,9 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new ClsVoucherCO_SA();
- var res = await co.Save(baseLogin, input, cCardNum, (VoucherTypeSA)Convert.ToInt32(voucherInfo.VoucherType), VoucherState,bGetCode, codeKey, voucherInfo.bVerify, voucherInfo.iswfcontrolled, voucherInfo.cFlowFieldName);
+ var res = await co.Save(baseLogin, input, cCardNum,
+ (VoucherTypeSA)Convert.ToInt32(voucherInfo.VoucherType), VoucherState, bGetCode, codeKey,
+ bVerify ?? voucherInfo.bVerify, voucherInfo.iswfcontrolled, voucherInfo.cFlowFieldName);
return res;
}