From 14f9c8378bde7d9a8d8f1fcc393e0e8d49eced82 Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周五, 09 5月 2025 17:44:29 +0800 Subject: [PATCH] 查找空库位,查找库存 --- HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainerPlace导出模板.xlsx | 0 HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx | 6 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506070902_InitialCreate6.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerPlaceAppService.cs | 46 + HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsBindInStockAssService.cs | 161 ++++ HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250508005509_InitialCreate9.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/ExportWmsMaterialModel.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainerPlace.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs | 26 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509065902_InitialCreate11.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/GetWmsContainerPlaceInput.cs | 239 ++++++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs | 18 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506074429_InitialCreate7.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs | 1 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs | 4 HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts | 2 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs | 1 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerPlaceRepository.cs | 113 +++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateOrUpdateDtoBase.cs | 95 ++ HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505140345_InitialCreate5.Designer.cs | 4 HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx | 6 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/IWmsContainerPlaceRepository.cs | 53 + HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs | 15 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs | 24 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250507093411_InitialCreate8.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs | 43 + HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlacesImportModel.cs | 33 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs | 44 + HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialContainer.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509054804_InitialCreate10.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsCommonAppService.cs | 21 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceDto.cs | 141 +++ HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerPlaceAppService.cs | 430 +++++++++++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceUpdateDto.cs | 13 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialSpecification.cs | 12 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateDto.cs | 17 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceExportModel.cs | 103 ++ HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs | 16 HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsContainerPlaceController.cs | 188 +++++ HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/WmsContainerPlace.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/BindInstockDto/BindInstockInput.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.cs | 6 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs | 66 + HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx | 13 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs | 2 HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505135455_InitialCreate4.Designer.cs | 4 HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerPlaceAutoMapperProfile.cs | 26 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/CommonDto/MaterialModelOutput.cs | 16 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs | 9 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs | 67 + 61 files changed, 2,016 insertions(+), 134 deletions(-) diff --git a/HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx b/HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx index 7e1295f..1c0af31 100644 --- a/HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx +++ b/HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx @@ -56,7 +56,7 @@ const formItems = reactive([ { label: '鐗╂枡缂栫爜', - prop: 'materialCode', + prop: 'materialNo', el: 'input', disabled: disabled, placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮�', @@ -214,7 +214,7 @@ const onConfirm = async () => { await formRef.value?.validate() const data = { - materialCode: formData.value.materialCode, + materialNo: formData.value.materialNo, materialName: formData.value.materialName, purchaseType: formData.value.purchaseType, materialType: formData.value.materialType, @@ -279,7 +279,7 @@ const res = await wmsMaterialDrawer.getWmsMaterialDetail(current.value) formData.value = { - materialCode: res.materialCode, + materialNo: res.materialNo, materialName: res.materialName, purchaseType: res.purchaseType, materialType: res.materialType, diff --git a/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts b/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts index a6762bf..084b68f 100644 --- a/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts +++ b/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts @@ -5,7 +5,7 @@ title: '搴忓彿', }, { - field: 'materialCode', + field: 'materialNo', title: '鐗╂枡缂栫爜', }, { diff --git a/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx b/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx index a2e2c16..7acaa1b 100644 --- a/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx +++ b/HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx @@ -62,7 +62,7 @@ // 鏂板鐨勬煡璇㈡潯浠� const queryForm = ref({ - materialCode: '', + materialNo: '', materialName: '', materialType: '', purchaseType: '', @@ -122,7 +122,7 @@ // 閲嶇疆鏌ヨ鏉′欢 const resetQuery = () => { queryForm.value = { - materialCode: '', + materialNo: '', materialName: '', materialType: '', purchaseType: '', @@ -216,7 +216,7 @@ </ElFormItem> <ElFormItem label="鐗╂枡缂栫爜"> <ElInput - v-model={queryForm.value.materialCode} + v-model={queryForm.value.materialNo} placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" clearable class={styles.formItem} diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx index 0aef04f..ca0e0ed 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx @@ -64,7 +64,7 @@ materialName: '', containerType: '', containerStatus: '', - storageTypeNo: '', + storageTypeNo: 1, placeStatus: '', placeNo: '', isLock: '', @@ -77,7 +77,7 @@ ...queryForm.value, containerType: queryForm.value.containerType || '', // 澶勭悊涓嬫媺 containerStatus: queryForm.value.containerStatus || '', - storageTypeNo: queryForm.value.storageTypeNo || '', // 澶勭悊涓嬫媺 + storageTypeNo: queryForm.value.storageTypeNo || 1, // 澶勭悊涓嬫媺 placeStatus: queryForm.value.placeStatus || '', islock: queryForm.value.isLock || '', emptyContainer: queryForm.value.emptyContainer || '', @@ -147,6 +147,7 @@ // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹� onMounted(() => { fetchEnumData() + handleQuery() }) // 鏂板鐨勬煡璇㈡柟娉� @@ -164,7 +165,7 @@ materialName: '', containerType: '', containerStatus: '', - storageTypeNo: '', + storageTypeNo: 1, placeStatus: '', placeNo: '', isLock: '', @@ -186,7 +187,10 @@ params, autoHeight, } = props - + props.params = { + ...queryParams.value, + ...params, + } return ( <div class={{ @@ -334,7 +338,6 @@ <ElSelect v-model={queryForm.value.storageTypeNo} placeholder="璇烽�夋嫨鎵樼洏绫诲瀷" - clearable loading={enumOptions.storageTypeNo.length === 0} class={styles.formItem} > diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/BindInstockDto/BindInstockInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/BindInstockDto/BindInstockInput.cs index 2efb842..bf177fb 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/BindInstockDto/BindInstockInput.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/BindInstockDto/BindInstockInput.cs @@ -45,6 +45,6 @@ /// <summary> /// 缁戝畾鏁伴噺 /// </summary> - public int MaterialStockNumber { get; set; } + public int StockNumber { get; set; } } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/CommonDto/MaterialModelOutput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/CommonDto/MaterialModelOutput.cs index d4711ac..4c702b1 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/CommonDto/MaterialModelOutput.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/CommonDto/MaterialModelOutput.cs @@ -21,4 +21,20 @@ /// </summary> public string MaterialModelDesc { get; set; } } + + /// <summary> + /// 搴撲綅鍒楄〃杈撳嚭 + /// </summary> + public class PlaceListOutput + { + /// <summary> + /// 搴撲綅鍙� + /// </summary> + public string PlaceNo { get; set; } + + /// <summary> + /// 搴撲綅鍙� + /// </summary> + public string PlaceNoDesc { get; set; } + } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/GetWmsContainerPlaceInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/GetWmsContainerPlaceInput.cs new file mode 100644 index 0000000..3e91603 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/GetWmsContainerPlaceInput.cs @@ -0,0 +1,239 @@ +using CmsQueryExtensions.Extension; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴鏌ヨ鍙傛暟 +/// </summary> +public class GetWmsContainerPlaceInput : ExtensiblePagedAndSortedResultRequestDto +{ + + #region 鍏抽敭瀛楁煡璇� + + /// <summary> + /// 鍏抽敭瀛楁ā绯婃煡璇紙娉ㄦ剰鏄皬鍐欙紒锛� + /// </summary> + public string searchVal { get; set; } + + /// <summary> + /// 閫氱敤鏌ヨ閰嶇疆 (1:妯$硦鏌ヨ , 2:绮惧噯鏌ヨ)锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + [NoAutoQuery] + public string str_searchFormInputAttrs { get; set; } + /// <summary> + /// 瀛愭悳绱㈢粍浠朵紶閫掔殑閫氱敤鏌ヨ閰嶇疆鐨勫睘鎬у悕锛堟敞鎰忔槸灏忓啓锛侊級 + /// </summary> + public List<string> searchFormInputAttrs + { + get + { + if (!string.IsNullOrEmpty(str_searchFormInputAttrs)) + { + return str_searchFormInputAttrs.Split(',').ToList(); + } + return new List<string>(); + } + } + + #endregion + + /// <summary> + /// 搴撲綅缂栫爜 + /// </summary> + public string PlaceNo { get; set; } + + /// <summary> + /// 搴撲綅缂栫爜-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum PlaceNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 缂栫爜 + /// </summary> + public string ContainerNo { get; set; } + + /// <summary> + /// 缂栫爜-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum ContainerNo_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int? Sort { get; set; } + + /// <summary> + /// 鎺掑簭-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum Sort_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鍚嶇О + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> BindTime { get; set; } + + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// 鏄惁绂佺敤-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } + + /// <summary> + /// 澶囨敞-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum Remark_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> CreationTime { get; set; } + + + /// <summary> + /// 鍒涘缓浜篒D + /// </summary> + public string CreatorId { get; set; } + + /// <summary> + /// 鍒涘缓浜篒D-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 淇敼鏃堕棿 + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> LastModificationTime { get; set; } + + + /// <summary> + /// 淇敼浜篒D + /// </summary> + public string LastModifierId { get; set; } + + /// <summary> + /// 淇敼浜篒D-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鏄惁鍒犻櫎 + /// </summary> + public bool? IsDeleted { get; set; } + + /// <summary> + /// 鏄惁鍒犻櫎-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ; + + /// <summary> + /// 鍒犻櫎浜篒D + /// </summary> + public string DeleterId { get; set; } + + /// <summary> + /// 鍒犻櫎浜篒D-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鍒犻櫎鏃堕棿 + /// </summary> + //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规�� + [HighSearchRangeAttribute] + public List<string> DeletionTime { get; set; } + + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + public string CreatorName { get; set; } + + /// <summary> + /// 鍒涘缓浜�-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum CreatorName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鍒犻櫎澶囨敞 + /// </summary> + public string DeleteRemark { get; set; } + + /// <summary> + /// 鍒犻櫎澶囨敞-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum DeleteRemark_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎵╁睍瀛楁1 + /// </summary> + public string ExtraField1 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁1-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum ExtraField1_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎵╁睍瀛楁2 + /// </summary> + public string ExtraField2 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁2-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum ExtraField2_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎵╁睍瀛楁3 + /// </summary> + public string ExtraField3 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁3-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum ExtraField3_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 淇敼浜� + /// </summary> + public string LastModifierName { get; set; } + + /// <summary> + /// 淇敼浜�-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum LastModifierName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + /// <summary> + /// 鎿嶄綔澶囨敞 + /// </summary> + public string OperationRemark { get; set; } + + /// <summary> + /// 鎿嶄綔澶囨敞-鏌ヨ鍏崇郴杩愮畻绗� + /// </summary> + public SearchFilterModeEnum OperationRemark_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ; + + +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateDto.cs new file mode 100644 index 0000000..537023d --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateDto.cs @@ -0,0 +1,17 @@ +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴鍒涘缓鍙傛暟瀵硅薄 +/// </summary> +public class WmsContainerPlaceCreateDto : WmsContainerPlaceCreateOrUpdateDtoBase +{ + /// <summary> + /// 鎺掑簭 + /// </summary> + public virtual int? Sort { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } = false; +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateOrUpdateDtoBase.cs new file mode 100644 index 0000000..4676901 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceCreateOrUpdateDtoBase.cs @@ -0,0 +1,95 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using System; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴鍒涘缓鎴栨洿鏂板熀绫� +/// </summary> +public abstract class WmsContainerPlaceCreateOrUpdateDtoBase : ExtensibleEntityDto +{ + /// <summary> + /// 搴撲綅缂栫爜 + /// </summary> + public string PlaceNo { get; set; } + + /// <summary> + /// 缂栫爜 + /// </summary> + public string ContainerNo { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + public DateTime BindTime { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string? Remark { get; set; } + + /// <summary> + /// 鍒涘缓浜篒D + /// </summary> + public string? CreatorId { get; set; } + + /// <summary> + /// 淇敼浜篒D + /// </summary> + public string? LastModifierId { get; set; } + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + public string? CreatorName { get; set; } + + /// <summary> + /// 鍒犻櫎澶囨敞 + /// </summary> + public string? DeleteRemark { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁1 + /// </summary> + public string? ExtraField1 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁2 + /// </summary> + public string? ExtraField2 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁3 + /// </summary> + public string? ExtraField3 { get; set; } + + /// <summary> + /// 淇敼浜� + /// </summary> + public string? LastModifierName { get; set; } + + /// <summary> + /// 鎿嶄綔澶囨敞 + /// </summary> + public string? OperationRemark { get; set; } + + + + /// <summary> + /// Initializes a new instance of the <see cref="WmsContainerPlaceCreateOrUpdateDtoBase"/> class. + /// </summary> + public WmsContainerPlaceCreateOrUpdateDtoBase() : base(false) + { + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceDto.cs new file mode 100644 index 0000000..1a3aae3 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceDto.cs @@ -0,0 +1,141 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using CmsQueryExtensions; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; +using Volo.Abp.Domain.Entities; + + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴鏁版嵁鍙傛暟瀵硅薄 +/// </summary> +public class WmsContainerPlaceDto: ExtensibleEntityDto<Guid>, IHasConcurrencyStamp +{ + /// <summary> + /// 搴撲綅缂栫爜 + /// </summary> + public string PlaceNo { get; set; } + + /// <summary> + /// 缂栫爜 + /// </summary> + public string ContainerNo { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + public DateTime BindTime { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool? IsDisabled { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string? Remark { get; set; } + + /// <summary> + /// 鎵╁睍灞炴�� + /// </summary> + public ExtraPropertyDictionary? ExtraProperties { get; set; } + + /// <summary> + /// 骞跺彂鎴� + /// </summary> + public string? ConcurrencyStamp { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTime CreationTime { get; set; } + + /// <summary> + /// 鍒涘缓浜篒D + /// </summary> + public string? CreatorId { get; set; } + + /// <summary> + /// 淇敼鏃堕棿 + /// </summary> + public DateTime? LastModificationTime { get; set; } + + /// <summary> + /// 淇敼浜篒D + /// </summary> + public string? LastModifierId { get; set; } + + /// <summary> + /// 鏄惁鍒犻櫎 + /// </summary> + public bool IsDeleted { get; set; } + + /// <summary> + /// 鍒犻櫎浜篒D + /// </summary> + public string? DeleterId { get; set; } + + /// <summary> + /// 鍒犻櫎鏃堕棿 + /// </summary> + public DateTime? DeletionTime { get; set; } + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + public string? CreatorName { get; set; } + + /// <summary> + /// 鍒犻櫎澶囨敞 + /// </summary> + public string? DeleteRemark { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁1 + /// </summary> + public string? ExtraField1 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁2 + /// </summary> + public string? ExtraField2 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁3 + /// </summary> + public string? ExtraField3 { get; set; } + + /// <summary> + /// 淇敼浜� + /// </summary> + public string? LastModifierName { get; set; } + + /// <summary> + /// 鎿嶄綔澶囨敞 + /// </summary> + public string? OperationRemark { get; set; } + + + + /// <summary> + /// Gets the export data. + /// </summary> + /// <returns></returns> + public Dictionary<string, object> GetExportData() + { + var exportData = new Dictionary<string, object>(); + foreach (var property in this.GetType().GetProperties()) + { + exportData.Add(property.Name, property.GetValue(this)); + } + + return exportData; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceExportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceExportModel.cs new file mode 100644 index 0000000..3da5605 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceExportModel.cs @@ -0,0 +1,103 @@ +using MiniExcelLibs.Attributes; +using System.ComponentModel.DataAnnotations; +using System; +using System.ComponentModel; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴瀵煎嚭妯″瀷 +/// </summary> +public class WmsContainerPlaceExportModel +{ + /// <summary> + /// 搴撲綅缂栫爜 + /// </summary> + [ExcelColumn(Name = "搴撲綅缂栫爜", Width = 25)] + public string PlaceNo { get; set; } + + /// <summary> + /// 缂栫爜 + /// </summary> + [ExcelColumn(Name = "缂栫爜", Width = 25)] + public string ContainerNo { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + [ExcelColumn(Name = "鎺掑簭", Width = 25)] + public int Sort { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + [ExcelColumn(Name = "鍚嶇О", Width = 25)] + public DateTime BindTime { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + [ExcelColumn(Name = "鏄惁绂佺敤", Width = 25)] + public bool? IsDisabled { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [ExcelColumn(Name = "澶囨敞", Width = 25)] + public string Remark { get; set; } + + /// <summary> + /// 鍒涘缓浜� + /// </summary> + [ExcelColumn(Name = "鍒涘缓浜�", Width = 25)] + public string CreatorName { get; set; } + + /// <summary> + /// 鍒犻櫎澶囨敞 + /// </summary> + [ExcelColumn(Name = "鍒犻櫎澶囨敞", Width = 25)] + public string DeleteRemark { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁1 + /// </summary> + [ExcelColumn(Name = "鎵╁睍瀛楁1", Width = 25)] + public string ExtraField1 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁2 + /// </summary> + [ExcelColumn(Name = "鎵╁睍瀛楁2", Width = 25)] + public string ExtraField2 { get; set; } + + /// <summary> + /// 鎵╁睍瀛楁3 + /// </summary> + [ExcelColumn(Name = "鎵╁睍瀛楁3", Width = 25)] + public string ExtraField3 { get; set; } + + /// <summary> + /// 淇敼浜� + /// </summary> + [ExcelColumn(Name = "淇敼浜�", Width = 25)] + public string LastModifierName { get; set; } + + /// <summary> + /// 鎿嶄綔澶囨敞 + /// </summary> + [ExcelColumn(Name = "鎿嶄綔澶囨敞", Width = 25)] + public string OperationRemark { get; set; } + + + + public Dictionary<string, object> GetExportData() + { + var exportData = new Dictionary<string, object>(); + foreach (var property in this.GetType().GetProperties()) + { + exportData.Add(property.Name, property.GetValue(this)); + } + + return exportData; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceUpdateDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceUpdateDto.cs new file mode 100644 index 0000000..a2c2bd9 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlaceUpdateDto.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Domain.Entities; +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴鏇存柊鍙傛暟瀵硅薄 +/// </summary> +public class WmsContainerPlaceUpdateDto : WmsContainerPlaceCreateOrUpdateDtoBase, IHasConcurrencyStamp +{ + /// <summary> + /// 骞跺彂鎴� + /// </summary> + public string ConcurrencyStamp { get; set; } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlacesImportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlacesImportModel.cs new file mode 100644 index 0000000..33e108b --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainerPlace/WmsContainerPlacesImportModel.cs @@ -0,0 +1,33 @@ + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace +{ + /// <summary> + /// 搴撲綅瀹瑰櫒鍏崇郴瀵煎叆妯″瀷 + /// </summary> + public class WmsContainerPlacesImportModel + { + private List<WmsContainerPlaceImportModel> _WmsContainerPlaces = new(); + + public List<WmsContainerPlaceImportModel> WmsContainerPlaces + { + get => _WmsContainerPlaces; + set + { + _WmsContainerPlaces = value; + var rowIndex = 2; + _WmsContainerPlaces?.ForEach(x => x.RowIndex = rowIndex++); + } + } + + /// <summary> + /// 搴撲綅瀹瑰櫒鍏崇郴瀵煎叆妯″瀷 + /// </summary> + public class WmsContainerPlaceImportModel : WmsContainerPlaceExportModel + { + /// <summary> + /// 琛屽彿 + /// </summary> + public int RowIndex { get; set; } + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs index c6da695..fd3e1ed 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockCreateOrUpdateDtoBase.cs @@ -96,7 +96,7 @@ /// <summary> /// 鏄惁绌烘墭 /// </summary> - public YesNoEnum EmptyContainer { get; protected set; } + public YesNoEnum EmptyContainer { get; set; } /// <summary> /// 鍏ュ簱鏃堕棿 diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/ExportWmsMaterialModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/ExportWmsMaterialModel.cs index 5c5e666..b6c268d 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/ExportWmsMaterialModel.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/ExportWmsMaterialModel.cs @@ -17,7 +17,7 @@ /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛� /// </summary> [Description("鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�")] - public string MaterialCode { get; set; } + public string MaterialNo { get; set; } /// <summary> /// 鐗╂枡鍚嶇О diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs index 5427e01..714696f 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/GetWmsMaterialsInput.cs @@ -21,7 +21,7 @@ /// <summary> /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛� /// </summary> - public string MaterialCode { get; set; } + public string MaterialNo { get; set; } /// <summary> /// 鐗╂枡鍚嶇О diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs index cfe0a7d..934c870 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs @@ -11,7 +11,7 @@ /// <summary> /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛� /// </summary> - public string MaterialCode { get; set; } + public string MaterialNo { get; set; } /// <summary> /// 鐗╂枡鍚嶇О diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs index c6044db..e7512b7 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs @@ -13,7 +13,7 @@ /// <summary> /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛� /// </summary> - public string MaterialCode { get; set; } + public string MaterialNo { get; set; } /// <summary> /// 鐗╂枡鍚嶇О diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs index e34c158..fe081f9 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs @@ -16,7 +16,7 @@ /// </summary> /// <example>MAT-2023-001</example> [ExcelColumn(Name = "鐗╂枡缂栫爜", Width = 25)] - public string MaterialCode { get; set; } + public string MaterialNo { get; set; } /// <summary> /// 鐗╂枡鍚嶇О diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsCommonAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsCommonAppService.cs new file mode 100644 index 0000000..83eba00 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsCommonAppService.cs @@ -0,0 +1,21 @@ +锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Services +{ + public interface IWmsCommonAppService + { + /// <summary> + /// 鏌ユ壘鍙敤搴撲綅 + /// </summary> + /// <param name="materialModel"></param> + /// <param name="requiredNum"></param> + /// <param name="materialNo"></param> + /// <returns></returns> + Task<Dictionary<WmsPlaceDto, int>> FindAvailablePlacesAsync(string materialModel, int requiredNum, string materialNo = ""); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerPlaceAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerPlaceAppService.cs new file mode 100644 index 0000000..685f595 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerPlaceAppService.cs @@ -0,0 +1,46 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; +using Volo.Abp.Application.Services; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Services; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴搴旂敤鏈嶅姟鎺ュ彛 +/// </summary> +public interface IWmsContainerPlaceAppService : ICrudAppService<WmsContainerPlaceDto, Guid, GetWmsContainerPlaceInput, WmsContainerPlaceCreateDto, WmsContainerPlaceUpdateDto> +{ + /// <summary> + /// 鍏嬮殕搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + Task<List<WmsContainerPlaceDto>> CloneAsync(IEnumerable<Guid> ids); + + /// <summary> + /// 鍒犻櫎搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + Task DeleteManyAsync(IEnumerable<Guid> ids); + + /// <summary> + /// 璋冩暣鎺掑簭搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id"></param> + /// <param name="sort"></param> + /// <returns></returns> + Task AdjustSortAsync(Guid id, int sort); + + /// <summary> + /// 瀵煎叆搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task ImportAsync(WmsContainerPlacesImportModel input); + + /// <summary> + /// 瀵煎嚭搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsContainerPlaceInput input); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs index 00bb43d..06ef88c 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs @@ -1,5 +1,7 @@ -锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto; +锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CmsQueryExtensions; using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas.WmsAreaCreateOrUpdateDtoBase; using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces.WmsPlaceCreateOrUpdateDtoBase; @@ -34,5 +36,19 @@ /// </summary> /// <returns></returns> Task<List<PlaceAisleForListOuptut>> GetAisleListAsync(); + + + /// <summary> + /// 鑾峰彇鏈哄瀷 + /// </summary> + /// <returns></returns> + Task<List<MaterialModelOutput>> GetMaterialModeListAsync(); + + /// <summary> + /// 鑾峰彇搴撲綅鍒楄〃 + /// </summary> + /// <param name="placeType"></param> + /// <returns></returns> + Task<List<PlaceListOutput>> GetPlaceListForSelectAsync(PlaceTypeEnum placeType); } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsBindInStockAssService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsBindInStockAssService.cs index 5be0b4f..097119d 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsBindInStockAssService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsBindInStockAssService.cs @@ -1,4 +1,15 @@ 锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.BindInstockDto; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using CMS.Plugin.HIAWms.Domain.WmsContainerPlace; +using CMS.Plugin.HIAWms.Domain.WmsContainers; +using CMS.Plugin.HIAWms.Domain.WmsMaterialContainer; +using CMS.Plugin.HIAWms.Domain.WmsMaterialInfos; +using CMS.Plugin.HIAWms.Domain.WmsMaterials; +using CMS.Plugin.HIAWms.Domain.WmsPlaces; +using CMS.Plugin.HIAWms.Domain.WmsTask; using System; using System.Collections.Generic; using System.Linq; @@ -13,21 +24,161 @@ /// </summary> public class WmsBindInStockAssService : CMSPluginAppService { - public async Task BindMaterialContaienrAsync(BindMaterialInput input) + private readonly IWmsMaterialRepository _wmsMaterialRepository; + private readonly IWmsContainerRepository _wmsContainerRepository; + private readonly IWmsPlaceRepository _wmsPlaceRepository; + private readonly IWmsMaterialContainerRepository _wmsMaterialContainerRepository; + private readonly IWmsContainerPlaceRepository _wmsContainerPlaceRepository; + private readonly IWmsMaterialInfoRepository _wmsMaterialInfoRepository; + private readonly IWmsMaterialStockAppService _wmsMaterialStockAppService; + private readonly IWmsCommonAppService _wmsCommonAppService; + private readonly IWmsTaskRepository _wmsTaskRepository; + private readonly IWmsTaskAppService _wmsTaskAppService; + + public WmsBindInStockAssService(IWmsMaterialRepository wmsMaterialRepository, + IWmsContainerRepository wmsContainerRepository, + IWmsPlaceRepository wmsPlaceRepository +, + IWmsMaterialContainerRepository wmsMaterialContainerRepository, + IWmsContainerPlaceRepository wmsContainerPlaceRepository, + IWmsMaterialInfoRepository wmsMaterialInfoRepository, + IWmsMaterialStockAppService wmsMaterialStockAppService, + IWmsCommonAppService wmsCommonAppService, + IWmsTaskRepository wmsTaskRepository, + IWmsTaskAppService wmsTaskAppService) + { + _wmsMaterialRepository = wmsMaterialRepository; + _wmsContainerRepository = wmsContainerRepository; + _wmsPlaceRepository = wmsPlaceRepository; + _wmsMaterialContainerRepository = wmsMaterialContainerRepository; + _wmsContainerPlaceRepository = wmsContainerPlaceRepository; + _wmsMaterialInfoRepository = wmsMaterialInfoRepository; + _wmsMaterialStockAppService = wmsMaterialStockAppService; + _wmsCommonAppService = wmsCommonAppService; + _wmsTaskRepository = wmsTaskRepository; + _wmsTaskAppService = wmsTaskAppService; + } + + public async Task BindMaterialContaienrAsync(BindInstockInput input) { if (string.IsNullOrEmpty(input.MaterialModel)) { throw new UserFriendlyException("璇烽�夋嫨搴撲綅缂栧彿"); } if (string.IsNullOrEmpty(input.MaterialBatch)) { throw new UserFriendlyException("璇疯緭鍏ユ壒娆″彿"); } - if (input.MaterialStockNumber<=0) { throw new UserFriendlyException("鍏ュ簱鏁伴噺蹇呴』澶т簬0"); } + if (input.StockNumber <= 0) { throw new UserFriendlyException("鍏ュ簱鏁伴噺蹇呴』澶т簬0"); } + #region 搴熷純 + //string containerNo = DateTime.Now.ToString("yyMMddHHmmss") + new Random(Guid.NewGuid().GetHashCode()).Next(100, 9999).ToString(); + //// 5. 鍒涘缓鎵樼洏 + //var container = new WmsContainer + //{ + // ContainerNo = containerNo, + // ContainerType = Domain.Shared.Enums.ContainerTypeEnum.XUNI, + // ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.ZUPANG, + //}; + //await _wmsContainerRepository.InsertAsync(container); + //var materialContainerList = new List<WmsMaterialContainer>(); + //var materialInfoList = new List<WmsMaterialInfo>(); + //for (int i = 0; i < input.MaterialStockNumber; i++) + //{ + // string materialId = Guid.NewGuid().ToString("N"); + // var materialContainer = new WmsMaterialContainer + // { + // MaterialId = materialId, + // ContainerNo = containerNo, + // }; + // materialContainerList.Add(materialContainer); + + // var materialInfo = new WmsMaterialInfo + // { + + // }; + // materialInfoList.Add(materialInfo); + //} + + //await _wmsMaterialContainerRepository.InsertManyAsync(materialContainerList); + //await _wmsMaterialInfoRepository.InsertManyAsync(materialInfoList); + #endregion + + var material = await _wmsMaterialRepository.FindByModelAsync(input.MaterialModel); + if (material == null) + { + throw new UserFriendlyException($"鐗╂枡鍨嬪彿 {input.MaterialModel} 涓嶅瓨鍦紒"); + } + + // 5. 鍒涘缓鎵樼洏 + var containerNo = input.ContainerNo; + if (string.IsNullOrEmpty(containerNo)) + { + containerNo = DateTime.Now.ToString("yyMMddHHmmss") + new Random(Guid.NewGuid().GetHashCode()).Next(100, 9999).ToString(); + } + var container = new WmsContainer + { + ContainerNo = containerNo, + ContainerType = Domain.Shared.Enums.ContainerTypeEnum.XUNI, + ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.ZUPANG, + }; + await _wmsContainerRepository.InsertAsync(container); + + var materialStock = new WmsMaterialStockCreateDto + { + MaterialNo = material.MaterialNo, + MaterialName = material.MaterialName, + MaterialBatch = input.MaterialBatch, + StockNumber = input.StockNumber, + CheckStatus = Domain.Shared.Enums.MaterialCheckStatusEnum.HEGE, + IsLock = Domain.Shared.Enums.YesNoEnum.N, + PlaceNo = input.PlaceNo, + ContainerNo = containerNo, + EmptyContainer = Domain.Shared.Enums.YesNoEnum.N, + }; + await _wmsMaterialStockAppService.CreateAsync(materialStock); } + + /// <summary> + /// 缁勭洏鍏ュ簱 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> public async Task BindInStockAsync(BindInstockInput input) { - if(string.IsNullOrEmpty(input.PlaceNo)) { throw new UserFriendlyException("璇烽�夋嫨搴撲綅缂栧彿"); } + if (string.IsNullOrEmpty(input.PlaceNo)) { throw new UserFriendlyException("璇烽�夋嫨搴撲綅缂栧彿"); } - var bindInput = ObjectMapper.Map<BindInstockInput, BindMaterialInput>(input); - await BindMaterialContaienrAsync(bindInput); + input.ContainerNo = DateTime.Now.ToString("yyMMddHHmmss") + new Random(Guid.NewGuid().GetHashCode()).Next(100, 9999).ToString(); + await BindMaterialContaienrAsync(input); + + // 鐢熸垚浠诲姟 + var plactDict = await _wmsCommonAppService.FindAvailablePlacesAsync(input.MaterialNo, input.StockNumber); + var taskList = new List<WmsTask>(); + foreach (var kvp in plactDict) + { + var place = kvp.Key; // WmsPlace瀵硅薄 + var quantity = kvp.Value; // 鍒嗛厤鏁伴噺 + + for (int i = 0; i < quantity; i++) + { + var task = new WmsTask + { + TaskNo = $"RK_{DateTime.Now:yyyyMMddHHmmss}_{Guid.NewGuid().ToString("N").Substring(0, 6)}", + ContainerNo = input.ContainerNo, + SourcePlace = input.PlaceNo, + ToPlace = place.PlaceNo, + TaskType = TaskTypeEnum.RUKU, + SonTaskType = SonTaskTypeEnum.RGRUKU, + TaskStatus = WmsTaskStatus.WEIZHIXING, + TaskLevel = 999, + Aisle = 1, + DodeviceId = 0, + TaskDodeviceStatus = TaskDodeviceStatus.SrmNoStart, + IsNextTask = (int)YesNoEnum.Y, + IsRead = true, + MutableParam1 = input.MaterialModel, + }; + taskList.Add(task); + } + } + await _wmsTaskRepository.InsertManyAsync(taskList); } } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs index e8ef141..63d57b9 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs @@ -1,4 +1,6 @@ 锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces; +using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.WmsMaterials; using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks; using CMS.Plugin.HIAWms.Domain.WmsPlaces; @@ -14,7 +16,7 @@ /// <summary> /// 鍏叡鎿嶄綔鏈嶅姟 /// </summary> - public class WmsCommonAppService : CMSPluginAppService + public class WmsCommonAppService : CMSPluginAppService,IWmsCommonAppService { private readonly IWmsMaterialRepository _wmsMaterialRepository; private readonly IWmsPlaceRepository _wmsPlaceRepository; @@ -30,17 +32,6 @@ _wmsMaterialStockRepository = wmsMaterialStockRepository; } - public async Task<List<MaterialModelOutput>> GetMaterialModeListAsync() - { - var materialList = await _wmsMaterialRepository.GetMaterialListAsync(new WmsMaterial()); - if (materialList == null || materialList.Count <= 0) return new List<MaterialModelOutput>(); ; - - return materialList.Select(material => new MaterialModelOutput - { - MaterialModel = material.MaterialModel, - MaterialModelDesc = material.MaterialModel - }).ToList(); - } /// <summary> /// 鏌ユ壘绌哄簱浣� @@ -50,11 +41,12 @@ /// <param name="requiredNum"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> - public async Task<Dictionary<WmsPlace, int>> FindAvailablePlacesAsync(string materialModel, string materialNo, int requiredNum) + public async Task<Dictionary<WmsPlaceDto, int>> FindAvailablePlacesAsync(string materialModel,int requiredNum, string materialNo="" ) { // 1. 鑾峰彇鎵�鏈夊簱瀛樺拰搴撲綅淇℃伅 var stockList = await _wmsMaterialStockRepository.GetListAsync(new WmsMaterialStock()); - var allPlaceList = await _wmsPlaceRepository.GetListAsync(new WmsPlace()); + + var allPlaceList = ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(await _wmsPlaceRepository.GetListAsync(new WmsPlace())); // 2. 鏌ユ壘鐩稿悓鐗╂枡鍨嬪彿鍜岀紪鍙风殑搴撳瓨锛堟寜搴撳瓨閲忛檷搴忥級 var sameModelStocks = stockList @@ -63,7 +55,7 @@ .OrderByDescending(x => x.StockNumber) .ToList(); - var availablePlaces = new Dictionary<WmsPlace, int>(); + var availablePlaces = new Dictionary<WmsPlaceDto, int>(); int remainingNum = requiredNum; // 3. 浼樺厛妫�鏌ュ凡鏈夊簱瀛樼殑搴撲綅鏄惁鑳藉瓨鏀撅紙鐩稿悓 MaterialNo锛� @@ -108,5 +100,50 @@ return availablePlaces; } + + /// <summary> + /// 鏌ユ壘搴撳瓨 + /// </summary> + /// <param name="materialModel"></param> + /// <param name="requiredNum"></param> + /// <param name="materialNo"></param> + /// <returns></returns> + public async Task<Dictionary<string, int>> FindStockAsync(string materialModel, int requiredNum, string materialNo = "") + { + // 1. 鑾峰彇鎵�鏈夊簱瀛橈紙鎺掗櫎閿佸畾搴撳瓨锛� + var stockList = (await _wmsMaterialStockRepository.GetListAsync(new WmsMaterialStock())) + .Where(x => x.IsLock == Domain.Shared.Enums.YesNoEnum.N) + .ToList(); + + // 2. 绛涢�夊尮閰嶇墿鏂� + var availableStocks = stockList + .Where(x => x.MaterialModel == materialModel) + .WhereIf(!string.IsNullOrEmpty(materialNo), x => x.MaterialNo == materialNo) + .OrderBy(x => x.StockNumber) // 浼樺厛浠庡簱瀛樺皯鐨勫簱浣嶅嚭 + .ToList(); + + // 3. 妫�鏌ユ�诲簱瀛樻槸鍚﹁冻澶� + int totalAvailable = availableStocks.Sum(x => x.StockNumber); + if (totalAvailable < requiredNum) + { + throw new UserFriendlyException( + $"搴撳瓨涓嶈冻锛侀渶姹�: {requiredNum}, 鍙敤: {totalAvailable}, 缂�: {requiredNum - totalAvailable}"); + } + + // 4. 璁$畻鍚勫簱浣嶅嚭搴撴暟閲� + var allocation = new Dictionary<string, int>(); // <搴撲綅鍙�, 鍑哄簱鏁�> + int remaining = requiredNum; + + foreach (var stock in availableStocks) + { + if (remaining <= 0) break; + + int deductAmount = Math.Min(stock.StockNumber, remaining); + allocation.Add(stock.PlaceNo, deductAmount); + remaining -= deductAmount; + } + + return allocation; + } } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerPlaceAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerPlaceAppService.cs new file mode 100644 index 0000000..5f50a02 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerPlaceAppService.cs @@ -0,0 +1,430 @@ +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using CMS.Plugin.HIAWms.Domain.Shared; +using CmsQueryExtensions; +using CMS.Plugin.HIAWms.Domain.WmsContainerPlace; +using CmsQueryExtensions.Extension; +using System.Linq.Expressions; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectMapping; + +namespace CMS.Plugin.HIAWms.Application.Implements; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴搴旂敤鏈嶅姟 +/// </summary> +public class WmsContainerPlaceAppService : CMSPluginAppService, IWmsContainerPlaceAppService +{ + private readonly IWmsContainerPlaceRepository wmsContainerPlaceRepository; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsContainerPlaceAppService"/> class. + /// </summary> + /// <param name="WmsContainerPlaceRepository">The task job repository.</param> + public WmsContainerPlaceAppService(IWmsContainerPlaceRepository _WmsContainerPlaceRepository) + { + wmsContainerPlaceRepository = _WmsContainerPlaceRepository; + } + + /// <summary> + /// 鑾峰彇鎸囧畾搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public virtual async Task<WmsContainerPlaceDto> GetAsync(Guid id) + { + return ObjectMapper.Map<WmsContainerPlace, WmsContainerPlaceDto>(await wmsContainerPlaceRepository.GetAsync(id)); + } + + /// <summary> + /// 鍒嗛〉鑾峰彇搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public virtual async Task<PagedResultDto<WmsContainerPlaceDto>> GetListAsync(GetWmsContainerPlaceInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsContainerPlace.Sort); + } + + #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = DynamicGetQueryParams(input); + + #endregion + + var count = await wmsContainerPlaceRepository.GetCountAsync(whereConditions); + var list = await wmsContainerPlaceRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); + + return new PagedResultDto<WmsContainerPlaceDto>(count, ObjectMapper.Map<List<WmsContainerPlace>, List<WmsContainerPlaceDto>>(list)); + } + + /// <summary> + /// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + /// </summary> + /// <param name="input">杈撳叆鍙傛暟</param> + /// <returns></returns> + private FunReturnResultModel<Expression<Func<WmsContainerPlace, bool>>> DynamicGetQueryParams(GetWmsContainerPlaceInput input) + { + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsContainerPlace, GetWmsContainerPlaceInput>(input); + if (!whereConditions.IsSuccess) + { + throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg); + } + + //涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠� + Expression<Func<WmsContainerPlace, bool>> extendExpression = a => a.IsDeleted == false; + // 浣跨敤 System.Linq.PredicateBuilder 鐨� And + var pres = (System.Linq.Expressions.Expression<Func<WmsContainerPlace, bool>>)(whereConditions.data); + whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); + + return whereConditions; + } + + /// <summary> + /// 鏂板缓搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public virtual async Task<WmsContainerPlaceDto> CreateAsync(WmsContainerPlaceCreateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var exist = await wmsContainerPlaceRepository.NameExistAsync(input.PlaceNo); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.PlaceNo]); + } + + var maxSort = await wmsContainerPlaceRepository.GetMaxSortAsync(); + var sort = input.Sort ?? maxSort; + + var insertObj = ObjectMapper.Map<WmsContainerPlaceCreateDto, WmsContainerPlace>(input); + insertObj.Sort = sort; + input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); + + await wmsContainerPlaceRepository.InsertAsync(insertObj); + + //if (input.Sort.HasValue && insertObj.Sort != maxSort) + //{ + // await AdjustSortAsync(insertObj.Id, insertObj.Sort); + //} + + return ObjectMapper.Map<WmsContainerPlace, WmsContainerPlaceDto>(insertObj); + } + + /// <summary> + /// 鏇存柊搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id"></param> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public virtual async Task<WmsContainerPlaceDto> UpdateAsync(Guid id, WmsContainerPlaceUpdateDto input) + { + await CheckCreateOrUpdateDtoAsync(input); + + var updateObj = await wmsContainerPlaceRepository.GetAsync(id); + var exist = await wmsContainerPlaceRepository.NameExistAsync(input.PlaceNo, updateObj.Id); + if (exist) + { + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.PlaceNo]); + } + + updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); + input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); + + updateObj.PlaceNo = input.PlaceNo; + updateObj.ContainerNo = input.ContainerNo; + updateObj.IsDisabled = input.IsDisabled; + updateObj.Remark = input.Remark; + updateObj.CreatorName = input.CreatorName; + updateObj.DeleteRemark = input.DeleteRemark; + updateObj.ExtraField1 = input.ExtraField1; + updateObj.ExtraField2 = input.ExtraField2; + updateObj.ExtraField3 = input.ExtraField3; + updateObj.LastModifierName = input.LastModifierName; + updateObj.OperationRemark = input.OperationRemark; + + + await wmsContainerPlaceRepository.UpdateAsync(updateObj); + + return ObjectMapper.Map<WmsContainerPlace, WmsContainerPlaceDto>(updateObj); + } + + /// <summary> + /// 鍏嬮殕搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + public async Task<List<WmsContainerPlaceDto>> CloneAsync(IEnumerable<Guid> ids) + { + //var wmsContainerPlaces = new List<WmsContainerPlace>(); + //if (ids != null) + //{ + // var sort = await wmsContainerPlaceRepository.GetMaxSortAsync(); + // foreach (var id in ids) + // { + // var WmsContainerPlace = await wmsContainerPlaceRepository.FindAsync(id); + // if (WmsContainerPlace != null) + // { + // var name = WmsContainerPlace.Name + WmsContainerPlaceConsts.CloneTag; + // var notExist = false; + // while (!notExist) + // { + // var exist = await wmsContainerPlaceRepository.NameExistAsync(name); + // if (exist || wmsContainerPlaces.Any(x => x.Name == name)) + // { + // name += WmsContainerPlaceConsts.CloneTag; + // continue; + // } + + // notExist = true; + // } + + // //WmsContainerPlace = await wmsContainerPlaceRepository.InsertAsync(WmsContainerPlace.Clone(GuidGenerator.Create(), name, sort++)); + // wmsContainerPlaces.Add(WmsContainerPlace); + // } + // } + //} + + //return ObjectMapper.Map<List<WmsContainerPlace>, List<WmsContainerPlaceDto>>(wmsContainerPlaces); + return new List<WmsContainerPlaceDto>(); + } + + /// <summary> + /// 鍒犻櫎鍗曚釜搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public virtual Task DeleteAsync(Guid id) + { + return wmsContainerPlaceRepository.DeleteAsync(id); + } + + /// <summary> + /// 鍒犻櫎澶氫釜搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + public async Task DeleteManyAsync(IEnumerable<Guid> ids) + { + foreach (var id in ids) + { + await DeleteAsync(id); + } + } + + /// <summary> + /// 璋冩暣鎺掑簭搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id"></param> + /// <param name="sort"></param> + /// <returns></returns> + public virtual async Task AdjustSortAsync(Guid id, int sort) + { + var list = await wmsContainerPlaceRepository.GetListAsync(null, nameof(WmsContainerPlace.Sort)); + if (list != null && list.Any()) + { + var initSort = 1; + list.ForEach(x => x.AdjustSort(initSort++)); + var entity = list.FirstOrDefault(x => x.Id == id); + if (entity != null) + { + if (sort == 1) + { + list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + } + else if (entity.Sort > sort) + { + list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + else if (entity.Sort < sort) + { + list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); + list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); + } + + entity.AdjustSort(sort); + } + } + + await wmsContainerPlaceRepository.UpdateManyAsync(list); + } + + /// <summary> + /// 瀵煎叆搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public async Task ImportAsync(WmsContainerPlacesImportModel input) + { + Check.NotNull(input, nameof(input)); + + var wmsContainerPlaceCreateDtos = new List<(int RowIndex, WmsContainerPlaceCreateDto Item)>(); + var wmsContainerPlaceUpdateDtos = new List<(int RowIndex, Guid Id, WmsContainerPlaceUpdateDto Item)>(); + var importItems = input.WmsContainerPlaces; + + if (importItems != null && importItems.Any()) + { + #region 瀵煎叆鏍¢獙 + + // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� + var duplicateWmsContainerPlaces = importItems.GroupBy(x => x.PlaceNo).Where(x => x.Count() > 1).ToList(); + if (duplicateWmsContainerPlaces?.Any() == true) + { + var duplicateWmsContainerPlaceMsgs = duplicateWmsContainerPlaces.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅"); + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsContainerPlaceMsgs)}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + + #endregion + + foreach (var impItem in importItems) + { + if (impItem.PlaceNo.IsNullOrWhiteSpace()) + { + continue; + } + + if (impItem.PlaceNo.IsNullOrWhiteSpace()) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WmsContainerPlace鍚嶇О涓嶈兘涓虹┖"; + throw new UserFriendlyException(errorMsg); + } + + var oldWmsContainerPlace = await wmsContainerPlaceRepository.FindByNameAsync(impItem.PlaceNo); + if (oldWmsContainerPlace != null) + { + var wmsContainerPlaceUpdateDto = new WmsContainerPlaceUpdateDto + { + PlaceNo = impItem.PlaceNo, + ContainerNo = impItem.ContainerNo, + BindTime = impItem.BindTime, + IsDisabled = impItem.IsDisabled, + Remark = impItem.Remark, + CreatorName = impItem.CreatorName, + DeleteRemark = impItem.DeleteRemark, + ExtraField1 = impItem.ExtraField1, + ExtraField2 = impItem.ExtraField2, + ExtraField3 = impItem.ExtraField3, + LastModifierName = impItem.LastModifierName, + OperationRemark = impItem.OperationRemark, + + }; + + wmsContainerPlaceUpdateDtos.Add((impItem.RowIndex, oldWmsContainerPlace.Id, wmsContainerPlaceUpdateDto)); + } + else + { + var wmsContainerPlaceCreateDto = new WmsContainerPlaceCreateDto + { + PlaceNo = impItem.PlaceNo, + ContainerNo = impItem.ContainerNo, + BindTime = impItem.BindTime, + IsDisabled = impItem.IsDisabled, + Remark = impItem.Remark, + CreatorName = impItem.CreatorName, + DeleteRemark = impItem.DeleteRemark, + ExtraField1 = impItem.ExtraField1, + ExtraField2 = impItem.ExtraField2, + ExtraField3 = impItem.ExtraField3, + LastModifierName = impItem.LastModifierName, + OperationRemark = impItem.OperationRemark, + + }; + + wmsContainerPlaceCreateDtos.Add((impItem.RowIndex, wmsContainerPlaceCreateDto)); + } + } + } + + // 鏂板 + foreach (var wmsContainerPlaceDto in wmsContainerPlaceCreateDtos) + { + try + { + await CreateAsync(wmsContainerPlaceDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsContainerPlaceDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + + // 鏇存柊 + foreach (var wmsContainerPlaceDto in wmsContainerPlaceUpdateDtos) + { + try + { + await UpdateAsync(wmsContainerPlaceDto.Id, wmsContainerPlaceDto.Item); + } + catch (Exception e) + { + var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsContainerPlaceDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + throw new UserFriendlyException(errorMsg); + } + } + } + + /// <summary> + /// 瀵煎嚭搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsContainerPlaceInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsContainerPlace.Sort); + } + + #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = DynamicGetQueryParams(input); + + #endregion + + + var list = await wmsContainerPlaceRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); + var result = ObjectMapper.Map<List<WmsContainerPlace>, List<WmsContainerPlaceDto>>(list); + + var sheets = new Dictionary<string, object> + { + ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result), + }; + + var fileName = result.Count > 1 ? "搴撲綅瀹瑰櫒鍏崇郴鍒楄〃" : result.Count == 1 ? result[0]?.PlaceNo : "WmsContainerPlace妯$増"; + return (sheets, fileName); + } + + /// <summary> + /// 鏍¢獙搴撲綅瀹瑰櫒鍏崇郴锛屽綋鏂板缓鎴栨洿鏂版椂 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + protected Task CheckCreateOrUpdateDtoAsync(WmsContainerPlaceCreateOrUpdateDtoBase input) + { + Check.NotNull(input, nameof(input)); + Check.NotNullOrWhiteSpace(input.PlaceNo, "搴撲綅缂栫爜", 50); + Check.NotNullOrWhiteSpace(input.ContainerNo, "缂栫爜", 64); + Check.NotNull(input.BindTime, "鍚嶇О"); + + return Task.CompletedTask; + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs index 8fdf80d..92399d4 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs @@ -1,7 +1,10 @@ -锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto; +锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores; using CMS.Plugin.HIAWms.Application.Contracts.Services; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CMS.Plugin.HIAWms.Domain.WmsAreas; +using CMS.Plugin.HIAWms.Domain.WmsMaterials; using CMS.Plugin.HIAWms.Domain.WmsPlaces; using CMS.Plugin.HIAWms.Domain.WmsStores; using CmsQueryExtensions; @@ -23,12 +26,14 @@ private readonly IWmsStoreRepository _storeRepository; private readonly IWmsAreaRepository _wmsAreaRepository; private readonly IWmsPlaceRepository _wmsPlaceRepository; + private readonly IWmsMaterialRepository _wmsMaterialRepository; - public WmsEnumAppService(IWmsStoreRepository storeRepository, IWmsAreaRepository wmsAreaRepository, IWmsPlaceRepository wmsPlaceRepository) + public WmsEnumAppService(IWmsStoreRepository storeRepository, IWmsAreaRepository wmsAreaRepository, IWmsPlaceRepository wmsPlaceRepository, IWmsMaterialRepository wmsMaterialRepository) { _storeRepository = storeRepository; _wmsAreaRepository = wmsAreaRepository; _wmsPlaceRepository = wmsPlaceRepository; + _wmsMaterialRepository = wmsMaterialRepository; } public List<EnumItem> GetEnumDataList(WmsEnumInput enumInput) @@ -87,5 +92,39 @@ return result; } + + /// <summary> + /// 鑾峰彇鏈哄瀷 + /// </summary> + /// <returns></returns> + public async Task<List<MaterialModelOutput>> GetMaterialModeListAsync() + { + var materialList = await _wmsMaterialRepository.GetMaterialListAsync(new WmsMaterial()); + if (materialList == null || materialList.Count <= 0) return new List<MaterialModelOutput>(); ; + + return materialList.Select(material => new MaterialModelOutput + { + MaterialModel = material.MaterialModel, + MaterialModelDesc = material.MaterialModel + }).ToList(); + } + + + /// <summary> + /// 鑾峰彇搴撳尯鍒楄〃 + /// </summary> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<PlaceListOutput>> GetPlaceListForSelectAsync(PlaceTypeEnum placeType) + { + var placeList = await _wmsPlaceRepository.GetPlaceListForSelectAsync(placeType); + if (placeList == null || placeList.Count <= 0) return new List<PlaceListOutput>(); ; + + return placeList.Select(place => new PlaceListOutput + { + PlaceNo = place.PlaceNo, + PlaceNoDesc = place.PlaceNo + }).ToList(); + } } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs index c44b1ae..6341792 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs @@ -56,10 +56,10 @@ { await CheckCreateOrUpdateDtoAsync(input); - var exist = await _wmsmaterialRepository.NameExistAsync(input.MaterialCode); + var exist = await _wmsmaterialRepository.NameExistAsync(input.MaterialNo); if (exist) { - throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]); + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); } var maxSort = await _wmsmaterialRepository.GetMaxSortAsync(); @@ -85,10 +85,10 @@ await CheckCreateOrUpdateDtoAsync(input); var wmsmaterial = await _wmsmaterialRepository.GetAsync(id); - var exist = await _wmsmaterialRepository.NameExistAsync(input.MaterialCode, wmsmaterial.Id); + var exist = await _wmsmaterialRepository.NameExistAsync(input.MaterialNo, wmsmaterial.Id); if (exist) { - throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]); + throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); } wmsmaterial.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); @@ -211,7 +211,7 @@ #region 瀵煎叆鏍¢獙 // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� - var duplicateWmsMaterials = wmsmaterials.GroupBy(x => x.MaterialCode).Where(x => x.Count() > 1).ToList(); + var duplicateWmsMaterials = wmsmaterials.GroupBy(x => x.MaterialNo).Where(x => x.Count() > 1).ToList(); if (duplicateWmsMaterials?.Any() == true) { var duplicateWmsMaterialMsgs = duplicateWmsMaterials.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅"); @@ -223,23 +223,23 @@ foreach (var wmsmaterial in wmsmaterials) { - if (wmsmaterial.MaterialCode.IsNullOrWhiteSpace() && wmsmaterial.MaterialName.IsNullOrWhiteSpace()) + if (wmsmaterial.MaterialNo.IsNullOrWhiteSpace() && wmsmaterial.MaterialName.IsNullOrWhiteSpace()) { continue; } - if (wmsmaterial.MaterialCode.IsNullOrWhiteSpace()) + if (wmsmaterial.MaterialNo.IsNullOrWhiteSpace()) { var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterial.RowIndex}琛岋細WmsMaterial鍚嶇О涓嶈兘涓虹┖"; throw new UserFriendlyException(errorMsg); } - var oldWmsMaterial = await _wmsmaterialRepository.FindByNameAsync(wmsmaterial.MaterialCode); + var oldWmsMaterial = await _wmsmaterialRepository.FindByNameAsync(wmsmaterial.MaterialNo); if (oldWmsMaterial != null) { var wmsmaterialUpdateDto = new WmsMaterialUpdateDto { - MaterialCode = wmsmaterial.MaterialCode, + MaterialNo = wmsmaterial.MaterialNo, MaterialName = wmsmaterial.MaterialName, PurchaseType = wmsmaterial.PurchaseType, MaterialType = wmsmaterial.MaterialType, @@ -261,7 +261,7 @@ { var wmsmaterialCreateDto = new WmsMaterialCreateDto { - MaterialCode = wmsmaterial.MaterialCode, + MaterialNo = wmsmaterial.MaterialNo, MaterialName = wmsmaterial.MaterialName, PurchaseType = wmsmaterial.PurchaseType, MaterialType = wmsmaterial.MaterialType, @@ -332,7 +332,7 @@ ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result), }; - var fileName = result.Count > 1 ? "WmsMaterial鍒楄〃" : result.Count == 1 ? result[0]?.MaterialCode : "WmsMaterial妯$増"; + var fileName = result.Count > 1 ? "WmsMaterial鍒楄〃" : result.Count == 1 ? result[0]?.MaterialNo : "WmsMaterial妯$増"; return (sheets, fileName); } @@ -343,7 +343,7 @@ protected Task CheckCreateOrUpdateDtoAsync(WmsMaterialCreateOrUpdateDtoBase input) { Check.NotNull(input, nameof(input)); - Check.NotNullOrWhiteSpace(input.MaterialCode, "缂栧彿", WmsMaterialConsts.MaxCodeLength); + Check.NotNullOrWhiteSpace(input.MaterialNo, "缂栧彿", WmsMaterialConsts.MaxCodeLength); Check.NotNullOrWhiteSpace(input.MaterialName, "鍚嶇О", WmsMaterialConsts.MaxNameLength); Check.Length(input.Remark, "澶囨敞", WmsMaterialConsts.MaxRemarkLength); return Task.CompletedTask; diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs index a03b0b0..87b4765 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs @@ -85,24 +85,47 @@ // throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); //} var material = await _wmsMaterialRepository.FindByNameAsync(input.MaterialNo); - if(material == null) + if (material == null) { throw new UserFriendlyException("鐗╂枡淇℃伅涓嶅瓨鍦�"); } - var container = await _wmscontainerRepository.FindByNameAsync(input.ContainerNo); + var container = await _wmscontainerRepository.FindByNameAsync(input.ContainerNo); if (container == null) { throw new UserFriendlyException("鎵樼洏淇℃伅涓嶅瓨鍦�"); } - var place = await _wmsplaceRepository.FindByNameAsync(input.PlaceNo); - if(place == null) + + var wmsmaterialstock = ObjectMapper.Map<WmsMaterialStockCreateDto, WmsMaterialStock>(input); + input.MapExtraPropertiesTo(wmsmaterialstock, MappingPropertyDefinitionChecks.None); + wmsmaterialstock.MaterialId = Guid.NewGuid().ToString("N"); + wmsmaterialstock.MaterialName = material.MaterialName; + + wmsmaterialstock.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + wmsmaterialstock.ContainerType = container.ContainerType; + wmsmaterialstock.StorageTypeNo = Domain.Shared.Enums.PlaceTypeEnum.XUNIKUWEI; + wmsmaterialstock.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.DAIRU; + if (!string.IsNullOrEmpty(input.PlaceNo)) { - throw new UserFriendlyException("搴撲綅淇℃伅涓嶅瓨鍦�"); - } - var area = await _wmsareaRepository.FindByNameAsync(place.AreaCode); - if(area == null) - { - throw new UserFriendlyException("搴撲綅搴撳尯淇℃伅涓嶅瓨鍦�"); + var place = await _wmsplaceRepository.FindByNameAsync(input.PlaceNo); + if (place == null) + { + throw new UserFriendlyException("搴撲綅淇℃伅涓嶅瓨鍦�"); + } + var area = await _wmsareaRepository.FindByNameAsync(place.AreaCode); + if (area == null) + { + throw new UserFriendlyException("搴撲綅搴撳尯淇℃伅涓嶅瓨鍦�"); + } + + wmsmaterialstock.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + wmsmaterialstock.StorageTypeNo = place.StorageTypeNo; + wmsmaterialstock.AreaCode = place.AreaCode; + wmsmaterialstock.AreaName = area.AreaName; + + place.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + place.Islock = input.IsLock; + + await _wmsplaceRepository.UpdateAsync(place); } var wmsmaterialstockList = await _wmsmaterialstockRepository.GetStockListAsync(new WmsMaterialStock { PlaceNo = input.PlaceNo }); if (wmsmaterialstockList.Count > 0) @@ -115,18 +138,6 @@ var maxSort = await _wmsmaterialstockRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; - var wmsmaterialstock = ObjectMapper.Map<WmsMaterialStockCreateDto, WmsMaterialStock>(input); - input.MapExtraPropertiesTo(wmsmaterialstock, MappingPropertyDefinitionChecks.None); - wmsmaterialstock.MaterialId = Guid.NewGuid().ToString("N"); - wmsmaterialstock.MaterialName = material.MaterialName; - - wmsmaterialstock.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; - wmsmaterialstock.ContainerType = container.ContainerType; - - wmsmaterialstock.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; - wmsmaterialstock.StorageTypeNo = place.StorageTypeNo; - wmsmaterialstock.AreaCode = place.AreaCode; - wmsmaterialstock.AreaName = area.AreaName; wmsmaterialstock.MaterialModel = material.MaterialModel; wmsmaterialstock.MaterialBatch = input.MaterialBatch; @@ -135,7 +146,7 @@ wmsmaterialstock.InStockTime = DateTime.Now; var stockList = new List<WmsMaterialStock>(); - for (int i = 0; i< input.StockNumber; i++) + for (int i = 0; i < input.StockNumber; i++) { var stock = new WmsMaterialStock(); var json = JsonSerializer.Serialize(wmsmaterialstock); @@ -149,11 +160,8 @@ container.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; - place.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; - place.Islock = input.IsLock; await _wmscontainerRepository.UpdateAsync(container); - await _wmsplaceRepository.UpdateAsync(place); //if (input.Sort.HasValue && wmsmaterialstock.Sort != maxSort) //{ @@ -199,9 +207,9 @@ throw new UserFriendlyException("搴撲綅搴撳尯淇℃伅涓嶅瓨鍦�"); } - foreach(var wmsmaterialstock in wmsmaterialstockList) + foreach (var wmsmaterialstock in wmsmaterialstockList) { - if(input.StockNumber< wmsmaterialstockList.Count) + if (input.StockNumber < wmsmaterialstockList.Count) { wmsmaterialstock.IsDeleted = true; input.StockNumber += 1; @@ -229,7 +237,7 @@ wmsmaterialstock.MaterialModel = material.MaterialModel; wmsmaterialstock.MaterialBatch = input.MaterialBatch; } - if(input.StockNumber > wmsmaterialstockList.Count) + if (input.StockNumber > wmsmaterialstockList.Count) { var stockList = new List<WmsMaterialStock>(); for (int i = 0; i < input.StockNumber - wmsmaterialstockList.Count; i++) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerPlaceAutoMapperProfile.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerPlaceAutoMapperProfile.cs new file mode 100644 index 0000000..b9ea863 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerPlaceAutoMapperProfile.cs @@ -0,0 +1,26 @@ +using AutoMapper; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; +using CMS.Plugin.HIAWms.Domain.WmsContainerPlace; +using Volo.Abp.ObjectExtending; + +namespace CMS.Plugin.HIAWms.Application.MapperProfiles; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴AutoMapper閰嶇疆 +/// </summary> +/// <seealso cref="AutoMapper.Profile" /> +public class WmsContainerPlaceAutoMapperProfile : Profile +{ + /// <summary> + /// Initializes a new instance of the <see cref="WmsContainerPlaceAutoMapperProfile"/> class. + /// </summary> + public WmsContainerPlaceAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + CreateMap<WmsContainerPlace, WmsContainerPlaceDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<WmsContainerPlaceCreateDto, WmsContainerPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + CreateMap<GetWmsContainerPlaceInput, WmsContainerPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/IWmsContainerPlaceRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/IWmsContainerPlaceRepository.cs new file mode 100644 index 0000000..2705196 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/IWmsContainerPlaceRepository.cs @@ -0,0 +1,53 @@ +using CmsQueryExtensions.Extension; +using System.Linq.Expressions; +using Volo.Abp.Domain.Repositories; + +namespace CMS.Plugin.HIAWms.Domain.WmsContainerPlace; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴浠撳偍 +/// </summary> +public interface IWmsContainerPlaceRepository : IBasicRepository<WmsContainerPlace, Guid> +{ + /// <summary> + /// 鎸夌収鍚嶇О鏌ユ壘搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<WmsContainerPlace> FindByNameAsync(string name, CancellationToken cancellationToken = default); + + /// <summary> + /// 楠岃瘉鍚嶇О鏄惁瀛樺湪搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="name"></param> + /// <param name="id"></param> + /// <returns></returns> + Task<bool> NameExistAsync(string name, Guid? id = null); + + /// <summary> + /// 鑾峰彇鏈�澶ф帓搴忓簱浣嶅鍣ㄥ叧绯� + /// </summary> + /// <returns></returns> + Task<int> GetMaxSortAsync(); + + /// <summary> + /// 鑾峰彇鍒嗛〉鍒楄〃搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="sorting"></param> + /// <param name="maxResultCount"></param> + /// <param name="skipCount"></param> + /// <param name="includeDetails"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WmsContainerPlace>> GetListAsync(FunReturnResultModel<Expression<Func<WmsContainerPlace, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default); + + /// <summary> + /// 鑾峰彇鎬绘暟搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsContainerPlace, bool>>> whereConditions, CancellationToken cancellationToken = default); +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlaces/WmsContainerPlace.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/WmsContainerPlace.cs similarity index 94% rename from HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlaces/WmsContainerPlace.cs rename to HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/WmsContainerPlace.cs index 65472bf..a05a106 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlaces/WmsContainerPlace.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainerPlace/WmsContainerPlace.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; using Volo.Abp.Domain.Entities.Auditing; -namespace CMS.Plugin.HIAWms.Domain.WmsContainerPlaces +namespace CMS.Plugin.HIAWms.Domain.WmsContainerPlace { /// <summary> /// 搴撲綅瀹瑰櫒鍏崇郴 diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs index c6b09c9..468e6bb 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs @@ -17,6 +17,14 @@ Task<WmsMaterial> FindByNameAsync(string name, CancellationToken cancellationToken = default); /// <summary> + /// 鏍规嵁鍨嬪彿浼犵墿鏂� + /// </summary> + /// <param name="model"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<WmsMaterial> FindByModelAsync(string model, CancellationToken cancellationToken = default); + + /// <summary> /// Names the exist asynchronous. /// </summary> /// <param name="name">The name.</param> @@ -58,4 +66,11 @@ /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> Task<long> GetCountAsync(WmsMaterial material, string filter = null, Specification<WmsMaterial> specification = null, CancellationToken cancellationToken = default); + + /// <summary> + /// 鑾峰彇鐗╂枡鍒楄〃 + /// </summary> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WmsMaterial>> GetListForSelectAsync(CancellationToken cancellationToken = default); } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs index 2ffc4ca..e23824b 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs @@ -14,7 +14,7 @@ /// <summary> /// 鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛� /// </summary> - public string MaterialCode { get; set; } + public string MaterialNo { get; set; } /// <summary> /// 鐗╂枡鍚嶇О diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialSpecification.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialSpecification.cs index 1af79b7..ae1f7b6 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialSpecification.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialSpecification.cs @@ -7,7 +7,7 @@ /// </summary> public class WmsMaterialSpecification : Volo.Abp.Specifications.Specification<WmsMaterial> { - private readonly string _materialCode; + private readonly string _MaterialNo; /// <summary> /// Initializes a new instance of the <see cref="WmsMaterialSpecification"/> class. @@ -19,10 +19,10 @@ /// <summary> /// Initializes a new instance of the <see cref="WmsMaterialSpecification"/> class. /// </summary> - /// <param name="materialCode">The name.</param> - public WmsMaterialSpecification(string materialCode = null) + /// <param name="MaterialNo">The name.</param> + public WmsMaterialSpecification(string MaterialNo = null) { - _materialCode = materialCode; + _MaterialNo = MaterialNo; } /// <inheritdoc /> @@ -30,9 +30,9 @@ { Expression<Func<WmsMaterial, bool>> expression = c => 1 == 1; - if (_materialCode != null) + if (_MaterialNo != null) { - expression = expression.And(c => c.MaterialCode == _materialCode); + expression = expression.And(c => c.MaterialNo == _MaterialNo); } return expression; diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs index 15c6f97..68cbefe 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs @@ -1,3 +1,4 @@ +using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CMS.Plugin.HIAWms.Domain.WmsAreas; using Volo.Abp.Domain.Repositories; using Volo.Abp.Specifications; @@ -59,4 +60,12 @@ /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> Task<long> GetCountAsync(WmsPlace? place, string filter = null, Specification<WmsPlace> specification = null, CancellationToken cancellationToken = default); + + /// <summary> + /// 鏍规嵁绫诲瀷鑾峰彇搴撲綅鍒楄〃 + /// </summary> + /// <param name="placeType"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WmsPlace>> GetPlaceListForSelectAsync(PlaceTypeEnum placeType, CancellationToken cancellationToken = default); } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainerPlace.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainerPlace.cs index fcd6a2c..d84c02e 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainerPlace.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainerPlace.cs @@ -1,5 +1,4 @@ 锘縰sing CMS.Plugin.HIAWms.Domain; -using CMS.Plugin.HIAWms.Domain.WmsContainerPlaces; using CMS.Plugin.HIAWms.Domain.WmsContainers; using Microsoft.EntityFrameworkCore; using System; @@ -11,6 +10,7 @@ using CMS.Plugin.MyExtension; using Volo.Abp.EntityFrameworkCore.Modeling; using CMS.Plugin.MyExtension.Domain; +using CMS.Plugin.HIAWms.Domain.WmsContainerPlace; namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions { diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs index 7bce03b..9c0d47b 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs @@ -50,7 +50,7 @@ b.HasKey(x => x.Id); // 瀛楁閰嶇疆 - b.Property(x => x.MaterialCode) + b.Property(x => x.MaterialNo) .HasMaxLength(64) .IsRequired() .HasComment("鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�"); @@ -137,7 +137,7 @@ .HasComment("鏄惁绂佺敤"); // 绱㈠紩閰嶇疆 - b.HasIndex(x => x.MaterialCode).IsUnique(); // 鐗╂枡缂栫爜鍞竴绱㈠紩 + b.HasIndex(x => x.MaterialNo).IsUnique(); // 鐗╂枡缂栫爜鍞竴绱㈠紩 b.HasIndex(x => x.MaterialName); // 鐗╂枡鍚嶇О鏅�氱储寮� b.HasIndex(x => x.PurchaseType); // 閲囪喘绫诲瀷绱㈠紩锛堝闇�鏌ヨ杩囨护锛� b.HasIndex(x => x.MaterialType); // 鐗╂枡绫诲瀷绱㈠紩锛堝闇�鏌ヨ杩囨护锛� diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialContainer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialContainer.cs index 5b12a5a..e971207 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialContainer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialContainer.cs @@ -1,5 +1,5 @@ 锘縰sing CMS.Plugin.HIAWms.Domain; -using CMS.Plugin.HIAWms.Domain.WmsContainerPlaces; +using CMS.Plugin.HIAWms.Domain.WmsContainerPlace; using CMS.Plugin.HIAWms.Domain.WmsMaterialContainer; using Microsoft.EntityFrameworkCore; using System; diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs index b00e992..7eae430 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs @@ -1,5 +1,5 @@ 锘縰sing CMS.Plugin.HIAWms.Domain; -using CMS.Plugin.HIAWms.Domain.WmsContainerPlaces; +using CMS.Plugin.HIAWms.Domain.WmsContainerPlace; using CMS.Plugin.HIAWms.Domain.WmsTask; using Microsoft.EntityFrameworkCore; using System; diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs index 3f3a094..5fc6614 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs @@ -87,6 +87,7 @@ public async Task<List<WmsArea>> GetListForSelectAsync(CancellationToken cancellationToken = default) { return await (await GetDbSetAsync()) + .Where(x => !x.IsDeleted) .ToListAsync(GetCancellationToken(cancellationToken)); } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerPlaceRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerPlaceRepository.cs new file mode 100644 index 0000000..eb5795d --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerPlaceRepository.cs @@ -0,0 +1,113 @@ +using CMS.Plugin.HIAWms.Domain.WmsContainerPlace; +using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; +using CmsQueryExtensions.Extension; +using Microsoft.EntityFrameworkCore; +using System.Linq.Dynamic.Core; +using System.Linq.Expressions; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + + +namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories; + +/// <summary> +/// 搴撲綅瀹瑰櫒鍏崇郴浠撳偍瀹炵幇 +/// </summary> +public class EfCoreWmsContainerPlaceRepository : EfCoreRepository<ICMSPluginDbContext, WmsContainerPlace, Guid>, IWmsContainerPlaceRepository +{ + /// <summary> + /// Initializes a new instance of the <see cref="EfCoreWmsContainerPlaceRepository"/> class. + /// </summary> + /// <param name="dbContextProvider">The database context provider.</param> + public EfCoreWmsContainerPlaceRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider) + : base(dbContextProvider) + { + } + + /// <summary> + /// 鎸夌収鍚嶇О鏌ユ壘搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public virtual async Task<WmsContainerPlace> FindByNameAsync(string name, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .Where(x => !x.IsDeleted) + .OrderByDescending(x=>x.CreationTime) + .FirstOrDefaultAsync(t => t.PlaceNo == name, GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 楠岃瘉鍚嶇О鏄惁瀛樺湪搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="name">鏍¢獙鍊�</param> + /// <param name="id"></param> + /// <returns></returns> + public async Task<bool> NameExistAsync(string name, Guid? id = null) + { + return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.PlaceNo == name); + } + + /// <summary> + /// 鑾峰彇鏈�澶ф帓搴忓簱浣嶅鍣ㄥ叧绯� + /// </summary> + /// <returns></returns> + public async Task<int> GetMaxSortAsync() + { + var hasAny = await (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).AnyAsync(); + if (!hasAny) + { + return 1; + } + + var sort = await (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort); + return sort + 1; + } + + /// <summary> + /// 鑾峰彇鍒嗛〉鍒楄〃搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="sorting"></param> + /// <param name="maxResultCount"></param> + /// <param name="skipCount"></param> + /// <param name="includeDetails"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WmsContainerPlace>> GetListAsync(FunReturnResultModel<Expression<Func<WmsContainerPlace, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails(includeDetails) + .WhereIf(whereConditions != null, whereConditions.data) + .Where(x => !x.IsDeleted) + .OrderByDescending(x=>x.CreationTime) + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 鑾峰彇鎬绘暟搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsContainerPlace, bool>>> whereConditions, CancellationToken cancellationToken = default) + { + return await (await GetQueryableAsync()) + .WhereIf(whereConditions != null, whereConditions.data) + .Where(x => !x.IsDeleted) + .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); + } + + + /// <inheritdoc /> + public override async Task<IQueryable<WmsContainerPlace>> WithDetailsAsync() + { + return (await GetQueryableAsync()) + .Where(x => !x.IsDeleted).IncludeDetails(); + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs index f0a1d1a..38fa6c2 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Linq.Dynamic.Core; using System.Linq.Expressions; +using CMS.Plugin.HIAWms.Domain.WmsAreas; using CMS.Plugin.HIAWms.Domain.WmsMaterials; using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; using Microsoft.EntityFrameworkCore; @@ -30,13 +31,28 @@ .IncludeDetails() .Where(x => !x.IsDeleted) .OrderBy(t => t.Sort) - .FirstOrDefaultAsync(t => t.MaterialCode == name, GetCancellationToken(cancellationToken)); + .FirstOrDefaultAsync(t => t.MaterialNo == name, GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 查找型号 + /// </summary> + /// <param name="model"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public virtual async Task<WmsMaterial> FindByModelAsync(string model, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .Where(x => !x.IsDeleted) + .OrderBy(t => t.Sort) + .FirstOrDefaultAsync(t => t.MaterialModel == model, GetCancellationToken(cancellationToken)); } /// <inheritdoc /> - public async Task<bool> NameExistAsync(string materialCode, Guid? id = null) + public async Task<bool> NameExistAsync(string MaterialNo, Guid? id = null) { - return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == materialCode); + return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialNo == MaterialNo); } /// <inheritdoc /> @@ -61,9 +77,9 @@ return await (await GetDbSetAsync()) .IncludeDetails(includeDetails) .Where(specification.ToExpression()) - .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.MaterialCode.Contains(filter)) + .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.MaterialNo.Contains(filter)) .WhereIf(!string.IsNullOrEmpty(material.MaterialName), u => u.MaterialName.Contains(material.MaterialName)) - .WhereIf(!string.IsNullOrEmpty(material.MaterialCode), u => u.MaterialName.Contains(material.MaterialCode)) + .WhereIf(!string.IsNullOrEmpty(material.MaterialNo), u => u.MaterialName.Contains(material.MaterialNo)) .WhereIf(material.MaterialType > 0, u => u.MaterialType == material.MaterialType) .WhereIf(material.PurchaseType > 0, u => u.PurchaseType == material.PurchaseType) .Where(x => !x.IsDeleted) @@ -82,7 +98,7 @@ { return await (await GetDbSetAsync()) .WhereIf(!string.IsNullOrEmpty(material.MaterialName), u => u.MaterialName.Contains(material.MaterialName)) - .WhereIf(!string.IsNullOrEmpty(material.MaterialCode), u => u.MaterialName.Contains(material.MaterialCode)) + .WhereIf(!string.IsNullOrEmpty(material.MaterialNo), u => u.MaterialName.Contains(material.MaterialNo)) .WhereIf(material.MaterialType > 0, u => u.MaterialType == material.MaterialType) .WhereIf(material.PurchaseType > 0, u => u.PurchaseType == material.PurchaseType) .Where(x => !x.IsDeleted) @@ -103,11 +119,11 @@ return await (await GetQueryableAsync()) .Where(specification.ToExpression()) .WhereIf(!string.IsNullOrEmpty(material.MaterialName), u => u.MaterialName.Contains(material.MaterialName)) - .WhereIf(!string.IsNullOrEmpty(material.MaterialCode), u => u.MaterialName.Contains(material.MaterialCode)) + .WhereIf(!string.IsNullOrEmpty(material.MaterialNo), u => u.MaterialName.Contains(material.MaterialNo)) .WhereIf(material.MaterialType > 0, u => u.MaterialType == material.MaterialType) .WhereIf(material.PurchaseType > 0, u => u.PurchaseType == material.PurchaseType) .Where(x => !x.IsDeleted) - .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.MaterialCode.Contains(filter)) + .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.MaterialNo.Contains(filter)) .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); } @@ -117,4 +133,16 @@ return (await GetQueryableAsync()) .Where(x => !x.IsDeleted).IncludeDetails(); } + + /// <summary> + /// 获取物料表 + /// </summary> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WmsMaterial>> GetListForSelectAsync(CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(x => !x.IsDeleted) + .ToListAsync(GetCancellationToken(cancellationToken)); + } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs index 3d655e4..dc5cf40 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs @@ -1,4 +1,5 @@ using System.Linq.Dynamic.Core; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CMS.Plugin.HIAWms.Domain.WmsAreas; using CMS.Plugin.HIAWms.Domain.WmsPlaces; using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; @@ -84,7 +85,7 @@ /// <returns></returns> public async Task<List<WmsPlace>> GetAisleListForSelectAsync(CancellationToken cancellationToken = default) { - return await (await GetDbSetAsync()) + return await (await GetDbSetAsync()).Where(x => !x.IsDeleted) .ToListAsync(GetCancellationToken(cancellationToken)); } @@ -115,4 +116,17 @@ return (await GetQueryableAsync()) .Where(x => !x.IsDeleted).IncludeDetails(); } + + /// <summary> + /// 获取库区列表 + /// </summary> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WmsPlace>> GetPlaceListForSelectAsync(PlaceTypeEnum placeType,CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(x => !x.IsDeleted) + .Where(x=>x.StorageTypeNo == placeType) + .ToListAsync(GetCancellationToken(cancellationToken)); + } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs index 54a9be0..04c47b5 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs @@ -75,6 +75,7 @@ public async Task<List<WmsStore>> GetListForSelectAsync( CancellationToken cancellationToken = default) { return await (await GetDbSetAsync()) + .Where(x=>!x.IsDeleted) .ToListAsync(GetCancellationToken(cancellationToken)); } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.Designer.cs index 67fed0b..c184d48 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.Designer.cs @@ -358,7 +358,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -429,7 +429,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.cs index 60b9400..ef50f40 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250429025531_InitialCreate.cs @@ -110,7 +110,7 @@ columns: table => new { Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), - MaterialCode = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�") + MaterialNo = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�") .Annotation("MySql:CharSet", "utf8mb4"), MaterialName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false, comment: "鐗╂枡鍚嶇О") .Annotation("MySql:CharSet", "utf8mb4"), @@ -265,9 +265,9 @@ column: "ContainerType"); migrationBuilder.CreateIndex( - name: "IX_scms_wmsmaterials_MaterialCode", + name: "IX_scms_wmsmaterials_MaterialNo", table: "scms_wmsmaterials", - column: "MaterialCode", + column: "MaterialNo", unique: true); migrationBuilder.CreateIndex( diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs index bb6700e..4576d76 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs @@ -358,7 +358,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -429,7 +429,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs index d34dfb9..8b426e6 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505105851_InitialCreate2.Designer.cs @@ -496,7 +496,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -567,7 +567,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs index a1f1d07..3cc0e34 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505121050_InitialCreate3.Designer.cs @@ -496,7 +496,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -572,7 +572,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505135455_InitialCreate4.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505135455_InitialCreate4.Designer.cs index 88e803b..44c09f2 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505135455_InitialCreate4.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505135455_InitialCreate4.Designer.cs @@ -496,7 +496,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -572,7 +572,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505140345_InitialCreate5.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505140345_InitialCreate5.Designer.cs index cde4473..4d9151e 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505140345_InitialCreate5.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250505140345_InitialCreate5.Designer.cs @@ -496,7 +496,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -572,7 +572,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506070902_InitialCreate6.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506070902_InitialCreate6.Designer.cs index 70693d5..ed96a08 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506070902_InitialCreate6.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506070902_InitialCreate6.Designer.cs @@ -705,7 +705,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -781,7 +781,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506074429_InitialCreate7.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506074429_InitialCreate7.Designer.cs index 5f92462..d4f872f 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506074429_InitialCreate7.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250506074429_InitialCreate7.Designer.cs @@ -705,7 +705,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -781,7 +781,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250507093411_InitialCreate8.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250507093411_InitialCreate8.Designer.cs index b4de3d2..8d6a0b1 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250507093411_InitialCreate8.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250507093411_InitialCreate8.Designer.cs @@ -987,7 +987,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -1063,7 +1063,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250508005509_InitialCreate9.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250508005509_InitialCreate9.Designer.cs index ba33416..251188c 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250508005509_InitialCreate9.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250508005509_InitialCreate9.Designer.cs @@ -1050,7 +1050,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -1126,7 +1126,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509054804_InitialCreate10.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509054804_InitialCreate10.Designer.cs index 5153c13..317b4fb 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509054804_InitialCreate10.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509054804_InitialCreate10.Designer.cs @@ -1050,7 +1050,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -1126,7 +1126,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509065902_InitialCreate11.Designer.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509065902_InitialCreate11.Designer.cs index 359204b..91fd826 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509065902_InitialCreate11.Designer.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250509065902_InitialCreate11.Designer.cs @@ -1108,7 +1108,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -1184,7 +1184,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs index 4def327..52830b8 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs @@ -1106,7 +1106,7 @@ .HasColumnType("decimal(18,2)") .HasComment("闀垮害锛堝崟浣嶏細m锛�"); - b.Property<string>("MaterialCode") + b.Property<string>("MaterialNo") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)") @@ -1182,7 +1182,7 @@ b.HasKey("Id"); - b.HasIndex("MaterialCode") + b.HasIndex("MaterialNo") .IsUnique(); b.HasIndex("MaterialName"); diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsContainerPlaceController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsContainerPlaceController.cs new file mode 100644 index 0000000..ae58998 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsContainerPlaceController.cs @@ -0,0 +1,188 @@ +using Ao.Lang; +using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainerPlace; +using CMS.Plugin.HIAWms.Application.Contracts.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using MiniExcelLibs; +using System.Reflection; +using Volo.Abp; +using Volo.Abp.Application.Dtos; + +namespace CMS.Plugin.HIAWms.Controller +{ + /// <summary> + /// 搴撲綅瀹瑰櫒鍏崇郴鏈嶅姟 + /// </summary> + [ApiController] + [TypeFilter(typeof(CMSLanguageFilter))] + [TypeFilter(typeof(CMSUowActionFilter))] + [TypeFilter(typeof(CMSAuditActionFilter))] + [TypeFilter(typeof(CMSExceptionFilter))] + [Route("api/v{version:apiVersion}/HIAWms/[controller]")] + public class WmsContainerPlaceController : ControllerBase + { + private readonly IWmsContainerPlaceAppService _wmsContainerPlaceAppService; + + /// <summary> + /// Initializes a new instance of the <see cref="WmsContainerPlaceController"/> class. + /// </summary> + /// <param name="wmsContainerPlaceAppService">The wmsContainerPlace application service.</param> + public WmsContainerPlaceController(IWmsContainerPlaceAppService wmsContainerPlaceAppService) + { + _wmsContainerPlaceAppService = wmsContainerPlaceAppService; + } + + /// <summary> + /// 鑾峰彇搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpGet] + [Route("{id}")] + public virtual Task<WmsContainerPlaceDto> GetAsync(Guid id) + { + return _wmsContainerPlaceAppService.GetAsync(id); + } + + /// <summary> + /// 鍒嗛〉鑾峰彇搴撲綅瀹瑰櫒鍏崇郴鐨勫垪琛�. + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + [HttpGet] + [Route("Page")] + public virtual Task<PagedResultDto<WmsContainerPlaceDto>> GetListAsync([FromQuery] GetWmsContainerPlaceInput input) + { + return _wmsContainerPlaceAppService.GetListAsync(input); + } + + /// <summary> + /// 鍒涘缓搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + public virtual Task<WmsContainerPlaceDto> CreateAsync(WmsContainerPlaceCreateDto input) + { + return _wmsContainerPlaceAppService.CreateAsync(input); + } + + /// <summary> + /// 鏇存柊搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPut] + [Route("{id}")] + public virtual Task<WmsContainerPlaceDto> UpdateAsync(Guid id, WmsContainerPlaceUpdateDto input) + { + return _wmsContainerPlaceAppService.UpdateAsync(id, input); + } + + /// <summary> + /// 鍏嬮殕搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="ids">Id闆嗗悎.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + [Route("Clone")] + public virtual Task<List<WmsContainerPlaceDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsContainerPlaceAppService.CloneAsync(ids); + } + + /// <summary> + /// 鍒犻櫎搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + [Route("{id}")] + public virtual Task DeleteAsync(Guid id) + { + return _wmsContainerPlaceAppService.DeleteAsync(id); + } + + /// <summary> + /// 鎵归噺鍒犻櫎搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="ids">The ids.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) + { + return _wmsContainerPlaceAppService.DeleteManyAsync(ids); + } + + /// <summary> + /// 璋冩暣鎺掑簭搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpPut] + [Route("{id}/AdjustSort/{sort}")] + public virtual Task AdjustSortAsync(Guid id, int sort) + { + return _wmsContainerPlaceAppService.AdjustSortAsync(id, sort); + } + + /// <summary> + /// 瀵煎叆搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + [Route("Import")] + public virtual async Task<IActionResult> ImportAsync(IFormFile file) + { + using var stream = new MemoryStream(); + await file.CopyToAsync(stream); + stream.Seek(0L, SeekOrigin.Begin); + + var sheetNames = stream.GetSheetNames(); + var wmsContainerPlaceRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsContainerPlacesImportModel.WmsContainerPlaceImportModel>(stream, sheetName: "閰嶇疆").ToList() : new(); + + if (!wmsContainerPlaceRows.Any()) + { + throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸"); + } + + await _wmsContainerPlaceAppService.ImportAsync(new WmsContainerPlacesImportModel + { + WmsContainerPlaces = wmsContainerPlaceRows, + }); + + return Ok(); + } + + /// <summary> + /// 瀵煎嚭搴撲綅瀹瑰櫒鍏崇郴 + /// </summary> + /// <returns></returns> + [HttpGet] + [Route("Export")] + public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsContainerPlaceInput input) + { + input.MaxResultCount = int.MaxValue; + var exportData = await _wmsContainerPlaceAppService.ExportAsync(input); + var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsContainerPlace瀵煎嚭妯℃澘.xlsx"); + if (!System.IO.File.Exists(templatePath)) + { + templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsContainerPlace瀵煎嚭妯℃澘.xlsx"); + } + + var memoryStream = new MemoryStream(); + await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets); + memoryStream.Seek(0L, SeekOrigin.Begin); + return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" }; + } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs index 33bfab3..41c7f75 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs @@ -1,7 +1,10 @@ 锘縰sing CMS.Extensions.Abp.AspNetCore.Mvc.Filters; +using CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores; using CMS.Plugin.HIAWms.Application.Contracts.Services; +using CMS.Plugin.HIAWms.Domain.Shared.Enums; +using CMS.Plugin.HIAWms.Domain.WmsMaterials; using CmsQueryExtensions; using Microsoft.AspNetCore.Mvc; using System; @@ -77,5 +80,28 @@ { return await _wmsEnumAppService.GetAisleListAsync(); } + + /// <summary> + /// 鑾峰彇鏈哄瀷 + /// </summary> + /// <returns></returns> + [HttpGet] + [Route("ModelList")] + public async Task<List<MaterialModelOutput>> GetMaterialModeListAsync() + { + return await _wmsEnumAppService.GetMaterialModeListAsync(); + } + + /// <summary> + /// 鑾峰彇搴撲綅鍒楄〃 + /// </summary> + /// <param name="placeType"></param> + /// <returns></returns> + [HttpGet] + [Route("PlaceList")] + public async Task<List<PlaceListOutput>> GetPlaceListForSelectAsync(PlaceTypeEnum placeType) + { + return await _wmsEnumAppService.GetPlaceListForSelectAsync(placeType); + } } } diff --git "a/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainerPlace\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainerPlace\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" new file mode 100644 index 0000000..8b54fda --- /dev/null +++ "b/HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainerPlace\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" Binary files differ -- Gitblit v1.9.3