Prechádzať zdrojové kódy

单独在库检逻辑。

tangdi 2 rokov pred
rodič
commit
f9f4e62381

+ 9 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/IResourceExamineAppService.cs

@@ -57,6 +57,15 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         Task<string> ProduceDayPlanKittingCheck(string startime, string endtime, string domain, string userAccount);
 
+        /// <summary>
+        /// 묏데데뗌瞳욋쇱
+        /// </summary>
+        /// <param name="workord"></param>
+        /// <param name="domain"></param>
+        /// <param name="userAccount"></param>
+        /// <returns></returns>
+        Task<string> ProduceDayPlanKittingCheckByWorkOrd(string workord, string domain, string userAccount);
+
         /// <summary>
         /// 競덜죕쇱꿴
         /// </summary>

+ 120 - 0
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1,4 +1,5 @@
 using Amazon.Runtime.Internal;
+using Amazon.Runtime.Internal.Util;
 using Business.Core.Enum;
 using Business.Core.Utilities;
 using Business.Domain;
@@ -3179,6 +3180,125 @@ namespace Business.ResourceExamineManagement
             }
         }
 
+        /// <summary>
+        /// 工单单独在库检
+        /// </summary>
+        /// <param name="workord"></param>
+        /// <param name="domain"></param>
+        /// <param name="userAccount"></param>
+        /// <returns></returns>
+        public async Task<string> ProduceDayPlanKittingCheckByWorkOrd(string workord, string domain, string userAccount)
+        {
+            if (string.IsNullOrEmpty(workord))
+            {
+                return "请输入DOP工单号";
+            }
+            if (string.IsNullOrEmpty(domain))
+            {
+                return "当前用户无工厂编码";
+            }
+            workord = workord.Trim();
+            var worklist = _workOrdMaster.Select(x => x.WorkOrd == workord && x.Domain == domain && x.IsActive).ToList();
+            WorkOrdMaster work = null;
+            if (worklist.Any())
+            {
+                work = worklist[0];
+            }
+            if (work == null)
+            {
+                return "当前工单不存在,请检查";
+            }
+            string stateText = "";
+            if (!string.IsNullOrEmpty(work.Status))
+            {
+                switch (work.Status.ToUpper())
+                {
+                    case "C":
+                        stateText = "关闭";
+                        break;
+                    case "W":
+                        stateText = "投产";
+                        break;
+                    case "R":
+                        stateText = "下达";
+                        break;
+                    case "S":
+                        stateText = "暂停";
+                        break;
+                    case "P":
+                        stateText = "";
+                        break;
+                    default:
+                        stateText = "未知";
+                        break;
+                }
+            }
+            if (stateText != "")
+            {
+                return "当前工单为【"+ stateText + "】,不允许进行在库检";
+            }
+            var periodSd = _periodSequenceDet.Select(s => s.Domain == domain && s.WorkOrds == workord && s.IsActive).ToList();
+            if (periodSd.Any())
+            {
+                List<mes_morder> morders = _mysql_mes_morder.GetListAsync(x => domain == x.factory_id.ToString() && x.morder_no == workord && (string.IsNullOrEmpty(x.morder_state) || x.morder_state == MorderEnum.Initial_state || x.morder_state == MorderEnum.Xd_state) && !x.IsDeleted).Result;
+                if (!morders.Any())
+                {
+                    return "没有需要下达的工单";
+                }
+                var rst = await OrderResourceCheck(morders, domain, userAccount);
+                if (rst == "ok")
+                {
+                    //屏蔽日期过滤
+                    /*var sysSet = _generalizedCodeMaster.Select(s => s.FldName == "SystemConfig" && s.Val == "WorkOrderLockPeriod" && s.Domain == domain).ToList();
+                    decimal lookDay = 0;
+                    if (sysSet.Any())
+                    {
+                        //锁定期
+                        lookDay = sysSet[0].UDeci1;
+                    }
+                    lookDay = lookDay == 0 ? 7 : lookDay;
+                    DateTime lookTime = DateTime.Now.Date.AddDays((double)lookDay);*/
+
+                    string workords = "";
+                    foreach (var mo in morders)
+                    {
+                        //if (mo.MaterialSituation == MorderEnum.CarehouseComplete && mo.morder_state == MorderEnum.Initial_state && mo.moentry_sys_stime.GetValueOrDefault().Date <= lookTime)
+                        if (mo.MaterialSituation == MorderEnum.CarehouseComplete && mo.morder_state == MorderEnum.Initial_state)
+                        {
+                            workords += "," + mo.morder_no;
+                            //mo.morder_state = MorderEnum.Xd_state;
+                        }
+                    }
+                    await _businessDbContext.BulkUpdateAsync(morders);
+                    //按卫亮要求。屏蔽自动下达
+                    /*if (workords.Length > 0)
+                    {
+                        workords = workords.Substring(1, workords.Length - 1);
+                        //如果生成领料单,需清理掉当前工单的占用,然后根据领料单的数据,来生成工单的占用
+                        var pickRst = await CreatePickBill(workords, domain, userAccount);
+                        if (pickRst != "ok")
+                        {
+                            new NLogHelper("ResourceExamineAppService").WriteLog("CreatePickBill", "生成领料单相关数据更新失败:" + pickRst, _currentTenant.Id.ToString());
+                            return pickRst;
+                        }
+                        var insertList = GetCopyOP(workords, domain);
+                        if (insertList.Any())
+                        {
+                            _periodSequenceDet.Insert(insertList);
+                        }
+                    }*/
+                    return "ok";
+                }
+                else
+                {
+                    return rst;
+                }
+            }
+            else {
+                return "当前工单未生成日计划";
+            }
+        }
+
         /// <summary>
         /// 手动按工单下达
         /// </summary>

+ 13 - 0
MicroServices/Business/Business.HttpApi/Controllers/ResourceExamineController.cs

@@ -104,6 +104,19 @@ namespace Business.Controllers
             return _ResourceExamineAppService.ProduceDayPlanKittingCheck(startime, endtime, domain, userAccount);
         }
 
+        /// <summary>
+        /// 工单单独在库检
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet]
+        [Route("ProduceDayPlanKittingCheckByWorkOrd")]
+        public Task<string> ProduceDayPlanKittingCheckByWorkOrd(string workord, string domain, string userAccount)
+        {
+            return _ResourceExamineAppService.ProduceDayPlanKittingCheckByWorkOrd(workord, domain, userAccount);
+        }
+        
+
         /// <summary>
         /// 替代料检查
         /// </summary>