add
zongzhibin
2024-11-23 de4e5b2eafe108d20bc0fc4f215fdda135ed04c9
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs
@@ -4,6 +4,11 @@
using System.Data;
using System.Web;
using System.Text;
using Furion.DatabaseAccessor;
using Admin.NET.Core.Enum;
using Furion.RemoteRequest.Extensions;
using StackExchange.Profiling.Internal;
namespace Admin.NET.Application;
/// <summary>
/// 推送mes包装号服务
@@ -92,7 +97,7 @@
        var entity = input.Adapt<MesPushPackageCode>();
        //重复性验证
        await CheckExist(entity,true);
        await CheckExist(entity, true);
        await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
    }
@@ -111,11 +116,40 @@
    }
    [HttpPost]
    [ApiDescriptionSettings(Name = "PushPackageCode")]
    [UnitOfWork]
    [AllowAnonymous]
    public async Task PushPackageCode(PushPackageCodeInput input)
    {
        var value = await _rep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
        if (value == null) throw Oops.Oh("包装号不存在");
        if (value.PushStatus != (int)PushStatusEnum.NotPush || value.PushStatus != (int)PushStatusEnum.Pushing) throw Oops.Oh("重复推送");
        string url = "http://localhost:8088/api/getwmstask/getwmstask";
        var respon = await url.SetHttpMethod(HttpMethod.Post).SetBody(input).PostAsStringAsync();
        var data = respon.FromJson<Respone>();
        if (data.iState == 1)
        {
            value.PushStatus = (int)PushStatusEnum.PushSuccess;
            value.ApiMessage = data.message;
            value.PushNum++;
        }
        else
        {
            value.PushStatus = (int)PushStatusEnum.Pushing;
            value.ApiMessage = data.message;
            value.PushNum++;
            if (value.PushNum == 3)
            {
                value.PushStatus = (int)PushStatusEnum.PushFail;
            }
        }
        await _rep.UpdateAsync(value);
    }
    #region 导入
    /// <summary>
    /// Excel模板导入推送mes包装号功能
    /// </summary>
@@ -125,15 +159,15 @@
    [ApiDescriptionSettings(Name = "ImportExcel")]
    [Description("MesPushPackageCode/ImportExcel")]
    public async Task<int> ImportExcelAsync(IFormFile file)
    {
    {
        int _HeadStartLine = 2;//第1行是说明,第2行是列名
        int _DataStartLine = 3;//第3行开始是数据
        DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
        var addList =await CommonImport(importDataTable, _DataStartLine);
        var addList = await CommonImport(importDataTable, _DataStartLine);
        await _rep.InsertRangeAsync(addList);
        return addList.Count;
    }
    /// <summary>
    ///  DataTable转换实体对象列表
    /// </summary>
@@ -148,91 +182,91 @@
        {
            index++;
            //导入模版定制化代码(替换模版使用)
                           var addItem = new MesPushPackageCode();
                          #region 定义变量
                           var _PackageCode = "";//包装号
                           var _PushStatus = "";//推送状态
                           var _PushNum = "";//推送次数
                           var _ApiMessage = "";//接口返回参数
                           var _CreateOrgName = "";//创建者部门名称
                          #endregion
                          #region 取值
                           _PackageCode = row["包装号"]?.ToString() ;
                           _PushStatus = row["推送状态"]?.ToString() ;
                           _PushNum = row["推送次数"]?.ToString() ;
                           _ApiMessage = row["接口返回参数"]?.ToString() ;
                           _CreateOrgName = row["创建者部门名称"]?.ToString() ;
                          #endregion
                          #region 验证
                          if (string.IsNullOrEmpty(_PackageCode))
                          {
                            throw Oops.Oh($"第{index}行[包装号]{_PackageCode}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PackageCode))
                          {
                                addItem.PackageCode = (string)(_PackageCode.Trim());
                           }
                          if (string.IsNullOrEmpty(_PushStatus))
                          {
                            throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PushStatus))
                          {
                              if (!int.TryParse(_PushStatus, out int outPushStatus)&&!string.IsNullOrEmpty(_PushStatus))
                              {
                                 throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}值不正确!");
                              }
                              if (outPushStatus <= 0&&!string.IsNullOrEmpty(_PushStatus))
                              {
                                 throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.PushStatus = outPushStatus;
                              }
                          }
                          if (string.IsNullOrEmpty(_PushNum))
                          {
                            throw Oops.Oh($"第{index}行[推送次数]{_PushNum}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_PushNum))
                          {
                              if (!int.TryParse(_PushNum, out int outPushNum)&&!string.IsNullOrEmpty(_PushNum))
                              {
                                 throw Oops.Oh($"第{index}行[推送次数]{_PushNum}值不正确!");
                              }
                              if (outPushNum <= 0&&!string.IsNullOrEmpty(_PushNum))
                              {
                                 throw Oops.Oh($"第{index}行[推送次数]{_PushNum}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.PushNum = outPushNum;
                              }
                          }
                          if(!string.IsNullOrEmpty(_ApiMessage))
                          {
                                addItem.ApiMessage = (string)(_ApiMessage.Trim());
                           }
                          if(!string.IsNullOrEmpty(_CreateOrgName))
                          {
                                addItem.CreateOrgName = (string)(_CreateOrgName.Trim());
                           }
                          #endregion
            var addItem = new MesPushPackageCode();
            #region 定义变量
            var _PackageCode = "";//包装号
            var _PushStatus = "";//推送状态
            var _PushNum = "";//推送次数
            var _ApiMessage = "";//接口返回参数
            var _CreateOrgName = "";//创建者部门名称
            #endregion
            #region 取值
            _PackageCode = row["包装号"]?.ToString();
            _PushStatus = row["推送状态"]?.ToString();
            _PushNum = row["推送次数"]?.ToString();
            _ApiMessage = row["接口返回参数"]?.ToString();
            _CreateOrgName = row["创建者部门名称"]?.ToString();
            #endregion
            #region 验证
            if (string.IsNullOrEmpty(_PackageCode))
            {
                throw Oops.Oh($"第{index}行[包装号]{_PackageCode}不能为空!");
            }
            if (!string.IsNullOrEmpty(_PackageCode))
            {
                addItem.PackageCode = (string)(_PackageCode.Trim());
            }
            if (string.IsNullOrEmpty(_PushStatus))
            {
                throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}不能为空!");
            }
            if (!string.IsNullOrEmpty(_PushStatus))
            {
                if (!int.TryParse(_PushStatus, out int outPushStatus) && !string.IsNullOrEmpty(_PushStatus))
                {
                    throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}值不正确!");
                }
                if (outPushStatus <= 0 && !string.IsNullOrEmpty(_PushStatus))
                {
                    throw Oops.Oh($"第{index}行[推送状态]{_PushStatus}值不能小于等于0!");
                }
                else
                {
                    addItem.PushStatus = outPushStatus;
                }
            }
            if (string.IsNullOrEmpty(_PushNum))
            {
                throw Oops.Oh($"第{index}行[推送次数]{_PushNum}不能为空!");
            }
            if (!string.IsNullOrEmpty(_PushNum))
            {
                if (!int.TryParse(_PushNum, out int outPushNum) && !string.IsNullOrEmpty(_PushNum))
                {
                    throw Oops.Oh($"第{index}行[推送次数]{_PushNum}值不正确!");
                }
                if (outPushNum <= 0 && !string.IsNullOrEmpty(_PushNum))
                {
                    throw Oops.Oh($"第{index}行[推送次数]{_PushNum}值不能小于等于0!");
                }
                else
                {
                    addItem.PushNum = outPushNum;
                }
            }
            if (!string.IsNullOrEmpty(_ApiMessage))
            {
                addItem.ApiMessage = (string)(_ApiMessage.Trim());
            }
            if (!string.IsNullOrEmpty(_CreateOrgName))
            {
                addItem.CreateOrgName = (string)(_CreateOrgName.Trim());
            }
            #endregion
            details.Add(addItem);
        }
@@ -240,7 +274,7 @@
        await CheckExisitForImport(details);
        return details;
    }
    /// <summary>
    /// 根据版本下载推送mes包装号的Excel导入模板
    /// </summary>
@@ -254,7 +288,7 @@
        var fileName = HttpUtility.UrlEncode($"导入模板(推送mes包装号).xlsx", Encoding.GetEncoding("UTF-8"));
        return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
    }
    #endregion
    #region 私有方法
@@ -275,57 +309,57 @@
                || u.CreateOrgName.Contains(input.SearchKey.Trim())
            )
            .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
            .WhereIF(input.PushStatus>0, u => u.PushStatus == input.PushStatus)
            .WhereIF(input.PushNum>0, u => u.PushNum == input.PushNum)
            .WhereIF(input.PushStatus > 0, u => u.PushStatus == input.PushStatus)
            .WhereIF(input.PushNum > 0, u => u.PushNum == input.PushNum)
            .WhereIF(!string.IsNullOrWhiteSpace(input.ApiMessage), u => u.ApiMessage.Contains(input.ApiMessage.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.CreateOrgName), u => u.CreateOrgName.Contains(input.CreateOrgName.Trim()))
            .Select<MesPushPackageCodeOutput>();
        return query;
       }
    }
        /// <summary>
        /// 重复性验证
        /// </summary>
        /// <param name="input">验证对象</param>
        /// <param name="isEdit">是否是编辑</param>
        /// <returns></returns>
        private async Task CheckExist( MesPushPackageCode input,bool isEdit=false)
    /// <summary>
    /// 重复性验证
    /// </summary>
    /// <param name="input">验证对象</param>
    /// <param name="isEdit">是否是编辑</param>
    /// <returns></returns>
    private async Task CheckExist(MesPushPackageCode input, bool isEdit = false)
    {
        //没有配置组合校验,不需要验重
        //没有配置单独校验,不需要验重
    }
    /// <summary>
    /// 根据组合校验和单独校验验证数据是否已存在-导入时验证
    /// </summary>
    /// <param name="inputs"></param>
    /// <returns></returns>
    private async Task CheckExisitForImport(List<MesPushPackageCode> inputs)
    {
        if (inputs?.Count <= 0)
        {
            //没有配置组合校验,不需要验重
            //没有配置单独校验,不需要验重
       }
       /// <summary>
        /// 根据组合校验和单独校验验证数据是否已存在-导入时验证
        /// </summary>
        /// <param name="inputs"></param>
        /// <returns></returns>
        private async Task CheckExisitForImport(List<MesPushPackageCode> inputs)
        {
            if (inputs?.Count <= 0)
            {
                throw Oops.Oh($"导入数据不能为空");
            }
            //根据组合校验验证表格中中是否已存在相同数据
           //根据单独校验验证表格中中是否已存在相同数据
            throw Oops.Oh($"导入数据不能为空");
        }
     #endregion
        //根据组合校验验证表格中中是否已存在相同数据
        //根据单独校验验证表格中中是否已存在相同数据
    }
    #endregion
}