From 481e4bef4be32a5a9754d01faf80bf0bc4e14951 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 28 八月 2024 14:23:16 +0800 Subject: [PATCH] 生产领料单 --- MES.Service/service/Warehouse/MesInvItemOutsManager.cs | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 262 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/Warehouse/MesInvItemOutsManager.cs b/MES.Service/service/Warehouse/MesInvItemOutsManager.cs index 08b04e2..34788f7 100644 --- a/MES.Service/service/Warehouse/MesInvItemOutsManager.cs +++ b/MES.Service/service/Warehouse/MesInvItemOutsManager.cs @@ -3,6 +3,7 @@ using MES.Service.Dto.service; using MES.Service.Modes; using MES.Service.util; +using Newtonsoft.Json; using SqlSugar; using DbType = System.Data.DbType; @@ -12,6 +13,114 @@ { //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesInvItemOutsManager.cs + + public List<MesInvItemOuts> GetProductionPickPage(WarehouseQuery query) + { + return Db.Queryable<MesInvItemOuts, MesDepots>((a, o) => + new JoinQueryInfos( + JoinType.Left, + o.DepotCode == a.DepotCode && a.Company == o.Company && + a.Factory == o.Factory + )) + .Where((a, o) => a.BillTypeId == 200 && + a.TransactionNo == 201 && + a.Factory == "1000" && + a.Company == "1000" && + a.IsVisual == 1) + .WhereIF(query.status != null, (a, o) => a.Status == query.status) + .WhereIF(query.id != null, (a, o) => a.Id == query.id) + .Select((a, o) => new MesInvItemOuts + { + Id = a.Id, + Sapstatus = a.Sapstatus, + OutDate = a.OutDate, + CheckDate = a.CheckDate, + BoardItem = a.BoardItem, + WorkNo = a.WorkNo, + OutPart = a.OutPart, + PbillNo = a.PbillNo, + OutType = a.OutType, + CreateBy = a.CreateBy, + Status = a.Status, + CheckUser = a.CheckUser, + ItemOutNo = a.ItemOutNo, + DepotName = o.DepotName // 闇�瑕佸姩鎬佹坊鍔犵殑瀛楁 + }) + .ToPageList(query.PageIndex, query.Limit); + } + + public MaterialReceipt GetProductionPick(WarehouseQuery query) + { + var form = new MaterialReceipt(); + if (query.id != null) + { + var mesInvItemOutsList = GetProductionPickPage(query); + if (mesInvItemOutsList.Count <= 0) return form; + + form.ItemOuts = mesInvItemOutsList[0]; + form.ItemsList = getProductionItemsList(query); + form.InvItemoutCDetails = GetProductionDetails(query); + } + + return form; + } + + private List<MesInvItemOutItems> getProductionItemsList( + WarehouseQuery query) + { + return Db.Queryable<MesInvItemOutItems, MesItems, MesDepTaskInfo>( + (c, s, f) => new JoinQueryInfos( + JoinType.Inner, c.ItemNo == s.ItemNo, + JoinType.Left, f.TaskNo == c.TaskNo && f.ItemNo == c.ItemNo + )) + .Where((c, s, f) => c.ItemOutId == query.id) + .OrderBy(c => c.Id) + .Select((c, s, f) => new MesInvItemOutItems + { + Id = c.Id, + ItemNo = c.ItemNo, + Quantity = c.Quantity, + TaskNo = c.TaskNo, + Remark = c.Remark, + ItemName = s.ItemName, // 鍔ㄦ�佸瓧娈� + ItemModel = s.ItemModel, // 鍔ㄦ�佸瓧娈� + ItemUnit = SqlFunc.Subqueryable<MesItems>() + .Where(si => si.ItemUnit == s.ItemUnit) + .Select(si => + SqlFunc.MappingColumn<string>( + "F_GETUNITNAME(si.Item_Unit)")) // 鍔ㄦ�佸瓧娈� + }) + .ToList(); + } + + private List<MesInvItemOutCDetails> GetProductionDetails( + WarehouseQuery query) + { + return Db + .Queryable<MesInvItemOutCDetails, MesItems, MesDepots>( + (b, c, d) => new JoinQueryInfos( + JoinType.Left, + b.ItemNo == c.ItemNo && b.Company == c.Company && + b.Factory == c.Factory, + JoinType.Left, + d.DepotCode == b.DepotCode && b.Company == d.Company && + b.Factory == d.Factory + )) + .Where((b, c, d) => b.ItemOutId == query.id) + .Select((b, c, d) => new MesInvItemOutCDetails + { + ForceOutFlag = b.ForceOutFlag, + DepotSectionCode = b.DepotSectionCode, + ItemNo = b.ItemNo, + Quantity = b.Quantity, + ItemBarcode = b.ItemBarcode, + ItemName = c.ItemName, + ItemModel = c.ItemModel, + DepotName = d.DepotName, + DepotCode = b.DepotCode + }) + .ToList(); + } public bool ScanCode(WarehouseQuery query) { @@ -703,4 +812,157 @@ return ItemOutNos; } + //鐢熶骇棰嗘枡鍗曞鏍稿墠鏍¢獙 + + + public MessageCenter SaveProductionMessageCenter(WarehouseQuery entity) + { + var message = ProductionMesToErpParam(entity); + + var executeReturnIdentity = + Db.Insertable(message).ExecuteReturnIdentity(); + if (executeReturnIdentity > 0) + { + message.Id = executeReturnIdentity; + message.Pid = executeReturnIdentity; + return message; + } + + throw new Exception("鑾峰彇鏁版嵁澶辫触"); + } + + private MessageCenter ProductionMesToErpParam(WarehouseQuery query) + { + var erpParameters = ""; + var title = ""; + var tableName = "INV_ITEM_OUTS_" + query.Type; + if ("A".Equals(query.Type)) + { + erpParameters = + GetProductionErpParameters(query.billNo, query.userName); + title = "鐢熶骇棰嗘枡鍗�" + query.billNo + "瀹℃牳"; + } + + var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl; + var message = new MessageCenter + { + TableName = tableName, + Url = ErpUrl, + Status = 1, + CreateBy = query.userName, + Route = query.billNo, + Title = title, + PageName = "Warehouse/ProductionPick/Add?id=" + query.id + + "&itemOutNo=" + query.billNo, + CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + Method = "POST", + Seq = 1, + Data = erpParameters, + IsMessage = 0, + ContentType = "application/x-www-form-urlencoded" + }; + return message; + } + + private string GetProductionErpParameters(string? queryBillNo, + string? userName) + { + userName ??= "system"; + var mesInvItemOuts = Db.Queryable<MesInvItemOuts>() + .Where(it => it.ItemOutNo == queryBillNo) + .First(); + + if (mesInvItemOuts == null) throw new Exception("棰嗘枡鍗曞彿涓嶅瓨鍦�"); + + var womcaa = Db.Queryable<Womcaa>() + .Where(it => it.Caa020 == mesInvItemOuts.WorkNo) + .First(); + + if (womcaa == null) throw new Exception("浠诲姟鍗曞彿涓嶅瓨鍦�"); + + var Departmentcode = Db.Queryable<SysDepartment, MesInvItemOuts>( + (a, b) => + new JoinQueryInfos(JoinType.Left, + a.Departmentname == b.OutPart + )).Where((a, b) => + b.OutPart == mesInvItemOuts.OutPart && + b.ItemOutNo == queryBillNo).Select(a => a.Departmentcode) + .First(); + + if (string.IsNullOrEmpty(Departmentcode)) + throw new Exception("閮ㄩ棬淇℃伅涓嶅瓨鍦�"); + + // 妫�鏌ラ鏂欏崟鐘舵�� + if (mesInvItemOuts.Status == 1) throw new Exception("棰嗘枡鍗曞凡瀹℃牳锛屼笉鑳介噸澶嶆帹閫�"); + + var C_OUT_ITEMS = Db + .Queryable<MesInvItemOutItems, Womdab, Womdaa, Womcaa, Womcab>( + (c, b, d, e, f) => + new JoinQueryInfos( + JoinType.Left, b.Id == c.ItemDabid, + JoinType.Left, d.Id == b.Pid, + JoinType.Left, e.Caa001 == d.Daa021, + JoinType.Left, f.Eid == e.Erpid + )) + .Where((c, b, d, e, f) => c.ItemOutId == mesInvItemOuts.Id) + .Select((c, b, d, e, f) => new + { + c.Id, + c.ItemNo, + c.Quantity, + c.DepotCode, + c.DepotSectionCode, + c.ItemId, + erpId = b.ErpId, + e.Caa015, + f.PositionNo + }).ToList(); + + var scllentryList = new List<dynamic>(); + + foreach (var item in C_OUT_ITEMS) + { + var sql = + "SELECT FNAME FROM MES_UNIT WHERE ID = (SELECT ITEM_UNIT FROM MES_ITEMS WHERE ID = '" + + item.ItemId + "')"; + var C_ITEM_UNIT = Db.Ado.SqlQuerySingle<string>(sql); + + scllentryList.Add(new + { + FMaterialId = item.ItemNo, + FUnitID = C_ITEM_UNIT, + FAppQty = item.Quantity, + FActualQty = item.Quantity, + FStockId = item.DepotCode, + FPPBomEntryId = item.erpId, + F_UNW_Text_xsddh = item.Caa015, + F_UNW_TEXT_WZH = item.PositionNo, + F_MES_ENTRYID = item.Id + }); + } + + var dataJson = new + { + F_MES_ID = mesInvItemOuts.Id, + FDate = mesInvItemOuts.CreateBy, + FPickerId = userName, + F_UNW_LargeText_BZ = " ", + F_UNW_KH = " ", + F_UNW_DDSL = womcaa.Caa012, + F_UNW_Text_CZG = userName, + scllentry = scllentryList + }; + + return "taskname=SCLL&mesid=" + mesInvItemOuts.Id + + "&optype=create&datajson=" + + JsonConvert.SerializeObject( + dataJson); + } + + public bool AuditProduction(WarehouseQuery query) + { + query.status = 1; + //瀹℃牳 + return Update(query); + } } \ No newline at end of file -- Gitblit v1.9.3