zs
2025-04-30 2f3617a5147d025ac13a70938859974f4b369b4b
仓库前端修改
已修改9个文件
169 ■■■■ 文件已修改
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/HIAWms/Models/Service/WmsMaterialDrawer.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsStoreDrawer.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs
@@ -20,9 +20,31 @@
    public PlaceTypeEnum StorageTypeNo { get; protected set; }
    /// <summary>
    /// 货位类型
    /// </summary>
    public string StorageTypeNoDesc
    {
        get
        {
            return GetEnumDescriptionUtil.GetEnumDescription(StorageTypeNo);
        }
    }
    /// <summary>
    /// 货位状态
    /// </summary>
    public PlaceStatusEnum PlaceStatus { get; protected set; }
    /// <summary>
    /// 货位状态
    /// </summary>
    public string PlaceStatusDesc
    {
        get
        {
            return GetEnumDescriptionUtil.GetEnumDescription(PlaceStatus);
        }
    }
    /// <summary>
    /// 所在库区
@@ -55,11 +77,33 @@
    public YesNoEnum Islock { get; protected set; }
    /// <summary>
    /// 是否锁定
    /// </summary>
    public string IslockDesc
    {
        get
        {
            return GetEnumDescriptionUtil.GetEnumDescription(Islock);
        }
    }
    /// <summary>
    /// 是否空托
    /// </summary>
    public YesNoEnum EmptyContainer { get; protected set; }
    /// <summary>
    /// 是否空托
    /// </summary>
    public string EmptyContainerDesc
    {
        get
        {
            return GetEnumDescriptionUtil.GetEnumDescription(EmptyContainer);
        }
    }
    /// <summary>
    /// 冗余字段1 - 预留扩展用途
    /// </summary>
    public string RedundantField1 { get; set; }
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs
@@ -7,6 +7,7 @@
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
namespace CMS.Plugin.HIAWms.Application.Implements;
@@ -41,8 +42,9 @@
        }
        var specification = new WmsPlaceSpecification(input.Name);
        var count = await _wmsplaceRepository.GetCountAsync(input.Filter, specification);
        var list = await _wmsplaceRepository.GetListAsync(input.Sorting, input.MaxResultCount,  input.SkipCount, input.Filter, specification);
        var place = ObjectMapper.Map<GetWmsPlacesInput, WmsPlace>(input);
        var count = await _wmsplaceRepository.GetCountAsync(place,input.Filter, specification);
        var list = await _wmsplaceRepository.GetListAsync(place, input.Sorting, input.MaxResultCount,  input.SkipCount, input.Filter, specification);
        return new PagedResultDto<WmsPlaceDto>(count, ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(list));
    }
@@ -160,7 +162,7 @@
    /// <inheritdoc />
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await _wmsplaceRepository.GetListAsync(nameof(WmsPlace.Sort));
        var list = await _wmsplaceRepository.GetListAsync(null,nameof(WmsPlace.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
@@ -293,12 +295,13 @@
        }
        var specification = new WmsPlaceSpecification(input.Name);
        var list = await _wmsplaceRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
        var place = ObjectMapper.Map<GetWmsPlacesInput, WmsPlace>(input);
        var list = await _wmsplaceRepository.GetListAsync(place, input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
        var result = ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = result.Select(x => x.GetExportData()).ToList(),
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = result.Count > 1 ? "WmsPlace列表" : result.Count == 1 ? result.First()?.PlaceNo : "WmsPlace模版";
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs
@@ -21,5 +21,6 @@
         * into multiple profile classes for a better organization. */
        CreateMap<WmsPlace, WmsPlaceDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsPlaceCreateDto, WmsPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<GetWmsPlacesInput, WmsPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs
@@ -41,7 +41,7 @@
    /// <param name="includeDetails">if set to <c>true</c> [include details].</param>
    /// <param name="cancellationToken">The cancellation token.</param>
    /// <returns></returns>
    Task<List<WmsPlace>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue,  int skipCount = 0, string filter = null, Specification<WmsPlace> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default);
    Task<List<WmsPlace>> GetListAsync(WmsPlace? place, string sorting = null, int maxResultCount = int.MaxValue,  int skipCount = 0, string filter = null, Specification<WmsPlace> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default);
    /// <summary>
    /// Gets the count asynchronous.
@@ -50,5 +50,5 @@
    /// <param name="specification">The specification.</param>
    /// <param name="cancellationToken">The cancellation token.</param>
    /// <returns></returns>
    Task<long> GetCountAsync(string filter = null, Specification<WmsPlace> specification = null, CancellationToken cancellationToken = default);
    Task<long> GetCountAsync(WmsPlace? place, string filter = null, Specification<WmsPlace> specification = null, CancellationToken cancellationToken = default);
}
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs
@@ -1,6 +1,7 @@
using System.Linq.Dynamic.Core;
using CMS.Plugin.HIAWms.Domain.WmsPlaces;
using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@@ -52,13 +53,22 @@
    }
    /// <inheritdoc />
    public async Task<List<WmsPlace>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsPlace> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
    public async Task<List<WmsPlace>> GetListAsync(WmsPlace? place, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsPlace> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
    {
        specification ??= new WmsPlaceSpecification();
        return await (await GetDbSetAsync())
            .IncludeDetails(includeDetails)
            .Where(specification.ToExpression())
            .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.PlaceNo.Contains(filter))
            .WhereIf(!string.IsNullOrEmpty(place.PlaceNo), u => u.PlaceNo == place.PlaceNo)
            .WhereIf(place.PlaceStatus > 0, u => u.PlaceStatus == place.PlaceStatus)
            .WhereIf(place.StorageTypeNo > 0, u => u.StorageTypeNo == place.StorageTypeNo)
            .WhereIf(place.Aisle > 0, u => u.Aisle == place.Aisle)
            .WhereIf(place.RowNo > 0, u => u.RowNo == place.RowNo)
            .WhereIf(place.ColumnNo > 0, u => u.ColumnNo == place.ColumnNo)
            .WhereIf(place.LayerNo > 0, u => u.LayerNo == place.LayerNo)
            .WhereIf(place.Islock > 0, u => u.Islock == place.Islock)
            .WhereIf(place.EmptyContainer > 0, u => u.EmptyContainer == place.EmptyContainer)
            .Where(x => !x.IsDeleted)
            .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsPlace.Sort) : sorting)
            .PageBy(skipCount, maxResultCount)
@@ -66,11 +76,20 @@
    }
    /// <inheritdoc />
    public async Task<long> GetCountAsync(string filter = null, Specification<WmsPlace> specification = null, CancellationToken cancellationToken = default)
    public async Task<long> GetCountAsync(WmsPlace? place, string filter = null, Specification<WmsPlace> specification = null, CancellationToken cancellationToken = default)
    {
        specification ??= new WmsPlaceSpecification();
        return await (await GetQueryableAsync())
            .Where(specification.ToExpression())
            .WhereIf(!string.IsNullOrEmpty(place.PlaceNo), u => u.PlaceNo == place.PlaceNo)
            .WhereIf(place.PlaceStatus > 0, u => u.PlaceStatus == place.PlaceStatus)
            .WhereIf(place.StorageTypeNo > 0, u => u.StorageTypeNo == place.StorageTypeNo)
            .WhereIf(place.Aisle > 0, u => u.Aisle == place.Aisle)
            .WhereIf(place.RowNo > 0, u => u.RowNo == place.RowNo)
            .WhereIf(place.ColumnNo > 0, u => u.ColumnNo == place.ColumnNo)
            .WhereIf(place.LayerNo > 0, u => u.LayerNo == place.LayerNo)
            .WhereIf(place.Islock > 0, u => u.Islock == place.Islock)
            .WhereIf(place.EmptyContainer > 0, u => u.EmptyContainer == place.EmptyContainer)
            .Where(x => !x.IsDeleted)
            .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.PlaceNo.Contains(filter))
            .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
HIAWms/web/src/widgets/HIAWms/Models/Service/WmsMaterialDrawer.ts
@@ -40,3 +40,19 @@
export const getWmsDataList = (data: any) => {
  return request.post('/api/v1/hIAWms/wmsmaterial/page', data)
}
/**
 * 获取仓库列表
 * @returns
 */
export const getStoreDataList = () => {
  return request.get('/api/v1/hIAWms/WmsEnum/StoreList')
}
/**
 * 获取库区列表
 * @returns
 */
export const getAreaAreaDataList = () => {
  return request.get('/api/v1/hIAWms/WmsEnum/AreaList')
}
HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx
@@ -58,6 +58,7 @@
      label: '托盘编号',
      prop: 'containerNo',
      el: 'input',
      disabled: disabled,
      placeholder: '请输入托盘编号',
      rules: [{ required: true, message: '托盘编号不能为空', trigger: 'blur' }],
    },
HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsAreaDrawer.ts
@@ -5,6 +5,10 @@
import isEqual from 'lodash/isEqual'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { cloneDeep } from 'lodash'
import {
  getWmsEnumData,
  getStoreDataList,
} from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
export const useWmsAreaDrawer = (props: any, ctx?: any) => {
  const wmsAreaDrawer = injectModel<WmsAreaDrawer>('wmsAreaDrawer')
@@ -15,6 +19,7 @@
  const formData = ref<Record<string, any>>({})
  // ref
  const formRef = ref()
  const disabled = ref(false)
  const current = computed(() => {
    return props.row || null
@@ -35,6 +40,7 @@
      label: '库区编号',
      prop: 'areaNo',
      el: 'input',
      disabled: disabled,
      placeholder: '请输入库区编号',
      rules: [{ required: true, message: '库区编号不能为空', trigger: 'blur' }],
    },
@@ -55,11 +61,7 @@
      label: '库区状态',
      prop: 'areaStatus',
      el: 'select',
      options: [
        { label: '启用', value: 'Active' },
        { label: '禁用', value: 'Inactive' },
        // 根据实际的 AreaStatusEnum 添加更多选项
      ],
      options: [],
      placeholder: '请选择库区状态',
      rules: [
        { required: true, message: '库区状态不能为空', trigger: 'change' },
@@ -69,11 +71,7 @@
      label: '库区类型',
      prop: 'areaType',
      el: 'select',
      options: [
        { label: '存储区', value: 'Storage' },
        { label: '装卸区', value: 'Loading' },
        // 根据实际的 AreaTypeEnum 添加更多选项
      ],
      options: [],
      placeholder: '请选择库区类型',
      rules: [
        { required: true, message: '库区类型不能为空', trigger: 'change' },
@@ -82,7 +80,8 @@
    {
      label: '仓库代码',
      prop: 'storeCode',
      el: 'input',
      el: 'select',
      options: [],
      placeholder: '请输入仓库代码',
    },
    {
@@ -173,10 +172,40 @@
      },
    }
  }
  const updateFormItemOptions = (propName: string, enumData: any[]) => {
    const item = formItems.find((item) => item.prop === propName)
    if (item && enumData) {
      item.options = enumData.map((item) => ({
        label: item.description,
        value: item.value,
      }))
    }
  }
  const updateFormStoreOptions = (propName: string, enumData: any[]) => {
    const item = formItems.find((item) => item.prop === propName)
    if (item && enumData) {
      item.options = enumData.map((item) => ({
        label: item.StoreCode,
        value: item.StoreName,
      }))
    }
  }
  /**
   * 弹窗打开获取详情
   */
  const onOpen = async () => {
    const areaStatusEnum = await getWmsEnumData({
      EnumName: 'AreaStatusEnum',
    })
    updateFormItemOptions('areaStatus', areaStatusEnum)
    const areaTypeEnum = await getWmsEnumData({
      EnumName: 'AreaTypeEnum',
    })
    updateFormItemOptions('areaType', areaTypeEnum)
    const storeList = await getStoreDataList()
    updateFormItemOptions('storeCode', storeList)
    if (current.value) {
      const res = await wmsAreaDrawer.getWmsAreaDetail(current.value)
@@ -191,8 +220,10 @@
        remark: res.remark, // 备注
        id: res.id,
      }
      disabled.value = true
      updateCheckData()
    } else {
      disabled.value = false
      formData.value = {}
      updateCheckData()
    }
HIAWms/web/src/widgets/WmsStoreInfo/Controllers/WmsStoreDrawer.ts
@@ -15,6 +15,7 @@
  const formData = ref<Record<string, any>>({})
  // ref
  const formRef = ref()
  const disabled = ref(false)
  const current = computed(() => {
    return props.row || null
@@ -35,12 +36,13 @@
      label: '仓库代码',
      prop: 'storeCode',
      el: 'input',
      disabled: disabled,
      placeholder: '请输入仓库代码',
      rules: [{ required: true, message: '仓库代码', trigger: 'blur' }],
    },
    {
      label: '仓库名称',
      prop: 'storeCode',
      prop: 'storeName',
      el: 'input',
      placeholder: '请输入仓库名称',
      rules: [{ required: true, message: '仓库名称', trigger: 'blur' }],
@@ -86,8 +88,8 @@
  const onConfirm = async () => {
    await formRef.value?.validate()
    const data = {
      name: formData.value.name,
      code: formData.value.code,
      storeName: formData.value.storeName,
      storeCode: formData.value.storeCode,
      remark: formData.value.remark,
      sort: props.sort,
    }
@@ -116,13 +118,15 @@
      const res = await wmsStoreDrawer.getWmsStoreDetail(current.value)
      formData.value = {
        name: res.name,
        code: res.code,
        storeName: res.storeName,
        storeCode: res.storeCode,
        remark: res.remark,
        id: res.id,
      }
      disabled.value = true
      updateCheckData()
    } else {
      disabled.value = false
      formData.value = {}
      updateCheckData()
    }