yyk
2024-08-22 1310b47a24f0cc70f0128c820bd490dca6a1a921
Wms/Wms/Controllers/PdaSoController.cs
@@ -10,27 +10,30 @@
using Model.ModelVm.PdaVm;
using WMS.IBLL.IPdaServer;
using Model.ModelDto;
using Model.ModelVm;
using Wms.Tools;
using Utility;
using System.Security.Cryptography;
namespace Wms.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    [Authorize]
    [ServiceFilter(typeof(ApiResponseActionFilter))]
    public class PdaSoController : ControllerBase
    {
        #region 依赖注入
        private readonly ApiUrlConfig _config; //接口交互路径
        private readonly IPdaSoServer _pdaSoSvc;
        private readonly UserManager _userManager;
        public PdaSoController(IOptions<ApiUrlConfig> setting,IPdaSoServer pdaSoSvc)
        public PdaSoController(IOptions<ApiUrlConfig> setting, IPdaSoServer pdaSoSvc, UserManager userManager)
        {
            _config = setting.Value;
            _pdaSoSvc = pdaSoSvc;
            _userManager = userManager;
        }
        #endregion
        /// <summary>
@@ -39,25 +42,9 @@
        /// <param name="model">PalletNo:托盘条码</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult IsEnableOkPalletNo(PdaSoVm model)
        public async Task IsEnableOkPalletNo(PdaSoVm model)
        {
            try
            {
                var strMsg = _pdaSoSvc.IsEnableOkPalletNo(model.PalletNo);
                if (strMsg == "")
                {
                    return Ok(new { code = 0, msg = "托盘可用!" });
                }
                else
                {
                    return Ok(new { code = 1, msg = strMsg });
                }
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            await _pdaSoSvc.IsEnableOkPalletNo(model.PalletNo);
        }
        /// <summary>
@@ -66,18 +53,9 @@
        /// <param name="model">PalletNo:托盘号</param> 
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetRunSoNoticeList(PdaSoVm model)
        public async Task<List<string>> GetRunSoNoticeList(PdaSoVm model)
        {
            try
            {
                var list = _pdaSoSvc.GetRunSoNoticeList(model.PalletNo,model.Type);
                return Ok(new { code = 0, msg = "出库单信息", data = list });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return await _pdaSoSvc.GetRunSoNoticeList(model.PalletNo, model.Type);
        }
        /// <summary>
@@ -86,18 +64,9 @@
        /// <param name="model">PalletNo:托盘码、SoNo:单据号</param> 
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetSoSkuLotNoListByPallet(PdaSoVm model)
        public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListByPallet(PdaSoVm model)
        {
            try
            {
                var models = _pdaSoSvc.GetSoSkuLotNoListByPallet(model.PalletNo, model.SoNo);
                return Ok(new { code = 0, msg = "物料-批次信息", data = models });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
           return await _pdaSoSvc.GetSoSkuLotNoListByPallet(model.PalletNo, model.SoNo);
        }
        /// <summary>
@@ -106,18 +75,9 @@
        /// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param> 
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetOutlets(PdaSoVm model)
        public async Task<OutPdaInfo> GetOutlets(PdaSoVm model)
        {
            try
            {
                var models = _pdaSoSvc.GetOutlets(model.SoDetailId, model.PalletNo);
                return Ok(new { code = 0, msg = "托盘上物料等信息", data = models });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return await _pdaSoSvc.GetOutlets(model.SoDetailId, model.PalletNo);
        }
        /// <summary>
@@ -126,38 +86,22 @@
        /// <param name="model">SoDetailId:出库单明细ID</param> 
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetPlanAndFinishQty(PdaSoVm model)
        public async Task<OutPdaInfo> GetPlanAndFinishQty(PdaSoVm model)
        {
            try
            {
                var models = _pdaSoSvc.GetPlanAndFinishQty(model.SoDetailId);
                return Ok(new { code = 0, msg = "出库单明细数量信息", data = models });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            var data = await _pdaSoSvc.GetPlanAndFinishQty(model.SoDetailId);
            return data;
        }
        /// <summary>
        /// 获取箱码信息(根据箱码在库存箱码明细中查询)
        /// </summary>
        /// <param name="model">BoxNo:箱码号</param>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetDataComBoxInfo(PdaSoVm model)
        public async Task<List<BoxInfo>> GetDataComBoxInfo(PdaSoVm model)
        {
            try
            {
                var models = _pdaSoSvc.GetDataComBoxInfo(model.SoDetailId,model.PalletNo, model.BoxNo, model.BoxNo3);
                return Ok(new { code = 0, msg = "箱码信息", data = models });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            var data = await _pdaSoSvc.GetDataComBoxInfo(model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3);
            return data;
        }
        /// <summary>
@@ -166,51 +110,9 @@
        /// <param name="model">BoxNo:箱码号</param> 
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetAllotPlnInfo(PdaSoVm model)
        public async Task<List<BoxInfo>> GetAllotPlnInfo(PdaSoVm model)
        {
            try
            {
                var models = _pdaSoSvc.GetAllotPlnInfo(model.SoDetailId, model.PalletNo);
                return Ok(new { code = 0, msg = "箱码信息", data = models });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 出库pda拣货
        /// </summary>
        /// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult SoSetPick(PdaSoVm model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _pdaSoSvc.SoSetPick(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3,model.PickQty ,int.Parse(userId));
                return Ok(new { code = 0, msg = "拣货完成", data = "" });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return await _pdaSoSvc.GetAllotPlnInfo(model.SoDetailId, model.PalletNo);
        }
        /// <summary>
@@ -219,30 +121,20 @@
        /// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param> 
        /// <returns></returns>
        [HttpPost]
        public IActionResult SoSetQtyPick(PdaSoVm model)
        public async Task SoSetPick(PdaSoVm model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
            await _pdaSoSvc.SoSetPick(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, _userManager.UserId);
        }
                _pdaSoSvc.SoSetQtyPick(model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty,  int.Parse(userId));
                return Ok(new { code = 0, msg = "拣货完成", data = "" });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        /// <summary>
        /// 出库pda拣货
        /// </summary>
        /// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param>
        /// <returns></returns>
        [HttpPost]
        public async Task SoSetQtyPick(PdaSoVm model)
        {
            await _pdaSoSvc.SoSetQtyPick(model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, _userManager.UserId);
        }
@@ -252,36 +144,9 @@
        /// <param name="model">空托盘出库</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult IssuePlnOutHouse(OutModePalletVm model)
        public async Task<string> IssuePlnOutHouse(OutModePalletVm model)
        {
            try
            {
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    throw new Exception("未获取到用户信息");
                }
                string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(UserId))
                {
                    throw new Exception("未获取到用户信息");
                }
                var strMsg = _pdaSoSvc.IssuePlnOutHouse(model, int.Parse(UserId), _config.WcsHost + _config.IssueComApiUrl);
                if (strMsg == "")
                {
                    return Ok(new { code = 0, msg = "空托盘出库成功!" });
                }
                else
                {
                    return Ok(new { code = 1, msg = strMsg });
                }
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            return await _pdaSoSvc.IssuePlnOutHouse(model, _userManager.UserId, _config.WcsHost + _config.IssueComApiUrl);
        }
@@ -293,17 +158,9 @@
        /// <param name="palletNo">托盘号</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetPingKuInfoByPallet(string soNo, string palletNo)
        public async Task<List<BoxInfo>> GetPingKuInfoByPallet(string soNo, string palletNo)
        {
            try
            {
                var list = _pdaSoSvc.GetPingKuInfoByPallet(soNo,palletNo);
                return Ok(new { data = list, code = 0, msg = "获取平库托盘信息成功" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "获取平库托盘信息错误:" + e.Message });
            }
            return await _pdaSoSvc.GetPingKuInfoByPallet(soNo, palletNo);
        }
        /// <summary>
@@ -313,31 +170,9 @@
        /// <param name="palletNo">托盘号</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult PlaneExportSuccess(string soNo, string palletNo)
        public async Task PlaneExportSuccess(string soNo, string palletNo)
        {
            try
            {
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    throw new Exception("未获取到用户信息");
                }
                string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(UserId))
                {
                    throw new Exception("未获取到用户信息");
                }
                int uid = Convert.ToInt32(UserId);
                _pdaSoSvc.PlaneExportSuccess(soNo, palletNo, uid);
                return Ok(new { data = "", code = 0, msg = "平库出库成功" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "平库出库错误:"+e.Message });
            }
            await _pdaSoSvc.PlaneExportSuccess(soNo, palletNo, _userManager.UserId);
        }
@@ -347,30 +182,9 @@
        /// <param name="palletNo">托盘号</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetSampleType(string palletNo)
        public async Task<string> GetSampleType(string palletNo)
        {
            try
            {
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    throw new Exception("未获取到用户信息");
                }
                string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(UserId))
                {
                    throw new Exception("未获取到用户信息");
                }
                var type = _pdaSoSvc.GetSampleType(palletNo);
                return Ok(new { data = type, code = 0, msg = "获取取样类型" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "获取取样类型错误:" + e.Message });
            }
            return await _pdaSoSvc.GetSampleType(palletNo);
        }
        /// <summary>
@@ -379,19 +193,9 @@
        /// <param name="palletNo">托盘号</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetAsnNoByPallet(string palletNo)
        public async Task<List<string>> GetAsnNoByPallet(string palletNo)
        {
            try
            {
                var type = _pdaSoSvc.GetAsnNoByPallet(palletNo);
                return Ok(new { data = type, code = 0, msg = "获取入库单据" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "获取入库单据错误:" + e.Message });
            }
            return await _pdaSoSvc.GetAsnNoByPallet(palletNo);
        }
        /// <summary>
        /// 取样出库拣货(标签)
@@ -399,31 +203,9 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult SampleSoSetPick(PdaSoVm model)
        public async Task SampleSoSetPick(PdaSoVm model)
        {
            try
            {
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    throw new Exception("未获取到用户信息");
                }
                string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(UserId))
                {
                    throw new Exception("未获取到用户信息");
                }
                int uid = Convert.ToInt32(UserId);
                _pdaSoSvc.SampleSoSetPick(model.Type,model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, model.AsnNo, uid);
                return Ok(new { data = "", code = 0, msg = "(标签)取样出库拣货" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "(标签)取样出库拣货错误:" + e.Message });
            }
            await _pdaSoSvc.SampleSoSetPick(model.Type, model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, model.AsnNo, _userManager.UserId);
        }
        /// <summary>
        /// 取样出库拣货(无标签)
@@ -431,30 +213,9 @@
        /// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param> 
        /// <returns></returns>
        [HttpPost]
        public IActionResult SampleSoSetQtyPick(PdaSoVm model)
        public async Task SampleSoSetQtyPick(PdaSoVm model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _pdaSoSvc.SampleSoSetQtyPick(model.Type, model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, model.AsnNo, int.Parse(userId));
                return Ok(new { data = "", code = 0, msg = "(无标签)取样出库拣货" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "(无标签)取样出库拣货错误:" + e.Message });
            }
            await _pdaSoSvc.SampleSoSetQtyPick(model.Type, model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, model.AsnNo, _userManager.UserId);
        }
        #region 拣货拼托
        /// <summary>
@@ -463,29 +224,9 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult SoSetPinPick(PdaSoVm model)
        public async Task SoSetPinPick(PdaSoVm model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _pdaSoSvc.SoSetPinPick(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, model.PalletNoNew, int.Parse(userId));
                return Ok(new { code = 0, msg = "拣货完成", data = "" });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            await _pdaSoSvc.SoSetPinPick(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, model.PalletNoNew, _userManager.UserId);
        }
        /// <summary>
        /// 拼托出库pda拣货-数量
@@ -493,30 +234,9 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult SoSetQtyPinPick(PdaSoVm model)
        public async Task SoSetQtyPinPick(PdaSoVm model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _pdaSoSvc.SoSetQtyPinPick(model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, model.PalletNoNew, int.Parse(userId));
                return Ok(new { code = 0, msg = "拣货完成", data = "" });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
            await _pdaSoSvc.SoSetQtyPinPick(model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, model.PalletNoNew, _userManager.UserId);
        }
        #endregion
@@ -529,19 +249,9 @@
        /// <param name="palletNo">托盘号</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetSampleType2(string palletNo)
        public async Task<string> GetSampleType2(string palletNo)
        {
            try
            {
                var type = _pdaSoSvc.GetSampleType2(palletNo);
                return Ok(new { data = type, code = 0, msg = "根据托盘号获取取样类型" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "根据托盘号获取取样类型:" + e.Message });
            }
            return await _pdaSoSvc.GetSampleType2(palletNo);
        }
        /// <summary>
@@ -549,19 +259,9 @@
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetInspectionNo()
        public async Task<List<string>> GetInspectionNo()
        {
            try
            {
                var qcNoStr = _pdaSoSvc.GetInspectionNo();
                return Ok(new { data = qcNoStr, code = 0, msg = "获取待出库或待取样的请验单" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "获取待出库或待取样的请验单:" + e.Message });
            }
            return await _pdaSoSvc.GetInspectionNo();
        }
        /// <summary>
@@ -570,19 +270,9 @@
        /// <param name="qcNo">请验单</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetInspectionRequestInfo(string qcNo)
        public async Task<InspectionRequestDto> GetInspectionRequestInfo(string qcNo)
        {
            try
            {
                var info = _pdaSoSvc.GetInspectionRequestInfo(qcNo);
                return Ok(new { data = info, code = 0, msg = "获取请验单相关信息" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "获取请验单相关信息:" + e.Message });
            }
            return await _pdaSoSvc.GetInspectionRequestInfo(qcNo);
        }
        /// <summary>
@@ -591,31 +281,9 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult SampleSetPick(SampleSoVm model)
        public async Task SampleSetPick(SampleSoVm model)
        {
            try
            {
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    throw new Exception("未获取到用户信息");
                }
                string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(UserId))
                {
                    throw new Exception("未获取到用户信息");
                }
                int uid = Convert.ToInt32(UserId);
                _pdaSoSvc.SampleSetPick(model.QcNo, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, uid);
                return Ok(new { data = "", code = 0, msg = "(标签)取样出库拣货" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "(标签)取样出库拣货错误:" + e.Message });
            }
            await _pdaSoSvc.SampleSetPick(model.QcNo, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, _userManager.UserId);
        }
        /// <summary>
@@ -624,31 +292,9 @@
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult SampleSetQtyPick(SampleSoVm model)
        public async Task SampleSetQtyPick(SampleSoVm model)
        {
            try
            {
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    throw new Exception("未获取到用户信息");
                }
                string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(UserId))
                {
                    throw new Exception("未获取到用户信息");
                }
                int uid = Convert.ToInt32(UserId);
                _pdaSoSvc.SampleSetQtyPick(model.QcNo, model.PalletNo, model.PickQty, uid);
                return Ok(new { data = "", code = 0, msg = "(数量)取样出库拣货" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = "(数量)取样出库拣货错误:" + e.Message });
            }
            await _pdaSoSvc.SampleSetQtyPick(model.QcNo, model.PalletNo, model.PickQty, _userManager.UserId);
        }
        #endregion