zhaowc
2024-08-30 9176aaed52f030ccb9e00be157f893633153d1ca
Wms/Wms/Controllers/UpApiController.cs
@@ -14,6 +14,16 @@
using Model.ModelVm.BllCheckVm;
using WMS.DAL;
using Microsoft.AspNetCore.Authorization;
using Utility;
using System.Collections.Generic;
using System.Reflection.Emit;
using System.Linq;
using System.Text;
using Newtonsoft.Json.Linq;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using WMS.BLL.BllPdaServer;
using WMS.IBLL.IPdaServer;
namespace Wms.Controllers
{
@@ -30,13 +40,15 @@
        private readonly IArrivalNoticeServer _arrivalNoticeSvc;
        private readonly IStockCheckServer _stockCheckSvc;//盘点单Svc 
        private readonly IProcurePlanServer _procurePlanSvc;//采购单Svs
        public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc, IProcurePlanServer procurePlanSvc)
        private readonly IPdaAsnServer _pdaAsnServer;// PDA
        public UpApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IArrivalNoticeServer arrivalNoticeServer, IStockCheckServer stockCheckSvc, IProcurePlanServer procurePlanSvc, IPdaAsnServer pdaAsnServer)
        {
            _config = setting.Value;
            _exNoticeSvc = exNoticeSvc;
            _arrivalNoticeSvc = arrivalNoticeServer;
            _stockCheckSvc = stockCheckSvc;
            _procurePlanSvc = procurePlanSvc;
            _pdaAsnServer = pdaAsnServer;
        }
        #endregion
@@ -77,7 +89,7 @@
        /// <param name="model">入库单号</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult FinishAsn(IdVm model)
        public IActionResult FinishAsn(IdVm model)
        {
            try
            {
@@ -124,7 +136,7 @@
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _arrivalNoticeSvc.ByPdaFinish(model.Code, model.Code.Substring(0,2) == "AS" ? _config.ErpHost + _config.AsnFinishUrl : _config.ErpHost + _config.SoFinishUrl, int.Parse(userId));
                _arrivalNoticeSvc.ByPdaFinish(model.Code, model.Code.Substring(0, 2) == "AS" ? _config.ErpHost + _config.AsnFinishUrl : _config.ErpHost + _config.SoFinishUrl, int.Parse(userId));
                return Ok(new { code = 0, count = 0, msg = "单据复核并上传成功" });
            }
@@ -200,7 +212,7 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult FinishCr(AdjustStockCheckVm model)
        public async Task<IActionResult> FinishCr(AdjustStockCheckVm model)
        {
            try
            {
@@ -215,27 +227,24 @@
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                bool bolls = false;
                //bool bolls = false;
                if (model.Origin == "0")
                {
                    bolls = _stockCheckSvc.StockAdjust(model.Id, int.Parse(userId));
                    await _stockCheckSvc.StockAdjust(model.Id);
                }
                else
                {
                    bolls = _stockCheckSvc.StockAdjustAuto(model.Id, int.Parse(userId));
                    await _stockCheckSvc.StockAdjustAuto(model.Id);
                }
                if (bolls)
                {
                    //系统对接后放开
                    //var bl =_stockCheckSvc.FinishCr(model.Id,_config.ErpHost + _config.DataChangeUrl, int.Parse(userId));
                    //if (bl)
                    //{
                    return Ok(new { code = 0, count = 0, msg = "盘点单调整上传成功" });
                    //}
                    //return Ok(new { code = 1, count = 0, msg = "出库单关单成功但上传失败" });
                }
                //系统对接后放开
                //var bl =_stockCheckSvc.FinishCr(model.Id,_config.ErpHost + _config.DataChangeUrl, int.Parse(userId));
                //if (bl)
                //{
                return Ok(new { code = 0, count = 0, msg = "盘点单调整上传成功" });
                //}
                //return Ok(new { code = 1, count = 0, msg = "出库单关单成功但上传失败" });
                return Ok(new { code = 1, msg = "盘点单调整失败" });
                //return Ok(new { code = 1, msg = "盘点单调整失败" });
            }
            catch (Exception e)
@@ -244,8 +253,30 @@
            }
        }
        //箱码信息 手持组托用 (扫箱码向追溯要信息)
        //
        /// <summary>
        /// 箱码信息 手持组托用 (扫箱码向追溯要信息)
        /// </summary>
        /// <param name="model">BoxNo:箱号</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetFMBindBoxInfos(string BoxNo)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(BoxNo))
                {
                    return Ok(new { code = 1, msg = "未获取到当前请求箱码信息" });
                }
                var models = _pdaAsnServer.GetFMBindBoxInfos(BoxNo);
                return Ok(new { code = 0, msg = "标签箱码信息", data = models });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        }
        #endregion
@@ -330,7 +361,7 @@
            {
                SoResInfo result = _exNoticeSvc.ErpAddExportNotice(model);
                return Ok(result);
            }
            catch (Exception e)
            {
@@ -413,6 +444,10 @@
        #region 测试小数位数值
        ///// <summary>
        ///// 测试小数位数值
        ///// </summary>
        ///// <returns></returns>
        //[HttpGet]
        //public IActionResult Demo()
        //{
@@ -433,6 +468,73 @@
        //    }
        //}
        /// <summary>
        /// 测试验签加密
        /// </summary>
        /// <returns></returns>
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        [Verification]
        [HttpPost]
        public IActionResult Demo2(IdVm model)
        {
            var result = new ErpModel { Success = -1, Message = "" };
            try
            {
                //var com = new Common();
                //decimal s = 13.3450M;
                //var sdf = com.GetViewVal(4, s);
                result = new ErpModel { Success = -1, Message = "sdf.ToString()" };
                return Ok(result);
            }
            catch (Exception e)
            {
                result.Message = e.Message;
                return Ok(result);
            }
        }
        [HttpPost]
        [ServiceFilter(typeof(ApiResponseActionFilter))]
        [UnitOfWork]
        public string Demo3(IdVm model)
        {
            string jsonParams = JsonConvert.SerializeObject(model);
            // 生成时间戳(Unix 时间戳)
            var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
            // 生成签名
            var signature = GenerateSignature(jsonParams);
            // 输出签名
            Console.WriteLine("Generated Signature: " + signature);
            return signature;
        }
        private static string GenerateSignature(string jsonParams)
        {
            var appKey = "90170307d4184844ac2a26b431f79981";
            // 将 JSON 字符串转换为 JObject
            JObject jObject = JObject.Parse(jsonParams);
            // 过滤掉数组类型的属性
            var filteredProperties = jObject.Properties()
                .Where(p => p.Value.Type != JTokenType.Array)
                .ToDictionary(p => p.Name, p => p.Value.ToString());
            // 添加时间戳(Unix 时间戳)
            var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
            filteredProperties.Add("timestamp", timestamp);
            filteredProperties.Add("appKey", appKey);
            // 构建待签名字符串
            var signatureBaseString = string.Join("&", filteredProperties.OrderBy(p => p.Key).Select(p => p.Key + "=" + p.Value));
            // 计算 MD5 值
            var computedSignature = Md5Tools.CalcMd5(signatureBaseString);
            return computedSignature;
        }
        #endregion
    }
}