|
|
@@ -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>
|