老厂排程单页面增加用纸顺序号和是否缺料
老厂排程单页面增加用纸顺序号和是否缺料
| | |
| | | </div> |
| | | |
| | | <div v-else-if="item.type == 'tag'"> |
| | | <el-tag size="small"> |
| | | <el-tag |
| | | size="small" |
| | | :type="getTagType(scoped.row, item)"> |
| | | {{ getDictionary(scoped.row, item) }} |
| | | </el-tag> |
| | | </div> |
| | |
| | | } |
| | | } |
| | | }, |
| | | getTagType(row, column) { |
| | | // æ ¹æ®è®¢åç¶æè¿å对åºçæ ç¾ç±»å |
| | | const status = row[column.prop]; |
| | | if (status === 3) { // 缺æ |
| | | return 'danger'; // çº¢è² |
| | | } else if (status === 0) { // æªå¼å§ |
| | | return 'success'; // ç»¿è² |
| | | } else if (status === 1) { // åºåºä¸ |
| | | return 'primary'; // èè² |
| | | } |
| | | return ''; // é»è®¤æ é¢è² |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | }, |
| | | { |
| | | field: "orderId", |
| | | title: "䏿¸¸ç产åå·", |
| | | title: "æç¨å·", |
| | | type: "string", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "number", |
| | | title: "ç¨çº¸åºå·", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | |
| | | { |
| | | field: "outSGOrderStatus", |
| | | title: "åºåºåç¶æ", |
| | | type: "string", |
| | | type: "tag", |
| | | width: 110, |
| | | align: "left", |
| | | bind: { key: "outboundStatusEnum", data: [] }, |
| | | getColor: (row) => { |
| | | const status = row.outSGOrderStatus; |
| | | if (status === 3) { // 缺æ |
| | | return 'danger'; // çº¢è² |
| | | } else if (status === 0) { // æªå¼å§ |
| | | return 'success'; // ç»¿è² |
| | | } else if (status === 1) { // åºåºä¸ |
| | | return 'primary'; // èè² |
| | | } |
| | | return ''; // é»è®¤æ é¢è² |
| | | } |
| | | }, |
| | | { |
| | | field: "createDate", |
| | |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "isLackMaterial", |
| | | title: "æ¯å¦ç¼ºæ", |
| | | type: "string", |
| | | width: 100, |
| | | align: "center", |
| | | formatter: (row) => { |
| | | const isLack = Boolean(row.isLackMaterial); |
| | | const text = isLack ? "æ¯" : "å¦"; |
| | | const bgColor = isLack ? '#ff4d4f' : '#52c41a'; |
| | | return `<div style="background-color: ${bgColor}; color: #ffffff; text-align: center; font-weight: bold; width: 100%; height: 100%; padding: 10px 0; display: flex; justify-content: center; align-items: center;">${text}</div>`; |
| | | } |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "outBSTOrderDetailStatus", |
| | | field: "outSGOrderDetailStatus", |
| | | title: "订åæç»ç¶æ", |
| | | type: "string", |
| | | type: "tag", |
| | | width: 180, |
| | | align: "left", |
| | | bind: { key: "outboundStatusEnum", data: [] }, |
| | | getColor: (row) => { |
| | | const status = row.outSGOrderDetailStatus; |
| | | if (status === 3) { // 缺æ |
| | | return 'danger'; // çº¢è² |
| | | } else if (status === 0) { // æªå¼å§ |
| | | return 'success'; // ç»¿è² |
| | | } else if (status === 1) { // åºåºä¸ |
| | | return 'primary'; // èè² |
| | | } |
| | | return ''; // é»è®¤æ é¢è² |
| | | } |
| | | }, |
| | | { |
| | | field: "createDate", |
| | |
| | | using System; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | |
| | | /// 0ï¼æªå¼å§<br/> |
| | | /// 1ï¼åºåºä¸<br/> |
| | | /// 2ï¼åºåºå®æ<br/> |
| | | /// 3ï¼ç¼ºæ<br/> |
| | | /// 99ï¼å
³é<br/> |
| | | /// </summary> |
| | | public enum OutOrderStatusEnum |
| | |
| | | åºåºå®æ = 2, |
| | | |
| | | /// <summary> |
| | | /// 缺æ |
| | | /// </summary> |
| | | [Description("缺æ")] |
| | | 缺æ = 3, |
| | | |
| | | /// <summary> |
| | | /// å
³é |
| | | /// </summary> |
| | | [Description("å
³é")] |
| | |
| | | public string MaterialWides { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¼ºæ |
| | | /// </summary> |
| | | [SugarColumn(IsIgnore = true, ColumnDescription = "æ¯å¦ç¼ºæ")] |
| | | public bool IsLackMaterial { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éè´å表 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToMany, nameof(Dt_OutSGOrderDetail.OutSGOrderId), nameof(Id))] |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseOldCacheStocks(item.MaterialNo, item.Width) ?? new List<Dt_StockInfo>(); |
| | | //è·åç«åºå¯ç¨åºå |
| | | stockInfos.AddRange(_stockService.StockInfoService.GetUseableStocks(item.MaterialNo, item.Width, outBSTOrders.FirstOrDefault().WarehouseId).Where(x=>!outStocks.Select(x=>x.PalletCode).Contains(x.PalletCode)).ToList()); |
| | | //è·åææè¯¥ç©æåæ® |
| | | List<Dt_OutSGOrderDetail> details = outboundOrderDetails.Where(x => x.MaterialNo == item.MaterialNo && x.Width == item.Width && x.MachineName == item.MachineName).ToList(); |
| | | |
| | | if (!stockInfos.Any()) |
| | | { |
| | | //没æå¯ç¨åºåï¼æ 记为缺æ |
| | | foreach (var detail in details) |
| | | { |
| | | detail.OutSGOrderDetailStatus = OutOrderStatusEnum.缺æ.ObjToInt(); |
| | | } |
| | | continue; |
| | | } |
| | | //åé
å®é
åºå |
| | | List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutOldStocks(stockInfos, needQuantity).ToList(); |
| | | //æ·»å åºååé
|
| | | outStocks.AddRange(autoAssignStocks); |
| | | //è·åææè¯¥ç©æåæ® |
| | | List<Dt_OutSGOrderDetail> details = outboundOrderDetails.Where(x => x.MaterialNo == item.MaterialNo && x.Width == item.Width && x.MachineName == item.MachineName).ToList(); |
| | | autoAssignStocks.ForEach(x => |
| | | { |
| | | x.StockOutLength = 0; |
| | |
| | | Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(sGOrder, details[i], autoAssignStocks[0], orderDetailNeedQuantity); |
| | | outStockLockInfos.Add(outStockLockInfo); |
| | | details[i].AssignTotalUsage = orderQuantity; |
| | | //åé
æåï¼ç¶æè®¾ä¸ºæªå¼å§ |
| | | details[i].OutSGOrderDetailStatus = OutOrderStatusEnum.æªå¼å§.ObjToInt(); |
| | | autoAssignStocks[0].StockOutLength+= orderDetailNeedQuantity; |
| | | if (autoAssignStocks[0].StockOutLength== autoAssignStocks[0].StockLength) |
| | | { |
| | |
| | | |
| | | // æ¹éæ¥è¯¢ææå
³èçæç»ï¼è¿æ»¤æç©æç¼å·ä¸ºç©ºçæ°æ® |
| | | var allDetails = BaseDal.Db.Queryable<Dt_OutSGOrderDetail>() |
| | | .Where(d => orderIds.Contains(d.OutSGOrderId) && !string.IsNullOrEmpty(d.MaterialNo)) |
| | | .Where(d => orderIds.Contains(d.OutSGOrderId)) |
| | | .ToList(); |
| | | |
| | | // æè®¢åIDåç» |
| | |
| | | order.MaterialWides = uniqueWidths.Count == 1 |
| | | ? uniqueWidths[0] |
| | | : string.Join("/", uniqueWidths); |
| | | |
| | | // 设置æ¯å¦ç¼ºæï¼å¦ææä»»ä½ä¸ä¸ªæç»æ¯ç¼ºæç¶æï¼å°±è®¾ç½®ä¸ºtrue |
| | | // å¼ç¨WIDESEA_Common.OrderEnumå½åç©ºé´æ¥ä½¿ç¨OutOrderStatusEnumæä¸¾ |
| | | order.IsLackMaterial = details.Any(d => d.OutSGOrderDetailStatus == 3); // 3æ¯ç¼ºæç¶æçæä¸¾å¼ |
| | | } |
| | | else |
| | | { |
| | | order.MaterialNos = ""; |
| | | order.MaterialWides = ""; |
| | | order.IsLackMaterial = false; |
| | | } |
| | | } |
| | | } |