wangxinhui
2025-05-26 ef3870bb8d578457b310e58518ca814f3d4f932c
更新
已添加3个文件
已修改16个文件
已删除5个文件
385 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1fe64147-8dfd-4ee1-8bd7-32b388f28abb.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/44cb5461-c100-4e78-a381-4330ae4ab9de.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/658de7b0-2303-43c4-87fc-06fd585d17a1.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8dd87865-fe22-4130-8231-509473f7b6d4.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/dc43775f-a589-43e0-ab2e-b520b2970e2f.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/df7b9a5b-7d49-478c-bb6e-f2fe795c669f.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/extension/inbound/erpProInOrder.js 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/proOutboundOrderDetail.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/router/viewGird.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/inbound/erpProInOrder.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/outbound/proOutOrder.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/stock/ProStockView.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpProductSpecifyVerDTO.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpProductWarehousingOrderDTO.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/ProStockViewDTO.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProOutOrderService.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ErpProInOrder.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_ProStockInfo.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1fe64147-8dfd-4ee1-8bd7-32b388f28abb.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/44cb5461-c100-4e78-a381-4330ae4ab9de.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/658de7b0-2303-43c4-87fc-06fd585d17a1.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8dd87865-fe22-4130-8231-509473f7b6d4.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/dc43775f-a589-43e0-ab2e-b520b2970e2f.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/df7b9a5b-7d49-478c-bb6e-f2fe795c669f.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs
@@ -39,7 +39,7 @@
}); ;
builder.ConfigureApplication();
App.ExpDateTime = DateTime.Parse("2025-05-31 00:00:00");
//App.ExpDateTime = DateTime.Parse("2025-05-31 00:00:00");
// 2、配置服务
builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/inbound/erpProInOrder.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
let extension = {
    components: {
      //查询界面扩展组件
      gridHeader: '',
      gridBody: '',
      gridFooter: '',
      //新建、编辑弹出框扩展组件
      modelHeader: '',
      modelBody: '',
      modelFooter: ''
    },
    tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
    buttons: { view: [], box: [], detail: [] }, //扩展的按钮
    methods: {
       //下面这些方法可以保留也可以删除
      onInit() {
        //扩展页面初始化操作
      this.columns.push({
        field: '操作',
        title: '操作',
        width: 90,
        fixed: 'right',
        align: 'center',
        formatter: (row) => {
          return (
            '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">查看明细</i>'
          );
        },
      });
      },
      onInited() {
        //框架初始化配置后
        //如果要配置明细表,在此方法操作
        //this.detailOptions.columns.forEach(column=>{ });
      },
      searchBefore(param) {
        //界面查询前,可以给param.wheres添加查询参数
        //返回false,则不会执行查询
        return true;
      },
      searchAfter(result) {
        //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
        return true;
      },
      addBefore(formData) {
        //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
        return true;
      },
      updateBefore(formData) {
        //编辑保存前formData为对象,包括明细表、删除行的Id
        return true;
      },
      rowClick({ row, column, event }) {
        //查询界面点击行事件
        this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      },
      modelOpenAfter(row) {
        //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
        //(1)判断是编辑还是新建操作: this.currentAction=='Add';
        //(2)给弹出框设置默认值
        //(3)this.editFormFields.字段='xxx';
        //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
        //看不懂就把输出看:console.log(this.editFormOptions)
      }
    }
  };
  export default extension;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/proOutboundOrderDetail.vue
@@ -279,7 +279,13 @@
          prop: "pVer",
          title: "产品版本",
          type: "string",
          width: 150,
          width: 90,
        },
        {
          prop: "outSpecifyVer",
          title: "指派版本",
          type: "string",
          width: 90,
        },
        {
          prop: "pLot",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/router/viewGird.js
@@ -283,6 +283,11 @@
    path: '/proInStatistics',
    name: 'proInStatistics',
    component: () => import('@/views/inbound/proInStatistics.vue')
  },
  {
    path: '/erpProInOrder',
    name: 'erpProInOrder',
    component: () => import('@/views/inbound/erpProInOrder.vue')
  }
]
export default viewgird
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/inbound/erpProInOrder.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,169 @@
<template>
    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
      :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
      :table="table" :extend="extend">
    </view-grid>
  </template>
  <script>
  import extend from "@/extension/inbound/erpProInOrder.js";
  import { ref, defineComponent } from "vue";
  export default defineComponent({
    setup() {
      const table = ref({
        key: "id",
        footer: "Foots",
        cnName: "成品调拨/寄售入库单",
        name: "erpProInOrder",
        url: "/erpProInOrder/",
        sortName: "id",
      });
      const editFormFields = ref({
      });
      const editFormOptions = ref([
        [
        ],
      ]);
      const searchFormFields = ref({
        warehouseId: "",
        pCode: "",
        pVer: "",
        orderNo: "",
        upperOrderNo: ""
      });
      const searchFormOptions = ref([
        [
        { title: "产品编码", field: "pCode",type: "like"},
          {
            title: "仓库",
            field: "warehouseId",
            type: "select",
            dataKey: "warehouses",
            data: []
        },
        { title: "产品版本", field: "pVer",type: "like"},
        ],
        [
          { title: "单据编号", field: "orderNo",type: "like"},
          { title: "上游单据编号", field: "upperOrderNo",type: "like"},
        ],
      ]);
      const columns = ref([
        {
          field: "id",
          title: "Id",
          type: "int",
          width: 90,
          hidden: true,
          readonly: true,
          require: true,
          align: "left",
        },
        {
          field: "warehouseId",
          title: "所属仓库",
          type: "string",
          width: 120,
          align: "left",
          bind: { key: "warehouses", data: [] },
        },
        {
          field: "orderNo",
          title: "单据编号",
          type: "string",
          width: 150,
          align: "left",
        },
        {
          field: "upperOrderNo",
          title: "上游单据编号",
          type: "string",
          width: 150,
          align: "left",
        },
        {
          field: "orderType",
          title: "单据类型",
          type: "string",
          width: 120,
          align: "left",
          bind: { key: "proInOrderType", data: [{key:1,value:"调拨入库"},{key:2,value:"销售转入"}] },
        },
        {
          field: "proInStatus",
          title: "订单状态",
          type: "string",
          width: 100,
          align: "left",
          bind: { key: "inboundState", data: [] },
        },
        {
          field: "pCode",
          title: "产品型号",
          type: "string",
          width: 120,
          align: "left",
        },
        {
          field: "pVer",
          title: "产品版本",
          type: "string",
          width: 90,
          align: "left",
        },
        {
          field: "dateCode",
          title: "产品周期",
          type: "string",
          width: 90,
          align: "left",
        },
        {
          field: "qtyPcs",
          title: "Pcs数量",
          type: "string",
          width: 120,
          align: "left",
        },
        {
          field: "proSaleOrderNo",
          title: "销售订单号",
          type: "string",
          width: 180,
          align: "left",
        },
        {
          field: "createDate",
          title: "创建时间",
          type: "datetime",
          width: 160,
          align: "left",
        },
        {
          field: "modifier",
          title: "操作人",
          type: "datetime",
          width: 160,
          align: "left",
        }
      ]);
      const detail = ref({
        cnName: "#detailCnName",
        table: "",
        columns: [],
        sortName: "",
      });
      return {
        table,
        extend,
        editFormFields,
        editFormOptions,
        searchFormFields,
        searchFormOptions,
        columns,
        detail,
      };
    },
  });
  </script>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/outbound/proOutOrder.vue
@@ -151,7 +151,7 @@
        type: "string",
        width: 150,
        align: "left",
        bind: { key: "outOrderType", data: [{key:1,value:"订单出货"}] },
        bind: { key: "proOutOrderType", data: [{key:1,value:"订单出货"},,{key:2,value:"销售出库"}] },
      },
      {
        field: "proOrderStatus",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/stock/ProStockView.vue
@@ -38,7 +38,8 @@
        palletCode: "",
        // locationCode: "",
        materielCode:"",
        batchNo:""
        batchNo:"",
        specifyVer:""
      });
      const searchFormOptions = ref([
        [
@@ -46,10 +47,12 @@
          // { title: "货位编号", field: "locationCode",type: "like" },
          { title: "货位状态", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: [],},
          { title: "库存状态", field: "stockStatus",type: "selectList",dataKey: "stockStatusEmun",data: [],},
          { title: "产品编码", field: "productCode",type: "like"},
        ],
        [
          { title: "产品编码", field: "productCode",type: "like"},
          { title: "产品版本", field: "productVersion",type: "like"},
          { title: "指派版本", field: "specifyVer",type: "like"},
          { title: "所属仓库", field: "warehouseId",type: "selectList",dataKey: "warehouses",data: [],},
        ]
      ]);
@@ -125,10 +128,17 @@
          align: "left"
        },
        {
          field: "specifyVer",
          title: "指派版本",
          type: "string",
          width: 100,
          align: "left"
        },
        {
          field: "dateCode",
          title: "产品周期",
          type: "string",
          width: 140,
          width: 100,
          align: "left",
        },
        {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpProductSpecifyVerDTO.cs
@@ -47,7 +47,7 @@
        /// äº§å“å‘¨æœŸ
        /// </summary>
        [PropertyValidate("产品周期")]
        public int DateCode { get; set; }
        public string DateCode { get; set; }
        /// <summary>
        /// ä»“库类型
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpProductWarehousingOrderDTO.cs
@@ -8,7 +8,7 @@
namespace WIDESEA_DTO.ERP
{
    /// <summary>
    /// æˆå“è°ƒå…¥å¾…发货仓表
    /// æˆå“è°ƒå…¥/销售转入待发货仓
    /// </summary>
    [ModelValidate]
    public class ErpProductWarehousingOrderDTO
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/ProStockViewDTO.cs
@@ -89,6 +89,11 @@
        /// </summary>
        [ExporterHeader(DisplayName = "版本")]
        public string ProductVersion { get; set; }
        /// <summary>
        /// ç‰ˆæœ¬
        /// </summary>
        [ExporterHeader(DisplayName = "版本")]
        public string SpecifyVer { get; set; }
        /// <summary>
        /// äº§å“å‘¨æœŸ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IProOutOrderService.cs
@@ -15,11 +15,16 @@
    {
        IProOutOrderRepository Repository { get; }
        /// <summary>
        /// æŽ¥æ”¶æˆå“å‡ºåº“单
        /// æŽ¥æ”¶ERP成品出库单信息(订单出库/寄售出库)
        /// </summary>
        /// <returns></returns>
        Task<WebResponseContent> ProductDeliveryOrder(ErpProOutOrderDTO outOrderDTO);
        /// <summary>
        /// é”€å”®éƒ¨ä»¶æŒ‡æ´¾
        /// </summary>
        /// <returns></returns>
        Task<WebResponseContent> ProductSpecifyVer(ErpProductSpecifyVerDTO erpProductSpecifyVerDTO);
        /// <summary>
        /// æˆå“å‡ºå¾…发货区(平库)+同步ERP出库(已绑定出库单库存)
        /// </summary>
        /// <returns></returns>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ErpProInOrder.cs
@@ -55,6 +55,11 @@
        [SugarColumn(IsNullable = true, ColumnDescription = "库存属性")]
        public int ProStockAttribute { get; set; }
        /// <summary>
        /// å…¥åº“单状态
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "入库单状态")]
        public int ProInStatus { get; set; }
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "产品编码")]
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_ProStockInfo.cs
@@ -52,6 +52,12 @@
        public string ShipmentOrder { get; set; }
        /// <summary>
        /// å…¥åº“单号
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 30, ColumnDescription = "入库单号")]
        public string ProInOrderNo { get; set; }
        /// <summary>
        /// ä»“库主键
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "仓库主键")]
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs
@@ -53,7 +53,7 @@
            _invokeERPService = invokeERPService;
        }
        /// <summary>
        /// æŽ¥æ”¶ERP成品出库单
        /// æŽ¥æ”¶ERP成品出库单信息(订单出库/寄售出库)
        /// </summary>
        /// <returns></returns>
        public async Task<WebResponseContent> ProductDeliveryOrder(ErpProOutOrderDTO outOrderDTO)
@@ -201,6 +201,69 @@
            return content;
        }
        /// <summary>
        /// é”€å”®æŒ‡æ´¾
        /// </summary>
        /// <returns></returns>
        public async Task<WebResponseContent> ProductSpecifyVer(ErpProductSpecifyVerDTO erpProductSpecifyVerDTO)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==erpProductSpecifyVerDTO.WaType);
                if (warehouse == null)
                    return await Task.FromResult(content.Error($"未找到{erpProductSpecifyVerDTO.WaType}仓库信息"));
                //查询可指派库存
                List<Dt_ProStockInfo> proStockInfos = Db.Queryable<Dt_ProStockInfo>().Where(x => x.ProStockAttribute == ProStockAttributeEnum.成品.ObjToInt())
                .Includes(x => x.proStockInfoDetails)
                .Where(x => x.proStockInfoDetails
                .Any(v =>
                     v.SaleOrder == erpProductSpecifyVerDTO.OrderNo
                    && v.ProductCode == erpProductSpecifyVerDTO.PCode
                    && v.ProductVersion == erpProductSpecifyVerDTO.PVer
                    && v.LotNumber == erpProductSpecifyVerDTO.PLot
                    && v.DateCode == erpProductSpecifyVerDTO.DateCode
                    && (v.SpecifyVer==null||v.SpecifyVer=="")
                ))
                .ToList();
                List<Dt_ProStockInfoDetail> proStockInfoDetails = new List<Dt_ProStockInfoDetail>();
                List<Dt_ProStockInfoDetail> specifyVerDetails = new List<Dt_ProStockInfoDetail>();
                if (proStockInfos==null)
                    return await Task.FromResult(content.Error("可指派库存不存在"));
                proStockInfos = proStockInfos.OrderBy(x => x.proStockInfoDetails.FirstOrDefault()?.DateCode).ThenBy(x => x.CreateDate).ThenBy(x => x.proStockInfoDetails.Sum(x => x.StockPcsQty)).ToList();
                foreach (var item in proStockInfos)
                {
                    proStockInfoDetails.AddRange(item.proStockInfoDetails);
                }
                if (proStockInfoDetails.Sum(x=>x.StockPcsQty)< erpProductSpecifyVerDTO.QtyPcs)
                    return await Task.FromResult(content.Error($"可指派库存数量不足,可用:{proStockInfoDetails.Sum(x => x.StockPcsQty)}"));
                float overQty = 0;
                foreach (var item in proStockInfoDetails)
                {
                    specifyVerDetails.Add(item);
                    overQty += item.StockPcsQty;
                    //已满足获取数量不再更改
                    if (overQty>= erpProductSpecifyVerDTO.QtyPcs)
                    {
                        break;
                    }
                }
                specifyVerDetails.ForEach(x =>
                {
                    x.SpecifyVer = erpProductSpecifyVerDTO.Ver;
                });
                _unitOfWorkManage.BeginTran();
                _stockRepository.ProStockInfoDetailRepository.UpdateData(specifyVerDetails);
                _unitOfWorkManage.CommitTran();
                content.OK("指派成功");
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return await Task.FromResult(content);
        }
        /// <summary>
        /// æˆå“å‡ºå¾…发货区(平库)+同步ERP出库(绑定了出库单库存)
        /// </summary>
        /// <returns></returns>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs
@@ -72,6 +72,13 @@
                                    sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.ProductVersion.Contains(searchParameters.Value)));
                                }
                            }
                            {
                                SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.SpecifyVer).FirstLetterToLower());
                                if (searchParameters != null)
                                {
                                    sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.SpecifyVer.Contains(searchParameters.Value)));
                                }
                            }
                        }
@@ -139,6 +146,7 @@
                    {
                        x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
                        x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct());
                        x.SpecifyVer = string.Join(",", x.Details.Select(x => x.SpecifyVer).Distinct());
                        x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? "";
                        x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? "";
                        x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? "";
@@ -285,6 +293,7 @@
                {
                    x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
                    x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct());
                    x.SpecifyVer = string.Join(",", x.Details.Select(x => x.SpecifyVer).Distinct());
                    x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? "";
                    x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? "";
                    x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? "";
@@ -387,6 +396,7 @@
                    {
                        x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
                        x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct());
                        x.SpecifyVer = string.Join(",", x.Details.Select(x => x.SpecifyVer).Distinct());
                        x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? "";
                        x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? "";
                        x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? "";
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs
@@ -183,9 +183,11 @@
        /// é”€å”®æŒ‡æ´¾å•接收
        /// </summary>
        [HttpPost, Route("ProductSpecifyVer"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ProductSpecifyVer([FromBody] Root<ErpProductSpecifyVerDTO> root)
        public async Task<ErpResponseContent> ProductSpecifyVerAsync([FromBody] Root<ErpProductSpecifyVerDTO> root)
        {
            return Instance.OK();
            var content = await _outboundService.ProOutOrderService.ProductSpecifyVer(root.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// æŽ¥æ”¶ERP退料单信息
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs
@@ -39,7 +39,7 @@
            CreateMap<MESBagDetail, Dt_MesProInOrderDetail>().ForMember(x => x.OverInQuantity, b => b.MapFrom(b => 0));
            CreateMap<ErpProOutOrderDetailds, Dt_ProOutOrderDetail>().ForMember(x => x.ProOrderDetailStatus, b => b.MapFrom(b => 0)).ForMember(x => x.OverQtyPcs, b => b.MapFrom(b => 0));
            CreateMap<Dt_MesProInOrderDetail, Dt_ProStockInfoDetail>().ForMember(x => x.ProOutDetailStatus, b => b.MapFrom(b => StockStatusEmun.组盘暂存.ObjToInt())).ForMember(x => x.OutboundQuantity, b => b.MapFrom(b => 0)).ForMember(x => x.StockPcsQty, b => b.MapFrom(b => b.OKPCSQTY));
            CreateMap<ErpProductWarehousingOrderDTO, Dt_ErpProInOrder>().ForMember(x => x.ProSaleOrderNo, b => b.MapFrom(b => b.SaleOrder)).ForMember(x => x.Remark, b => b.MapFrom(b => b.Note)).ForMember(x => x.UpperOrderNo, b => b.MapFrom(b => b.TransferNo)).ForMember(x => x.ProStockAttribute, b => b.MapFrom(b => ProStockAttributeEnum.成品.ObjToInt()));
            CreateMap<ErpProductWarehousingOrderDTO, Dt_ErpProInOrder>().ForMember(x => x.ProSaleOrderNo, b => b.MapFrom(b => b.SaleOrder)).ForMember(x => x.Remark, b => b.MapFrom(b => b.Note)).ForMember(x => x.UpperOrderNo, b => b.MapFrom(b => b.TransferNo)).ForMember(x => x.ProStockAttribute, b => b.MapFrom(b => ProStockAttributeEnum.成品.ObjToInt())).ForMember(x => x.ProInStatus, b => b.MapFrom(b => InOrderStatusEnum.未开始.ObjToInt()));
            CreateMap<ErpProductTransferOrderDTO, Dt_ErpProTransferOrder>().ForMember(x => x.ProSaleOrderNo, b => b.MapFrom(b => b.SaleOrder)).ForMember(x => x.Remark, b => b.MapFrom(b => b.Note)).ForMember(x => x.UpperOrderNo, b => b.MapFrom(b => b.TransferNo)).ForMember(x => x.OrderType, b => b.MapFrom(b => ErpProOutTypeEnum.ProOutAllocat.ObjToInt())).ForMember(x => x.ProStockAttribute, b => b.MapFrom(b => ProStockAttributeEnum.研发.ObjToInt()));
        }
    }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -35,7 +35,7 @@
}); ;
builder.ConfigureApplication();
App.ExpDateTime = DateTime.Parse("2025-05-31 00:00:00");
//App.ExpDateTime = DateTime.Parse("2025-05-31 00:00:00");
// 2、配置服务
builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册