wangxinhui
昨天 1440114cfae626c192ef59775e9d7829db634c1c
上传
已删除2个文件
已修改5个文件
171 ■■■■ 文件已修改
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/设备协议/~$堆垛机和提升机通信协议.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/设备协议/~$阻焊仓堆垛机通信协议.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs
@@ -10,6 +10,7 @@
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_External.Model;
using WIDESEA_IApprovalRepository;
using WIDESEA_ICheckRepository;
using WIDESEA_ICheckService;
@@ -166,6 +167,121 @@
            }
            return content;
        }
        public WebResponseContent CommitCheckResult(ERPCheckModel checkModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderNo == checkModel.Code);
                //获取质检单对应的收货单
                if (checkOrder == null)
                {
                    return content.Error($"未找到该质检单");
                }
                Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
                if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt())
                {
                    return content.Error($"{receiveOrder.ReceiveOrderNo}收货单未完成无法质检");
                }
                if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt())
                {
                    return content.Error($"该单据已经检验完成");
                }
                Dt_CheckOrderResult? checkOrderResult = null;
                Dt_PurchaseOrder? purchaseOrder = null;
                Dt_PurchaseOrderDetail? purchaseOrderDetail = null;
                if (checkModel.Details.Count>0)
                {
                    ERPCheckResult eRPCheckResult = checkModel.Details.FirstOrDefault();
                    if (eRPCheckResult.Result == CheckResultEnum.Return.ToString())//退货
                    {
                        checkOrder.DefectedNote = eRPCheckResult.Result;
                        checkOrder.ReturnQuantity += (float)Convert.ToDecimal(eRPCheckResult.Quantity);
                    }
                    else
                    {
                        return content.Error($"未找到缺陷类型");
                    }
                    checkOrderResult = new Dt_CheckOrderResult()
                    {
                        Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity),
                        CheckOrderId = checkOrder.CheckOrderId,
                        DefectCode = eRPCheckResult.DefectCode,
                        Result = eRPCheckResult.Result,
                        Note = eRPCheckResult.Note,
                        SampleCount = 0,
                    };
                    //获取对应采购单
                    Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo);
                    purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First();
                    if (purchaseOrder == null)
                    {
                        return content.Error("未找到对应收货采购单");
                    }
                    purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault();
                    if (purchaseOrderDetail == null)
                    {
                        return content.Error("未找到退货对应的采购单明细");
                    }
                    purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity);
                }
                if (checkModel.Result == CheckAcceptEnum.Accept.ToString())
                {
                    checkOrder.Result = CheckAcceptEnum.Accept.ToString();
                }
                else if (checkModel.Result == CheckAcceptEnum.UnAccept.ToString())
                {
                    checkOrder.Result = CheckAcceptEnum.UnAccept.ToString();
                }
                else
                {
                    return content.Error("未找到检验类型");
                }
                checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt();
                if (checkOrderResult != null)
                {
                    checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity;
                }
                else
                {
                    checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity;
                }
                checkOrder.CheckUserName = App.User.UserName;
                _unitOfWorkManage.BeginTran();
                if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null)
                {
                    BaseDal.AddData(checkOrderResult);
                    if (purchaseOrder.PurchaseOrderStatus >= PurchaseOrderStatusEnum.Received.ObjToInt())
                    {
                        purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt();
                        _purchaseOrderRepository.UpdateData(purchaseOrder);
                    }
                    if (purchaseOrderDetail.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Received.ObjToInt())
                    {
                        purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt();
                    }
                    _purchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
                }
                //ERP上报
                WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>());
                if (!responseContent.Status)
                {
                    throw new Exception(responseContent.Message);
                }
                checkOrder.UploadStatus = CheckUploadEnum.UploadOk.ObjToInt();
                _checkOrderRepository.UpdateData(checkOrder);
                _unitOfWorkManage.CommitTran();
                content.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                return content.Error($"{ex.Message}");
            }
            return content;
        }
        /// <summary>
        /// æäº¤é€æ£€ç¡®è®¤ç»“æžœ
        /// </summary>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs
@@ -5,6 +5,7 @@
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_External.Model;
using WIDESEA_Model.Models;
namespace WIDESEA_ICheckService
@@ -20,6 +21,7 @@
        /// <returns></returns>
        WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult, int IsAccept = 0);
        WebResponseContent CommitInspectResult(int checkOrderId, Dt_CheckOrderResult checkResult, int IsAccept = 0);
        WebResponseContent CommitCheckResult(ERPCheckModel checkModel);
        /// <summary>
        /// èŽ·å–æ£€éªŒä¿¡æ¯
        /// </summary>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/WIDESEA_ICheckService.csproj
@@ -8,6 +8,7 @@
  <ItemGroup>
    <ProjectReference Include="..\WIDESEA_CheckRepository\WIDESEA_CheckRepository.csproj" />
    <ProjectReference Include="..\WIDESEA_External\WIDESEA_External.csproj" />
  </ItemGroup>
</Project>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs
@@ -172,17 +172,18 @@
                newTask.TaskId = taskId;
                Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
                //上传ERP
                //WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
                WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
                _proInStatisticsService.SaveStatic(bagInfoModel);
                //if (!responseContent.Status)
                //{
                //    mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
                //    mesProInOrder.Remark = responseContent.Message;
                //}
                //else
                //{
                if (!responseContent.Status)
                {
                    //mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
                    //mesProInOrder.Remark = responseContent.Message;
                    throw new Exception(responseContent.Message);
                }
                else
                {
                    mesProInOrder.UpErpStatus = WhetherEnum.True.ObjToInt();
                //}
                }
                Db.InsertNav(mesProInOrder).Include(x => x.Details).ExecuteCommand();
                _unitOfWorkManage.CommitTran();
                //推送任务
@@ -281,18 +282,19 @@
            };
            
            _unitOfWorkManage.BeginTran();
            Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
            ////上传ERP
            //WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
            //if (!responseContent.Status)
            //{
            //    mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
            //    mesProInOrder.Remark = responseContent.Message;
            //}
            //else
            //{
            //上传ERP
            WebResponseContent responseContent = _inboundOrderService.FeedbackProIn(mesProInOrder);
            if (!responseContent.Status)
            {
                //mesProInOrder.UpErpStatus = WhetherEnum.False.ObjToInt();
                //mesProInOrder.Remark = responseContent.Message;
                return WebResponseContent.Instance.Error($"{responseContent.Message}");
            }
            else
            {
                mesProInOrder.UpErpStatus = WhetherEnum.True.ObjToInt();
            //}
            }
            Db.InsertNav(proStockInfo).Include(x => x.proStockInfoDetails).ExecuteCommand();
            Db.InsertNav(mesProInOrder).Include(x => x.Details).ExecuteCommand();
            _unitOfWorkManage.CommitTran();
            return WebResponseContent.Instance.OK("接收成功");
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs
@@ -16,6 +16,7 @@
using WIDESEA_DTO.Stock;
using WIDESEA_External.Model;
using WIDESEA_External.ERPService;
using WIDESEA_ICheckService;
namespace WIDESEA_WMSServer.Controllers.MES
{
@@ -29,11 +30,13 @@
        private readonly IOutboundService _outboundService;
        private readonly ITaskService _taskService;
        private readonly IInvokeERPService _invokeERPService;
        public MesController(IOutboundService outboundService, ITaskService taskService,IInvokeERPService invokeERPService)
        private readonly ICheckOrderResultService _checkOrderResultService;
        public MesController(IOutboundService outboundService, ITaskService taskService,IInvokeERPService invokeERPService, ICheckOrderResultService checkOrderResultService)
        {
            _outboundService = outboundService;
            _taskService = taskService;
            _invokeERPService = invokeERPService;
            _checkOrderResultService=checkOrderResultService;
        }
        /// <summary>
@@ -284,6 +287,11 @@
        [HttpPost, Route("CheckResultReturn"), AllowAnonymous, MethodParamsValidate]
        public MesResponseContent CheckResultReturn([FromBody] Root<ERPCheckModel>  model)
        {
            WebResponseContent responseContent = _checkOrderResultService.CommitCheckResult(model.Content);
            if (!responseContent.Status)
            {
                return MesResponseContent.Instance.Error(responseContent.Message);
            }
            string content = _invokeERPService.InvokeCheckOrderApi(model.Content);
            ErpRequestContent requestContent = content.DeserializeObject<ErpRequestContent>();
            if (requestContent.res != 1)
ÏîÄ¿×ÊÁÏ/É豸ЭÒé/~$¶Ñ¶â»úºÍÌáÉý»úͨÐÅЭÒé.xlsx
Binary files differ
ÏîÄ¿×ÊÁÏ/É豸ЭÒé/~$×躸²Ö¶Ñ¶â»úͨÐÅЭÒé.xlsx
Binary files differ