liulijun
2026-03-12 fe256a7afaa132910875d3dc73783d9ab2d7ace5
老厂排程单页面增加用纸顺序号和是否缺料

老厂排程单页面增加用纸顺序号和是否缺料
已修改6个文件
101 ■■■■■ 文件已修改
项目代码/WMS/WMSClient/src/extension/outbound/extend/outSGOrderDetail.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSClient/src/views/outbound/outSGOrder.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_Common/OrderEnum/OutboundOrderMenu.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutSGOrder.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderDetailService.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WMS/WMSClient/src/extension/outbound/extend/outSGOrderDetail.vue
@@ -86,7 +86,9 @@
              </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>
@@ -412,6 +414,18 @@
        }
      }
    },
    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>
ÏîÄ¿´úÂë/WMS/WMSClient/src/views/outbound/outSGOrder.vue
@@ -93,9 +93,16 @@
      },
      {
        field: "orderId",
        title: "上游生产单号",
        title: "排程号",
        type: "string",
        width: 160,
        align: "left",
      },
      {
        field: "number",
        title: "用纸序号",
        type: "string",
        width: 90,
        align: "left",
      },
      {
@@ -108,10 +115,21 @@
      {
        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",
@@ -133,6 +151,19 @@
          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({
@@ -254,12 +285,23 @@
          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",
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Common/OrderEnum/OutboundOrderMenu.cs
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@@ -12,6 +12,7 @@
    /// 0:未开始<br/>
    /// 1:出库中<br/>
    /// 2:出库完成<br/>
    /// 3:缺料<br/>
    /// 99:关闭<br/>
    /// </summary>
    public enum OutOrderStatusEnum
@@ -35,6 +36,12 @@
        å‡ºåº“完成 = 2,
        /// <summary>
        /// ç¼ºæ–™
        /// </summary>
        [Description("缺料")]
        ç¼ºæ–™ = 3,
        /// <summary>
        /// å…³é—­
        /// </summary>
        [Description("关闭")]
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutSGOrder.cs
@@ -85,6 +85,12 @@
        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))]
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderDetailService.cs
@@ -5,6 +5,7 @@
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;
@@ -78,16 +79,22 @@
                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;
@@ -129,6 +136,8 @@
                            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)
                            {
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs
@@ -61,7 +61,7 @@
                
                // æ‰¹é‡æŸ¥è¯¢æ‰€æœ‰å…³è”的明细,过滤掉物料编号为空的数据
                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分组
@@ -90,11 +90,16 @@
                        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;
                    }
                }
            }