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; }