Browse Source

1、分析并实现待审核签证详情页面主表接口功能
2、待审核签证详情页面主表部分的前端实现
3、分析待审核签证费用明细项,写费用名获取接口

shengxuefei 4 years ago
parent
commit
9bd107362a

+ 31 - 0
WebAPIBase.NetCore/Utils/ApiResponse.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WebAPIBase.Utils
+{
+    /// <summary>
+    /// api接口统一返回数据
+    /// </summary>
+    public class ApiResponse
+    {
+        /// <summary>
+        /// 是否成功
+        /// </summary>
+        public bool isSuccess { get; set; }
+        /// <summary>
+        /// 提示信息
+        /// </summary>
+        public string message { get; set; }
+        /// <summary>
+        /// 状态码
+        /// </summary>
+        public int code { get; set; }
+        /// <summary>
+        /// 返回查询接口的数据
+        /// </summary>
+        public Object returnData { get; set; }
+    }
+}

+ 20 - 29
WebAPIBase.NetCore/Utils/CustomErrorMiddleware.cs

@@ -9,52 +9,43 @@ using NLog;
 using NLog.Web.AspNetCore;
 using System.Net;
 using Newtonsoft.Json;
+using Microsoft.AspNetCore.Builder;
 
 namespace WebAPIBase.Utils
 {
     public class CustomErrorMiddleware
     {
-        private readonly RequestDelegate next;
-        private IHostingEnvironment environment;
-
-        //Nlog构造方法注入
-        private readonly Logger _logger = LogManager.GetCurrentClassLogger();
-        public CustomErrorMiddleware(RequestDelegate next, IHostingEnvironment environment)
+        private readonly RequestDelegate _next;
+        private static Logger logger = LogManager.GetCurrentClassLogger();
+        public CustomErrorMiddleware(RequestDelegate next)
         {
-            this.next = next;
-            this.environment = environment;
+            _next = next;
         }
 
-        public async Task Invoke(HttpContext context)
+        public async Task Invoke(HttpContext httpContext)
         {
             try
             {
-                await next.Invoke(context);
-                var features = context.Features;
+                await _next(httpContext);
             }
-            catch (Exception e)
+            catch (Exception ex)
             {
-                await HandleException(context, e);
+                logger.Error(ex);
+                httpContext.Response.StatusCode = 200;
+                var result = JsonConvert.SerializeObject(new ApiResponse { isSuccess = false, message = ex.Message + "\r\n" + ex.StackTrace, code = 500 });
+                httpContext.Response.ContentType = "application/json; charset=utf-8";
+                await httpContext.Response.WriteAsync(result);
+                //throw;
             }
         }
 
-        private async Task HandleException(HttpContext context, Exception ex)
-        {
-
-            await WriteExceptionAsync(context, ex).ConfigureAwait(false);
-        }
-        private async Task WriteExceptionAsync(HttpContext context, Exception e)
+    }
+    // Extension method used to add the middleware to the HTTP request pipeline.
+    public static class CustomErrorMiddlewareExtensions
+    {
+        public static IApplicationBuilder UseCustomErrorMiddleware(this IApplicationBuilder builder)
         {
-            if (e is UnauthorizedAccessException)
-                context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
-            else if (e is Exception)
-                context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
-
-            context.Response.ContentType = "application/json";
-            _logger.Error(e);
-            await context.Response.WriteAsync(
-                JsonConvert.SerializeObject(e.GetBaseException().Message)).ConfigureAwait(false);
+            return builder.UseMiddleware<CustomErrorMiddleware>();
         }
-
     }
 }

+ 59 - 0
WebAPIBase.NetCore/WebAPIBase.NetCore.BusinessCore/BaseCore/UnitManager.cs

@@ -6,6 +6,7 @@ using System.Linq;
 using System.Text;
 using System.Data;
 using System.Linq.Expressions;
+using WebAPIBase.Utils;
 
 public class UnitManager : DbContext<Unit>
 {
@@ -577,4 +578,62 @@ public class UnitManager : DbContext<Unit>
         var list = Db.Queryable<Contract>().Where(lamda).OrderBy("ContractID DESC").ToList();
         return list;
     }
+
+    /// <summary>
+    /// 根据cbs费用项表中的费用编码,获取该费用各级费用编码的全编码
+    /// </summary>
+    /// <param name="costCode"></param>
+    /// <returns></returns>
+    public string GetCBSFullCode(string costCode)
+    {
+        var sql = $"SELECT dbo.GetCBSFullCode('{costCode}')";
+        var fullCode = Db.Ado.GetString(sql);
+        return fullCode;
+    }
+    /// <summary>
+    /// 根据费用代码获取该费用的全名称
+    /// </summary>
+    /// <param name="code"></param>
+    /// <returns></returns>
+    public string GetCostFullName(string code)
+    {
+        string text = "";
+        if (code.IsNullOrEmpty())
+        {
+            return text;
+        }
+
+        string cBSFullCode = GetCBSFullCode(code);
+        string[] array = cBSFullCode.Split('-');
+        int num = 0;
+
+        for (int i = num; i < array.Length; i++)
+        {
+            if (text != "")
+            {
+                text += "->";
+            }
+            text += GetCostName(array[i]);
+        }
+        return text;
+
+    }
+
+    /// <summary>
+    /// 根据费用代码获取费用名称
+    /// </summary>
+    /// <param name="code"></param>
+    /// <returns></returns>
+    public string GetCostName(string code)
+    {
+        string result = "";
+        if (code.IsNullOrEmpty())
+        {
+            return result;
+        }
+        var sql = $"SELECT CostName FROM dbo.cbs WHERE CostCode='{code}'";
+        result = Db.Ado.GetString(sql);
+        return result;
+
+    }
 }

+ 13 - 1
WebAPIBase.NetCore/WebAPIBase.NetCore.BusinessCore/BaseCore/ViseManager.cs

@@ -20,7 +20,7 @@ public class ViseManager : DbContext<Vise>
     /// <returns></returns>
     public List<ViseDTO> GetVises(string projectCode, string searchValue = "")
     {
-        var sql = $"SELECT v.ViseCode,v.ViseId,v.ViseName,v.ViseType,CONVERT(VARCHAR(10),v.ViseDate,120) ViseDate,v.State,dbo.GetUnitFullName(v.UnitCode) unitFullName, c.ContractName,v.ContractCode from Vise v INNER JOIN dbo.Contract c ON v.ContractCode=c.ContractCode where (dbo.GetUnitFullCode(v.UnitCode) like ('100000%')) and v.ProjectCode = '{projectCode}' and v.State ='0' a  ";
+        var sql = $"SELECT v.ViseCode,v.ViseId,v.ViseName,v.ViseType,CONVERT(VARCHAR(10),v.ViseDate,120) ViseDate,v.State,dbo.GetUnitFullName(v.UnitCode) unitFullName, c.ContractName,v.ContractCode from Vise v INNER JOIN dbo.Contract c ON v.ContractCode=c.ContractCode where (dbo.GetUnitFullCode(v.UnitCode) like ('100000%')) and v.ProjectCode = '{projectCode}' and v.State ='0'  ";
         if (searchValue.IsNotNullAndEmpty())
         {
             sql += $" and (v.ViseId='{searchValue}' or v.ViseName like '%{searchValue}%')";
@@ -29,6 +29,18 @@ public class ViseManager : DbContext<Vise>
         var list = Db.Ado.SqlQuery<ViseDTO>(sql);
         return list;
     }
+    /// <summary>
+    /// 根据签证编码获取待审签证实例
+    /// </summary>
+    /// <param name="viseCode"></param>
+    /// <returns></returns>
+    public ViseDTO GetVise(string viseCode)
+    {
+        var sql = $"SELECT v.*,dbo.GetUnitFullName(v.UnitCode) unitFullName, c.ContractName from Vise v INNER JOIN dbo.Contract c ON v.ContractCode=c.ContractCode where  v.viseCode = '{viseCode}'  ";
+
+        var entity = Db.Ado.SqlQuerySingle<ViseDTO>(sql);
+        return entity;
+    }
 
     #region 教学方法
     /// <summary>

+ 252 - 5
WebAPIBase.NetCore/WebAPIBase.NetCore.Enties/DTO/ViseDTO.cs

@@ -25,10 +25,19 @@ namespace Sugar.Enties
         /// 签证类型
         /// </summary>
         public string ViseType { get; set; }
+
+        private string _viseDate;
         /// <summary>
         /// 签证日期
         /// </summary>
-        public string ViseDate { get; set; }
+        public string ViseDate
+        {
+            get
+            {
+                return _viseDate?.Substring(0, 10);
+            }
+            set => _viseDate = value;
+        }
 
         /// <summary>
         /// 状态
@@ -47,10 +56,7 @@ namespace Sugar.Enties
             }
         }
 
-        /// <summary>
-        /// 所属部门全称
-        /// </summary>
-        public string UnitFullName { get; set; }
+
         /// <summary>
         /// 关联合同名
         /// </summary>
@@ -59,6 +65,247 @@ namespace Sugar.Enties
         /// 合同单号
         /// </summary>
         public string ContractCode { get; set; }
+        /// <summary>
+        /// 供应商名称
+        /// </summary>
+        public string SupplierName { get; set; }
+
+        /// <summary>
+        /// Desc:经办人代码
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string Person { get; set; }
+        /// <summary>
+        /// 经办人名
+        /// </summary>
+        public string PersonName { get; set; }
+
+        /// <summary>
+        /// Desc:所属部门代码
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string UnitCode { get; set; }
+
+        /// <summary>
+        /// 所属部门全称
+        /// </summary>
+        public string UnitFullName { get; set; }
+
+        private string _endDate;
+        /// <summary>
+        /// Desc:办理期限
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string EndDate
+        {
+            get
+            {
+                return _endDate?.Substring(0, 10);
+            }
+            set => _endDate = value;
+        }
+
+        /// <summary>
+        /// Desc:备注
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string Reason { get; set; }
+
+
+
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string ProjectCode { get; set; }
+
+
+
+        /// <summary>
+        /// Desc:审核人
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string CheckPerson { get; set; }
+
+        private string _CheckDate;
+        /// <summary>
+        /// Desc:审核日期
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string CheckDate
+        {
+            get
+            {
+                return _CheckDate?.Substring(0, 10);
+            }
+            set => _CheckDate = value;
+        }
+
+        /// <summary>
+        /// Desc:审核意见
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string CheckOpinion { get; set; }
+
+        /// <summary>
+        /// Desc:签证含税金额
+        /// Default:0
+        /// Nullable:True
+        /// </summary>           
+        public decimal? TotalCash { get; set; }
+
+        /// <summary>
+        /// Desc:币种
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string MoneyType { get; set; }
+
+        /// <summary>
+        /// Desc:汇率
+        /// Default:0
+        /// Nullable:True
+        /// </summary>           
+        public decimal? ExchangeRate { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:True
+        /// </summary>           
+        public decimal? TotalMoney { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string ViseIdEx { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string StateEx { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public decimal? TotalCheckCash { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public decimal? TotalCheckMoney { get; set; }
+
+        /// <summary>
+        /// Desc:暂估金额
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public decimal? EstimateCash { get; set; }
+
+        /// <summary>
+        /// Desc:报送金额
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public decimal? ReportCash { get; set; }
+
+        /// <summary>
+        /// Desc:申请单号
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string RequisitionCode { get; set; }
+
+        /// <summary>
+        /// 申请单名
+        /// </summary>
+        public string RequisitionName { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal RateTotalCash { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal NoRateTotalCash { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal RateTotalMoney { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal NoRateTotalMoney { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal RateTotalCheckCash { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal NoRateTotalCheckCash { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal RateTotalCheckMoney { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:0
+        /// Nullable:False
+        /// </summary>           
+        public decimal NoRateTotalCheckMoney { get; set; }
+
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public decimal? Rate { get; set; }
 
     }
 }

+ 0 - 34
WebAPIBase.NetCore/WebAPIBase.NetCore.Enties/ReturnResult.cs

@@ -1,34 +0,0 @@
-using Sugar.Enties;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Sugar.Enties
-{
-    /// <summary>
-    /// 返回结果对象
-    /// </summary>
-    public class ReturnResult<T>
-    {
-        /// <summary>
-        /// 登录是否成功
-        /// </summary>
-        public bool IsSuccess { get; set; }
-        /// <summary>
-        /// 若登录失败,返回的错误信息
-        /// </summary>
-        public string ErrorMsg { get; set; }
-
-        /// <summary>
-        /// 令牌
-        /// </summary>
-        public string token { get; set; }
-
-        /// <summary>
-        /// 返回查询接口的数据
-        /// </summary>
-        public T ReturnData { get; set; }
-    }
-}

+ 28 - 0
WebAPIBase.NetCore/WebAPIBase.NetCore/Controllers/ViseController.cs

@@ -46,5 +46,33 @@ namespace WebAPIBase.API.Controllers
             var list = manager.GetVises(projectCode, searchValue);
             return Json(list);
         }
+
+        /// <summary>
+        /// 获取待审签证详情
+        /// </summary>
+        /// <param name="projectCode"></param>
+        /// <param name="searchValue"></param>
+        /// <returns></returns>
+        [HttpGet]
+        [Route("GetVise")]
+        public ActionResult GetVise(string viseCode)
+        {
+            var manager = new ViseManager();
+            var entity = manager.GetVise(viseCode);
+            var contract = new ContractManager().GetById(entity.ContractCode);
+            if (contract != null)
+            {
+                entity.SupplierName = new MaterialInManager().GetSupplierNameAndType(contract.SupplierCode, contract.SupplierTypeCode);
+            }
+            entity.PersonName = new SystemUserManager().GetById(entity.Person)?.UserName;
+            entity.RequisitionName = new RequisitionManager().GetById(entity.RequisitionCode)?.RequisitionName;
+
+            var data = new
+            {
+                mainEntity = entity
+            };
+            logger.Info($"【GetVise】data:{JsonConvert.SerializeObject(data)}");
+            return Json(data);
+        }
     }
 }

+ 3 - 5
WebAPIBase.NetCore/WebAPIBase.NetCore/Startup.cs

@@ -104,11 +104,6 @@ namespace WebAPIBase.API
         public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
         {
 
-            //泛型方法添加中间件
-            app.UseMiddleware(typeof(CustomErrorMiddleware));
-
-
-
             if (env.IsDevelopment())
             {
                 app.UseDeveloperExceptionPage();
@@ -120,6 +115,9 @@ namespace WebAPIBase.API
 
             app.UseAuthorization();
 
+            ///异常捕获的实现
+            app.UseCustomErrorMiddleware();
+
             app.UseCors();
 
             app.UseEndpoints(endpoints =>