using System; using SqlSugar; using Infrastructure.Attribute; using ZR.Model; using ZR.Repository; using ZR.Service.mes.wms.IService; using ZR.Model.MES.wms; using ZR.Model.MES.wms.Dto; using Mapster; using System.Collections.Generic; namespace ZR.Service.mes.wms { /// /// 出货单(物料+客户)Service业务层处理 /// [AppService(ServiceType = typeof(IWmOutOrderService), ServiceLifetime = LifeTime.Transient)] public class WmOutOrderService : BaseService, IWmOutOrderService { /// /// 查询出货单(物料+客户)列表 /// /// /// public PagedInfo GetList(WmOutOrderQueryDto parm) { var predicate = Expressionable.Create(); var response = Queryable() .Where(predicate.ToExpression()) .ToPage(parm); return response; } /// /// 获取详情 /// /// /// public WmOutOrder_material_num GetInfo(string ShipmentNum) { WmOutOrder WmOutOrderList = Context.Queryable() .Where(it => it.ShipmentNum == ShipmentNum) .First(); WmOutOrder_material_num wmOutOrderItem = null; if (WmOutOrderList != null) { wmOutOrderItem = WmOutOrderList.Adapt(); List moList = Context.Queryable() .Where(it => it.FkOutorderId == WmOutOrderList.ShipmentNum) .ToList(); if (moList != null && moList.Count > 0) { List Material_stock = new List(); foreach (var moItem in moList) { WmMaterial material = Context.Queryable().Where(it => it.Id == moItem.FkMaterialId).First(); WmMaterialQuery_stockQuantityDto2 dto2 = material.Adapt(); dto2.requireOutNum = moItem.OuthouseNum; Material_stock.Add(dto2); } wmOutOrderItem.MaterialList = Material_stock; } } return wmOutOrderItem; } /// /// 添加出货单(物料+客户) /// /// /// public WmOutOrder AddWmOutOrder(WmOutOrder_materialDto model) { string today_id = "EG" + DateTime.Now.ToString("yyMMdd"); string last_outorder_ShipmentNum = Context.Queryable().Where(it => it.ShipmentNum.StartsWith(today_id)).Max(it => it.ShipmentNum); if (string.IsNullOrEmpty(last_outorder_ShipmentNum)) { model.ShipmentNum = today_id + "001"; } else { int flow = int.Parse(last_outorder_ShipmentNum.Substring(last_outorder_ShipmentNum.Length - 3, 3)) + 1; model.ShipmentNum = today_id + flow.ToString("000"); } WmOutOrder wmOutOrder = model.Adapt(); // 关联表也要新增 if (model.MaterialList != null) { if (model.MaterialList.Count > 0) { List materialOutorderList = new List(); foreach (var item in model.MaterialList) { WmMaterialOutorder materialOutorder = new WmMaterialOutorder(); materialOutorder.FkMaterialId = item.Id; materialOutorder.FkOutorderId = model.ShipmentNum; materialOutorder.OuthouseNum = item.requireOutNum; materialOutorder.CreatedBy = model.CreatedBy; materialOutorder.CreatedTime = DateTime.Now; materialOutorderList.Add(materialOutorder); }; int result = Context.Insertable(materialOutorderList).ExecuteCommand(); } } return Context.Insertable(wmOutOrder).ExecuteReturnEntity(); } /// /// 修改出货单(物料+客户) /// /// /// public int UpdateWmOutOrder(WmOutOrder model) { //var response = Update(w => w.ShipmentNum == model.ShipmentNum, it => new WmOutOrder() //{ // CustomNo = model.CustomNo, // CustomName = model.CustomName, // CustomAddress = model.CustomAddress, // Remarks = model.Remarks, // Type = model.Type, // Status = model.Status, // Year = model.Year, // Week = model.Week, // Date = model.Date, // CreatedBy = model.CreatedBy, // CreatedTime = model.CreatedTime, // UpdatedBy = model.UpdatedBy, // UpdatedTime = model.UpdatedTime, //}); //return response; return Update(model, true); } /// /// 获取用户信息 /// /// public List GetCustominfo() { return Context.Queryable().ToList(); } /// /// 查询物料记录表列表 /// /// /// public (List, int) GetmaterialList(WmMaterialQueryDto parm) { int total = 0; var predicate = Expressionable.Create() .AndIF(parm.Partnumber != null, it => it.Partnumber.Contains(parm.Partnumber)) .AndIF(parm.U8InventoryCode != null, it => it.U8InventoryCode.Contains(parm.U8InventoryCode)) .AndIF(parm.ProductName != null, it => it.ProductName.Contains(parm.ProductName)) .AndIF(parm.Color != null, it => it.Color.Contains(parm.Color)) .AndIF(parm.Specification != null, it => it.Specification.Contains(parm.Specification)) .AndIF(parm.Description != null, it => it.Description.Contains(parm.Description)) .AndIF(parm.Search1 != null, it => it.Search1.Contains(parm.Search1) || it.Search2.Contains(parm.Search1)) .AndIF(parm.Status > -1, it => it.Status == parm.Status); List materialList = Context.Queryable() .Where(predicate.ToExpression()).OrderByDescending(it => it.CreatedTime) .ToPageList(parm.PageNum, parm.PageSize, ref total); List material_stockQuantity_list = new List(); if (materialList.Count > 0) { foreach (WmMaterial item in materialList) { WmMaterialQuery_stockQuantityDto wmMaterialQuery_Stock_item = item.Adapt(); int material_num = 0; List productioList = Context .Queryable() .Where(it => it.Partnumber == item.Partnumber) .ToList(); if (productioList.Count > 0) { foreach (var product in productioList) { material_num = material_num + (int)product.GoodsNumLogic; } } wmMaterialQuery_Stock_item.stockQuantity = material_num; material_stockQuantity_list.Add(wmMaterialQuery_Stock_item); } } return (material_stockQuantity_list, total); } } }