| | |
| | | using MES.Service.Dto.service; |
| | | using MES.Service.Modes; |
| | | using MES.Service.util; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using DbType = System.Data.DbType; |
| | | |
| | |
| | | { |
| | | //当前类已经继承了 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) |
| | | { |
| | |
| | | |
| | | 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); |
| | | } |
| | | } |